(57)【要約】【解決手段】一実施形態において、運動制御システムを自動的に較正するための方法と装置が提供される。該方法は、テストパラメータを受け取るステップと、テストパラメータに基づいて妥当なテストが実行できることを確実にするステップと、テストパラメータに基づいてパートプログラムを発生するステップと、運動制御システムのユーザに対して、テストに関連するデータを獲得可能な装置のセットアップに関して指示を与えるステップと、テストを実行するステップとを含み、パートプログラムがテストの一部として実行される。【選択図】図３２
2004525467.tif 000002
【特許請求の範囲】
【請求項１】
運動制御システムを自動的に較正するための方法であって、
テストパラメータを受け取ること、
テストパラメータに基づいて妥当なテストが実行できることを確実にすること、
テストパラメータに基づいてパートプログラムを発生すること、
運動制御システムのユーザに対して、テストに関連するデータを獲得可能な装置のセットアップに関して指示を与えること、及び
テストを実行することを含み、
パートプログラムがテストの一部として実行される方法。
【請求項２】
テストパラメータを受け取る行為は、ユーザがテストパラメータを選択することを可能にするセットアップインターフェースを提供する行為を含む請求項１の方法。
【請求項３】
妥当なテストが実行できない場合、問題を表示する行為を更に含む請求項１の方法。
【請求項４】
妥当なテストが実行できない場合、テストパラメータの変更を要求することを更に含む請求項１の方法。
【請求項５】
ユーザに指令を与える行為は、ユーザにセットアップに関して指令を与えると共にテストを実行することが可能なテストインターフェースを提供することを含む請求項１の方法。
【請求項６】
テストインターフェースを提供する行為は、テストを含む一連のタスクの各々における進行を表示することを更に含む請求項５の方法。
【請求項７】
進行を表示する行為は、一連のタスクの内の現在のタスクが完了しなかった場合に一連のタスクの内の前のタスクに戻ることを更に含む請求項６の方法。
【請求項８】
テストインターフェースを提供する行為は、一連のタスクの内の次に行うタスクについての記述を提供することを更に含む請求項７の方法。
【請求項９】
テストを解析することを更に含む請求項１の方法。
【請求項１０】
テストの解析結果を表示することを更に含む請求項９の方法。
【請求項１１】
テストが関連する状態を補償するように構成された運動制御システムのパラメータを操作することによる影響を解析することを更に含む請求項９の方法。
【請求項１２】
テストが関連する状態を補償するように構成された運動制御システムのパラメータを変更することを更に含む請求項１の方法。
【請求項１３】
パラメータを変更する行為は、
パラメータに対する変更を受け取ることが可能な調整インターフェースを提供すること、及び
受け取った場合、パラメータに対する変更を実施すること
を含む請求項１２の方法。
【請求項１４】
パラメータを変更する行為は、パラメータに対する変更を提案することを更に含む請求項１３の方法。
【請求項１５】
パラメータを変更する行為は、パラメータの重要性を表示することを更に含む請求項１３の方法。
【請求項１６】
妥当なテストが実行できることを確実にする行為は、パートプログラムが運動制御システムによって制御されている機械の能力の範囲であり、かつ補償パラメータのチューニングに使用できる結果を提供できることを確実にすることを含む請求項１の方法。
【請求項１７】
妥当なテストが実行できることを確実にする行為は、妥当なボールバー円テストが実行できることを確実にすることを含む請求項１の方法。
【請求項１８】
妥当なテストが実行できることを確実にする行為は、パートプログラムの少なくとも一部の実行をエミュレーションすることを含む請求項１の方法。
【請求項１９】
実行をエミュレーションする行為は、運動制御システムの運動アルゴリズムによりパートプログラムを一部を実行することを含み、妥当なテストが実行できることを確実にするために運動制御システムによって制御される機械を動作させる必要がない請求項１８の方法。
【請求項２０】
実行をエミュレーションする行為は、運動制御システムに関連する非実時間環境の呼び出し可能な機能としてエミュレーションを実行することを含む請求項１８の方法。
【請求項２１】
ユーザに指令を与える行為は、テストの実行に関してユーザに指令を与えることを更に含む請求項１の方法。
【請求項２２】
ユーザに指令を与える行為及びテストを実行する行為の内の少なくとも一方は、行為の少なくとも一方に関連したタスクの進行を調整するために有限状態マシンを使用することを含む請求項１の方法。
【請求項２３】
有限状態マシンは、テストに関連する制御及び測定データを繰り返しポーリングして、テストを実行する行為における次の状態への遷移のための条件がいつ満たされたかを決定する請求項２２の方法。
【請求項２４】
有限状態マシンは、メッセージを使用してパートプログラムの実行を制御する請求項２３の方法。
【請求項２５】
運動制御システムを自動的に較正するための方法を実施できる指令を含むコンピュータが読取可能な媒体であって、該方法は
テストパラメータを受け取ること、
テストパラメータに基づいて妥当なテストが実行できることを確実にすること、
テストパラメータに基づいてパートプログラムを発生すること、
運動制御システムのユーザに対して、テストに関連するデータを獲得可能な装置のセットアップに関して指示を与えること、及び
テストを実行することを含み、
パートプログラムがテストの一部として実行される媒体。
【請求項２６】
ａ）機械的部材が取り付けられたアクチュエータと、
ｂ）このアクチュエータを制御可能な運動指令を発生する運動指令発生器と、
ｃ）少なくとも一つの補償パラメータに基づいて運動指令を補償する補償器と、
ｄ）アクチュエータ、運動指令発生器及び補償器と通信可能で、
ｉ）テストパラメータを受け取り、
ｉｉ）テストパラメータに基づいて妥当なテストが実行できることを確実にし、
ｉｉｉ）テストパラメータに基づいてパートプログラムを発生し、
ｉｖ）運動制御システムのユーザに対して、テストに関連するデータを獲得可能な装置のセットアップに関して指示を与え、
ｖ）パートプログラムがテストの一部として実行されるようにテストを実行する
コントローラと
を含む工作機械。
【発明の詳細な説明】
【０００１】
本出願は、２００１年４月２６日に提出された米国仮出願第６０／２８６，８３４号に基づく利益を要求するものであり、該仮出願の全ての開示内容を本明細書の一部を構成するものとして援用する。
【技術分野】
【０００２】
本発明は、一般に運動制御システム、特に補償パラメータをチューニングするための方法とシステムに関する。
【背景技術】
【０００３】
運動制御システムの性能は最も重要な問題である。特に、制御システムを安定なものとして、入力指令に対して許容できる応答が得られ、入力指令に対しての定常状態での誤差が最少になり、望ましくない外乱の影響を排除できなければならない。多くの場合、最適な性能を得るために制御システムが調整される。所望の性能を提供するための制御システムの変更又は調整は補償と呼ばれることが多い（即ち、補償は、不完全さや不適切さを埋め合わせるために行われるシステムの調整である）。
【０００４】
場合によっては、そのような不完全さや不適切さを補償するために運動制御システム内に追加の構成要素（例えば、コンペンセータ）が組み込まれる。例えば、そのようなコンペンセータは一以上のパラメータとして実施でき、該パラメータの値は、システムをどのように制御するかを決定するためにコントローラによって使用される。従って、最適な性能を提供するために、そのようなパラメータについて適切な値が決定される。
【０００５】
例えば、システムの変化を補償するためにこれらのパラメータを調整するプロセスはチューニングと呼ばれる場合が多い。最近、オペレータの関与を最少にするか又は関与を不要にした、そのようなパラメータのチューニング技術が開発された。これらの技術は一般にオートチューニングと呼ばれる。例えば、オートチューニングは、コントローラがそのようなパラメータについて適切な値を自動的に決定するプロセスを意味する。
【０００６】
現在、工作機械で使用されているような運動制御システムにおいては、伸縮式のボールバー等の相対変位センサを用いて、運動制御システムによって引き起こされたインクレメンタル（増分）変位の測定値を表す電気的出力を提供している。そして、この電気的出力は、運動制御システムが制御している機械の運動における誤差の要因となっている該システムのパラメータを「チューニング」するのに使用できる。例えば、相対的に移動し工具と工作物との間に送り運動を生じさせる工作機械の二つの部材の間にボールバーを取り付けることができる。より詳しくは、マシニングセンタの場合、例えば、スピンドルと工作物支持テーブルとの間にボールバーが取り付けられる。
【０００７】
典型的には、市販のボールバーの可動範囲は数ミリにすぎない。例えば、ボールバーによる測定時における工作機械の運動は、通常、実質的に半径が一定の円弧に沿ったものである。理想的な一定の半径からの円弧半径のずれを測定することにより、工作機械に関連する誤差についての情報を提供できる。この情報は、例えば、機械に関連する特定の位置決め誤差（静的誤差及び動的誤差）を判定するのに用いることができる。
【０００８】
運動制御システムとマシニングセンタに関連した従来の使用法を図１を参照して以下説明する（運動制御システムのユーザは殆どの工程を手動で行う）。セットねじを緩め、機械上の所望の位置にボールバーのセンタ治具を置く。その後、スピンドルの工具ホルダ内の磁気カップがボールバーの鋼製のサークルセンタボールを拾い上げるようにスピンドルを移動させ、セットねじを締付ける。そして、機械位置設定を行って現在の位置がプログラムシステムの原点となるように座標系を再定義する（例えば、Ｇ９２Ｘ０Ｙ０Ｚ０）ことにより、軸の位置を記録させる。
【０００９】
その後、運動制御システムのユーザは、磁気カップをセンタボールから離れる方向に移動させるために手動で軸送りを行い、機械に円運動をさせるパートプログラムを作る。パートプログラムの一例としては、下記のものを含む多数の特徴を含むものが挙げられる。
【００１０】
１．円の中心は、センタボールの位置に対応している。
２．円の半径は、ボールバーの公称長さと等しいかこれよりも僅かに小さい。
３．円運動は、機械の主平面（例えば、ＸＹ、ＸＺ、ＹＺ）内で行われるように拘束されている。
４．円弧は、移動の始点と終点においてある程度の追加の（オーバーシュート）距離を含んでおり（送り速度を零から最高速まで加速し、最高速から零まで減速できるようにしている）、データが解析時に考慮される円の一部分をデータ円弧と呼ぶ（移動の始点と終点において送り速度が変化している期間に収集されたデータはデータ解析時に考慮されない）。
５．円運動の前に短い（内方送り）移動が行われる。この移動は、円の半径線に沿って円の半径よりも大きな半径から円の始点まで行われる。同様に、円運動の後に短い（外方送り）移動が行われる。この移動は、円の半径線に沿って円の終点から円の半径よりも大きな半径まで行われる。これらの移動は、ボールバーに関連する慣用のソフトウェアに、テストの開始とテストの終了を知らせるために使用でき、ソフトウェアは、これを使用してテストの開始からの経過時間に基づく現時点での円の角度の推定値を提供できる。
６．オーバーシュート円弧、内方送り移動、データ円弧、及び外方送り移動を有する２つの連続したシーケンスが平面内での時計方向及び反時計方向について存在する。
７．プログラムストップ（Ｍ０）ブロックが、各移動シーケンス（時計方向及び反時計方向のシーケンス）の開始点の前に存在する（プログラムストップは、ボールバーソフトウェアのトリガを作動させる機会をオペレータに提供する）。
【００１１】
その後、ボールバーを、ボールバーソフトウェアを実行しているコンピュータのシリアルポートに接続し、任意的作業として、（例えば、既知の長さの較正治具内にボールバーを置き、ソフトウェアに対してボールバーの出力を測定するように指示することにより）ボールバーの長さを較正する。ボールバーの長さが較正された場合、ボールバーソフトウェアによって実際のボールバーの長さが計算され、記憶される。長さを較正したボールバーの利点は、円直径誤差の平均値の推定を可能にすることである。
【００１２】
その後、パラメータの値、即ちオーバーシュート円弧の長さ、データ円弧開始角度、データ円弧長、送り速度、及び円の半径の値を入力することによって、現在のテストについての特定の条件をボールバーソフトウェアに知らせる。ボールバーソフトウェア内のトリガは、それが実行されているマシン（例えば、パーソナルコンピュータ）上で作動され、制御装置上のテストプログラムが実行される。
【００１３】
プログラムが最初の円移動の後のストップ（Ｍ０）に到達し、データの収集が完了した後、ボールバーソフトウェアのトリガが再び作動され、第２の円移動を行うために機械のサイクルが開始される。テストが完了すると、デストデータがファイルに保存され、誤差の原因を診断するために解析ソフトウェアが実行される。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
従って、上記の手続きやこれに類似した他の手続きを自動化して簡単にする方法とシステムが望まれている。更に、ボールバーからの測定値に基づいてパラメータ補償を適用することが望ましい。
【課題を解決するための手段】
【００１５】
本発明の少なくとも一つの実施形態の目的は、運動制御システムの補償パラメータをチューニングするための改善された方法及び／又はシステムを提供することである。
【００１６】
本発明の種々の実施形態の追加の目的、利点及び新規な特徴については、以下の例示的実施形態の説明中に部分的に記載され、別の部分は本発明を検討又は実施することにより当業者に明らかになるであろう。
【００１７】
本発明の一実施形態は、運動制御システムを自動的に較正するための方法と装置に関するものである。該方法は、テストパラメータを受け取るステップと、テストパラメータに基づいて妥当なテストが実行できることを確実にするステップと、テストパラメータに基づいてパートプログラムを発生するステップと、運動制御システムのユーザに対して、テストに関連するデータを獲得可能な装置のセットアップに関して指示を与えるステップと、テストを実行するステップとを含み、パートプログラムがテストの一部として実行される。
【００１８】
種々の実施形態の他の利点は、本発明の例示的実施形態を例示の目的のために示すと共に説明する以下の記載から当業者に明らかになるであろう。本発明の範囲から逸脱することなく、本発明を他の異なる様相及び実施形態で実施することが可能であることは分かるであろう。従って、利点、図面、及び記載は例示であり、限定的なものではない。
【００１９】
本明細書に添付の特許請求の範囲により本発明を特定し且つ本発明を明確に請求しているが、添付図面に関連させて行われる以下の説明から本発明がより良く理解できるであろう。尚、全図面を通して、同様の符号は対応する構造を示す。
【発明を実施するための最良の形態】
【００２０】
本発明は、一般に、補償パラメータをチューニングできる運動制御システムに関する。例示のため、主として本明細書で説明される例示的実施形態は、工作機械の制御装置上で動作するテスト用ソフトウェアに関し、また一実施形態では、伸縮型ボールバーと呼ばれる器具からの測定値に基づいて工作機械の制御装置がパラメータの補償を自動的に較正できるようにするソフトウェアに関する。更に、一実施形態では、開示された例示的ソフトウェアは、１）テスト条件を特定、２）テスト条件に関連する測定のための運動を自動的に生成、３）運動を開始し、４）データを収集、５）データを解析、６）データに基づいて制御装置の補償を更新するための機能を提供する。
【００２１】
更に例示的な実施形態は、例えば、以下の動作のために用いられる。
１．テスト用のセットアップデータが適切であるか確認する。
２．収集されたデータが完全であるか確認する。
３．例えば、制御状態と軸の位置に基づいて次に何をすべきかを知らせることにより治具をセットアップ中のユーザを助ける。
４．制御状態を監視し、テストシーケンスを調和させる。
５．メッセージを送り、パートプログラムの実行を制御する。
６．エラー状態を強固に（robustly）取り扱う。
７．測定データを処理し、サーボゲインやフィードフォワード等の影響を調べる。
８．補償値に対する提案変化値を計算する場合、テスト実行中に有効であった補償値を考慮する。
９．更新された補償値を、例えば、制御装置のデータベースにコピーする。
１０．（例えば、システムイベントを出すことにより）新しい補償を有効にする。
例えば、本発明の特定の例示的実施形態は、コントローラの内部データ、プログラムバッファ、及び関連したコントロールのシステムイベントサービスへのアクセスを利用して、前述の特徴の少なくともいくつかを提供する。
【００２２】
本発明の一実施形態では、特定のタイプの補償の構成が自動化される。例えば、ボールバーを用いる例示的形態では、ボールバーの円テストが実行される工作機械の主機械平面を画定する工作機械の軸について、スケール誤差、直角度誤差、直線性誤差、バックラッシュ、ワインドアップ、及び／又は摩擦の補償のための値が自動的に提案できる。
【００２３】
機械が主平面での円運動をしている間に生じる半径のずれのボールバーによる測定値は、２軸同時運動の組合せの結果である。測定値から単一軸の誤差源を見つけ出すため、誤差の性質に関する一連の限定的な仮定に基づいて解析は限定される。例えば、誤差は、誤差源、軸位置、軸速度、発生した半径誤差の間の数学的関係が固定された限られた数の誤差源から生じると仮定できる。
【００２４】
モデル中に含まれる特定の数学的関係は、機械の構造とサーボの動力学の物理的理解、及び／又は工作機械の誤差に関する以前の経験に基づいて選ぶことができる。従って、各々の誤差源は、誤差の大きさと方向を定量的に示す単一のパラメータにより記述できる。よって、そのような誤差を表わすデータは曲線当て嵌め（curve fit）を行うことにより、各誤差タイプに関連する各パラメータに対する最適な推定値を引き出すことができる。
【００２５】
パラメータ的モデルに代わる別の方法は、データに基づくアプローチを含む。例えば、ボールバー測定の所望の目的が、双方向の補償（ボールねじのピッチの変化による誤差とバックラッシュの補償）と軸間（cross-axis）補償（１以上の軸位置の関数として軸位置を補償）のためのデータテーブルを発生することである場合、ボールバーにより測定された誤差を正確に説明するこれらのテーブルのためのデータの組合せは無限に存在するであろう。しかし、これらの組合せの中の１つだけが「正しい」ものである。一方、正しくないものを選択すると、多くの場合、（例えば、ボールバーによる測定中における運動とは異なるいかなる軸運動についても）補償がなされていない機械で生じるものよりも大きい誤差が生じる。
【００２６】
誤差のパラメータ的記述は、測定値を正確には記述していないかもしれないが、測定値を最もよく記述するパラメータの最適な組合せからのずれを考慮できる。従って、測定機械誤差をパラメータ的モデルと関連付けることにより、機械誤差の補償を同パラメータモデルに基づいて行えることになる。
【００２７】
例えば、シーメンス・エナジー・アンド・オートメーション社のＡ２１００制御装置では、次のタイプのパラメータ的補償が利用できる：１）バックラッシュ補償、２）ワインドアップ補償、３）ピッチ（又はスケール）補償、４）直角度補償、５）直線性補償。これらの補償は、個々の軸の運動や１平面内の２つの軸の組み合わされた効果を記述する。これらの誤差源も、単一のパラメータによって記述できる。
【００２８】
数学的モデルは、機械誤差を生じる場合が多い物理的効果の理解に基づいて作ることができる。この数学的モデルの範囲外に誤差源が存在する場合、その誤差がモデル構造に含まれる誤差タイプの１つに属するものであると誤って判定される恐れがある。この様な状況を避けるために、数学的モデルの範囲を、提供されたパラメータ的補償の範囲より大きくとることができる。
【００２９】
例えば、Ａ２１００制御装置は明白なサーボミスマッチ補償を有していないが、Ａ２１００制御装置に用いるものとして、本明細書に記載された一例示的モデルの範囲内にサーボミスマッチ誤差を含めることができる。そのようなサーボミスマッチ誤差は、他のタイプの測定に基づく別の方法で補正できる。いずれの場合でも、数学的モデルが適切にデータを記述できない状況が生じる。例えば、この様な状況は、機械の誤差が特定の数学的モデルの範囲外にある場合や、磁気カップからボールバーが分離するなど測定に問題がある場合や、測定中のノズルレベルが高い場合に生じる。この様な状況を見極めるために、モデルと測定の間のコヒーレンスを表わす統計的尺度を計算し、例えば、システムのユーザに表示できる（例えば、コヒーレンスの値が低い場合、データをより綿密に調べなければならないことがユーザに示される）。
【００３０】
本発明の一実施形態では、ボールバーテストの間に生じた運動の範囲内での機械誤差を記述するためにパラメータの推定値が用いられる。テストの運動範囲の外側の複数の領域に対するモデルの外挿に関連した潜在的な懸念は、これらの領域におけるパラメータに不確実である。従って、本発明の一実施形態では、ボールバーテストの運動範囲内にある平面領域に対してのみ確実に補償を行なえるという限界がある。例えば、運動範囲の包絡面が（正方形ではなく）長方形である機械平面の場合は、単一の円テストでは、運動の全範囲にわたり信頼できる補償値を発生することができないであろう。
【００３１】
更に、特定のタイプの誤差は、他のタイプの誤差に比べ、より高い信頼度で外挿できる。例えば、バックラッシュ、ワインドアップ、スケール誤差は、パラメータ的直角度誤差やパラメータ的直線性誤差に比べ、軸の全範囲に亘ってより高い均一性を有している。更に、機械のパラメータ的補償は、補償値を発生するために用いられるボールバーテストの運動範囲が一以上の機械軸の運動範囲に比べて大幅に小さい状況では不適切であろう。このような状況では、ボールバーテストに基づくパラメータ的補償は、軸運動の全範囲をカバーするデータに基づく双方向の軸（ピッチ）補償と交差軸補償（cross-axis compensation）とを補うものとして最も有用である。
【００３２】
ボールバーテストを用いる他の実施形態では、テストがエンドユーザによって使用され、すぐ後に行われる加工動作での運動範囲を表わす軸運動の限定された範囲に亘って補償が微調整される。従って、本発明の一実施形態では、円テストの直径が加工の包絡面のできる限り多くの部分を取り囲むことが望ましい。理解されるように、運動範囲（円の直径）が減少する程、パラメータ的モデルの限定された領域内での運動を正確に記述できる可能性が増加する（誤差のタイプがモデルの範囲にある可能性が高くなる）。
【００３３】
パラメータの信頼性に影響する可能性があるものとして、更に考慮すべき点は、円運動自体の性質である。例えば、各誤差源が測定値に特有の影響を与えるように誤差源を十分に励起すると、モデルに含まれる各種誤差源を区別することができる。本明細書に記載の例示的モデルにおいては、十分な励起を行うために、時計方向と反時計方向の両方向の移動についてデータを収集する。これに加え、更に別の例示的実施形態では、データ円弧の長さを可能な限り大きくしている。
【００３４】
一例示的実施形態では、時計方向のデータ円弧と反時計方向のデータ円弧のいずれもが３６０°をカバーする。しかしながら、機械の機械的制約により、一回のテストで３６０°の円弧と一軸又は両軸の最大加工包絡面とを同時にカバーするテストを行えない場合がある。このような状況においては、本発明の一実施形態では、全軸包絡面を完全にカバーできるように３６０°未満のデータ円弧を用いる。しかしながら、本明細書に記載の一例示的実施形態においては、データ円弧は少なくとも１８０°の範囲であり、時計方向の円弧と反時計回りの円弧が同一の角度範囲をカバーする。
【００３５】
本明細書で励起と称する統計値を計算して、各種パラメータの影響を区別するための励起が十分であるか否かをユーザに表示することもできる。二種類の例示的パラメータ的誤差、即ちバックラッシュとワインドアップは、総合的なロストモーションを表示する標準的（連続運動）ボールバーテストでは通常互いに区別できない。本発明の一実施形態では、バックラッシュテストを別個に行い、連続運動テストから得た測定データが示す総合的なロストモーションに対するバックラッシュ誤差の影響を決定する。
【００３６】
本発明の一例示的実施形態では、このシステムに対し、ユーザインターフェース（４種類の主要なモードを含むユーザインターフェース等）が設けられる。一実施形態においては、これらのモードに、セットアップテストモード、ランテストモード、データ解析モード、補償調整モードが含まれる。各モードは、例えば、ユーザインターフェース上で別々のページとして表示される。
【００３７】
ここで図２を参照すると、本発明の一実施形態では、テストセットアップページ１０が提供されている。これは、ユーザが例えば１セットのテスト条件パラメータをファイルからロードするためのインターフェース、あるいはこれらのパラメータを手動で指定するためのインターフェースとして機能する。一例示的実施形態においては、このページで指定されたテスト条件を（例えば制御装置が）用いて、（例えば、本明細書で後述するランテストモードにある）テスト実行段階においてパートプログラムを自動的に作成することができる。
【００３８】
一例示的実施形態では、関連する機械の各主平面（例えば、ＸＹ、ＸＺ、ＹＺ）におけるテスト毎にテスト条件パラメータを指定することができる。例えば、ユーザは、編集モードに入ることによりテスト条件パラメータを変更することができる。編集モード中は、テスト条件パラメータを含むフィールド１２は変更可能になる。
【００３９】
必要な変更をした後、ユーザは「適用」ボタン１４を押す。このような実施形態においては、適用ボタン１４を押すことにより、入力されたテスト条件パラメータに対する一連の有効性チェックが開始される。例えば、有効性チェックを用いて、入力されたテスト条件パラメータの組合せから妥当なテストが発生されることを確実にできる。一例示的実施形態においては、確認テストに失敗した場合、この問題を示す警報が表示され、ユーザインターフェースは編集モードのままとなり、ユーザは、テストパラメータが有効な組合せとなるまでテストパラメータを変更することが要求される。
【００４０】
別の例示的実施形態においては、３種類の主平面のそれぞれに対し個別のテスト条件パラメータを保存することができる。テスト条件パラメータは次のものを含む。
１）円の半径（ボールバーの長さ以下）
２）円中心（円の中心が合わせられるＸ、Ｙ、Ｚにおける位置）
３）データ円弧開始角度（データ収集が開始される、水平軸からの反時計方向の角度）
４）データ円弧長さ即ちテスト範囲（データ収集範囲を示す円弧の角度）
５）オーバーシュート円弧長さ（加減速中の過渡状態を考慮してデータを収集しない範囲を示す円弧の角度；一実施形態においては、このパラメータにより、加速オーバーシュート円弧と減速オーバーシュートの両方が指定される）
６）ボールバー長さ（長さの選択は、入手可能な延長バーにより制限される）
７）送り速度（データ円弧、オーバーシュート円弧、内方送り及び外方送りのためにプログラムされた送り速度）
８）プロセス又は送りモード（テスト中の運動に使用される経路パラメータ群（例えば、Ｇ４５．ｎ）を指定する；これは、経路加速、経路ジャーク、ステップ速度及びフィードフォワード状態に影響する）
本発明の一実施形態においては、テスト条件パラメータの組合せは、例えば次の事項について確認される：１）円の半径はボールバー半径に対して適切か；２）軸運動は機械範囲内に入っているか？３）円の中心は機械範囲内に入っているか？；４）オーバーシュート円弧の長さはデータ円弧における送り速度を一定にするのに十分か？；５）データ円弧の長さは、誤差のタイプを区別するのに十分な励起を提供するのに十分か？
【００４１】
本発明の一例示的実施形態では、円の半径はボールバーの半径未満であるかこれと等しくなければならない。このような実施形態では、円の半径がボールバーの半径未満の場合、ボールバーは全長で円錐面を描く。このような実施形態においては、測定値に対する第三の軸（例えば、主平面に直角の軸）の方向の運動の影響が過剰となるため、円の半径はボールバー半径より若干小さい。第三の軸の方向に沿った運動は、面内の軸の運動と実質的に区別できず、パラメータの推定を歪めることが多い。
【００４２】
例えば、円錐角が０°（円の半径がボールバーの半径と等しい）から４５°まで増加すると、ボールバーの偏倚（deflection）に対する第三の軸の方向の運動の相対的な寄与度は、面内の運動により生じる偏倚の０％から１００％に増加する。それぞれの例示的な有効性チェックでは、円錐角が２６°以下でなければならない。このような実施形態では、２６°において、ボールバーの偏倚に対する第三の軸の運動の相対的な寄与度は面内の運動の５０％である。
【００４３】
ボールバー長さ、円半径、円中心、オーバーシュート円弧、データ円弧開始角度及びデータ円弧長さを評価し、作り出される運動がどこにおいても各軸の範囲のリミットを超えていないことを確実にすることもできる。例えば、軸の範囲のリミットを超えるであろうことが検出された場合は、有効性チェックにより、例えば（円中心を移動することにより機械包絡面内に運動範囲をもっていくことができる場合は）円が機械包絡面内に包含されるように円中心を変更することが提案される。
【００４４】
円弧が機械範囲内にあっても、円中心が機械範囲内にない可能性がある。このようなことが発生するのは、例えば、円半径がボールバー長さより小さい場合である。従って、一実施形態では、センタリング治具の位置を見つけるため工具の先端（例えば磁気カップ）をサークルセンタボールまで移動させなければならないため、円中心は機械範囲内になければならない。
【００４５】
別の例示的実施形態においては、円を横切る移動が一定の送り速度で行われている間にデータを収集しなければならない。軸の周波数応答は通常、周波数の関数（円の場合、周波数は送り速度と比例する）である振幅と位相の歪みを含む。送り速度が一定の場合は、振幅と移送の歪みは一定であり、円の形状は（各軸の周波数応答に対して）歪まず、データの後処理時において、一定の振幅減衰や位相遅れによる影響を補償できる。
【００４６】
データ収集開始前に各機械軸が最高送り速度まで確実に加速できるように加速オーバーシュート円弧を含めることができる。一方、最高送り速度から完全停止までの減速中におけるデータ収集を避けるために減速オーバーシュート円弧を含めることができる。一実施形態においては、データ円弧内で送り速度が確実に一定となるように各オーバーシュート円弧の長さは十分に長くしなければならないが、総テスト時間を最小限にするために、オーバーシュート円弧の長さは必要最小限より僅かだけ長くすることが好ましい。
【００４７】
加速オーバーシュート円弧の長さは幾つかのファクタによって変わる。このファクタとしては、例えば、１）加速オーバーシュート円弧に先立つ内方送り区間の区間終点速度制限、２）オーバーシュート円弧区間における区間最大加速度及び最大ジャーク、３）プログラムされた送り速度、４）軸Ｋｖゲイン、５）軸フィードフォワードレベル、及び／又は６）速度フィードフォワードが有効にされているか否か、が挙げられる。これと同様に、減速オーバーシュート円弧も同様のファクタにより変わる。更に、区間データの加速度やジャーク、区間終点速度制限、フィードフォワード状態は、例えば、軸構成データや経路構成データ、送りモード選択、データ円弧開始角度、データ円弧長さにより変化する。
【００４８】
通常、加速オーバーシュート円弧と減速オーバーシュート円弧の長さは実質的に等しい。一実施形態においては、オーバーシュートの長さが許容できるか否かは、機械を直接制御せずに、制御装置の運動アルゴリズムを用いてテスト動作における一連の区間を実行することにより判定する。一例示的実施形態においては、制御装置の運動アルゴリズムの適切なサブシステム（例えば先読みや速度管理）をリンクさせ、非実時間環境において呼出し可能な機能として実行できる範囲の制限されたエミュレーションを形成できる。運動のエミュレーションは、例えば、エミュレーションする部分を正しい初期条件（速度や加速度）を有する移動の内の狭い範囲に制限することにより、実際の移動よりもより短い時間で行うことができる。
【００４９】
エミュレーションにより得られた経路距離信号は、軸Ｋｖやフィードフォワードレベルにより生じたものと同じ位相や振幅の歪みを提供するフィルタリング機能に通される。本発明の一実施形態においては、エミュレーションの結果を用いてオーバーシュート円弧の長さが十分であるか否かを示すことができる。この円弧の長さが十分でない場合、控えめな近似により、オーバーシュート円弧長さの提案値が発生されユーザに提案される。この新しい推算値も、実際の運動に対して確認が行われる。
【００５０】
一例示的実施形態においては、一平面における両軸の総合的なロストモーションの推定値は、運動中に各軸に対し少なくとも一回の反転を含ませることにより得ることができる。これは、データが象限の内の一個に連携されている場合、運動の最小範囲は９０°を幾らか超えたものであることを意味する。任意のデータ円弧開始角度に適合させるために、データ円弧長さを１８０°を幾分超えて設定し、各軸に対し少なくとも一回の反転が確実に行われるようにできる。これに加え、１８０°の運動により、直角度誤差と直線性誤差とを合理的に区別できる能力を提供できる。従って、このような一例示的実施形態においては、最小許容データ円弧は１８０°であり、励起パラメータは定義された最小閾値を超える。
【００５１】
全体の使用性を向上させるために、セットアップテストページ１０により追加の内容を加えることができる。例えば、セットアップテストページ１０は「現在値獲得」ボタン１８を含むことができる。このボタン１８を押すと、各軸の現在の機械座標値が現在の平面についての円中心座標値にコピーされる。また、機械の最大範囲包絡面の中央に円中心を設定すると共に円半径がボールバー長さに等しくなるように設定する「自動選択」ボタン２０を含むこともできる。一実施形態においては、「現在値獲得」ボタン１８と「自動選択」ボタン２０は編集モードであるときに使用可能となる。
【００５２】
セットアップテストページ１０は、更にデータ円弧及び／又はオーバーシュート円弧のグラフ表示あるいは動画表示２２を含むことができる。追加の機能として、現在の編集セッションで変更する前に存在したテスト条件パラメータに戻す機能を含むこともできる（例えば、編集モードから等）。また、現在のテスト条件パラメータ（例えば、３平面それぞれに対するテスト条件パラメータ）をファイルに保存する及び／又はファイルから新しいテスト条件パラメータ（例えば、３平面に対するテスト条件パラメータ）をロードする機能を含むこともできる。更に、セットアップテストページ１０は、現在有効となっているテスト条件パラメータを、ユーザインターフェースが開かれたときに存在するデフォルトの設定として指定する機能を含むこともできる。
【００５３】
或る実施形態においては、セットアップテストページ１０は、例えばボールバー装置自体に関連するデータを指定するための内容を含むことができる。例えば、このデータセットを作成するために用いた特定のボールバーについての恒久的な記録を作成するために、ボールバーのシリアル番号を測定データファイルのヘッダにコピーすることができる。ボールバーのスケールファクタを用いて測定値を調整し、これにより特定のボールバー特有の特徴（通常、ボールバー側面に印字されている）を考慮することができる。更に、ボールバーが接続されるＣＯＭポートをこのページで指定することができる。ボールバーに関する問題をデバッグするために使用されるボタンも設けることができる。
【００５４】
ここで図３を参照する。ランテストページ３０には、治具（ボールバー等）の設定やテスト（ボールバーテスト等）の実行においてユーザを補助するためのインターフェースを提供するもの等が含まれる。このようなランテストページ３０は、例えば、実施するテストを（例えば、３種類の主平面テストから）選択するためのプルダウンリスト３２を含む。ボールバーテストを行う一実施形態では、各主平面毎に、測定値を得て保存するプロセス全体において５種類の連続したタスク（即ち目に見える状態）が提供される。
【００５５】
このような実施形態では、主平面が選択されると、この主平面に関連するテストセットアップデータがテストの実行に用いられる。次の主平面が選択されると、状態は、このテストシーケンスにおける開始点に戻る。制御及び獲得データを周期的にポーリングする有限状態マシン（ＦＳＭ）はこれらの状態を通しての進行を調整することができる。例えば、このようなテストコーディネーションＦＳＭは、タスクとして目に見える状態以外にこれより多くの状態を含むことができる。ボールバーテストを行うこのようなＦＳＭの実施形態に関しては、後で詳細に説明する。
【００５６】
本発明の一例示的実施形態では、タスクの完了に向けての進行状況がスクリーン上の表示によって示される。例えば各タスクは、関連するチェックボックス３４を有し、これは対応するタスクが完了したときにチェックが入れられる。ユーザには、更に、プロセスの任意の時点において任意の数のタスクだけ戻る機能も提供され、これは例えば、タスクと関連するボタンを押すことにより実施される。これに加え、タスクが適切に完了しなかったときにこれより前の最も近い、戻り得る状態即ちタスクまで自動的に戻る機能が提供できる。
【００５７】
一実施形態において、連続的プロセスを通して、シーケンスを進めるために次に何をすべきかについての文章による説明がユーザに提供される。例えば、制御データを用いて、タスクのシーケンスにおける次の状態に遷移するための要件が満たされたことを判定することができる。一例示的実施形態においては、ユーザは、例えば制御装置のペンダントやパネルを用いて全ての操作を実施することにより、プロセスを完了させるための手動介入を避けることができる。このような一例示的実施形態は、ユーザが制御装置に戻らなくても機械においてタスクを達成することができるという利点がある。
【００５８】
ボールバーテストを行う本発明の一実施形態においては、ボールバーテストを完了させるプロセスにおける主要なタスクとして、１）中心へ移動、２）中心を確認、３）開始位置へ移動、４）テスト実行、及び５）テストに関するデータの保存が含まれる。一例示的実施形態に係るこれらのタスクの各々について以下、詳細に説明する。
【００５９】
MoveToCenterタスクに関連する状態には、例えば、ランテストページ３０の「中心へ移動」ボタン３６を押すことにより入ることができる。一実施形態では、MoveToCenter状態に入ると、遷移刺激に対する周期的なポーリングが始まる（まだ始まっていない場合）。従って、MoveToCenter状態に入ると、各軸を円中心に移動させるパートプログラムの一連のブロックが発生され、例えばパートプログラム用のマニュアルデータインターフェース（ＭＤＩ）バッファにロードされる。次に、プロンプトテキスト３８が最新のものとなり、ユーザに例えば、円中心までの経路に障害物がないかを確認してから、移動を開始するためのサイクル開始を押すように知らせる。中心移動プログラムの最終ブロックが完了し制御状態がインサイクルからプログラムエンド（ｅｏｐ）（後述）に遷移したことが検出されると、ＦＳＭはConfirmCenterタスクに関連する状態に遷移することができる。
【００６０】
ConfirmCenter状態では、ＦＳＭはプロンプト３８を更新し、ユーザに例えば、センタボールを工具ホルダの磁気カップに置き、セットねじを締め、サイクル開始を押すように要求する。ConfirmCenter状態に入ると、ＭＤＩプログラムバッファには幾つかの非運動ブロックとドエルブロックがロードされる。これらブロックの目的は、ブロックが実行されたときにＦＳＭに知らせることである。従って、ユーザが中心を確認するためのサイクル開始を押したことをＦＳＭが検出すると、ＦＳＭは現在の軸位置を取得し、それを現在のテストのための円中心として保存する。
【００６１】
このような実施形態の利点として、テストセットアップデータにおいて定義されたものと若干異なる円中心でも容易に使用できるということが挙げられる。これが有用である理由は、テストセットアップデータに、センタボールの平面から若干ずれた円中心座標値を含むことができるからである。従って、工具の先端がセンタボールと衝突しないという十分な確信を持って中心への移動を行うことができる。中心が確認されると、プロンプト３８が更新され、例えば磁気カップを動力送りやハンドル送りでセンタボールから遠ざけることが提案される。
【００６２】
軸がセンタボールから離れる方向に移動したことをＦＳＭが検知すると、MoveToStartタスクに関連する状態に（例えば、ConfirmCenterタスクから）入ることができる。MoveToStartに関連する状態に入ると、ＭＤＩバッファには、テスト移動のための開始位置に各軸を移動させるためのプログラムブロックがロードされ、プロンプト３８が更新されて例えば、円開始点までの安全な経路を確保してサイクル開始を押すことが提案される。このプログラムブロックは、初期内方送り移動が開始される位置まで各軸を移動させる。
【００６３】
一実施形態においては、開始位置までの移動が完了したことをＦＳＭが検出すると、ＦＳＭは連続運動ボールバーテストプログラムを発生し、例えばＭＤＩバッファにロードする。ユーザが、バックラッシュテストも実施することを指示していた場合、ＦＳＭは、ＭＤＩバッファにロードされるプログラムの中にバックラッシュテスト用のブロックも含める。ディスプレイのプロンプトが更新され、ユーザに対し、ボールバーを機械の中に置き、テストを開始するためにサイクル開始を押すことが提案される。
【００６４】
ボールバーテストプログラムの実行が或るポイント（例えば、任意の運動の前のポイント）まで達したことをＦＳＭが検知すると、ＦＳＭは（例えば、後のセクションで説明する技法を用いて）プログラムの実行を一時的に停止し、ボールバー装置を初期化することを試みる。ボールバーの初期化が成功すると、ユーザが手動でテストの進行を止めるためのボタン（例えば、図３Ｂの「テストキャンセル」ボタン４０）が発生されて表示され、プログラムの実行の継続が許可されて、ＦＳＭは最初の（例えば反時計方向の）移動における初期送りを検出するためにボールバー位置のポーリングを開始する。
【００６５】
初期内方送りが検出されると、ＦＳＭは、例えば、ボールバー測定値の保存、エラー状態のチェック、（例えば、周期的に得られるボールバー測定値の数に基づく）テスト経過時間の測定、外方送り移動のためのテスト等を開始する。一例示的実施形態においては、外方送り移動の後、プログラムは停止状態になる。外方送り移動が発生すると、データ円弧が全体のデータセットから抽出され、有効性チェック（後述）が実施される。有効性チェックにより問題がないことが示されたと仮定すると、ＦＳＭはプログラムを停止状態から解放し、第二の（例えば時計方向の）移動からの初期内方送りを検出する準備をする。
【００６６】
一例示的実施形態においては、第二の移動中に発生する一連のイベントは、第一の移動のものと類似している。一実施形態においては、第二の移動が完了し有効性チェックによりテストの成功が示されると、プログラムはバックラッシュテストの実行（後述）を開始する。テストが完了し有効性チェックが成功すると、データが抽出され、例えば仮ファイルに保存される。
【００６７】
例えば、有効性テストが完了した後にユーザがセーブデータボタン４２を押すと、セーブデータタスクの初期化が行われる。一例示的実施形態においては、テストが完了しこれが有効であった場合、セーブデータボタン４２は使用可能になる。例えば、セーブデータボタン４２を押すと、ファイルに名前を付けたり、ユーザがテストに関連する他の情報（機械のタイプやシリアル番号等）を入力する機会を与えたりするのに使用される対話式ダイアログボックス（例えば、ウィンドウ）が現れる。データファイルは、生のデータと、テスト条件を記述するヘッダとを含むことができる。一実施形態においては、セーブダイアログは、最初、例えばテスト平面、機械シリアル番号、カレンダー日付、既にディスクに存在するプロパティが同一のデータファイルの数等に基づき作られるデフォルトのファイル名を含む。
【００６８】
ユーザ側から見ると、本発明の一例示的実施形態に係るボールバーテストは、次の順序で行われる。ユーザはドロップダウンリスト３２からテスト平面を選択し、ユーザインターフェース上で（ボタン３６により）中心への移動を指示した後、サイクル開始を（例えばペンダントにより）指示する。関連する機械が円中心へ移動する。
【００６９】
ユーザはセンタ治具を操作しハンドルを用いて、磁気カップがセンタボールを「拾い上げる」まで軸位置を微調整する。この時点で、ユーザはセンタ治具のセットねじを締め、サイクル開始を押す。ユーザは、動力送りにより軸をセンタボールから離れる方向に送り、サイクル開始を押し、軸は開始位置へと移動する。ユーザは、ボールバーを機械内に置き、サイクル開始を押し、機械はテストを実施する。テストが完了すると、ユーザはデータをセーブすべきことを（例えばセーブデータボタン４２により）指示し、データはファイルに保存される。
【００７０】
前述のステップを実施する機能に加え、ランテストページ３０により、更に追加的な機能が提供される。例えば、ランテストページ３０は、テスト装置（例えば、ボールバーの長さ）の較正を実施するためのインターフェース４４を含む。ランテストページ３０は、例えば、連続運動テストに加えてバックラッシュテストも実施するか否かを選択する機能も提供する。更に別の実施形態においては、ランテストページ３０は、中心への移動、中心の確認及び開始位置への移動のタスクを繰り返したり、例えばセットアップテストページ１０に戻ったりしなくても、複数のテストを、例えば複数の送り速度で実施する機能を提供する。
【００７１】
既に言及したように、長さが較正されたボールバーにより、絶対的な軸スケール誤差の測定が可能となる（ボールバー長さが較正されていない場合であっても、軸間のスケールミスマッチは測定できる）。従って、本発明の一実施形態では、ランテストページ３０は、ボールバー較正等の装置の較正を可能にするインターフェース４４を含む。例えば、このようなインターフェース４４は、ユーザが較正治具の長さを入力する数字フィールド４６と、現時点でのボールバーの長さは較正済みであるか否かの表示（例えば表示４８）と、較正開始を要求するためのボタン５０とを含む。
【００７２】
ボールバー較正が行われる一例示的実施形態では、ボールバー長さを較正するため、ユーザはまず、較正器の長さ（例えば、較正治具に印字されているもの）を入力する。入力値は（例えばソフトウェアにより）チェックされて、構成されたボールバーの公称長さの下で妥当であるかが確認される。有効な較正長が新しく入力される度に、内部状態は較正済みから未較正に遷移する。このとき、表示４８はボールバーが較正されていないことを表示し、ユーザは較正ボタン５０を押すことができる。
【００７３】
一実施形態においては、ボタン５０を押すと、ボールバーが初期化し、オン状態となり、短時間でデータを収集し、オフ状態になる一連の動作が開始される。データの一定性が（例えばソフトウェアにより）チェックされ、読み値はオフセットを決定するのに使用され、オフセットは絶対的なボールバー長さの読み値を得るためにボールバー測定値に加えられる。この値は保存され、後で得る測定値を処理する際に使用される。長さ較正は、例えば、テスト実行タスクを除く上述の主要なタスク中に実施できる。一例示的実施形態では、テストコーディネータＦＳＭは、状態が較正に不適切であるとき、較正制御を不可能にする。
【００７４】
ボールバーテストに加え、バックラッシュテストを行うこともできる。例えば、バックラッシュテストは、連続運動テストにより測定された総合的なロストモーションの内のワインドアップ成分とバックラッシュ成分を区別するために使用されるであろう。本明細書では、バックラッシュという語が、軸が停止位置に達した後も運動が継続するタイプのロストモーションを述べるために使用される。また、ワインドアップという語が、軸が運動している間に発生するタイプのロストモーションを述べるために使用される。
【００７５】
バックラッシュテストを行う一例示的実施形態においては、ユーザが、バックラッシュテストを実施することが望ましいことを示す場合、「開始位置への移動」タスクより前の或る時点で「バックラッシュテスト」チェックボックス５２にチェックを入れることによって行うことができる。このようなバックラッシュテストは、例えば、完全停止で終わるような単一軸移動の前と後にボールバー測定を行って、平面における各軸の継続しているロストモーションを測定するために使用できる。バックラッシュテストの一例示的パートプログラムが作動すると、（セットアップデータにおいて特定された範囲内にある）４つの象限境界への円弧に沿って各軸を移動させる。各象限の境界において、パートプログラムとＦＳＭは、これらの間でメッセージをやり取りするための仕組みを組み込むことにより一連のイベントを行う。
【００７６】
一例示的実施形態においては、各象限の境界において、次の一連の動作が行われる。
１．円中心へ向かう半径方向の単軸移動を行う。
２．軸運動を停止し、休止し、そして第一のボールバー測定値を収集する。
３．再度、軸を半径方向に沿って円中心に向かって移動させる。
４．軸運動を停止し、休止し、そして第二のボールバー測定値を収集する。
５．軸を半径方向に沿って前の点に向けて戻す。
６．軸運動を停止し、休止し、そして第三の測定値を収集する。
【００７７】
本発明の一実施形態においては、ボールバー測定毎に、有効性チェックを行いボールバーが測定期間中一定の偏倚であったことが確認される。従って、第一の測定値と第三の測定値の差が軸のバックラッシュである。第二の測定値は有効性をチェックするために用いられる。ある軸のための各測定点で測定されたバックラッシュの平均が、その軸のバックラッシュとして保存される。一方、軸ワインドアップは、例えば、連続テストのデータから得た軸の総合的なロストモーションの推定値から軸バックラッシュを差し引くことにより計算できる。
【００７８】
ランテストページ３０は、ユーザが送り速度を変更することができる数字フィールド５４も含む。このような実施形態は、例えばテストセットアップページ１０に戻らなくても、ユーザが複数のテストを実行することを可能にするという点で有用である。例えば、送り速度が変更される度に、オーバーシュート角度の長さについての有効性チェックが実施される。オーバーシュート角度の長さが十分でない場合は、警報メッセージが提案値と共に表示される。一例示的実施形態においては、テストが成功裡に完了した直後に新たなテストを実施するときには、ユーザは単に、（必要な場合には）新しい送り速度を入力してテスト実行ボタン５６を押すだけでよい。別の例示的実施形態では、連続する各テストは、各データファイルが例えば単一の反時計方向の結果と単一の時計方向の結果だけを含むように、それぞれのデータファイルに保存される。
【００７９】
ボールバーを用いて得たデータについての有効性テストの実施に関し、このような有効性テストを用いて、例えばボールバーのデータパイプにより収集された、内方送り移動から外方送り移動までのデータポイントの数と予想値とを比較することができる。データポイントの数が許容値を超えて予想データポイント数からずれている場合は、全テスト時間は予想とは異なり、データは有効でないと考えられる。このような有効性チェックの利点は、予想時間と実際の時間の差が大きい場合には、経過時間に基づく円角度の推定値に信頼性がなく、データ解析の信頼性は疑わしいと判断できるということである。
【００８０】
実際のテスト時間と予想時間とが異なる原因が発生する状況としては、１）送り速度が正しくない、２）真円度又は中心オフセット誤差が大きすぎて、円の途中で停止トリガを生じさせてしまう、３）サーボダイナミクスのダンピングが軽く、内方送りや外方送りの時にオーバーシュートあるいはアンダーシュートが生じる、等が挙げられる。内方送りトリガと外方送りトリガの間の総時間の予想値は、事前に、例えば（前に述べた、先読み／速度管理／Ｋｖエミュレーション等と同様の）運動制御サブシステムエミュレーションにより求めることができる。測定された時間と予想時間との比較に用いる許容値は、内方送りの前のボールバーの初期偏倚及び外方送りの後のボールバーの最終偏倚の不確定さに基づいて決められる。一実施形態では、加速遷移における経過時間と移動距離を測定するので、エミュレーションを実行する時間は最小化される。また、予想総時間は、例えば、テスト実行中にテストコーディネータＦＳＭによって使用され、外方送りトリガが予想された時に発生しないというエラー状態が検出される。
【００８１】
ランテストページ３０は、軸位置だけでなく例えば現在のボールバー測定値を示す数字表示を含むことができる。また、例えば現在のボールバー位置を示すことができる図形表示５８を含むことができる。このような表示５８は運動の進行を把握するのに有用である。更に、ランテストページ３０の別の実施形態では、パートプログラムブロック（例えば、現在、ＭＤＩバッファ内に存在するブロック）の表示６０を含むことができる。
【００８２】
図４を参照する。データ解析ページ７０は、ユーザが解析された測定値を見ると共に手を加えるためのインターフェースを提供するのに用いることができる。例えば、生測定値は、ヘッダを含むデータファイルに保存される。このヘッダは、テスト時の関連する機械の構成とテスト条件とを記述する。データ解析ページ７０は、ユーザが、以前に作られたデータファイルをロードしてこれに関する解析を行うことができるようにするファイルロード／ブラウズインターフェース７２を有することができる。
【００８３】
一例示的実施形態においては、テスト実行が成功裡に完了すると、この実行において作成されたデータファイルは自動的にロードされ、ユーザが例えばランテストページ３０からデータ解析ページ７０へ切り替えたときに、この最近収集されたデータが既にロードされ解析されている。一実施形態においては、生データファイルがロードされる度に、データは解析処理される。ボールバーテストを行う本発明の一実施形態における、ファイルロードのために実施されるデータ操作タスクを次に示し、更に説明する。
１．（円半径がボールバーの公称長さと異なる場合）ボールバー偏倚を円半径偏倚に変換する。
２．各データポイントの円角度を推定する。
３．円中心オフセットと真円度誤差を推定する（円中心オフセット誤差は、中心のセットねじが締め付けられたときに発生する、あるいはサーボドリフトにより発生する）。
４．誤差パラメータ及びそれらの統計的有意性について評価する。
５．モデルコヒーレンスの統計量を計算する。
６．全体の真円度誤差に対する各タイプの誤差の相対的な寄与度を計算する。
【００８４】
一例示的実施形態では、ボールバーテストに関するデータ解析ページ７０の内容には、１）ファイルヘッダにリポートされたテスト条件を反映するための表示７４、２）中心オフセット誤差の表示７６、３）真円度誤差の表示７８、４）中心補正された測定値の極誤差（pollar error）プロット８０、５）極誤差プロット８０の軌跡を識別するための凡例８２等が含まれる。極誤差プロット８０は、例えば、参照円からの半径のずれを円角度の関数として表示する。一実施形態においては、誤差の拡大率は、プロットの倍率（例えば、極座標プロットの軸における半径方向目盛あたりのミクロン数）により指定される。極座標プロット８０上の軌跡は、極座標プロットを読みやすいものにするために極座標原点から一定量オフセットすることができる。一例示的実施形態では、このオフセットは、中心が補正された測定値の平均半径に対応する軸上の半径を定義する、プロットの全範囲に対するパーセントで示される。
【００８５】
更に別の実施形態においては、データ解析ページ７０は、プロットを作るのに使用されるスケーリングとオフセットをユーザが操作できるようにするための、スライダーコントロール８４、８６と数字フィールド編集ボックス８８、９０を含む。このページは更に自動スケールボタン９２を含む。このボタンにより、例えば、標準のオフセットが適用されると共に、ディスプレイの範囲に収まるプロットが得られる最大の増倍率（最小のスケーリング）が計算され（適用され）る。本発明の一実施形態では、ファイルが最初にロードされるとき、プロット８０は自動スケーリングされる。
【００８６】
データ解析ページ７０は、比較するために２種類の別の測定値（例えば、２つの別のデータファイル）から得られる結果のプロットを同時に表示する機能も含むことができる。例えば、２セットのデータが主データと参照データに分類される。データファイルをブラウズしロードするためのコントロール群９４を参照ファイルのために設けることができ、統計値や誤差診断値を主データのために表示できる。また、スワップボタン９６により、主ファイルと参照ファイルとを入れ替えることができる。更に、参照ファイルを表示領域から消去するためのボタン９８も設けられる。
【００８７】
図４Ａを参照する。一例示的実施形態においては、データ解析ページ７０は、診断ボタン１００を含み、このボタンが押されると、新しいウィンドウ（例えば、診断ウィンドウ）１０２が現れる。このようなウィンドウ１０２は、例えば、誤差源のリスト、それぞれの推定値、各誤差源に対するチェックボックスを含む。例えば、チェックボックス（例えば、チェックボックス１０４）を用いて、極誤差プロット８０に対応する誤差源からの寄与分を含めるか否かを示すことができる。本発明の一実施形態においては、最初はチェックボックスにチェックが入れられている。従って、このようなチェックボックス（一個又は複数個）からチェックを外すと、推定されるその誤差の影響が測定値から取り除かれ、調整後の測定データを反映するために極誤差プロット８０を更新できる。また、診断ウィンドウ１０２は、ユーザが一回のクリックで全ての誤差成分を選択（あるいは選択から外す）ができるようにするチェックボックス１０６を含むことができる。
【００８８】
上述の機能により、例えばユーザが、一以上の誤差のタイプに対して適用した補償により、関連する機械の性能がどの程度向上するかを予想することができる。これに伴う利点としては、制御装置においてどの任意的補償機能を有効にすべきかを決定できることが挙げられる。
【００８９】
図４を参照する。更に別の実施形態では、データ解析ページ７０は、ユーザが半径誤差の各種様相を手動で評価するタスクにおいてユーザを補助するカーソル機能（ボタン１０８を押すことにより有効となるもの等）を含む。この機能を用いて、ユーザは、極誤差プロット８０の軌跡上の任意の点に極座標カーソルを置くことができる。カーソルが置かれた点に対して、その角度と平均半径からのずれを示す表示も設けることができる。
【００９０】
このようなカーソルの制御は、例えば、スライダーバーにより角度位置を増加させるあるいは減少させる、円角度の数字フィールドに値を入力する、プロット８０上の位置をタッチする（あるいはクリックする）、キーパッドの矢印キーを押して角度位置を増加させるあるいは減少させる等により行う。例えば、スライダー制御や矢印キーによりカーソルを移動させる場合には、低速（カーソルは測定ポイント毎にジャンプする）でも高速（カーソルは一定角度（例えば５°）でジャンプする）でも移動させることができる。
【００９１】
このようなカーソル機能は、例えばボールバープロット８０に現れる周期的誤差を人手により診断するための診断機能と組合せて用いられると有用である。例えば、周期的誤差は、診断ウィンドウ１０２を用いて推定される全てのタイプの誤差の影響を取り除くことにより分離される。残っている誤差の大きさと周期が、カーソルの助けを借りて人手により確認される。
【００９２】
再び、図４Ａを参照する。本発明の或る実施形態においては、診断ウィンドウ１０２に次の機能、１）誤差の表示順序を選ぶ機能（例えば、誤差全体に対する相対的な寄与度に基づきランキングされる、あるいはカテゴリーに基づき理論的にグループ化される）、及び／又は２）数値による誤差値の表示は、誤差パラメータで表示するか、真円度誤差全体に対するその誤差の寄与度で表示するかを指定する機能が設けられる。更に、診断ウィンドウ１０２は、測定された真円度（例えば、オリジナルの（中心補正された）データの真円度誤差）、補正された真円度（例えば、チェックボックスがチェックされているタイプの誤差源を有する調整後のデータの真円度）、及び／又はモデルコヒーレンス（測定データの内容を説明する、誤差モデルの能力の測定値）の読出し値１１０を含む。
【００９３】
図５Ａを参照する。ユーザが構成データ、例えばボールバー測定に影響を及ぼすタイプの軸補償に関連する較正データを変更するインターフェースを提供する補償調整ページ１１２を含めることができる。例えば、このようなページ１１２は、主平面（例えば、ＸＹ、ＸＺ、ＹＺ）を選択するためのプルダウンメニュー１１４を含むことができる。このような補償調整ページ１１２には、特定のタイプの補償（例えば、６種類の補償カテゴリーを以下、説明する）に関連するサブページも設けられている。
【００９４】
本発明の一例示的実施形態においては、各誤差カテゴリーについて、構成データ表示１１６が提供されている。この表示は、主平面の円運動に関与する軸に限定されている。構成データは、表示された論理軸への物理的コネクション全てに対し均一に適用される（論理軸への複数の物理的コネクションのためにどのようにして軸間（cross-axis）の結合が作られるかについては、本明細書において後で詳細に説明する）。水平軸（Ｈ）と垂直軸（Ｖ）は主平面毎に定義が異なる（｛ＸＹ：Ｈ＝Ｘ、Ｖ＝Ｙ｝；｛ＸＺ：Ｈ＝Ｘ、Ｖ＝Ｚ｝；｛ＹＺ：Ｈ＝Ｙ、Ｖ＝Ｚ｝）。この表示を用いて、どちらの軸が水平で、どちらの軸が垂直であるかを表示することができる。
【００９５】
図５Ａに示されたような水平軸交差補償（cross comp）サブページ１１８が提供されている。このサブページは、例えば、垂直軸位置を水平軸位置の関数として補償する直線性及び直角度補償値を指定するための構成データを含む。一実施形態においては、結合を構成する特定の論理軸がページのヘッダに表示される（例えば、Ｙ＝ｆ（Ｘ））。このページの構成項目としては、１）直角度係数、２）直線性係数、３）補償原点の水平軸座標、４）補償原点からの変位（±）で表される直線性補償の適用範囲等が挙げられる。
【００９６】
これと同様に、垂直軸交差補償サブページが含まれており、このページは例えば、水平軸位置を垂直軸位置の関数として補償する直線性及び直角度補償値を指定するための構成データを含む。一例示的実施形態においては、このページの構成項目は、水平軸を垂直軸に替えて適用する以外は、図７に示した前述の水平軸交差補償ページに関して挙げたものと同じである。
【００９７】
図５Ｂを参照する。水平軸スケール誤差補償サブページ１２０を含めることができる。このページは、例えば水平軸のピッチ誤差やスケール誤差の補償値を指定するのに使用される構成データを含む。例えば、このようなページは、いずれの軸が、選択された特定の主平面に対する水平軸であるかを示す。ピッチやスケールの補償は、直角度／直線性補償についての結合を作り出すことにより達成される。この場合、軸がその軸自体に結合され、直角度補償係数がピッチ誤差係数であり、直線性補償は使用不能にされる。一例示的実施形態においては、このようなページは、ピッチ誤差補償係数や水平軸の補償原点のためのフィールドを含む。
【００９８】
一方、図５Ｃを参照すると、垂直軸スケール誤差補償サブページ１２２を含むことができ、このページは例えば、垂直軸のスケール誤差補償値を指定するのに使用される構成データを含む。一例示的実施形態においては、このようなページは、水平軸ではなく垂直軸のスケール誤差を補償する以外は、上述の水平軸スケール誤差補償ページと同じである。
【００９９】
図５Ｄを参照する。ロストモーション補償サブページ１２６を更に含むことができる。このページは、主平面の円運動に関与する水平軸及び垂直軸についてのバックラッシュ補償とワインドアップ補償のための構成データ項目を含む。一例示的実施形態においては、この水平軸及び垂直軸に関連付けられた特定の論理軸が表示領域に表示される。
【０１００】
更に、図５Ｅを参照すると、摩擦補償調整サブページ１２８を含むことができ、このページは、例えば、主平面の円運動に関与する水平軸及び垂直軸についてのクーロン摩擦フィードフォワードパラメータのための構成データ項目を含む。一例示的実施形態においては、この水平軸及び垂直軸に関連付けられた特定の論理軸が表示領域に表示される。
【０１０１】
別の実施形態においては、補償調整ページ１１２はコミットボタン１３０を更に含む。このボタンは、（現在値）数字フィールドの値を例えばこの制御装置に関連するデータベースにコピーし、例えば、構成変更システムイベントを発して構成データを更新する。
【０１０２】
補償調整ページ１１２は、既存の補償パラメータを変更するのに用いられる提案値も提供できる。例えば、各構成パラメータはページ上の３種類のフィールド、即ち元の値フィールド１３２、現在値フィールド１３４、提案値フィールド１３６に表示される。一例示的実施形態においては、コミットボタン１２８が押されたときに、各構成項目の現在値フィールドの値がデータベースにコピーされる。
【０１０３】
一実施形態においては、現在値フィールド１３４が通常表示されている。一方、このような実施形態においては、元の値フィールド１３２と提案値フィールド１３６が表示されるのは、主ファイルのためのパラメータ推定値が最も最近のテストから得られている場合と、補償パラメータのための現在のデータベースの値が最も最近のテストで使用された値と同じである場合である。これに伴う利点は、適切なデータを用いて補償を確実に調整することができることである。これを達成するアプローチとしては、次の２種類の条件が満たされた場合に元の値フィールド１３２と提案値フィールド１３６を表示するようにすることである。即ち、１）有効にロードされた主ファイル（例えばデータ解析ページ７０）のファイル参照番号が、この機械で実施した最も最近のテストに関連付けられたデータ参照番号（テスト実行開始時に、テストの主平面や日付、時間に基づいて決められた固有の数字列）と一致する場合、及び２）補償調整ページ１１２で選択された主平面が主ファイルの主平面と同じである場合である。
【０１０４】
このような実施形態においては、ファイル参照番号は、ファイルがロードされたときにデータファイルヘッダから抽出できる。ファイルが最初に作られた場合は、このテストのデータ参照番号がファイルヘッダにコピーされる。この機械平面に対する既存のパラメータ的補償も、実行開始時に把握される。
【０１０５】
一例示的実施形態においては、現在ロードされている主ファイルが最も最近の測定結果である場合や、補償調整ページ１１２で選択された主平面が最も最近の測定における平面に相当する場合は、各構成項目に対する元の値フィールド１３２と提案値フィールド１３６が表示される。一実施形態においては、これらのフィールドの数字はユーザによる変更ができない。このような実施形態では、元の値は、収集された時点で有効であった補償パラメータの値を示している。これは、テスト実行開始時に得た構成スナップショットからコピーできる。
【０１０６】
一方、提案値は、補償に対する正しい調整であると判断された値とすることができる。提案値は、測定データから推定される関連誤差パラメータの値と元の値とに基づき計算される。一例示的実施形態においては、補償調整ページ１１２は、提案値フィールドの内容を現在値フィールドにコピーする機能、元の値フィールドの内容を現在値フィールドにコピーする機能、現在値フィールドの補償値を消去し無効にする機能を提供する。例えば、ボタン１３８、１４０、１４２を設けることができ、これらを選択すると上記タスクをそれぞれ初期化することができる。このような実施形態においては、これらのボタンはそれぞれ、現在のサブページ上のフィールドに対してその動作を行う。また、これに加えて、全てのサブページ上でこれらの動作を行う３種類のボタン（例えば、ボタン１４４、１４６、１４８）を設けることができる。
【０１０７】
提案値を作り出すことに加えて、提案された補償パラメータそれぞれについての統計的有意性の尺度を決定することができる。本明細書における有意性とは、推定された誤差パラメータが誤差パラメータの分散の推定値に対して「有意である」か否かを示す尺度である。有意性の尺度の発生の根拠となる計算については本明細書において更に説明する。
【０１０８】
再び、図５Ｄを参照する。各提案値の有意性が、メータ１５０等により図形表示されている。このような実施形態では、メータ１５０の針が高い数値を示している場合は、補償パラメータに対して提案された変更が有意であることを示し、メータ１５０の針が低い数値を示している場合は、補償パラメータに対して提案された変更が有意でないことを示している。
【０１０９】
本発明の一実施形態においては、補償パラメータの提案値は、データ収集時に有効であった補償パラメータに誤差パラメータの最新の推定値（の負の値）を加えることにより決定される。各補償パラメータの提案値をどのようにして得るかについては、本明細書において詳細に説明する。
【０１１０】
ボールバーテストを伴う本発明の例示的実施形態で行われる処理について、ここで詳細に解析する。例示によるその詳細な説明の一部として、本明細書において開示された例示的実施形態の或る様相は、特定の市販ボールバー（レニショー（Renishaw）により販売されているＱＣ１０ボールバー）や特定の運動制御システム（Ａ２１００）に特有のものである。しかしながら、当業者であれば、本発明の各実施形態を他の装置（他のボールバー等）や他の制御システムに適用できることはわかるであろう。特に、本明細書において更に記載される各種実施形態の内の特定のものは、現在Ｂａｌｌｂａｒ  Ａｕｔｏｔｕｎｉｎｇ  ｆｏｒ  Ｐａｒａｍｅｔｒｉｃ  Ｃｏｍｐｅｎｓａｔｉｏｎ（ＡＴＢ）と称されＡ２１００制御装置と共に用いるために設計されたアプリケーションソフトに関するものである。これについての詳細な説明を行うが、これは例示的な実施例である。
【０１１１】
簡単に説明すると、ＱＣ１０ボールバーは、そのデータを標準的なＲＳ２３２シリアルポートへ出力する。本明細書に記載する特定の例示的実施形態は、オペレーティングシステム（例えば、現在Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓの商標で販売されているもの等）内で完全に実行されるデータの収集と解析を含む。これらの実施形態の一部では、ボールバーからの実時間測定データが一定のサンプリング速度で獲得され、オペレーティングシステムを介してアクセス可能なメモリに選ばれる。このように、非実時間オペレーティングシステム上で、連続的なデータ（contiguous data）が得られる。
【０１１２】
従ってこのようなアプローチでは、ボールバーデータは、例えば制御装置の実時間内部データと正確に同期しているわけではない。本明細書に記載する例示的実施形態の内の或る実施形態で実施されるこのタイプの解析では、ボールバーデータと内部制御データの同期が必要ない。しかしながら自動チューニングを行う他の実施形態は、このような同期を伴う。
【０１１３】
本発明の一例示的実施形態における測定データの解析に関して、生の測定データに対して多くの処理を行うことができる。例えば、まず、生データに対して、ボールバーの回転中心と円中心との間のオフセットが補正される。真円度誤差（誤差全てを組合せた影響の程度）が、中心補正されたデータから抽出される。
【０１１４】
次に、このデータから、誤差パラメータの推定値を抽出できる。パラメータの推定において、データのコヒーレンスについての判断を行うことができる。誤差パラメータの推定値が得られると、各誤差の影響が決められ、誤差の影響は、例えばユーザが行う診断ウィンドウ１０２のチェックボックスの操作に応じてデータから取り除かれる。これと同様に、各誤差タイプが真円度全体に与える相対的な影響が評価される。
【０１１５】
この特定の実施例におけるデータ解析の多くは、生データからパラメータを抽出するために「曲線当て嵌め」法を採用している。本明細書では、「曲線当て嵌め」という語は、測定データを用いて、仮定された構造やフレームワークの数学的モデルのパラメータを決定する方法を示す。理想的には、曲線当て嵌めにより、測定データを作り出す可能性が最も高くなる（maximum likelihood）ように数学的モデルにおけるパラメータの値が決定される。
【０１１６】
本発明の一例示的実施形態により検出されるパラメータ的機械誤差に対しては、曲線当て嵌めにおいて最小二乗最適化を行う。各測定誤差が正規分布し、分散が等しい場合は、最小二乗推定量は最尤推定量である。これは、本ケースの場合には正しくないかもしれないが、最小二乗推定量からはきちんとした結果を提供する傾向があり、データについての利用可能な演繹的情報に与えられた容易に利用できる代替物がないため、いずれにしても最小二乗推定量を用いる。仮定された半径誤差の構造がモデルパラメータにおける一次結合を含むため、比較的わかりやすい線形最小二乗アプローチを採用することができる。
【０１１７】
線形最小二乗の式（formulation）は、過剰決定系に基づいて決められる。この系では、モデルパラメータによりスケールされる基底関数の一次結合が測定値を生み出す。このような特定の場合は、基底関数は、（一定の）公称円半径と（変化する）円角度の関数である。測定値は、半径測定値の関数である。式は次のような行列形式で記述される。式中、｛Ｐ｝は要素数ｍのパラメータベクトル、｛ｆ（ｒ（ｔ））｝は時間ｔにおいて測定されたボールバー半径の関数を要素とする要素数ｎのベクトル、［Ａ（Ｒ，θ（ｔ））］は列が円角度と公称円半径から作られた基底関数であるｎ×ｍ行列である。
【０１１８】
【数１】
2004525467.tif 000003
【０１１９】
ｎ＞ｍの場合、式（１）は既知数の数が未知数より多い過剰決定系を表す。この式の解は、モデル化されたｆ（ｒ）と測定されたｆ（ｒ）の間の誤差の二乗の合計を最小にする最小二乗法を用いて求める。
【０１２０】
【数２】
2004525467.tif 000004
（２）
【０１２１】
この量を最小のものとするパラメータベクトル｛Ｐ｝の解は、最小二乗解を含み、所謂正規方程式により記述される。
【０１２２】
【数３】
2004525467.tif 000005
【０１２３】
この解は、行列［［Ａ］Ｔ［Ａ］］の逆行列を含む。この行列の特性は、実対称で正値行列であることである。これらの特性は、行列を反転するための技法を見つけるときに有利である。この逆行列は、実対称正値行列の固有値と固有ベクトルを求めるためのヤコビ法を用いて計算できる。
【０１２４】
簡単に説明すると、ヤコビ法では、行列が対角行列となるまでこの行列の一部に対し回転変換を連続的に適用する。ヤコビ法については、「Ｃ言語による数値計算のレシピ（Numerical Recipes in C）」（Press、Flannery、Teukolsy、Vettering著）に十分に記載されており、これを本明細書の一部を構成するものとしてここに援用する。ヤコビ法は、行列が反転可能である限り機能する。正規方程式を解くためにヤコビ法を用いる別の利点は、［Ａ］Ｔ［Ａ］の複数の固有値が提供されることである。これらの固有値を用いて行列［Ａ］の条件数（軸運動により提供される励起に関するファクタ）を決定することができる。
【０１２５】
次のトピックは、各パラメータ的機械誤差がボールバー半径測定に及ぼす影響を記述する式を作ることに関する。このような式はそれぞれ、誤差パラメータが同時に推定されるように個別の過剰決定系の式に組み込まれる。このアプローチにより、測定の各様相が間違った誤差タイプによるものであると誤って判定してしまう可能性が最小となる。
【０１２６】
式は、測定されたボールバー半径に関する各誤差タイプの影響を記述できるように作られる。次の各式は、ＸＹ平面の場合について作ったものである。これらの結果は、ＸＺ平面やＹＺ平面に同様に適用できる。この式の作成においてｘとｙを用いるが、これは円平面の水平軸と垂直軸を意味するものであり、工作機械の軸を意味するものではない。
【０１２７】
多くの場合、円の中心はボールバーベース治具のセンタボールと一致しない。これらの差は、セットねじを締め付けた際にセンタボールがシフトした場合や、サーボオフセットが時間と共にドリフトした場合、軸が大きな直線性誤差（後述する）を有する場合、或いは他の数多くの理由によって起こり得る。測定値を正しく解析するために、中心オフセットの影響を他のパラメータ誤差の影響と共に考慮することができる。
【０１２８】
例示的実施形態において、中心オフセットは機械誤差ではなく、測定に関連する誤差であると考える。センタリング治具の位置から理想円上の一点までのベクトルの長さの式を円角度（circle angle）の関数として考えることにより、中心オフセットを決定するための最小二乗式を得ることができる。この状態を図６Ａに示すようにグラフで表わすことができる。中心オフセット誤差を伴うボールバー測定値の極誤差プロットは、図６Ｂに示すタイプの「インゲンマメ」状の軌跡（signature）を含む。
【０１２９】
図６Ａを検討することによって、円角度θの関数としての次の測定半径ｒの式が得られる（式中Ｒは平均円半径を示し、軸がスケール誤差（後述する）を有する場合にはこの平均円半径はプログラムされた半径と異なっている）。
【０１３０】
【数４】
2004525467.tif 000006
【０１３１】
上記式を次の式に展開することができる。
【０１３２】
【数５】
2004525467.tif 000007
【０１３３】
測定を複数回行う場合、前記式を行列式で表わし最小二乗解を提供する（accommodate）ことができる。
【０１３４】
【数６】
2004525467.tif 000008
【０１３５】
前記式を式（３）を用いて「解き」、パラメータベクトルを得ることができる（ここで、左の行列を[Ａ]、３ｘ１ベクトルをＰ、ｎｘ１ベクトルをｆ（ｒ）とする）。円中心オフセットを決定するために用いる式により平均円半径Ｒも得られる。３つの所望のパラメータ、Ｒ、ＥＣＴＲ＿Ｘ及びＥＣＴＲ＿ＹをベクトルＰから反復技法によって得ることができる。
【０１３６】
ＥＣＴＲ＿Ｘ２＋ＥＣＴＲ＿Ｙ２をゼロに設定する一次近似により、第一反復用パラメータを直接得ることができる。典型的には、中心オフセットは円半径に対して非常に小さく、反復の必要はない。しかし、頑強性（robustness）を高めるため、必要時に備えて反復アルゴリズムを利用できるようにする。以下に記載の反復アルゴリズムは、ボールバー中心が円内にある限り正しい結果に収束する。
【０１３７】
【数７】
2004525467.tif 000009
【０１３８】
一旦、円中心オフセットの値が既知となれば、この値を生のボールバー半径データｒｒａｗの操作に用いて、該データから中心オフセットの影響を除去することができる。中心オフセットの影響は真円度の統計値を計算する際に除去することができる。中心オフセットの影響を除去するための近似式は、図６を検討し、水平軸に対するボールバーの角度が円角度と等しいと仮定することによって得ることができる。
【０１３９】
【数８】
2004525467.tif 000010
【０１４０】
中心オフセットについて測定半径を調整するための式は、図６を検討し、余弦の法則を用いることによって得ることができる（式中、ｘｃｅ及びｙｃｅはそれぞれ中心オフセットＥＣＴＲ＿Ｘ及びＥＣＴＲ＿Ｙの推定値を示す）。
【０１４１】
【数９】
2004525467.tif 000011
【０１４２】
中心調整半径の一つの解は、前記２次式の正の根である。中心が円内にある限り、この２次式の根は実数となる。円形度誤差即ち真円度は、円の真円からの最大ずれ量である。真円度は（最大中心調整半径−最小中心調整半径）で定義することができる。
【０１４３】
【数１０】
2004525467.tif 000012
【０１４４】
例示的実施形態においては、測定値から計算した真円度が表示される。ユーザが選択したパラメータ誤差の組合せの影響を除去することができるように数学的に操作したデータについての真円度を計算し、及び／又は表示することもできる。
【０１４５】
最も一般的な工作機械デザインは、互いに直交する２つの個別の直線変位アクチュエータ機構（軸）（即ち、これら軸は直交する）の運動を調和させることによって面内の直線運動がもたらされるような配置を含む。この工作機械の製造プロセスにおいて、意図したように２つの軸が互いに正確に直交しないような直角度誤差が生じる場合がある。この直交からのずれは直角度誤差或いは単に直角度として知られている。
【０１４６】
直角度誤差は平面内の２つの軸間の関係を示すもので、主平面当り１つの直角度誤差が生じる。平面内の各軸の直角度の補償のために個々に提案される値も、総直角度補正値を２つの軸間で均等に分配することによって得ることができる。直角度誤差の円半径に対する影響を表わす式は図７に基づいて得ることができる。
【０１４７】
円角度θの関数としての実際の（非円形の）曲線上の点の座標は、次の式によって表わすことができる（式中、Ｒは平均半径を示し、この平均半径は、機械がスケール誤差をも有する場合にはプログラムされた半径と異なっている）。
【０１４８】
【数１１】
2004525467.tif 000013
【０１４９】
【数１２】
2004525467.tif 000014
【０１５０】
これらの式において、ｓｉｎ（（１／２）φ）ｔａｎ（（１／２）φ）を含む右辺の最終項は、φの値が小さい場合にかなり小さくなる。これは、多くの工作機械において見出される直角度誤差の大きさについての妥当な仮定である。円角度の関数としてのボールバー半径は所望の結果であり、ボールバー半径は曲線上の点のｘ及びｙ成分の二乗の和を計算し、上記の簡略化のための仮定を用いることによって得ることができる。
【０１５１】
【数１３】
2004525467.tif 000015
【０１５２】
【数１４】
2004525467.tif 000016
【０１５３】
φが小さい場合、項ｓｉｎ２（（１／２）φ）はかなり小さくなるため、前記式は次のように簡略化することができる。
【０１５４】
【数１５】
2004525467.tif 000017
【０１５５】
Ｘ−Ｙ平面内の直角度誤差を示すパラメータは、無単位の比例因子ｓｉｎ（（１／２）φ）として定義することができる。類似のパラメータをＸ−Ｚ平面及びＹ−Ｚ平面について得ることができる。
【０１５６】
【数１６】
2004525467.tif 000018
【０１５７】
次の行列式は、直角度パラメータの項の一次結合として表わされる式の過剰決定系についてのものである。
【０１５８】
【数１７】
2004525467.tif 000019
【０１５９】
軸の直角度誤差は、百万分の一（ｐｐｍ）或いはこれに相当するミクロン／メートルやインチ／ミルの単位で垂直偏差として表わされることが多い。このようにして、直角度補償値を表わし、直角度誤差を画面上等に表示することができる。無単位の直角度パラメータを百万倍することによって、この無単位のパラメータをｐｐｍ単位の直角度に変換することができる。
【０１６０】
【数１８】
2004525467.tif 000020
【０１６１】
従来の直線運動工作機械の軸には、正しい位置に移動するための正確なフィードバック測定装置が含まれる。軸のスケール誤差は、フィードバックメカニズムが不正確であることや、回転デバイス等からのフィードバック測定値を直線変位に変換するためのパラメータが不正確であることによって生じる。一般的な直動軸メカニズムは、ボールねじを駆動する回転モータを含んでいる。ボールナットによってモータの回転運動が直線運動に変換される。軸の位置は、モータ角度を測定し、ねじピッチの仮定値に基づいて軸の位置を計算することによって推定することができる。或いは、軸の位置は、ガラススケール等の直線変位センサを用いて測定することもできる。
【０１６２】
前者の場合、ボールねじの仮定ピッチと実際のピッチとの差によって（即ち、このピッチ誤差によって）、軸が不正確な距離を移動することとなる。後者の場合、熱膨張等の要因によるスケール自身内の誤差（スケール誤差）によって、軸が不正確な位置へ移動することとなる。このように、ピッチ誤差やスケール誤差によって、軸が所望の距離とは異なった距離を移動することとなる。
【０１６３】
この種の誤差は、ラックアンドピニオンやリニヤモータによって駆動される軸等の他の軸メカニズムにおいても現われる。この種のメカニズムに起こる基本的な誤差は、軸の移動距離に直線比例する位置誤差である。比例定数は、百万分の一（ｐｐｍ）（ミクロン／メートルやミル／インチに相当）等の単位を用いて表わすことができる。
【０１６４】
平面内における軸の直線スケール誤差の円運動に対する影響を図８に示す。この図は、スケール誤差が半径に対して非常に大きい場合の実際の円（極誤差プロットではない）を示す。この図は、どのようにして各軸の２つのスケール誤差が互いに作用し次の二種類の影響をもたらすかを示している。１）各軸に平行な方向への円の伸長や圧縮の原因となる軸間の相対的なスケールミスマッチ、及び２）（歪んだ）円の平均（最も適合する）半径の全体的な拡大や縮小。図８は、Ｘ軸上のスケール誤差が正の値であり（即ち、軸が所望の距離以上に移動する）、Ｙ軸上のスケール誤差が負の値である（即ち、軸が所望の距離より小さい距離を移動する）場合の具体例である。（正の）Ｘ軸のスケール誤差が（負の）Ｙ軸のスケール誤差よりも大きいため、（最も適合する円）の平均円半径は理想円の半径よりも大きい。
【０１６５】
各スケール誤差の測定円半径に対する影響を表わす式は、まずｘ軸とｙ軸とを別々に考えることによって得ることができる。
【０１６６】
【数１９】
2004525467.tif 000021
【０１６７】
瞬時半径（instantaneous radius）の二乗は、ｘベクトル成分及びｙベクトル成分の二乗の和である。誤差パラメータの二乗がかなり小さいという（妥当な）仮定の下に、次の関係式を得ることができる。
【０１６８】
【数２０】
2004525467.tif 000022
【０１６９】
上記式はｎｘ２行列式として再構築することができる。この再構築は、ｒ２（θ）とＲｐｒｏｇとの差が有意になるように（meaningful）ボールバーの長さを較正した場合に行うことができる。
【０１７０】
例示的実施形態において、ボールバーの長さを較正しない場合においても、ｘスケール誤差とｙスケール誤差との差が明らかにされる。一つのアプローチでは、Ｘスケール誤差及びＹスケール誤差の各々をスケールミスマッチ誤差と平均半径に変換する。ボールバーの長さを較正しない場合には、平均半径の推定値は捨てる。ボールバーの長さを較正した場合には、平均半径の推定値を用いて個々の軸のスケール誤差をスケールミスマッチ誤差から得ることができる。新しい式のパラメータは以下のように定義される。
【０１７１】
【数２１】
2004525467.tif 000023
【０１７２】
スケール誤差が誤差の項の二乗をかなり小さくする程に十分小さい場合、曲線上のｘ及びｙの位置を表わす次の式を用いることができる。これらの式は、円がｘ方向に伸長しているという仮定に基づくが、円が実際にはｙ方向に伸長している場合、スケールミスマッチパラメータＥＳｍｉｓｍａｔｃｈは負の数となる。
【０１７３】
【数２２】
2004525467.tif 000024
【０１７４】
前記式において二乗された各成分を合計することによって、瞬時ボールバー半径の式が得られる（式中、二乗された誤差の項は再度無視することができる）。
【０１７５】
【数２３】
2004525467.tif 000025
【０１７６】
前記式は、対応する時間における測定値についての次の行列式で表わすことができる。
【０１７７】
【数２４】
2004525467.tif 000026
【０１７８】
ボールバーの長さを較正しない場合、Ｒａｖｇの推定値は意味を有さず、個々の軸スケール誤差をスケールミスマッチ誤差から得ることはできない。この場合、個々の軸スケール誤差の値は、観察されたスケールミスマッチに対して各軸が均等に寄与していると仮定することにより計算することができる。
【０１７９】
【数２５】
2004525467.tif 000027
【０１８０】
ボールバーの長さを較正する場合、個々の軸スケール誤差を次の式を用いて得ることができる。
【０１８１】
【数２６】
2004525467.tif 000028
【０１８２】
前記式における個々の軸スケール誤差及びスケールミスマッチ誤差は、無単位の比例因数である。しかし、一般にはこれらの因子はｐｐｍ（ミクロン／メートル又はミル／インチとしても表わされる）の単位で表わされる。スケール誤差（ＥＳＣＬ＿Ｘ、ＥＳＣＬ＿Ｙ、ＥＳＣＬ＿ＸＹ）を無単位の因子からｐｐｍ単位の因子へ変換するには、単にスケール誤差の項を百万倍すればよい。
【０１８３】
上記検討においては、軸の直線スケール誤差が、平均円半径が理想半径と異なる原因となる現象であると仮定した。考慮した他の種類のパラメータ誤差が平均円半径に影響を及ぼすとは思えない。具体的には、直角度誤差や直線性誤差、ロストモーション誤差、サーボミスマッチ誤差は平均円半径に影響を及ぼすとは思われない。
【０１８４】
しかし、スケール誤差の他に、別の現象が平均円半径に対し影響を及ぼしていると思われる。位置コントローラの動的特性は、円半径や送り速度によって変化する振幅減衰（或いは振幅増幅）をもたらし得る。位置コントローラはローパス周波数特性を有し、一定周波数において増幅を示す位置コントローラもある。円周波数は秒当たりの送り速度を半径で除した値であるため、円周波数は送り速度の増加又は公称半径の減少によって増加する。ボールバーの長さを較正した場合、位置ループの動的応答の予測される挙動を考慮して平均半径の推定値を調整できる。
【０１８５】
位置ループの応答の予測挙動は、多数の近似的仮定に基づくものとすることができる。これらの仮定は、位置ループのカットオフ周波数より円周波数が低い場合に妥当であると考えられる。最高送り速度のボールバーテストであっても、最低ゲインコントローラの軸の帯域幅内の周波数に対応すると予想される。例えば、Ｋｖゲインが１．０でフィードフォワードのない軸は約２．７ヘルツのカットオフ周波数を有し、円半径が最小ボールバー長さ１００ｍｍと等しい場合、カットオフ周波数に対応する送り速度は１００，０００ｍｍ／ｍｉｎとなる（即ち、多くの機械の能力を超え、ボールバーテストの際に通常用いられるであろう値よりも高い値となる）。軸の動的応答についての仮定は以下のようになり得る。
１．円平面内の運動を行う両方の軸は、同一のＫｖ値及びＶＦＦ値を有する。
２．両方の軸はカットオフ周波数まで等しい振幅応答を有する。
３．有効ＫｖはＫｖａｄｊｕｓｔによって調整した公称Ｋｖと等しい。
４．軸の動力学は、無限帯域幅速度ループを有する連続時間システムとして近似される。
【０１８６】
これらの仮定に基づき、軸の動的応答の平均半径に対する影響を図９に示すシステムより見出すことができる。位置コントローラについての簡略化されたモデルの伝達関数を以下に示す。
【０１８７】
【数２７】
2004525467.tif 000029
【０１８８】
角周波数ωの正弦波入力に対する振幅スケーリングは、ｓ＝ｊωにおける伝達関数の大きさを評価することによって決定することができる。
【０１８９】
【数２８】
2004525467.tif 000030
【０１９０】
一定送り速度での円運動の場合、軸運動はω＝送り速度／（６０Ｒ）の正弦波状となる。両方の軸は同一の応答性を有すると仮定しているため、半径の振幅スケーリングは軸の振幅スケーリングと等しくなる。ωへの代入によって、位置ループの動的応答に起因する半径スケーリングの最終結果が得られる。
【０１９１】
【数２９】
2004525467.tif 000031
【０１９２】
プログラムされた円半径と動的応答のモデルが与えられれば、予測半径に対しての全スケーリングを測定することによって、動的応答を軸のスケール誤差の推定値へ含めることができる。
【０１９３】
【数３０】
2004525467.tif 000032
【０１９４】
【数３１】
2004525467.tif 000033
【０１９５】
軸の直線性誤差は、直線性誤差を含む軸に垂直な方向の直線変位誤差である。直線性誤差は直角度誤差と同様に扱うことができる。機械の直動軸（例えば、ｘ、ｙ及びｚ軸）の内の１つの軸の方向に平行な方向を有する直線変位誤差を考える。言い換えれば、直線性誤差は機械の１主平面に対して同時に考えることができる。
【０１９６】
直線性誤差は、垂直軸の方向内の誤差と誤差を含む軸の位置との関係が非線形である点で、直角度誤差と区別することができる。本検討において、この非線形の関係は、ボールバーテストにおいて円の中心位置を対称軸が通過する対称放物曲線の場合に限定される。Ｙ軸方向におけるＸ軸の直線性誤差についての仮定構造は次の式で定義される（式中、ΔＹは直線性誤差によって生じるずれを示し、Ｘ０はテスト円の中心のｘ座標を示し、ＥＳＴＲ＿Ｘ＿Ｙは直線性誤差のＹ軸方向成分に対するＸ軸の直線性誤差因子である）。
【０１９７】
【数３２】
2004525467.tif 000034
【０１９８】
直線性誤差が放物曲線によって合理的に近似されるという仮定は、軸案内面が湾曲形状の基本的な直線性誤差を有することが多いことが示された、工作機械を用いた経験に基づいている。基本成分を含むように直線性誤差を限定すると、案内面が複数の湾曲や揺れを有する場合の誤差を解析によって明らかにできなくなる。基本成分よりも複雑な直線性誤差は、レーザ測定値に基づいてテーブルを作りアプローチや交差軸誤差補償を用いる等の、データに基づくアプローチを用いて取り扱うことができる。
【０１９９】
直角度誤差は線形傾向の存在の原因となるため、放物線が垂直軸に平行な線について対称であるという仮定は合理的な仮定となり得る。円の中心位置は任意でありテスト毎に変化するため、放物線の対称軸がテスト円の中心ｘ０を通過するという仮定は、機械についての物理的洞察に基づくものではない。この限定は、解析を大幅に簡略化し、最小二乗標準式の単一評価からの誤差パラメータの推定を可能にするため、かかる限定を含めることができる。この限定は、ボールバーテストの範囲内で誤差源を識別する能力を制限するものではない。なぜなら、式（３１）を展開した下記の式（３２）によって明らかなようにｘ０が、１）直角度誤差の推定によって明らかになる線形トレンド及び２）中心オフセット誤差の推定によって明らかになる中心オフセットのｙ成分における一因子であり、従ってｘ０を任意に選択できるからである。
【０２００】
【数３３】
2004525467.tif 000035
【０２０１】
直線性のためのｘ０の特定の選択に適合するｙ中心オフセットや直角度の推定値を提供することにより、最小二乗アプローチによって最適な結果が得られるという点で、ｘ０を任意に選択することができる。しかし、ｘ０を任意に選択した場合、テストの範囲外の誤差モデルの外挿が無効になる。テストの範囲外の領域に上記推定値に基づく補償を適用すると、これらの領域内で起こる誤差は、補償を行わない場合に起こり得る誤差に比べて容易に大きくなる。
【０２０２】
式（３２）における線形傾向定数項の存在は、直角度誤差と中心オフセット誤差は直線性誤差と同時に推定することを意味する。従って、例示的実施形態においては、診断を行う前に中心補正を生データに適用しない。これは、３６０度未満をカバーするデータ円弧にとって潜在的に重要である。
【０２０３】
上記仮定を満たす、Ｙ軸が直線性誤差を有さず、Ｘ軸が直線性誤差を有するＸ−Ｙ平面の状況の一例を図１０に示す。このプロットは、増幅の程度が大きい極誤差プロット上の曲線の形状に対して、どのように直線性誤差が影響を及ぼすかを示すものである。歪んだ曲線の式は、式（３１）から得た誤差を円の式に適用することによって得ることができる（式中、Ｒは実際の最も適合する円の半径を示し、この半径はスケール誤差に起因して公称半径とは異なっているであろう）。
【０２０４】
【数３４】
2004525467.tif 000036
【０２０５】
半径の二乗は、曲線のｘ及びｙ座標の二乗の和である。直線性誤差が小さいと仮定することによって直線性係数の二乗を含む項が無視できる場合、角度の関数としての次の円半径の式を導くことができる。
【０２０６】
【数３５】
2004525467.tif 000037
【０２０７】
同様に、Ｙ軸の直線性誤差の瞬時円半径に対する影響を表わす類似式を導くことができる。Ｙ軸の直線性誤差ＥＳＴＲ＿Ｙ＿Ｘの影響を表わす式を下に示す。
【０２０８】
【数３６】
2004525467.tif 000038
【０２０９】
両方の平面直線性誤差の複合的影響を、測定を複数回行う場合について書かれた行列式を用いて下に示す。
【０２１０】
【数３７】
2004525467.tif 000039
【０２１１】
上述のように、直線性誤差の推定は直角度誤差や中心オフセットの推定と同時に行うことができる。従って、例示的実施形態では、前記行列式を直接には用いない。これらパラメータを同時に推定する包括的行列式を更にここで提供する。
【０２１２】
サーボミスマッチ誤差とは、円平面の２つの軸間の動的応答の差によって生じる誤差である。サーボミスマッチの支配的な影響は位相ミスマッチである。上述の検討においては、Ｋｖゲインが低い場合でも、軸の振幅応答が考え得る最も高い円周波数を超えて平坦であることがどのようにして予測されるかについて記載した。これは、振幅応答におけるミスマッチを生じることなしにＫｖゲインがミスマッチになり得ることを意味する。
【０２１３】
しかし、これは、フィードフォワードのない位置ループの場合に、即座にロールオフし始める位相応答にはあてはまらない。円周波数（即ち、送り速度／半径）がいかなる値であっても、ｘ及びｙ軸の正弦曲線間の位相差は９０度であることが望ましいが、この理想量に対して一定の偏差だけ異なっていてもよい。この一定偏差は円周波数によって変わるが、多くの場合、円周波数が増加するにつれてこの偏差はより顕著になる可能性が高い（しかし、この偏差と円周波数との関係は必ずしも単調ではない）。
【０２１４】
この位相偏差は、有効位置ループゲインや速度ループ応答におけるミスマッチ、或いはこれらの両方におけるミスマッチによって生じ得る。従来、単一のボールバー測定を用いて位相ミスマッチの原因を診断することは不可能であり、この診断は各軸についての周波数応答測定を個別に行うことによってなし得ていた。観察されたサーボミスマッチ誤差に対して補償を行う試みがなされない場合でも、サーボミスマッチ誤差を計算することができる。なぜなら、これによって、このような誤差が存在することをユーザに知らせ、サーボミスマッチ誤差が誤って他のタイプの誤差によるものであると判断されることを防止し、ユーザがサーボミスマッチ誤差の真円度に対する影響を測定し、誤差が除去された場合に達成される改善を予測することを可能にするからである。
【０２１５】
一定送り速度での円運動の際の２つの軸間の複合位相誤差は、次の式によって表わすことができる（式中、総位相誤差φは、Ｘ軸がφ／２進み、Ｙ軸がφ／２遅れていると仮定することによって２つの軸間で均等に分割される）。反時計方向に移動する場合、円角度θは時間と共に増加する（即ち、周波数ｄθ／ｄｔ＝ωは正の値となる）。時計方向に移動する場合、円角度θは時間と共に減少する（即ち、この周波数は負の値となる）。これらの２つの場合についての式を下に示す。
【０２１６】
【数３８】
2004525467.tif 000040
【０２１７】
【数３９】
2004525467.tif 000041
【０２１８】
これらの式において、ωはプログラムされた半径で除した秒当りの送り速度であり、上述のように、｜ω｜が固定値である場合、φは一定になると考えられる。まず、反時計方向移動（正の周波数）の場合について解析を行う。時計方向移動の場合の結果は、同様の方法で導き出すことができる。反時計方向移動の場合の半径の二乗は、軸位置の二乗の和となる。次の式においては、ωｔ項は円角度θに置換されている。
【０２１９】
【数４０】
2004525467.tif 000042
【０２２０】
前記式は、幾つかの三角恒等式（trigonometric identities）を用いて次の式に簡略化することができる。
【０２２１】
【数４１】
2004525467.tif 000043
【０２２２】
ここで時計方向移動の場合に戻る。正弦及び余弦関数の変数の符号を変えることによって式（３８）を再び公式化することができる。
【０２２３】
【数４２】
2004525467.tif 000044
【０２２４】
これらの式を用いて、時計方向円の瞬時半径についての次の結果を得ることができる。
【０２２５】
【数４３】
2004525467.tif 000045
【０２２６】
サーボミスマッチ誤差の極誤差プロットに対する影響を図１１に示す。
【０２２７】
式（４０）及び（４２）と式（１４）とを比較することによって、サーボミスマッチ誤差についての式と直角度誤差についての式とが同じになることがわかる。このことは、行列式に時計方向及び反時計方向両方の測定についてのデータが存在しない限り、この二種類の誤差が区別できないことを意味する。このように、例示的なボールバーテストにおいては、各測定は時計方向及び反時計方向の移動を含み、重み付けを等しくするため、両方の移動は同じデータ範囲をカバーする。これは、反時計方向測定値から得た行を有する行列を時計方向測定から得た行の上に「積み重ねる」ことによって達成される。次の式においては、ｉ番目の測定値インジケータｔｉの上付き記号ｃｌｗ及びｃｃｗを用いて、測定値が時計方向テストから得たものであるか反時計方向テストから得たものであるかの識別を行う。
【０２２８】
【数４４】
2004525467.tif 000046
【０２２９】
ロストモーションは、個々の軸メカニズムに一般に存在する誤差を示し、これは機械部品及び連結部におけるガタによって生じる。ロストモーション誤差を有する軸がその運動方向（速度の符号）を反転すると、その終点位置はモータの位置より遅れる。Ａ２１００コントロールは、二種類のロストモーション、即ち、バックラッシュとワインドアップを識別し補償を行う。
【０２３０】
バックラッシュはロストモーションの一種であり、軸が運動しているか停止しているかに関わらず存在する。即ち、バックラッシュは軸が停止した後も持続するロストモーションである。ワインドアップは軸が移動中のときに存在するロストモーションであり、この場合、モータ停止後に軸が正しい位置へ近づくと思われる。ワインドアップとバックラッシュとの違い及びこれらの補償方法については、Ｓｔｅｐｈｅｎ  Ｊ．Ｙｕｔｋｏｗｉｔｚに発行された米国特許第６，０６０，８５４号「機械におけるワインドアップを補償するための方法及び装置」に記載されており、該特許の全ての記載内容を本明細書の一部を構成するものとして援用する。
【０２３１】
両方のタイプのロストモーションは、ボールバープロットにおいては殆ど区別できない軌跡を示し、従来は単一のボールバーサークルテスト測定に基づいて別々に識別することができなかった。ボールバーを用いてこの二種類のロストモーションを互いに区別できる付加的なテストが開発され、このテストはバックラッシュテストと呼ばれている。例示的実施形態では、バックラッシュテストは、これまで議論の中心であった測定データを提供するサークルテストとは異なる種類のテストである。まず、サークルテストデータから総ロストモーション誤差を推定する方法の説明を行い、次いでバックラッシュテストについての説明を行う。
【０２３２】
総ロストモーションのパラメータによる記載によって、ロストモーションパラメータは（完全停止がない限り）軸位置や速度によって変化しないという仮定が得られる。位置によって変化するバックラッシュタイプの軸ロストモーションは、（例えば、Ａ２１００ではデータテーブルがレーザ測定値によって作られる双方向補償能力によって）取り扱うことができる。
【０２３３】
ロストモーションの円運動に対する影響を図１２に示す。図１２は、Ｙ軸上のバックラッシュが非常に大きくＸ軸上のバックラッシュがない場合の具体例を示す。上記の数多くのプロットとは異なり、図１２は極誤差プロットではなく、実際の円の輪郭のプロットである。
【０２３４】
図１２のプロットは時計方向運動の輪郭を示す。推測し得るように、反時計方向運動の場合は、Ｙ軸を中心として現在のプロットを反転したものになるであろう。中心補正した曲線は、幾何学的中心が理想円の中心に対応するように実際の曲線を下方へシフトしたものにすぎない。曲線の中心の実際のｙ座標は、ボールバーテストの固定段階（fixturing phase）で円中心が定義される際のボールバーのセンタ治具への接近方向によって決まる。
【０２３５】
図１２を検討することによって、Ｘ軸は誤差を伴わずに移動しているが、Ｙモータの運動がＹ軸運動を引き起こさない軸反転に引き続き、総ロストモーション誤差ＥＴＬＭにより平坦領域が生じていることがわかる。この平坦領域によって、最適合円がプログラムされた円の半径より若干小さい半径を有するようになる。本発明の例示的実施形態によって発生されるデータのタイプの場合、ロストモーションによって起きる「収縮」の量は総ロストモーション誤差に比べてかなり小さく、絶対スケール誤差を求める際に考慮する必要のないことが示される。（Ｙ軸）運動が開始する反転位置からの距離を定義する指令円角度は、ＥＴＬＭ／Ｒ比がかなり低い場合には次の式によって十分に近似することができる。
【０２３６】
【数４５】
2004525467.tif 000047
【０２３７】
従来の工作機械上での実際の測定の場合、最小円半径は約１００ｍｍであり、予測される最大のロストモーション誤差は約０．２ｍｍよりかなり小さい値になるであろう。従って、考え得る角度αの最大値は約２度未満となるであろう。このことから、ロストモーションに起因する最適合円の半径の収縮の量は、ロストモーション誤差自身に対してかなり小さく、考慮する必要がない事が確認される。
【０２３８】
平坦領域（ＳＴＬＭ）が円全体をカバーする割合が小さいことは、（例えば、組み込まれている要求（built-in requirement）はデータ円弧が比較的大きいことであるため）反転直後の曲線（以下「過渡部分」と称する）の正確な形状を、ボールバー測定値から総ロストモーションを推定する技法によって考慮する必要がないことを示唆する。それにもかかわらず、過渡部分の良好な近似表示は、バックラッシュ補償やワインドアップ補償がどのように真円度を改善するかを予測しようとする際に有用となる。予測される補償の効果は、測定曲線からモデルパラメータより得られた曲線を差し引くことによって得ることができるが、ここでは、モデルが実際の過渡部分にぴったり一致していることが望ましい。ｙ軸ロストモーション誤差を有する時計方向円の場合、次の一連の式が適用される。
【０２３９】
【数４６】
2004525467.tif 000048
【０２４０】
【数４７】
2004525467.tif 000049
【０２４１】
円角度の関数としての二乗した半径の式は、ｘ及びｙ成分の二乗を合計することによって得ることができる。総ロストモーション誤差の推定値は、式（４５）の範囲（ａ）及び（ｃ）に基づくことができる。なぜなら、範囲（ｂ）及び（ｄ）は非常に小さく、これらの影響が無視される場合には結果に大きな悪影響を及ぼすことがない筈だからである。実際問題として、ＥＴＬＭが分かるまでは角度αは分からないため、反復方法における一次近似値が得られるまで過渡の影響を考慮することができない。二乗した半径の近似式は、範囲（ａ）の式を範囲（ａ）及び（ｂ）の両方に適用し、範囲（ｃ）の式を範囲（ｃ）及び（ｄ）の両方に適用することによって得ることができる。次の式は、ロストモーションの二乗の項がかなり小さいと仮定することによって得ることができる。
【０２４２】
【数４８】
2004525467.tif 000050
【０２４３】
反時計方向円の結果も同様に得ることができるが、その結果を以下に示す。
【０２４４】
【数４９】
2004525467.tif 000051
【０２４５】
Ｘ軸のロストモーション誤差を推定する式も、同様の技法を用いて、或いは前記式においてθを（θ＋１／２π）で置換することによって得ることができる。
【０２４６】
【数５０】
2004525467.tif 000052
【０２４７】
【数５１】
2004525467.tif 000053
【０２４８】
（反時計方向運動の場合の）ｙ軸のロストモーション誤差及び（時計方向運動及び反時計方向運動の場合の）ｘ軸のロストモーション誤差についての式（４５）に類似した式も得ることができるが、ここには示さない。以下に記載する総ロストモーションのための行列式は、両方の軸でのロストモーションについての因子を含む。以下の行列式において、記号ＱＩ、ＱＩＩ、ＱＩＩＩ及びＱＩＶは、円の象限を表わすために用いる（ここで、測定データは複数の象限に分割する）。
【０２４９】
【数５２】
2004525467.tif 000054
【０２５０】
Ｘ軸及びＹ軸の両方にロストモーションがある機械における時計方向運動及び反時計方向運動についての極誤差プロットの一例を図１３に示す。この合成例（synthesized example）における反転後の過渡部分は、実際の機械における測定値の反転後の過渡部分と非常に類似している。この例においては、かなり小さい円収縮の議論に基づいて予測されたように、最適合円と理想円とは非常に類似しているため、これらの円は実質的に区別不可能である。
【０２５１】
ここまで、連続運動サークルテスト測定から総ロストモーションを識別する場合に限定して検討を進めてきた。これら測定での経験から、総ロストモーションのバックラッシュ成分及びワインドアップ成分それぞれの影響の間に実質的に検出可能な差がないことが分かっている。これらの誤差の各々を単独に識別するために、付加的なバックラッシュテストを用いることができる。
【０２５２】
例示的なバックラッシュテストには、ボールバーを用いて軸が（上述のように）停止位置やドエル位置まで移動する際に起こるロストモーションを検出するシーケンスが含まれている。軸のワインドアップ誤差は、総ロストモーションの推定値から測定したバックラッシュを差し引くことによって計算することができる。バックラッシュテストを実施しない場合には、バックラッシュをゼロとし、サークルテストによって測定したロストモーションの原因がワインドアップ誤差であるとする。例えば、これは、双方向補償を用いて機械が正しくバックラッシュ補償されているという仮定に基づく。
【０２５３】
【数５３】
2004525467.tif 000055
【０２５４】
工作機械の軸における摩擦は、軸反転後に起こる過渡偏差の原因となり得る。現在、例えば、Ａ２１００は一体化されたフィードフォワード機能の一部として摩擦補償アルゴリズムを採用している。Ａ２１００摩擦補償は、軸に作用する摩擦力やトルクがクーロン＋粘性摩擦モデルによって合理的に表わされると仮定する。
【０２５５】
クーロン摩擦によるトルクの不連続性は軸の反転後に起こり、結果として過渡的偏差（即ち、速度コントロールループ内の積分器が摩擦トルクに対抗するトルクを含むようになるまでに、多少の時間だけ軸が指令よりも遅れるような誤差）が生じる。一般に、過渡的偏差の大きさは、摩擦レベルに応じて増加し、速度ループの比例ゲインや積分ゲインに応じて減少する。ボールバー測定値に基づいて摩擦補償を反復して調整する方法は、Ａ２１００インストレーションサービス＆サポートマニュアル（以下「ＩＳＳマニュアル」と称する）に記載されており、該マニュアルを本明細書の一部を構成するものとして援用する。
【０２５６】
クーロン摩擦誤差のボールバープロットに対する影響の１つは、反転後、サーボが誤差を検知し円半径が所望の値に戻るまで少しの角度範囲で円半径が増加することである。極誤差プロットにおける摩擦反転誤差の軌跡を図１４に示す。
【０２５７】
ロストモーションの影響とは対照的に、摩擦誤差によって最適合半径が理想半径よりも若干大きくなり得る。摩擦反転誤差の大きさに対する理想半径を超える最適合半径の拡大は、主に摩擦誤差の角度方向の持続（angular duration）に依存し、この角度方向の持続自身は（主に）円周波数や速度ループの積分器の時定数に関連する。摩擦誤差が最適合半径をずらす程度を評価するために、最悪の場合のシナリオを考慮し、反転スパイクの予測最大角度の近似値を得ることができる。
【０２５８】
例えば、円周波数は、最小ボールバー半径が約１００ｍｍ、予想最大送り速度が約１５，０００ｍｍ／分の時に最大になると予想され、この時、円周波数は約２．５ｒａｄ／秒となる。経験上、積分器時定数は通常約０．０２０秒未満であることが分かっている。反転誤差の持続時間は、積分器時定数の２倍の値よりかなり長いと考えられる。従って、時定数の２倍の期間に移動する角距離は約０．０４０秒×２．５ｒａｄ／秒（＝０．１０ｒａｄ或いは５．７度）となり得る。最悪のシナリオの場合においても、摩擦誤差自身の大きさに対して、最適合半径が摩擦誤差によって大幅に拡大されることはないであろう。
【０２５９】
本発明の他の実施形態においては、摩擦誤差に関連するパラメータを推定するためのアルゴリズムを設けることもできる。フィードフォワード・オートチューニングによって得た摩擦補償パラメータの結果は、ボールバー測定に基づいて多少の手動調整を行うことによって改善できることが多い。この手動調整は、通常、例えば、ＩＳＳマニュアルに概説された手順に基づいて行うことができる。フィードフォワード・オートチューニングの結果が更なる手動チューニングにより改善し得る理由は、軸反転時に起こる過渡的な摩擦力／トルクはゼロ速度における仮定されたステップ不連続性よりも複雑なためである。これらの過渡的な摩擦トルクの正確な性質は非常に複雑で、多体系の数多くの体の位置、速度及び加速度等の数多くの状態変数の関数となり得る。
【０２６０】
この複雑な挙動は、摩擦補償（フィードフォワード）の大きさや時定数を、フィードフォワード・オートチューニングのトルク測定や速度ループ補償器の応答の測定から得た理想値とは異なるように調整することによって部分的に近似することができる。この観察の結果、Coulomb-Width-Adjustパラメータを一連のフィードフォワードパラメータに加えて、積分器時定数（加速度及び粘性摩擦フィードフォワード）に直接作用する他のタイプのフィードフォワードに影響を及ぼすことなく摩擦補償時定数の調整を可能とした。従って、フィードフォワード・オートチューニングプロセスを既に実施し、その結果積分器時定数の推定値が得られている場合には、ボールバー測定を用いてCoulomb-Width-Adjustパラメータの最適値を決定することができる。
【０２６１】
一実施形態において、（例えば、測定毎に円角度の正確な推定値が得られる場合には）有効な摩擦補償を有しない機械の測定から直接に摩擦パラメータ（例えば、大きさや時定数）を推定する機能を備えることができる。例えば、まず、このようなアルゴリズムによって、以下に示す技法を用いてデータから既知の誤差タイプを除去することができる。次に、軸の移動方向が反転した領域内の半径方向誤差を反転軸の偏差に変換し、対応する角度を反転後の時間に変換することができる。次いで、時定数τ（積分器ゲインの逆数）の候補値を選択し、この時定数に基づいてシミュレーションを行うことによって反復プロセスを開始することができる。このシミュレーションを行うために用いるモデルを図１５に示す。
【０２６２】
摩擦力シグナルに呼応する位置誤差についての伝達関数は図１５のブロックダイアグラムより導くことができ、この関数を以下の式（５１）に示す。この伝達関数のＤＣ振幅（DC amplitude）は任意である。この伝達関数式を用いて、関連する線形微分方程式の数値解を得ることができる。
【０２６３】
【数５４】
2004525467.tif 000056
【０２６４】
既知の軸Ｋｖ、Ｊｅ≒Ｊという仮定（ここでＪｅはフィードフォワード・オートチューニングから得た慣性推定値、Ｊは実際の総軸慣性を示す）、及び軸Ｋｐの推定値（速度ループ比例ゲイン）を用いて、反転後の軸誤差過渡応答についてのデータシーケンスの時間対誤差過渡応答の関数の推定値を得ることができる。最初は摩擦トルクが分からないため、このような時間シーケンスのスケーリングは任意であってよい。（位相マージンが４０°を超えるように速度サーボが十分に調整されていると仮定すれば）パルスの形状はこのパラメータの影響を全く受けないので、Ｋｐの値が非常に正確である必要はない。Ｋｐのシミュレーションパラメータはｉｆｆ＿ｋｐ＿推定値と同一である場合もある。
【０２６５】
推定された過渡応答の大きさを最小二乗法を用いて決定し、測定半径から導かれたｙ軸偏差シーケンスと大きさが任意なシミュレートした過渡応答との間の最適スケーリングを得ることができる。二乗した残差（residual errors）の合計を計算し保存することができる。残差は、反復最適化プロセスの一部として、時定数の数多くの選択肢に対して計算することができる。二乗した残差の合計が最小となるような時定数及び関連する振幅を、推定摩擦パラメータとして選択することができる。考慮中の軸の反転についての複数の利用可能な測定を同時に含むように上記プロセスを構成することができる。
【０２６６】
摩擦反転誤差を推定するための上記手順に伴う潜在的問題は、例えば、ボールバー測定の際に摩擦補償が有効に適用されている場合、この手順が有効でないことである。ボールバー測定は、フィードフォワード・オートチューニングによって得た摩擦補償パラメータの公称値に対する調整値を決定する際の最高の値（the most value）を有すると考えられる。従って、例示的実施形態においては、ボールバー測定は、この測定時に摩擦補償が積極的に適用される状況下で行われる。
【０２６７】
適用される摩擦補償が最適でない場合には、軸反転時に多少の誤差が生じ、このような誤差は、摩擦補償を停止した際に生じる誤差タイプよりも複雑になるであろう。この場合に行う一つのアプローチは、摩擦補償の影響を除去するように試みることである。しかし、伝達関数のＤＣスケーリングがもはや任意でないため、摩擦補償の影響をデータから除去するのは容易ではない。このことは、１次元の最適化問題が２次元の最適化問題となることを意味する。
【０２６８】
解決策の一つは、ＩＳＳマニュアルに概説された反復手動チューニング手順を自動的に適用することである。このようなアプローチでは次のシーケンスを反復して実行する。１）ボールバー測定を行う、２）反転誤差を分離する、３）発見的ルール（heuristic rules）を用いて、Coulomb-Width-Adjustmentを増加すべきか減少すべきかを決定し、更にCoulomb-Friction-Levelを増加すべきか減少すべきかを決定する、４）モデル基準の曲線当て嵌めを行って次の反復のためにこれらのパラメータの候補値を決定する、５）これらの新しい値を用いて摩擦フィードフォワードを構成する、そして６）ステップ１に戻る。一旦、誤差が定義された閾値よりも低くなるか、或いは反復の間に得られた改善がかなり小さくなった場合には、この反復シーケンスから出ることができる。
【０２６９】
摩擦に関連するパラメータの推定は、各種誤差の真円度全体に対する影響をランク付けする際のデータ解析の目的において有用な能力である。フィードフォワード・オートチューニングが利用できないシステムにおいては、この推定を用いて摩擦補償をオートチューニングすることができる。フィードフォワード・オートチューニングが利用できるシステムにおいては、例えば、この推定を用いて、予め実施したフィードフォワード・オートチューニングテストによって得た摩擦補償パラメータに対する変更を提案することができる。
【０２７０】
上記検討においては、上記誤差タイプの各々が測定値に存在する唯一の誤差であると仮定することによって個々の誤差タイプについての式を得た。実際のアプリケーションにおいては、これらの誤差タイプが同時に生じ、ある割合で存在する。各誤差タイプの最適推定値を得るために、既知の誤差全ての影響を同時に考慮することができる。これは、既知の誤差全ての影響を含む単一の行列式を構築することによって成し得る。
【０２７１】
基底関数の行列は、例えば１０個の列を含むことができ、各列は以下の典型的パラメータの１つに対する１つの基底関数を含む。
１．Ｘ軸中心オフセット
２．Ｙ軸中心オフセット
３．ＸＹ直角度誤差
４．ＸＹスケールミスマッチ誤差
５．ＸＹサーボミスマッチ
６．Ｘ直線性誤差
７．Ｙ直線性誤差
８．Ｘ総ロストモーション
９．Ｙ総ロストモーション
１０．最適合半径
【０２７２】
この行列式は、上述した行列式の各々を単に組み合わせることによって構築することができる。サーボミスマッチとロストモーションの推定には円方向に基づくデータの個別の処理が含まれるため、データを時計方向セグメント及び反時計方向セグメントに分離することができる。更に、総ロストモーションの推定には、象限に基づくデータの個別の処理が必要である（データは円の象限（推定角度）に基づいて更に分割される）。この種の分割化については、式（５０）に見られるようにロストモーション推定の検討の際に既に述べた。
【０２７３】
全てのパラメータを同時に推定するための組合せ行列式を以下に示す。この行列式がページに合うように、データ分割化については明確に示していない（記号±を用いて、その基底関数が方向及び／又は象限に依存する行列の列を表わしている）。
【０２７４】
【数５５】
2004525467.tif 000057
【０２７５】
次の象徴的な行列式を用いて前記の特定式を表わすことができる。
【０２７６】
【数５６】
2004525467.tif 000058
【０２７７】
式（３）の最小二乗解を上記の式（５２）に適用することによって上記１０個のパラメータの推定を行うことができる。次の式においては、記号＾を用いてパラメータが推定値であることを示す。
【０２７８】
【数５７】
2004525467.tif 000059
【０２７９】
行列ＡＴＡの反転は、ヤコビの技法によって得られた固有値や固有ベクトルを用いて成し得る。ヤコビの技法を用いることは、この技法によって［ＡＴＡ］の固有値が得られる点で有利である。この固有値は後述する条件数の計算に用いる。
【０２８０】
一旦行列を反転すれば、パラメータベクトルの最終要素の平方根をとることによって得た最適合半径の逆数の適切なベキ（power）を各パラメータに掛けることによって、最適合半径のベキ（powers）によるパラメータのスケーリングを除去することができる。
【０２８１】
【数５８】
2004525467.tif 000060
【０２８２】
式（５２）中の行列［Ａ］を検討することによって、行列式中の一部の列が他の列と重複する場合があることが分かる。ある列が一意的でない場合、その列に関連するパラメータを一意的に識別することができず、行列式の最小二乗解は存在しない。データ円弧が十分に大きいこと、及び時計方向データと反時計方向データの両方が存在することを確実にすることによって行列式の列を一意的にすることができる。
【０２８３】
上記行列式の列の全体的一意性の指標は、行列の条件数（最小特異値に対する最大特異値の比）が挙げられる。この特異値は（式（３）より得た）[Ａ]Ｔ[Ａ]行列の固有値の平方根を計算することによって得ることができる。所定のテスト条件における条件数は、双方向の完全な３６０度データ円弧についての（ベストケース）条件数に基づいて標準化することができる。
【０２８４】
「励起」と称される統計値は、標準化された条件数の逆数として定義される。テストセットアップパラメータ群によって提供される励起が十分であるか否かについてのテストは、励起統計値と閾値とを比較することであろう。ユーザによって不適切なテスト条件が提案された場合、励起は所定の閾値よりも小さくなり、このテスト条件は却下される。
【０２８５】
【数５９】
2004525467.tif 000061
【０２８６】
０．０で開始するデータ円弧についてのデータ円弧長さの関数としての励起のプロットを図１６に示す。他の（ゼロではない）データ開始角度についての同様なプロットは図１６に示すものと非常に類似する。このプロットから、長さが約２８０度よりも大きなデータ円弧に対して最良の励起が得られることが分かる。テストセットアップ有効性テストによって許容される励起の最小値は約０．２となる（即ち、データ円弧は約２２０度となる）ように選択できる。
【０２８７】
本明細書で例示的に挙げられた幾つかのデータ解析タスクには、ボールバー半径測定値を得た各角度におけるボールバー半径の合成値を計算することが含まれる。合成半径のシーケンスをｒｓｙｎｔｈ（ｔ）で表わすことができる。合成半径のシーケンスを以下の解析に用いることができる。１）モデリングコヒーレンス、２）各誤差タイプの全真円度誤差に対する相対的な影響のランク付け、３）軸補償値の選択された組合せを用いた場合に真円度誤差がどのように変化するかを予測すること、及び／又は４）各推定パラメータの重要性を決定するために用いる測定分散を推定すること。
【０２８８】
パラメータベクトルが推定値で占められている、式（５２）を評価し、結果の平方根を得ることによって、合成半径のベクトルを得ることができる。次いで、合成データを軸反転時に修正し、式（４５）ｂ及び（４５）ｃで表わされるタイプのロストモーション過渡応答を明らかにすることができる。軸反転後のデータは、角度αによって定義された範囲にわたって一定の軸偏差についての半径を計算することによって修正することができる。以下の式により合成データを得る方法を示す。
【０２８９】
【数６０】
2004525467.tif 000062
【０２９０】
【数６１】
2004525467.tif 000063
【０２９１】
【数６２】
2004525467.tif 000064
【０２９２】
【数６３】
2004525467.tif 000065
【０２９３】
上記式において、平均半径の値は、考慮中のロストモーションを除く全ての誤差がデータセットに存在する場合のものである。
【０２９４】
合成半径のシーケンスを用いて、ある誤差タイプや誤差タイプの組合せが存在しない場合に起こると予想されることを示すことができる。上述したように、例えば、データ解析ページ７０を用いて、ユーザは（例えば、チェックボックスにチェックを入れたり外したりして所望の組合せを指定することによって）測定値から除去すべき誤差タイプの組合せを選択することができる。例えば、チェックボックスにチェックが入れられた場合、対応する誤差タイプを予測半径の極誤差プロットに含めることができる。チェックボックスからチェックを外した場合、対応する誤差の影響を除去することができる。このように、補償が利用できない誤差タイプを含むであろう測定データから既知の誤差の影響を除去することによって、ユーザは、補償の適用によってどのように性能が改善できるかということについての現実的な知識を得ることができる。
【０２９５】
予測半径のシーケンスの構築における第一のステップは、合成半径のシーケンスの要素を測定半径のシーケンスの対応する要素から差し引くことによって残差（the residual error）を計算することである。次いで、誤差タイプが残っているもの（例えば、診断ウィンドウ１０２でチェックが入れられたもの）を除く｛Ｐ｝ベクトルの全成分をゼロにすることによって作ることのできる第二の合成半径のシーケンスｒｓｙｎｔｈ＿ｐａｒｔｉａｌに残差を加えることができる。軸ロストモーション誤差が含まれる場合、予想シーケンスに含まれるであろうロストモーション誤差を有する軸についての式（５９）及び（６０）を用いることによって、合成シーケンスの修正を行うことができる。
【０２９６】
例示的実施形態においては、中心オフセットは機械誤差ではなく、予測半径のシーケンスは中心オフセットの影響を除去しているはずであるため、中心オフセット誤差についてのチェックボックスは提供されない。このことは、ｒｓｙｎｔｈ＿ｐａｒｔｉａｌの計算において、｛Ｐ｝の最初の２つの成分をゼロに設定できることを意味する。以下、予測半径ｒｐｒｅｄｉｃｔｅｄを計算する手順を明確に記載する。
【０２９７】
まず、合成半径と測定値との間の残差を計算する。
【０２９８】
【数６４】
2004525467.tif 000066
【０２９９】
次に、チェックボックスにチェックが入れられた誤差タイプのみを含む合成半径を計算する。
【０３００】
次の式において、パラメータに対応するチェックボックスにチェックが入れられている場合には、ベクトル{ｃ}の各成分に０．０の値が割り当てられ、パラメータに対応するチェックボックスにチェックが入れられていない場合には、ベクトル{ｃ}の各成分に１．０の値が割り当てられる。
【０３０１】
【数６５】
2004525467.tif 000067
【０３０２】
Ｃ７＝１の場合、式（５９）を用いてｘ軸反転過渡修正（x-axis reversal transient modification）をｒｓｙｎｔｈ＿ｐａｒｔに適用する。同様に、Ｃ８＝１の場合、式（６０）を用いてｙ軸反転過渡修正（ｙ-axis reversal transient modification）をｒｓｙｎｔｈ＿ｐａｒｔに適用する。最後に、誤差タイプの選択された組合せについての予測半径を計算する。
【０３０３】
【数６６】
2004525467.tif 000068
【０３０４】
前記式から得た予測半径のシーケンスは中心オフセット誤差を有さない。この予測半径のシーケンスは、例えば診断ウィンドウ１０２に表示される補正真円度の計算に直接用いることができる。
【０３０５】
診断ウィンドウ１０２によって提供され得る能力の一つは、誤差タイプをその真円度誤差への相対的な寄与度に応じてランク付けし表示することである。各誤差タイプの寄与はｒｓｙｎｔｈ＿ｐａｒｔ（θ，｛ｃ｝）についての式（６２）を評価することによって決定することができる。この式において、ベクトル｛ｃ｝の各成分を（考慮中の特定の誤差タイプに関連する成分を除いて（この成分のみ１．０に設定する））ゼロに設定する。得られた合成半径についての真円度誤差を計算し保存することができる。
【０３０６】
本実施形態においては、７つの誤差パラメータの各々について上記プロセスを行うことができる。ユーザの要求に応じて、各誤差タイプに関連する真円度誤差をソートし表示することができる。クロネッカーのデルタδ（ｋ）（即ち、第ｋ成分（１の値を有する）を除いて各成分がゼロである１０成分ベクトル）を用いる次の式によって、このプロセスを要約することができる。
【０３０７】
【数６７】
2004525467.tif 000069
【０３０８】
「モデルコヒーレンス」と称される統計値を用いて、データがモデルにより十分に近似されたかどうかを表わすことができる。モデルコヒーレンスを用いて、想定モデルの範囲を超えた誤差源が存在し得る状況、或いは測定データがある理由によって壊された状況を確認することができる。既知の誤差全ての影響を含む合成半径ベクトルｒｓｙｎｔｈと測定半径ベクトルとの相関の係数の二乗を計算することによって、コヒーレンスパラメータを得ることができる。
【０３０９】
例示的実施形態においては、コヒーレンスを計算する前に両方の半径ベクトルから中心オフセット誤差を除去する。更に、αｘ及びαｙの角度範囲にわたっての軸反転に続く連続データセグメントを測定半径及び合成半径の両方から除去することができる。これらのデータ範囲の除去に伴う利点の一つは、コヒーレンスを低下させる可能性のある摩擦反転誤差過渡応答の多く或いはその全てが計算に含まれてしまうことを回避できることである。
【０３１０】
コヒーレンスがその理想値である１．０からはずれるに従って、観察された挙動を表わすモデルの能力は潜在的に疑わしくなる。典型的には、約０．９０を超えるコヒーレンス値は良好な適合を示す。従って、例示的実施形態においては、コヒーレンスが許容できない程低い場合、警告が発され（例えば、表示され）、これにより、経験の浅いユーザが悪い測定値に基づいて機械の補償を試みる状況を回避する。
【０３１１】
相関係数に基づくコヒーレンスの定義に伴う問題の一つは、機械が誤差を殆ど或いは全く有さない場合や誤差が十分に補償されている場合において、ランダムノイズや軸振動の存在がコヒーレンス計算値を低くしてしまうことである。同じ機械がモデルの範囲内に存在する多少の誤差を有する場合、コヒーレンスは高くなるであろう。このような問題の解決策の一つは、円角度の大幅な変化に対しランダムに現れる残差の成分と円角度に対して決定性低周波数関係（deterministic low-frequency relationship）を有するように現われる残差の成分とを区別するために解析を行うことである。残差の自己相関関数の評価、或いは角度ドメイン平滑化フィルタの残差への適用によって、非ランダムシグナル成分の存在を潜在的に確認することができる。
【０３１２】
他の解決策は、誤差が存在しない場合に多少の相関を与えるために測定データと合成データの両方に多少のランダムノイズを意図的に加えることである。この意図的なランダムノイズの大きさは、測定に伴う真の問題が低コヒーレンス特定可能な程度に小さく、低コヒーレンス統計値が誤差のないデータについて報告されることのない程度に大きい必要がある。従って、このランダムノイズの大きさは、振動や測定ノイズによる予測残差に基づく必要がある。
【０３１３】
コヒーレンスは次の式に基づいて計算することができる（式中、ρ２はコヒーレンスを示し、η（ｔ）は所定の範囲で均一に分布したランダムノイズのシーケンスを示し、オーバーストライク「〜」はノイズの添加によって意図的に増大した信号を示すのに用い、オーバーストライク「−」はシーケンスの平均値を示すのに用い、下付き文字「ｓｙｎｔｈ」は合成データシーケンスの識別に用いる）。経験上、均一に分布したランダム変数ηの範囲の良好値は約±１０ミクロンであることが分かっている。
【０３１４】
【数６８】
2004525467.tif 000070
【０３１５】
【数６９】
2004525467.tif 000071
【０３１６】
次に、中心オフセット誤差を計算し、式（６）及び（７）を両方のデータセットに適用しその誤差の影響をデータから除去することによって、これらのデータシーケンスを修正することができる。そうしなければ、測定上の問題がある場合でも、大きな中心オフセット誤差が良好なコヒーレンスをもたらすことがあり得る。最後に、測定半径及び合成半径についての中心を補正しノイズを増大したシーケンスの関係について、相関係数を計算することができる。
【０３１７】
【数７０】
2004525467.tif 000072
【０３１８】
「有意性」とは、各推定パラメータについて計算し得る統計値の一種である。有意性は、例えば、パラメータの推定される不確実性に対しパラメータ推定値が有意的に大きいかどうかを示すためにデザインされる。例えば、バックラッシュがゼロの機械におけるロストモーションのパラメータ推定値が、測定ノイズの存在によってゼロでない可能性がある。この場合、総ロストモーションパラメータに対して計算された有意性は小さく、ユーザは総ロストモーションの推定値が特に意味を有さないことが分かるであろう。
【０３１９】
有意性の計算のための式は、データについての幾つかの仮定に基づいて得ることができる。これらの仮定は必ずしも完全に有効でないが、これらの仮定に基づいて得た有意性の統計は有用であることが立証されている。有意性の統計によって、パラメータ推定値とパラメータに関連する標準偏差の推定値とが比較される。パラメータの標準偏差の推定値は、誤差モデルが測定値（半径二乗測定値における一定分散の正規分布した無相関のランダムノイズを除く）を完全に示すことができるという仮定に基づいて計算することができる。
【０３２０】
上記仮定における暗示事項は、式（５４）中の行列［Ａ］を構成する基底関数が決定論的（deterministic）である（即ち、経過テスト時間に基づく円角度の推定値が誤差を含まない）ということである。これらの仮定によって、式（５４）中のパラメータ推定値ベクトル｛Ｐ＾｝の共分散行列を以下に示す式により決定することができる。この式の導出については、統計学や推定論に関する多くのテキストにおいて見出すことができる。
【０３２１】
次の式によって例示的な１０×１０共分散行列を計算する（式中、Ｎは測定値の総数であり、１０は推定されたパラメータの数である）。コヒーレンスの推定の場合と同様に、過渡的反転誤差が測定ノイズ分散の推定値をずらさないことを確実にするために、反転直後のデータは計算には含めない。
【０３２２】
【数７１】
2004525467.tif 000073
【０３２３】
推定パラメータの推定標準偏差は共分散行列の対角成分の平方根である。
【０３２４】
【数７２】
2004525467.tif 000074
【０３２５】
標準偏差ベクトルの各成分をパラメータ推定値ベクトル｛Ｐ＾｝の対応する成分の値と比較して、推定値が標準偏差に対して有意であるかどうかを決定することができる。有意性の統計値のための式は、（標準偏差に対するパラメータ推定値の比が増加するに連れて有意性は増し、大きさが、例えば標準偏差値の５倍未満であるパラメータ推定値は有意ではないと考えられること）に基づくことができる。上記基準を満たすように得たパラメータ推定値ベクトルの第ｋ成分の有意性Ｓについての式を以下に示す。
【０３２６】
【数７３】
2004525467.tif 000075
【０３２７】
前記式によって、有意性を計算するための一般的なアプローチが得られる。ボールバーの長さを較正した場合のスケール誤差推定値について特別に考慮することができる。なぜなら、これらのパラメータはパラメータ推定値ベクトルに明示的に含まれておらず、２つの別々のパラメータ（各パラメータは独自の分散推定値を有する）に基づいて得ることができるからである。平均半径が平均半径の推定値の分散よりはるかに大きいという簡略化のための仮定を用いる場合、次の式を式（２５）より得ることができる。
【０３２８】
【数７４】
2004525467.tif 000076
【０３２９】
軸スケール誤差の有意性についての式を以下に示す。
【０３３０】
【数７５】
2004525467.tif 000077
【０３３１】
【数７６】
2004525467.tif 000078
【０３３２】
有意性の統計値は、典型的には、モデル残差が無相関で正規分布したランダム変数であるという仮定に基づいて得られるが、この統計値は、残差がモデル構造の範囲に含まれない決定論的現象によって引き起こされる場合であっても有用な統計値となることが立証されている。各誤差パラメータの計算された有意性は、既存の補償値に対し特定の補償パラメータの提案値を更新するか否かを決定するために補償更新アルゴリズムによって使用できる。パラメータの有意性がゼロの場合、提案補償値を既存の元の値となるように選択することができる。そうでない場合には、以下に示すようにパラメータ推定値に基づいて得ることができる。
【０３３３】
更に、各提案補償値に関連するパラメータ推定値の有意性を（例えば、補償調整ページ１１２上のメータ１５０のように）図形表示することができる。これによって、例えば、提案補償値を用いるかどうか判断する上での手掛かりとなる付加的情報をユーザに提供することができる。
【０３３４】
本明細書で例示により具体的に開示した工作機械誤差のモデル構造は、限られた範囲の可能性に対応している。この特定な例では現在取り扱っていない多くの他の誤差タイプが存在することが知られている（しかし、当業者が理解し得るものは本発明の教示を用いて取り扱うことができるであろう）。モデル化されていない誤差の一部は静的であるが、他の誤差は動的であろう。
【０３３５】
ボールバー測定値の解析に関しては、モデル化されていない誤差タイプの一部が、誤ってモデル構造に含まれる一以上の誤差によるものであるとされてしまう可能性があり、他の誤差タイプはモデル構造に適合せず、それらの存在によってコヒーレンス統計値が減少する。モデル化されていない誤差の一部は本質的にパラメトリックである（即ち、限られた数のパラメータで表わされる）のに対し、他の誤差はパラメータ化に適していない。本明細書で例示により具体的に開示した実施形態の機械誤差モデルの構造によって扱われていない既知の機械誤差タイプの一部を以下に記載する。
【０３３６】
2004525467.tif 000079
【０３３７】
上記誤差タイプの内、単純な軸角度誤差は、例えば、本明細書で検討する実施形態では、線形直角度誤差、直線性誤差又はスケール誤差によるものであると誤って判断される。単純な軸角度誤差とは、軸位置の関数として直線的に或いは放物線的に変化する機械部材の向きにおける誤差を意味する。
【０３３８】
例えば、合計９つの角度誤差タイプ（例えば、３つの直線方向軸の各々についてのロール誤差、ピッチ誤差及びヨー誤差）があり得る。各誤差タイプは、関連する誤差の大きさパラメータと回転軸の位置に関連する２個のパラメータとを伴う（例えば、結果として合計２７個のパラメータとなる）。これらの誤差タイプについて、直線種及び放物線種の両方が存在する場合、合計５４個の角度誤差パラメータが存在し得る。このタイプの誤差は、例えば、工作物に対する工具先端の相対的な向きに影響を及ぼす可能性があるだけでなく、工具先端と工作物との間での変位誤差を生じさせる。
【０３３９】
角度誤差によって生じる変位誤差は、想定される例示的誤差モデル構造に含まれる直動軸直角度誤差や直線性誤差に非常に類似することが明らかである。このことは、上記９つの誤差タイプの１つのタイプのみによって生じる変位誤差を示す図１７を検討することによって分かる。
【０３４０】
図１７に示すように、Ｙ軸ロール誤差によって、Ｘ及びＺ方向の成分を有する変位誤差が生じることが分かる。この変位誤差はロール軸に対する機械エンベロープの位置に依存する。ボールバー測定値において、角度誤差の影響は、ＹＸ直角度誤差、ＹＺ直角度誤差、ＹＸ直線性誤差及びＹＺ直線性誤差と非常に類似することが明らかである。
【０３４１】
線形直角度誤差、直線性誤差及びスケール誤差パラメータに対する角度誤差の影響は必ずしも有害なものではない。機械運動がボールバーテストの平面内或いはその平面付近で起こる限り、角度誤差によって本来生じる変位に基づいて得られる直角度誤差、直線性誤差及びスケール誤差の補償についてのパラメータによって、機械の精度が改善される可能性は高い。これらの「単純な」角度誤差を想定される典型的なモデル構造へ組み込むことを試みる場合、複数の機械方位平面及び積層平行平面における複数のボールバー測定値から得た結果を同時に解析することによって誤差パラメータを評価することが必要となる。
【０３４２】
例えば、Ａ２１００制御装置は、前述した誤差タイプの多くを補償する能力を有する。後述する僅かな差はあるが、補償アルゴリズムは誤差自身と同様にパラメータ化することができる。典型的には、補償パラメータは誤差タイプに対し逆の関係を有する。
【０３４３】
例えば、直線性誤差係数が正の場合、その補償パラメータは負となる。誤差パラメータは円平面内のデカルトの水平軸及び垂直軸について推定することができるが、補償は、水平軸或いは垂直軸に対応する論理軸の運動を行う物理軸に適用される。ある程度補償を有効にした状態でテストを行う場合、推定される誤差パラメータは、既存パラメータに対する増分調整量を定義する。
【０３４４】
従って、本発明の例示的実施形態は、円平面内の運動に関与する各物理軸の各補償タイプの構成（configuration）についての情報を有する。誤差パラメータ推定値を補償パラメータへ変換する場合、物理軸に関連するデータから得た既存の補償値を円平面軸（水平軸或いは垂直軸）に写像し（mapping）、円平面軸についてのパラメータ推定値に基づいて新しい補償値を計算し、そして、この新しい補償値を物理軸に写像する。
【０３４５】
測定データの解析に関する検討をｘ及びｙ軸について行った（referred tothe x and y axes）。上記式は、ｘ軸が水平軸を示し、ｙ軸が垂直軸を示すものとして解釈される。このように、ｘ軸及びｙ軸について得られた式は、機械の任意の主平面内の軸に適用することができる。
【０３４６】
主平面は水平軸の名称、及びそれに続く垂直軸の名称とによって識別することができる（例えば、ＸＹ面、ＸＺ面及びＹＺ面）。本明細書中の式はＸＹ平面の場合には修正することなく適用でき、例えば、式中のｘをｙに置換し、ｙをｚに置換することによってこの式をＹＺ平面に適用することができる。
【０３４７】
他の２つの平面とは異なり、ＸＺ平面の水平軸及び垂直軸は左手座標系を示し、直角度係数及び直線性係数においては、置換に符号が伴う。工作機械における既に確立した慣習のため、この平面は右手ＺＸ座標ではなく左手ＸＺ座標によって定義される。以下の検討においては、円平面内の水平軸及び垂直軸に対しては符号ｈ及びｖをそれぞれ用い、平面に直交する第三の軸を示すのには符号ｐを用いる。
【０３４８】
既に分かっているように、円平面軸の運動を生じさせる物理軸の構成データが円平面軸の誤差パラメータを計算する際に関与する。物理軸の円平面軸への写像は、平均円半径に対して予測されるサーボの影響を説明する式（２８）〜（３０）によって予想することができる。これらの式は、長さを較正したボールバーを用いたテストにおいて全体的な軸スケール誤差を計算する際に用いることができる。
【０３４９】
上記式は、円平面軸におけるＫｖｎｏｍｉｎａｌ値、Ｋｖａｄｊｕｓｔ値及び速度フィードフォワード値（ＶＦＦ）についての情報を必要とする。これらのパラメータは物理軸に関係するデータ項目である。円平面軸における複合Ｋｖ（Ｋｖｎｏｍｉｎａｌ、＊Ｋｖａｄｊｕｓｔ）及び適用されたＶＦＦは、例えば、テスト結果データファイルのヘッダに保存することができる（テストセットアップデータのフィードモードが、真であるかそれ以外の場合はゼロであるapply_rate_feedforward属性を有する場合、適用されたＶＦＦはその軸について設定されたＶＦＦパーセンテージとなり得る）。機械の直動軸のゲインとＶＦＦレベルが整合しているものとシステムのレベルを推定できる。
【０３５０】
理想的には、Ｋｖ及びＶＦＦの値は、円平面軸の１つを動かす１つの物理軸から得た構成データを調べることによって得ることができる。実際には、各円平面軸についてのＫｖ及びＶＦＦ値はデータファイルヘッダに含まれる。従って、本発明の例示的実施形態のデータファイルヘッダは、Ｋｖｈ値、Ｋｖｖ値、ＶＦＦｈ値及びＶＦＦｖ値を含む。
【０３５１】
式（２８）〜（３０）の評価には、円平面における各パラメータの平均値を用いる。このことは合理的であると考えられるが、その理由として、パラメータの推定によって軸間の大きなミスマッチが識別でき、そしてユーザがこの状況を修正しテストを再実施することが予測されるからである。別の複雑な要素は、論理軸が１以上の物理軸に写像される可能性があることである。この状況はスプリット及びスレーブ軸について起こる。
【０３５２】
スプリット及びスレーブ軸の両方に対応するために、論理軸の構成データ項目をテスト時の第一のアクティブな標準的物理的コネクション（first actively normal physical connection）のデータから得ることができる。これはスプリット軸にとって合理的であるが、その理由として、各物理的コネクションの構成セットが互いに一致することが予想され、スプリット軸セットを構成する物理軸に補償が均等に適用されると予想されるからである。スレーブ軸の場合、各軸が個別に補償されると予想される。これは、各スレーブ軸に対して個別のボールバーテストを行い、他のスレーブ軸を除去することによって成し得る。他のスレーブ軸はテストの際に除去された（即ち、正常ではない）状態にあるため、第一の標準的接続についてのデータセットは適切な選択となり得る。
【０３５３】
軸についての既存の補償値を得る際にも、Ｋｖ値及びＶＦＦ値について行ったと同様の議論が適用できる。上述のように、ボールバーテスト測定値に対する提案修正値を発生する場合、１）パラメータ誤差の推定値及び２）テスト実施時に機械内で有効であった補償パラメータ値が用いられる。Ｋｖ値及びＶＦＦ値の保存の場合と同様に、例示的実施形態においては、テスト時に機械に存在する補償値をデータファイルヘッダに保存することができる。他の実施形態においては、補償値をデータファイルヘッダに保存するのではなく、固有のテキスト文字列、即ち、データ参照番号をファイルヘッダに書き込むことができる。
【０３５４】
データ参照番号はボールバーテストの実行開始時に、日時に基づいて発生できる。最新のテストのためにメモリに記憶されたデータ参照番号がメモリに現在ロードされている測定データのファイルヘッダから得たデータ参照番号と一致する場合、ロードされている測定値の円平面に対する補償提案値がデータベースから得た既存の補償パラメータに基づいて計算される。一旦、補償値が変更されれば、メモリ内のデータ参照番号はクリアされ、提案値の表示を終了することができる（テスト中の補償値は、もはやデータベース内の現在値によって正確に表わされない）。
【０３５５】
円平面軸に関連する論理軸への第一の物理的コネクションに関するデータから得たスケール補償、直角度補償及び直線性補償についての既存のパラメータは、オリジナルの補償値として用いることができる。このアプローチは、上述したスプリット及びスレーブ軸の両方に対応するために行うことができる。一旦、補償値が計算されれば、論理軸への通常コネクション（normal connections）に対してこの補償値を均一に適用することができる。この適用は、ここに記載した実施形態がこれらの補償パラメータを得るための主要な方法である場合に行うことができる。
【０３５６】
スプリット軸セットを構成する全ての軸に対し均一に適用することは、個々の物理軸の位置の測定を行わない場合に合理的な選択となり得る。同様のアプローチをバックラッシュ補償やワインドアップ補償について行うことができるが、この場合、この実施形態によって、より特殊な測定に基づいてスプリット軸セット内の各軸に対して異なる値に意図的に設定したバックラッシュ及びワインドアップの値に対して有害な上書きをしてしまうことが考えられる。しかし、ここに記載した例示的実施形態では、典型的には、論理軸終点のボールバー測定値等の結果に基づいてスプリット軸セットの全ての軸に均一にバックラッシュ補償及びワインドアップ補償を適用する。
【０３５７】
直線性／直角度補償のための軸間の結合は物理軸に基づくことができ、独立した物理軸当りの４つの補償軸に限定される。直線性／直角度補償機能を用いて、軸をそれ自身に対して補償することによりスケール誤差を補償することもできる。各直動軸（例えば、Ｘ軸、Ｙ軸又はＺ軸）を単一の物理軸によって動かす単純な構成の場合、各物理軸について３つの結合を設ければ、各交差軸の方向の直線性誤差及び直角度誤差について交差軸を補償し、該軸自身のスケールミスマッチ誤差を補償するのに十分である。
【０３５８】
２つの物理軸によって１つのスプリット軸が動かされる場合、独立した軸当りの４つの結合が用いられる。例えば、ｘ軸が２つの物理軸を有するスプリット軸、ｙ軸及びｚ軸が単一の物理軸によって動かされている場合を考える。ｘ軸位置に対する補償はｙ軸及びｚ軸を直角度や直線性についての第一のｘコネクションに結合することによって成し得、第一のコネクションについての第三の結合はスケール誤差の補償に使うことができ、第二のコネクションには唯一の（それ自身への）結合を用いてスケール誤差を補償する。ｙ軸（或いはｚ軸）に対する補償においては全ての利用可能な結合を使用する（例えば、ｘ軸への２つの物理的コネクションの各々は１つの結合を使い、ｚ軸は他の結合を使い、そしてスケール補償のための自己結合は第四の結合を使う）。
【０３５９】
上記例によって暗示されるように、直角度／直線性についての結合は、スケール誤差についての結合とは別個に割り当てることができる。結合を割り当てるためのアルゴリズムは、論理軸に対しての第一のコネクションを独立した軸として用いることによって交差軸の結合を作るように試みる。交差軸の結合は、独立した軸に対する直角度補償或いは直線性補償が使用可能にされている場合に用いることができる。
【０３６０】
補償の提案値を適用しようとする場合、各物理軸についての既存の結合をまずスキャンし、必要なタイプの既存の結合と更新されたこれらの結合に関係するパラメータを識別することができる。必要なタイプの既存の結合がない場合、新しい結合が作られる。軸についての全ての利用可能な結合が用いられた場合、ユーザに余分な結合（例えば、回転軸に関する結合）を削除するよう指示する警告が発せられる。
【０３６１】
補償パラメータの提案値は、通常、オリジナルの補償パラメータ値（即ち、サークルテスト実行時に補償を有効に適用するために用いたパラメータ値）から計算された誤差パラメータを差し引くことによって計算される。提案値は最新のサークルテストにおける平面に含まれる軸について計算することができる。以下の式は、水平軸或いは垂直軸の推定誤差パラメータからどのようにして補償値が得られるかを要約したものである。特定の円平面のｈ軸或いはｖ軸に関連する論理軸への各物理的コネクションに対して以下の式が適用されることは理解されるであろう。
【０３６２】
直角度／直線性補償は次の４つのパラメータ、１）直角度補償係数、２）直線性補償係数、３）補償原点及び４）補償範囲によって定義することができる。測定結果から上記補償パラメータを得る手順を以下に概説する。上記補償パラメータを表わす式において、直角度補償や直線性補償が適用される軸は、独立軸を識別する第一の下付き文字と従属軸を識別する第二の下付き文字によって識別される。例えば、ｓｑｒ＿ｃｏｍｐＨＶは、水平軸の位置の関数としての垂直軸の位置を調整する直角度補償の係数である。
【０３６３】
式（５２）によって、円平面を構成する２つの軸の直角度誤差を表わすパラメータＥＳＱＲ＿ＨＶが得られる。しかし、直角度補償パラメータはこの両方の軸に対して利用できる。水平軸位置の関数として垂直軸に補償を適用することができ、水平軸に対しての補償は、垂直軸位置の関数として水平軸に適用することができる。
【０３６４】
対称性のために、利用可能な結合の各々に直角度誤差を均等に分配することによって、両方の利用可能な補償値を用いることができる。ＸＺ平面の場合、上記式は右手座標系用に作られたが、Ｈ＝Ｘ，Ｖ＝Ｚは左手座標系である事実を考慮して直角度誤差の符号を無視する。円平面の関数である符号調整変数（sign-adjust variable）を定義することによって、３つの座標系のいずれかに対し上記式を一般化することができる。
【０３６５】
【数７７】
2004525467.tif 000080
【０３６６】
直角度補償調整のための一般式を以下に示す。
【０３６７】
【数７８】
2004525467.tif 000081
【０３６８】
補償原点は変位を測定する起点となる独立軸の位置を定義するため、直角度補償を考慮する際に補償原点は任意となり得る。しかし、この同じパラメータを直線性補償により再利用することができ、この場合、補償原点が円の中心の独立軸座標と等しいかのように直線性誤差を計算することができる。
【０３６９】
誤差パラメータを推定するテストにおける円中心の独立軸座標がオリジナルデータから得た補償原点と等しい（或いはほぼ等しい）場合、係数の元の値及び推定直線性誤差から直接に直線性補償の提案値を得ることができる。例えば、次の式を用いることができる。下記式において、推定直線性係数の符号は、ＸＺ座標系のＸ軸について修正される。
【０３７０】
【数７９】
2004525467.tif 000082
【０３７１】
直線性補償によって、適用される補償の量は、補償範囲と等しい補償原点からの距離において適用される補償に制限される。従って、補償原点を最新のテストにおける円の中心に一致させることができる。或いは、部分円の場合には、補償原点をテスト時の軸の運動範囲の中点を表わす座標に設定することができる。補償範囲の提案値はテスト円の半径とすることができる。この「クリッピング」は、測定の範囲外の領域に補償を外挿する際に導入され得る大きな誤差を回避するのに有効となり得る。クリッピング挙動を図１８に示す。
【０３７２】
クリッピングが生じない場合、直角度補償及び直線性補償の両方を調整することによって、円の中心に対する変化に対応することができるであろう。クリッピングが存在する場合、パラメトリックな直線性誤差の推定を行う前に、測定データに存在する直線性補償の影響をこのデータから除去することができる。得られた推定値は直線性補償係数として（可能な符号調整と共に）直接用いることができる。これは、元の補償原点が円の中心に一致しており、テスト円の半径が元の補償範囲よりも大きい場合にも当てはまる。
【０３７３】
中心が変化する問題に対する別の解決策としては、テストセットアップ検証アルゴリズムを用いて、円中心座標の選択値が現在設定されている直線性補償のための補償原点に近いかどうかをテストすることが挙げられる。円の中心が補償原点とかなり異なる場合や円半径が補償範囲よりかなり大きい場合、テスト結果を用いて直角度／直線性補償値を発生させると、補償原点と一致しない円の中心を有する軸に対する直線性補償をテスト実施前には無効にすべきことをユーザに知らせるメッセージがテストセットアップ検証アルゴリズムによって発せられる。
【０３７４】
円中心座標と元の補償原点座標との有意差を確認するための閾値は、円半径の約２０％とすることができる。同様に、円半径と元の補償範囲との有意差についての閾値は、円半径が元の補償範囲より約２０％大きい場合の値とすることができる。これらの所定の予防策によって、式（７６）を直接適用することができる。
【０３７５】
直角度補償値は円の中心の任意な選択に基づいて変わるため、両方のタイプの補償値は一緒にクリップされるか又はクリップされない。補償値をクリップするか否かの決定は、各結合における各補償値のタイプについて行うことができる。
【０３７６】
スケール誤差の補償は、例えば、制御装置（例えば、Ａ２１００）の直線性／直角度補償能力によって実施できる。即ち、軸をそれ自身に結合し、スケール誤差の推定値から導き出したパラメータを直角度補償パラメータに移すことによって実施することができる。自己結合の場合の直線性係数はゼロにすることができ、直線性についてのイネーブルブール論理をオフに設定することができる。こうして、スケール補償の提案値は次の式を用いて得ることができる。
【０３７７】
【数８０】
2004525467.tif 000083
【０３７８】
ボールバーの長さが較正されていない場合、スケールミスマッチ（式（２４）を用いてスケール誤差の推定値が計算される）を考慮するために補正値が調整される。これは、スケール補償の元の値が長さを較正したボールバーを用いた測定値に基づいて得たものである場合に合理性がある。しかし、元の補償値を得た後にスケール誤差が大幅に変化した場合や、初めはスケール誤差補償値が長さを較正していないボールバーを用いて得たものである場合には、このスケール誤差補償値は、おそらく平面内の軸間のミスマッチを調整だけである。
【０３７９】
（長さを較正していないボールバーを用いた）テストを複数の平面に対して行われるため、１つの平面についてのスケールミスマッチ補償値は、他の平面についてのスケールミスマッチ補償値によって上書きされて悪影響を受けるであろう。このような状況において、機械平面毎に実施するテストの順番が軸のスケール補償値に影響を及ぼす場合があり、１つの平面におけるミスマッチを補正する補償係数が他の平面におけるミスマッチを悪化させることが考えられる。このような問題は、全てのテストを長さを較正したボールバーを用いて実施すれば生じないであろう。なぜなら、ある軸のスケール誤差提案値は、その軸が存在する２つの機械主平面の両方で実施したテストについて同一（正しい値）であるはずであるからである。関連した実施形態においては、スケール誤差補償の提案値がボールバーの長さを較正していない測定値に基づいて得たものである場合、ユーザが該提案値を有効値カラムにコピーしようとした時に、警告メッセージを発生し、これによってユーザが上記のような状況を回避できるようにしている。
【０３８０】
直線性補償を自己結合状態で用い、ねじ上の位置によって変化するがねじ位置に対しほぼ直線関係で増加するねじピッチ誤差を補正することができる。このようなケースが実際の工作機械で見出された場合、既存の能力の拡大により、直線性係数を用いたパラメータ化可変ピッチ誤差を含み得る。
【０３８１】
バックラッシュ補償及びワインドアップ補償はいずれも、正のワインドアップ誤差及び正のバックラッシュ誤差に対して正の数で表わされる。
【０３８２】
【数８１】
2004525467.tif 000084
【０３８３】
【数８２】
2004525467.tif 000085
【０３８４】
両方のタイプのロストモーションは軸で生じる誤差である。これらの誤差は円平面によって変化するとは考えられず、軸毎に補償できる。２つの利用可能な円平面のどちらを測定に用いたかに関わらず、軸ロストモーションの推定値は同じになると予測される。
【０３８５】
本発明の例示的実施形態によって提供される能力の一つは、機械の能力範囲内にあり且つ使用可能な結果を提供し得る一組のテスト条件をユーザが確実に構成できるようにすることが挙げられる。例えば、ユーザが入力したテストセットアップパラメータ及びパラメータの組合せについて有効性チェックを行うことができる。これらの有効性チェックについては、テストセットアップページ１０に関する上述の検討において既に概説した。
【０３８６】
これらのチェックに用いる典型的な式をここで提供する。また、総テスト時間と予測テスト時間とを比較する、測定データの有効性についてのテストについてもここで記載する。データ有効性テストはオーバーシュート円弧長さテストと非常に類似し、両方のテストに用いる単一のユーティリティ（例えば、ソフトウェア）の設計を提示する。
【０３８７】
例示的実施形態において、円の中心は機械軸の範囲限界内にある。テストセットアップ変位座標は軸についての機械座標を用いて特定することができる。円の中心のテストセットアップ構成値は軸範囲限界についての機械較正データと直接に比較することができる。
【０３８８】
次の式が真であれば、有効性テストにパスするであろう。Ｘｍｉｎはｘ軸範囲の下限（ＬＯＷ＿ＬＩＭＴ［Ｘ］）を示し、Ｘｍａｘはｘ軸範囲の上限（ＨＩＧＨ＿ＬＩＭＴ［Ｘ］）等を示す。
【０３８９】
【数８３】
2004525467.tif 000086
【０３９０】
テストセットアップページ１０に関する検討について上述したように、円半径はボールバー長さ以下の場合もあるが、円平面に直交する軸の方向の運動がボールバー測定値に大きく寄与するほどには小さくない。例示的実施形態では、垂直軸の方向の位置変化ｄＰに対するボールバー長さの変化ｄＬは、円平面の半径に沿った位置変化ｄＲに対するボールバー長さの変化の１／２以下となるように選択することができる。
【０３９１】
【数８４】
2004525467.tif 000087
【０３９２】
上記式によって最大円錐角φｍａｘが特定される。
【０３９３】
【数８５】
2004525467.tif 000088
【０３９４】
最大円錐角に基づくボールバー長さに対する円半径を以下に示す。
【０３９５】
【数８６】
2004525467.tif 000089
【０３９６】
最終的に円半径の必要条件は次のようになる。
【０３９７】
【数８７】
2004525467.tif 000090
【０３９８】
このチェックはボールバー半径の情報を必要とするため、例示的実施形態においては、ユーザが提案されたテスト構成パラメータを適用しようとするまでこのチェックは行われない。例示的実施形態においては、ボールバー長さの設定値は（ここで更に記載する）ドロップダウンメニューＵＩコントロール（uicontrol）における有限数の選択肢に限定されるため、ボールバー長さは有効性テストの対象とはならない。このドロップダウンメニューにおける値は、ボールバーに利用可能な延長バー又は延長バーの組合せを加えた公称長さである。
【０３９９】
誤差パラメータの同時推定についての式に関する上記検討では、パラメータ推定アルゴリズムがどの様にして測定値の励起に基づいて１つの誤差タイプと他の誤差タイプとを区別するかについて記載した。励起はデータ円弧の長さに応じて増大するが、データ円弧開始点の角度にも依存する。データ円弧が各種誤差パラメータを別々に識別するための十分な励起を提供するのに十分な長さを有しているかどうかを判断するテストの１つは、式（５６）を用いて励起パラメータを計算することである。例示的実施形態では、励起は、水平軸に対し４５°の角度で開始する１８０°データ円弧についての値を超えることが必要である。同じデータ円弧範囲をカバーする時計方向データ及び反時計方向データを用いて式５２及び５３から［Ａ］行列を構成することによって、励起を計算することができる。十分な励起を提供する開始角度及びデータ円弧の条件を以下の式（８５）によって示す。式（８５）中の［Ａ］行列を構成するために用いる角度間隔は、１°、或いは以下の式（８６）で表される半径及び送り速度に基づく予測変化角度である。
【０４００】
【数８８】
2004525467.tif 000091
【０４０１】
【数８９】
2004525467.tif 000092
【０４０２】
例示的実施形態においては、サークルテストによって軸範囲限界を超えないことを保証するためのテストでは、同時に、円の中心や、円半径、ボールバー長さ、加速円弧の開始角度、総円弧長を考慮する。例示的なテストは、加速オーバーシュート円弧の開始から減速オーバーシュート円弧の終了まで円全体において軸の範囲限界を超えないことを保証するように設計される。範囲限界を超えることがテストによって発見された場合、円の中心及び／又は円半径を変化させてテストを範囲内に入れることが提案される。
【０４０３】
直交軸Ｐの一定高さをチェックすることができる。円の中心のＰ座標についてのテストセットアップパラメータは、実際には円の中心ではなく、センタボールのＰ座標である。例示的実施形態において、真の円中心の直交座標は、テストセットアップデータにおける円中心の入力値か、或いは該入力値を「超えた」所に位置する。次の式において、（差し引かれていない）設定された円中心に平方根を加える。
【０４０４】
【数９０】
2004525467.tif 000093
【０４０５】
一旦、直交軸の位置が範囲内にあることが見出されれば、円運動時の最大軸位置及び最小軸位置を決定することができる。これらの値は、まず、全円弧（加速オーバーシュート円弧＋データ円弧＋減速オーバーシュート円弧）が３６０°をカバーする円の範囲を決定し、次いで、全円弧が３６０°未満である特定の場合を考慮してこの円の範囲を調整することによって評価することができる。範囲はまず円の中心座標（０，０）に対して計算し、部分円に対して何らかの調整を行った後に実際の座標を考えることができる。
【０４０６】
【数９１】
2004525467.tif 000094
【０４０７】
円全体（オーバーシュート円弧＋データ円弧）が３６０°の円弧に渡る場合には、軸範囲に対する付加的な調整の必要はない。そうでない場合には、次のステップにおいて、円弧が開始する象限と円弧が終了する象限とを識別し、交差する象限の境界を識別し、そして交差しない象限の境界に対応する範囲を再評価することができる。このプロセスを単一の式によって表わすのは容易ではない。なぜなら、例示的実施形態によれば、このプロセスは開始象限と終了象限との１６通りの可能な組合せの各々に対し多くのロジックと固有の処理を必要とするためである。開始象限及び終了象限は、円の中心から加速円弧開始点までの単位ベクトルと円の中心から減速円弧終了点までの単位ベクトルとを構築することによって決定することができる。
【０４０８】
【数９２】
2004525467.tif 000095
【０４０９】
開始象限及び終了象限は、以下のように単位ベクトルより決定することができる。
【０４１０】
【数９３】
2004525467.tif 000096
【０４１１】
最大軸変位及び最小軸変位は、図１９に示す１６通りの組合せの各々についての開始象限と終了象限との特定な組合せに基づいて調整することができる。各組合せについての典型的な式を以下に示す。
【０４１２】
【数９４】
2004525467.tif 000097
【０４１３】
上記の適切な行から得た式を評価した後、利用可能な機械軸範囲に対して円の軸範囲をテストし、機械包絡面が特定の円を収容できる程度に十分に大きいかどうかを決定することができる。機械包絡面が十分に大きくないが、中心座標を変更すれば円を機械包絡面内に入れることができる場合には、中心座標の変更が提案される。水平軸の場合、このプロセスを次の疑似コードによって表わすことができる。垂直軸の場合にも同様の手順を実行することができる。
【０４１４】
【数９５】
2004525467.tif 000098
【０４１５】
オペレータによって確認されるメッセージには、上記のＨやＶではなく、水平軸又は垂直軸に関連した適切な軸の名前が含まれる。上記括弧｛｝内のタームは数値を含む。
【０４１６】
円が機械範囲内にある状態が確立されたと仮定すると、最終テストによって、最初の（例えば、１．５ｍｍ）内方送り前の位置及び最後の（例えば、１．５ｍｍ）外方送り後の位置も範囲内にあることが確実にされる。これらの位置は次の式によって定義することができる。
【０４１７】
【数９６】
2004525467.tif 000099
【０４１８】
【数９７】
2004525467.tif 000100
【０４１９】
【数９８】
2004525467.tif 000101
【０４２０】
【数９９】
2004525467.tif 000102
【０４２１】
【数１００】
2004525467.tif 000103
【０４２２】
【数１０１】
2004525467.tif 000104
【０４２３】
これらの座標の１つが関連する軸の範囲限界外である場合、有効性チェックによってユーザにこの状況を知らせる警告が発せられる。
【０４２４】
十分なオーバーシュート円弧長さについてのチェックを用いて以下のことを確実にすることができる。１）最初の内方送りの終了時の速度からの加速中に、経路速度がプログラムされた送り速度に達するのに十分な程度に加速オーバーシュート円弧が大きいこと、及び２）最終外方送り移動の前の速度への減速が（データ円弧内でなく）減速オーバーシュート円弧内のどこかで始まる程度に減速オーバーシュート円弧が十分に長いこと。オーバーシュート円弧長についてのテストにおいては、プログラムされた送り速度や、円半径、データ円弧の開始角度及び終了角度、制御装置の速度アルゴリズム、そして軸及び経路速度についての機械構成パラメータを考慮することができる。本発明の例示的実施形態には、内方送り終了時の送り速度からプログラムされた送り速度へと速度を変化させるために費やされる距離と、プログラムされた送り速度から最終外方送り移動直前の送り速度へと速度を変化させるために費やされる距離とを予測する能力をも含めることができる。
【０４２５】
一実施形態において、このようなチェックはパートプログラム（或いはその一部）のオフラインエミュレーションによって行うことができる。例えば、パートプログラム全体（例えば、内方送り、加速オーバーシュート円弧、データ円弧、減速オーバーシュート円弧及び外方送り）の実行をエミュレートすると共に解析し、上記条件が満たされているかどうかを判定することができる。このような一実施形態において、例えば、エミュレーションによって発生された速度対累積移動距離プロファイルを解析し、上記条件が満たされていることを確認できる（速度対時間のプロファイルや累積移動距離対時間のプロファイルを用いることもできる）。例えば、データ円弧の開始と終了を表わす累積距離での速度を解析し、この速度がプログラムされた最大送り速度に一致しているかどうかを判定することができる。更に、このようなプロファイル（例えば、累積移動距離対時間プロファイル）を解析して、（内方送りトリガ及び外方送りトリガについての予測累積距離に対応するデータポイントにタグを付けることによって）総テスト時間を推定することもでき、また（データ円弧の開始及び終了を示す累積距離に対応するデータポイントにタグを付けることによって）データ円弧時間を推定することもできる。
【０４２６】
或いは、このようなエミュレーションにおける計算の大半がデータ円弧（最大送り速度部分）で行われ、従って不必要な場合には、上記チェックはパートプログラムの選択部分の実行をエミュレートすることによって行うことができる。例えば、パートプログラムの実行は、内方送り移動の直前から目標送り速度が達成されるまでエミュレートすることができる。対応する累積移動距離を解析し、この移動距離が（加速オーバーシュート円弧が十分であることを示す）データ円弧の開始を示す累積距離より小さいかどうかを決定することができる。更に、このような距離に対応するデータポイントにタグを付けて、加速オーバーシュート円弧が終了するまでプログラム実行のエミュレーションを続けることができる。このデータポイントに更にタグを付けて、（データ円弧の抽出に対して用いることができる）加速オーバーシュート円弧を実施するための総時間を決定するのに用いることができる。
【０４２７】
対称性によって、減速オーバーシュート円弧の時間が加速オーバーシュート円弧の時間に合理的に類似していると想定することができる。しかし、減速オーバーシュート円弧の十分性及び該円弧を実施する時間について個別にチェックを行うこともできる。例えば、減速円弧の開始点よりもある距離だけ前の点で（例えば、運動が最大送り速度で行われると合理的に推定するのに十分な距離だけ減速円弧の開始点よりも前の点で）、（送り速度が最大という初期条件で）エミュレーションを開始することができる。対称性に基づく上記の仮定を用いてこのような距離を決定することができる。送り速度をエミュレーション時にモニターすることができ、送り速度が最初に低下した際にデータポイントにタグを付けることができる。減速オーバーシュート円弧の開始に関連する累積距離に対応するデータポイントにタグを付けることもできる。減速オーバーシュート円弧の開始後に送り速度が低下し始める場合、減速オーバーシュート円弧は十分である。
【０４２８】
更に、このような一実施形態によると、プログラムの終了（外方送り移動）までエミュレーションを実行し続けることができる。従って、（例えば、減速オーバーシュート円弧の開始を示すデータポイントと外方送り移動に対応するデータポイントとから）減速オーバーシュート円弧の時間量を決定することもできる。総テスト時間は、例えば、加速オーバーシュート円弧の時間、減速オーバーシュート円弧の時間及びデータ円弧の時間（この時間は、例えば、データ円弧長さを送り速度で割ることによって決定することができる）を合計することによっても決定することができる。上記エミュレーションを実施するための個別のソフトウェアを開発することも可能であるが、本発明の一実施形態においては、エミュレーションを実施するための非実時間プロセスから実時間速度マネージャソフトウェアを呼び出すユーティリティプログラムが作られる。
【０４２９】
ボールバー測定からのデータは、例えばディスクファイル内に記憶できる。履歴ファイルをロードすると共にこれらの履歴ファイルに対して解析を行うための設備を設けることができる。ファイルはボールバーの製造業者又はＣＮＣの製造業者によって定義されたフォーマットとすることができる。これにより、ボールバーの製造業者からのソフトウェアを使用して測定値の解析を行うことができる。
【０４３０】
例えば、レニショーのＱＣ１０ボールバーは、コンピュータのシリアルポートに接続する装置である。ボールバー装置にアクセスしてこれを制御するためにアブストラクト・インターフェース・オブジェクトが使用される。このソフトウェアインターフェースは、コムポート（com port）を初期化し、ボールバーの電源をオンにし、ボールバーの測定係数を設定し、データ収集を開始するための方法を提供する。データ収集は、ボールバー・ソフトウェア・オブジェクトを初期化するプロセスの一部である実行スレッド内で行われる。ボールバーの偏倚（deflection）は一定の周波数（例えば、２５０ヘルツ）でサンプリングされる。データはシリアルポートからデータパイプへ複写される。このデータは、ボールバーの公称偏倚（nominal deflection）の符号付偏倚をｍｍの単位で表す浮動小数点値として記憶される。パイプは、或る最大数の測定値を保持できる。ボールバー装置オブジェクトは、パイプが新しいデータを保持する度にイベントを発生する。ボールバー装置は、ボールバーの状態を表す、一般に見ることが可能な属性（attribute）を有すると共に、エラー状態を報告する。ボールバーオブジェクトがエラー状態を検出するとイベントが発生される。
【０４３１】
例えば、ランテストページ３０に関連して先に記載したボールバー測定テストの実行を実現するために本発明の関連する例示的実施形態によって採用されている方法と技術について、以下詳細に説明する。物理的セットアップと実際の測定テストを行うためのステップは、例えば、Run-Test-Coordinator有限状態マシン（ＲＴＣ  ＦＳＭ）によって取り扱うことができる。ＲＴＣ  ＦＳＭの一つの状態は、TestInProgress状態であり、この状態自体が、TestInProgress（ＴＩＰ）ＦＳＭと呼ばれる、ネスト化されたＦＳＭの実行を含むことができる。例示的実施形態では、ＣＮＣの実時間プロセス上でのプログラムの実行とＦＳＭはタイムリーに相互作用し、ユーザから見て円滑で応答性の良い（ぎこちなかったり、ぎくしゃくしたりしていない）インターフェースを可能にする。
【０４３２】
プロセッサの負荷が大きく変化する可能性があることを考慮して、イベントの適切な順序付けを確保するためのセーフガードを設けることができる。これらの目標は、例えば、ＣＮＣの実時間データをポーリングし、ＲＴＣ  ＦＳＭを呼び出し、出口ポイントに達するまでＦＳＭを動作させることによって達成できる。このプロセスは、非実時間環境において自律スレッドからＦＳＭアクティビティメソッドを繰り返し呼び出すことによって達成できる。パラレルスレッドは、測定データをボールバーパイプから動的に割当てられるデータバッファに移動することによってバッファリングを行う。データバッファの大きさは推定された最大テスト期間に基づいて決められる。このようにして、ボールバーパイプは、パイプのオーバーフロー及びデータの消失を防止するために出来る限り空の状態に保つことができる。パイプのオーバーフロー状態が検出された場合、ＦＳＭはエラー状態に移り、適切な警報を発生する。
【０４３３】
ＲＴＣ  ＦＳＭは、例えば、人間のオペレータから発せられた外部要求、或いは本発明の例示的実施形態に関連するバックグランドタスクとして発生される反復呼び出しによって呼び出されるであろう。人間のオペレータから発せられた呼び出しは、例えば、画面上のボタンの押動操作、警報ダイアログの認知、又はユーザがテスト平面を変更、テストセットアップデータを変更、若しくはＲｕｎ−Ｔｅｓｔ画面に始めて入った時に生じるリセットイベントによって引き起こされるユーザインターフェース（ＵＩ）コントロールコールバックイベントであろう。如何なるＦＳＭメソッドであってもそれが呼び出された場合には、クライエントはＦＳＭに対するミューテックス（mutex）を獲得する必要がある。
【０４３４】
状態マシンの実行は、例えは、実時間プロセスからのデータ、ボールバー装置からのイベント、及び画面からのユーザインターフェースコントロール（Uicontrol）を介してのユーザ入力によって駆動される。これらのデータソースが複数のスレッド又はプロセス内から発生されるものである場合には、ＲＴＣ  ＦＳＭはマルチスレッド環境で動くように設計できる。例示的テストの実現に含まれるスレッド／プロセスは図２０に示されており、この図は、下記の５つのスレッド／プロセスをテストの実現に含めることができることを示している。
１．Ballbar Deviceスレッド：ＯＳ（例えば、Ｗｉｎｄｏｗｓ）の下で走り、シリアルポートを介してボールバーからデータを収集し、データを処理し、測定値を例えばパイプオブジェクトに複写する自律スレッド。例えば、レニショーが提供するボールバー装置ソフトウェアオブジェクトは、このスレッドを確立すると共にボールバーの状態を報告するためのインターフェースを提供する。
２．Empty Pipeスレッド：ＯＳの下で走る優先度の高いスレッドで、パイプから動的に割当てられたメモリのデータバッファへデータをコピーする。データバッファの長さは予想されるテスト期間に基づいて決定される。このスレッドは、新たなデータがパイプに存在することを示すイベント信号をボールバー装置から受信するとパイプを空にする。データは、例えば、バッファオブジェクト“resamp_pipe_buffer”内に記憶できる。このデータは、状態遷移刺激条件を評価する時にＲＴＣ  ＦＳＭによってアクセスできる。また、このスレッドは、所定のトリガリング条件が検出された時にＲＴＣ  ＦＳＭを呼び出す。このトリガリング条件は、ボールバーが完全伸び位置から測定範囲に入った、測定範囲から完全伸び位置に入った、及び完全縮み位置に入ったことである。データ解析（例えば、曲線当て嵌め）を実施する場合に、完全な測定データセットにアクセスできる。
３．FSM Pingスレッド：ＲＴＣ  ＦＳＭの状態アクティビティメソッドの反復的呼び出し。この呼び出しはユーザインターフェース表示からのものである。ＦＳＭの試みられる反復的呼び出しの間隔は、テストを継続できるように小さくすることができると共に、本スレッドの優先度は他のスレッドの優先度よりも低く設定できる。
４．Uicontrolスレッド：オンスクリーン・ユーザインターフェース・コントロールを介してのオペレータの入力に応答するスレッド。Uicontrolコールバック機能は、ＲＴＣ  ＦＳＭの刺激応答メソッド（respond-to-stimulusmethod）の呼び出しを引き起こす。このＲＴＣ  ＦＳＭメソッドへのアクセスはミューテックス化され、Pingスレッドからのサービスに対する要求は、Uicontrolスレッドの要求が完了するまで待機し、その逆の場合もある。例示的実施形態では、uicontrolの要求は待ち行列に入れられず、新しい要求がペンディング中の現存する要求にとって代わる。
５．ＣＮＣプログラム実行プロセス：このプログラム実行プロセスは、ＣＮＣの実時間ＯＳの下で走る実時間自律プロセスとすることができる。ランテストＦＳＭは、状態遷移の時期、及び状態遷移を行うべきか否かについての決定を実時間プロセスからのデータに基づいて行う。セマフォ（“waitinloop”と呼ぶ）は、ＲＴＣ  ＦＳＭがパートプログラムの実行を制限された範囲で制御することを可能にする機構と通信する。これらの点については後でより詳細に説明する。
例示的実施形態では、ユーザインターフェースのランテストタブに関連していないタスクは何れもUicontrolスレッドの下で実行できる。
【０４３５】
本発明の一実施形態では、ネスト化状態パターンが使用される。そのような一実施形態では、状態マシンは、親状態（parent state）の状態アクティビティを実行し、その後、ネスト化状態を横断する。この状態アクティビティの間に親状態から出る遷移の必要性が検出された場合、ネスト化状態の更なるアクティビティは行われない。
【０４３６】
ボールバーパイプからのデータは、テスト円弧全体についての測定値を含むバッファ（resamp_pipe_buffer）内に永久に記憶できる。resamp_pipe_bufferは、ボールバーパイプよりも低密度のデータを含む。これは、動的テストデータファイルの大きさを制御する目的でボールバーのパイプデータを再サンプリングする場合である。
【０４３７】
低密度データは、図２１に示すように、Ｎresamp個の生データ項目の組についてウィンドウ平均（windowed-average）を求めることによって作り出すことができる。resamp_pipe_bufferのデータコンテナ領域は、連続運動テストの内方送りイベントと外方送りイベントの間に生じると予測される再サンプルデータ項目（point）にある程度の余裕を加えた多数のデータ項目を記憶できるように動的に割り当てることができる。
【０４３８】
各再サンプリング動作に先立ち、ボールバーデータパイプ内に残っている項目数を再サンプリング率Ｎresampと比較できる。残存している項目数がＮresamp未満である場合、残っている数をprev_num_remとして記憶でき、残存している項目の平均をprev_avg_remとして計算して記憶でき、ボールバーパイプに残っている内容を廃棄して空にでき、emty_ballbar_pipe()メソッドが戻る。次に、emty_ballbar_pipe()メソッドが呼び出され、ボールバーパイプがデータを含み、resamp_pipe_buffer内の最新の項目を下記の式によって記載したように計算できる。
【０４３９】
【数１０２】
2004525467.tif 000105
【０４４０】
初期再サンプル値が一旦計算されると、通常のように再サンプリングプロセスが継続する。パイプに含まれるデータ項目がＮresmap-prev_num_remデータ項目よりも少ない特別な場合、prev_num_remとprev_num_avgについての値が更新され、データパイプが空にされ、機能が戻る。これは、合計の上限範囲をパイプ内の項目数に制限することによって達成でき、計算結果はprev_avg_remに記憶され、変数ののprev_num_remは、データパイプ内の項目数を現在値に加えることによって更新される。
【０４４１】
以下、例示的実施形態におけるデータ収集プロセスが、保持すべきデータの収集を開始するきっかけを作る（トリガする）内方送り移動よりも前にどのようにして始まるかについて述べる。このトリガリングイベントよりも前に、上記したように再サンプリングプロセスを介してresamp_bufferにデータが入る。データ収集の開始とトリガリングイベントとの間の時間が極めて長い場合、resamp_bufferが一杯になる可能性がある。もし一杯になった場合、最も古いデータを必要な量だけ廃棄することによって最新のデータのための余裕を作ることができる。
【０４４２】
resamp_bufferは、リングバッファをリンクさせたリストとして実施できる。resamp_bufferにデータが入ると、リストヘッドポインタはリングバッファ内の最も古い測定値に関連したサンプルを指し示すように更新され、リストテールポインタは、ボールバーパイプからの最新の測定値に対応するバッファ内のデータ項目を指し示す。内方送りトリガよりも前の期間において、ＴＩＰ  ＦＳＭは、最新のボールバーデータパイプからのデータを走査し、トリガリングイベントが生じたか否かをチェックする。一実施形態では、新たなデータイベントに応答して「エンプティーパイプスレッド」が作動する度に、このスレッドがトリガ条件をチェックする。ＴＩＰ  ＦＳＭが有効なトリガリングイベントを一旦検知すると、そのイベントに関連するバッファ位置にポインタを保持する。２個のポインタが保持され、その内の一方は最新の内方送りトリガについてのものであり、他方は最新の外方送りトリガについてのものである。
【０４４３】
ＲＴＣ及びＴＩＰ有限状態マシンの例示的実施形態については後で更に説明する。以下、ＦＳＭダイアグラムにおいて見られる幾つかの要素について記載する。本明細書で議論するように、状態マシンは図２２に示すシンボルを採用するダイアグラムによって記載される。
【０４４４】
各状態が角の丸いボックスによって表される。ボックスは垂直方向に４つの部分に分割されている。最上部は状態の名称を含んでいる。２番目の部分は、状態エントリアクション（遷移を介して状態に入る時に一回だけ行われるアクション）を含んでいる。
【０４４５】
３番目の部分は、状態アクティビティ或いは状態内アクションを含んでいる。これらは、ＦＳＭの呼び出し毎に行うことができる、現在の状態に関連したタスクである。状態アクティビティは任意の状態遷移の前に行うことができる。ネスト化状態の場合、親状態及びネスト化状態の両方についてアクティビティを行うことができる。この場合、親状態のアクティビティが最初に起こる。
【０４４６】
状態ボックスの最下部は、状態イグジットアクション（遷移を介して状態から出るときに一回だけ行われるアクション）を含んでいる。或る状態から別の状態への遷移は或る刺激条件によって開始でき、矢印付きラインによって表される。矢印付きラインは系が遷移して入る先の状態を指し示している。この遷移ラインには刺激の説明が付けられており、この説明に続いて、（任意的に）スラッシュ“／”が、そしてスラッシュに続いて遷移アクション（遷移の間に行うアクション）が記載されている。
【０４４７】
特定の状態から出る各遷移についての状態イグジットアクションを複写する必要をなくすると共に、特定の状態に入る各遷移のための状態エントリアクションを複写する必要をなくすために、遷移アクションを状態イグジットアクション及び状態エントリアクションから区別するための設備が設けられている。菱形が条件遷移を示すために使用されている。中空の円は、ＦＳＭのデフォルト状態（初期化又はＦＳＭリセットイベントの直後におけるＦＳＭの状態）を表す。数字付の黒の実線円が参照ノードとして使用される。数字付の灰色の実線円は、同じ番号を有する参照ノードへの相互参照（cross reference）である。矢印の交差が増えすぎるのを避けるためにダイアグラム中に相互参照が使用されている。
【０４４８】
例示的実施形態では、或る状態が再配置可能に作られており、状態エントリアクション、状態内アクション、状態イグジットアクション、及び遷移刺激が同一である幾つかの状態を採用することを可能にする。固有の状態をそれが必要となる各場合について別々に作る代わりに、再配置可能状態を採用できる。この場合、再配置可能状態に最初に入った時に、刺激に応答して遷移する先の状態が設定される。ダイアグラムでは、実線ではなく破線で描かれた角の丸いボックスによって再配置可能状態が示されている。
【０４４９】
ＡＴＢソフトウェアを含む例示的実施形態では、ＡＴＢ  Ｒｕｎ−Ｔｅｓｔページ（例えば、ランテストページ３０）は、１）先に進むために次に何をすべきかを述べたプロンプトをユーザに提供する、２）ＦＳＭが或るタスクを完了している過程にある間状態を表示する、という二つの目的を持つメッセージを表示するためのステータスバーを含んでいる。ＦＳＭ内の状態の多くは状態に入る時に関数setstatus()を実行する。この関数は、状態に関連する特定のメッセージをステータスバーに表示する。スペースに制限があるため、この特定のメッセージはＦＳＭダイアグラムには示されていないが、メッセージは、各状態をテキストによって記載するという形態で提供される。
【０４５０】
ボールバーテストを準備して実行する間に機械の運動が入ってくる場合がある。この機械の運動の多くは、制御装置のパートプログラムＭＤＩバッファにパートプログラムのブロックを入れることによって達成できる。関数setmdi()は状態エントリアクションとして採用される場合が多く、特定の状態に関連する特定のパートプログラムを含む文字列が（セットアップデータに基づいて）自動的に発生されると共に、ＭＤＩバッファ内にロードされる。setmdi()によって作られた状態固有のＭＤＩプログラムの説明を、個々の状態の議論と共に行う。
【０４５１】
もしバッファがロックされていると、setmdi()アクションは、ＭＤＩバッファに新しいプログラムを入れることができないであろう。このような状態は、例えば、１）プログラムパス制御状態が既存のプログラムを上書きできない状態となっている、又は２）システムが制御状態の変化に応答してバッファをアンロックしている過程である場合に起こり得る。ＲＴＣ  ＦＳＭ内の多数の状態は、ＭＤＩバッファに新しいプログラムを入れるエントリ時アクション（at-entryaction）を含んでいる。もしその時点においてＭＤＩバッファがロックされていると、その試みは失敗するであろう。
【０４５２】
これを避けるために、そのようなエントリ時アクションを伴う状態への遷移を、ateop（atend of program）と称すブール条件に基づく条件付き遷移とすることができる。ＡＴＢ  ＦＳＭについての議論の範囲では、ブランク文字列を伴うsetmdi()を呼び出すことによってＭＤＩバッファをクリアする試みが成功した場合、ateopは「真（true）」である。また、setmdi()アクションは、以下に述べる理由でwaitinloopセマフォ（プロセス制御データテーブル項目）の値をリセットする。
【０４５３】
状態遷移は、これまでにＭＤＩプログラムが特定のブロックを超えて実行されたことを示す刺激の結果であることが多い。この刺激の発生は、自動的に発生されたパートプログラム中に各ブロックに対してのブロックシーケンス番号を含めることによって容易に行うことができる。特定の状態のためのＭＤＩプログラム自動発生メソッドは、ＦＳＭに対して重要な（significance）、プログラム中の特定の位置を表すためにシーケンス番号群をＦＳＭに提供する。これらは、現在実行中のブロックのシーケンス番号（NSEQ）がこれらの値の一つと等しくなるかこれを超えた時に状態遷移刺激を作るためにＦＳＭによって使用されるであろう。NSEQは、現在実行中のパートプログラムブロックのシーケンス番号についてのシステム名称を表すために本明細書中で使用される記号である。
【０４５４】
ＲＴＣ  ＦＳＭにおいては、状態遷移は、典型的にはＭＤＩ実行待機状態（wating-to-execute-mdistate）からＭＤＩ実行状態（executing-mdi state）、WaitCycCompl状態（後述する）、新実行待機状態（newwating-to-execute state）等へのパターンに従う。実行待機状態を出て実行状態へ移る遷移を発生するために条件NSEQ≧NSTARTを使用できる。実行状態から出る遷移は、典型的にはNSEQ≧NSTOPの時に生じる。
【０４５５】
実行状態から出る遷移は、典型的にはWaitCycCompl状態に入り、制御状態がateopとなると共に、ＭＤＩバッファがアンロック状態になって次の実行待機状態へ入ることによってＭＤＩバッファにプログラムブロックが入るまで待機する。ＴＩＰ  ＦＳＭにおいては、パートプログラム動作の間にシーケンス番号のリストを発生できる。なお、プログラムはＦＳＭによって作られるため、各シーケンス番号の重要性はＦＳＭが理解している。或るシーケンス番号に続くパートプログラムブロックの実行を、円運動パートプログラムが進行するに従ってＴＩＰ  ＦＳＭ内における遷移を刺激するのに使用できる。
【０４５６】
パートプログラムの状態に応答してＦＳＭの状態を同期させることは、上記のようにシ
ーケンス番号NSEQを使用することによって達成できる。或る例では、ボールバーテストの実現にはＦＳＭ状態へパートプログラムの実行を同期させることが含まれる。その様な例の一つを以下に説明する。
【０４５７】
例示的実施形態では、条件NSEQ≧NSTARTのためにＦＳＭの状態が遷移すると、パートプログラムはある点で停止し、ＦＳＭがその遷移を完了することを可能にする。さもないと、プログラムの実行は完了まで進み、NSEQを零にリセットし、ＦＳＭは、既に発生して消滅してしまったNSEQ≧NSTOPの刺激条件を待機した状態で動かなくなってしまう。この状況は、例えばwaitinloop機構を採用することによって、ＦＳＭが追いつくまでパートプログラムの実行を待たせることで回避できる。
【０４５８】
上記のwaitinloopは、パートプログラムを或る点で停止させ得るブロックを自動的に発生されたＭＤＩプログラム中に含めることによって達成できる。停止されたパートプログラムは、（別のプロセスで動作している）ＦＳＭによって、両方の処理が共有している変数（セマフォ）の値を増加させることによって解放されるであろう。Ａ２１００制御装置の場合、そのような変数がプロセス間通信のために設けられており、プロセス制御変数と呼ばれる。プログラム発生中に、パートプログラム内の、パートプログラムをＦＳＭに再同期させたい箇所にプロセス制御変数の値を条件とする無限ループを挿入できる。
【０４５９】
一旦ＦＳＭの状態遷移が完了すれば、刺激条件を検出する準備ができているので、パートプログラムの「停止」を解放できる。停止ループを達成するための一連のパートプログラムのブロックの例を下に示す。これらのブロックを自動的に発生するコードをプログラム自動発生時に採用できる。
【０４６０】
プロセス制御データセマフォの値がその以前の値を超えたことをパートプログラム中の解放条件とすることができ、セマフォの値を増加させることをＦＳＭの解放動作とすることができる。セマフォの以前の値は、プロセス制御変数の値を停止ループの直後のブロックのローカルプログラム変数に複写し、プロセス制御データ項目がローカル変数の値よりも大きな値を有することを停止ループを出る条件とすることでパートプログラム中に維持できる。プロセス制御パラメータについての値は状態マシンの初期化時に零にセットされ、ＦＳＭがＭＤＩバッファに新たなブロックを書き込むとリセットされる。
【０４６１】
プログラム内の最初の停止ループは正確に機能しなければならない。何故なら、ローカル変数は、それが最初に参照される時に零に初期化されるからである。下に抜粋したコードを参照して説明を行う。CURPOS_PGM(X)の問い合わせを含めることにより、パートプログラムの先読みの間に停止ループが未完了状態で解放されてしまうことを防止するのを助けるために安定状態待機条件（wait-for-steady state condition）を作りだすことができる。
【０４６２】
2004525467.tif 000106
コードの抜粋１：ＮＣプログラムブロック停止ループの例
【０４６３】
waitinloop（'susp_cond'）メソッドをパートプログラムの発生中に呼び出して、選択された特定のプロセス制御データテーブルの項目（entry）のための条件付ステートメントを発生できる。ＦＳＭは、waitinloop（'release'）によって示されているwaitinloopの解放メソッドを採用してプロセス制御データの適切な項目の値を増加させることができる。解放は、通常、プログラムが現在、停止ループに入っているか又は入る直前であることをシーケンス番号から分かる状態から適用される。
【０４６４】
追加のメソッドであるwaitinloop（'init'）は、プロセス制御データテーブルから値が零の項目を検索し、選択されたテーブル項目のインデックスを（例えば、ＦＳＭプロパティとして）記憶する。waitinloop（'init'）メソッドは、例えば、ランテストページに入った時に呼び出すことができる。選択されたプロセス制御データテーブルの項目の値は、ランテストページから出る時にwaitinloop（'restore'）を呼び出すことによって零に戻すことができる。前述の議論では、一例としてＡ２１００の細部を用いたが、実施する上での細部は異なるが同一の概念を他のＣＮＣにも採用でき、同様の結果が得られる。
【０４６５】
実時間パートプログラムパスの制御状態は、別の非実時間プロセスを実行しているＡＴＢが利用できるようにし得る項目である。制御状態変数は、状態内アクションのためのＦＳＭメソッドの各反復呼出の前に読みだすことができる。制御状態は、プログラム実行プロセスの状態をエニュメレーションする、S1NC_CONTROL等の変数によって表すことができる。
【０４６６】
現在の状況では、制御状態を遷移刺激のための条件として、パートプログラムが実行されているか否かを決定するためにおいて使用できる。ＲＴＣ  ＦＳＭにおいては、制御状態をブール条件付インサイクル（Boolean termed incycle）として表すことができる。例示的実施形態では、最初のパートプログラムパスがアクティブに実行されている、フィードホールド状態にある、又はシングルブロックの場合のようにブロックの終わりで停止している場合にのみ、インサイクルブールは「真」である。ＦＳＭダイアグラムでは、プログラムが上で定義されたインサイクルであるか否かをテストする状態内アクションを示すために、poll(ctlstate）という省略表現を使用している。
【０４６７】
例示的ＦＳＭにおける幾つかの状態は、現在の状態がその状態について定義された最長期間よりも長い期間継続したという事象によって、遷移を有している。ＦＳＭダイアグラムでは、これをタイムアウト条件と称している。タイムアウト条件に関連する遷移は、典型的には警報の発生を伴う。タイムアウト条件は、システムのクロック時間を状態のエントリ時アクションの一つとして捉え、その後、状態に入ってからの経過時間を状態アクティビティ中に計算し、それを状態のtimeout_time属性と比較することによって検出できる。タイムアウト遷移を有する状態は、timeoutsetのエントリ時アクションも有することができ、このアクションでは、状態に入った時間が捉えられると共に、timeout_timeが指定される。
【０４６８】
一例示的実施形態によるRun Test Coordinator（ＲＴＣ）ＦＳＭの目的は、例えは、ボールバーテストの物理的セットアップを自動化し、テストを実行し、データを収集し、データをファイルにセーブし、初期データ解析を行うことである。例えば、完全なテストの実行には５つのステップの完了を伴う。
【０４６９】
ＡＴＢソフトウェアを使用した例示的実施形態を再び参照すると、各ステップは、ＡＴＢランテストページのボタンによって表される。各ボタンは、特定のステップが完了したか否かを示す関連するチェックボックスを有している。ボタンが使用可能にされると、ユーザがそれを押して関連するタスクを実行する。特定の環境下では、ボタンは使用不能にされ、この状態ではボタンを押すことが禁止されると共に、ボタンに関連するタスクはその時点では実行されないことをユーザに知らせるためにボタンの色がグレーに変わる。
【０４７０】
５個のボタンは、ランテストページ上に指定された順序で上部から下部に縦に並んで現れ、指定された自己記述的なラベルが付けられている。ＦＳＭダイアグラムでは、特定の整数でボタンが識別されている。
１．「中心へ移動」
２．「中心を固定」
３．「開始位置へ移動」
４．「テスト開始」
５．「データセーブ」
【０４７１】
ＦＳＭダイアグラムでは、ボタンの使用可能／使用不能状態及びチェックボックスのチェック／未チェック状態に関連する特定の状態エントリアクションについて簡略表記を用いている。識別整数がｎ１〜ｎ２の範囲（ｎ２を含む）のボタンを使用可能にすべきことを示すためにenable(n1:n2)が使用される。同様に、ボタンｎ３〜ｎ４を使用不能にすべきアクションを示すためにdisable(n3:n4)が使用される。
【０４７２】
一実施形態においては、もしユーザが選択すれば、前のステップは再び実行されるが、ステップはスキップされないことを示すようにボタンが使用可能にされる。ランテストページ３０に関連した先の議論において記載したように、例示的実施形態では、テストシーケンスを進めるためにボタンを押すことは必要とされない（例えば、それらは既に完了したステップを繰り返すのに使用される）。関連するチェックボックスにチェックが入れられるようにして、テストが成功裡に完了したことを表示でき、その逆も同様である。ＦＳＭダイアグラムでは、このアクションは、インデックスｎ１〜ｎ２に関連するチェックボックスをチェック済としてセットし、又インデックスがｎ３〜ｎ４であるチェックボックスを未チェックとしてセットする、set_compl(n1:n2)及びset_incompl(n3:n4)という表記によって示される。
【０４７３】
例示のＲＴＣ  ＦＳＭは、状態の関数としてランテストページ上に見出される特定のuicontrolを使用可能及び使用不能にする。下記の例示的リストは、どのuicontrolがＲＴＣ状態ＦＳＭによって指定されたそれらの使用可能／使用不能属性を有しているかを識別すると共に、それらがどのようにして変更されるのか、又なぜ変更されるのかを示す。
１．送り速度編集フィールド：毎回セットアップページに戻ることなくユーザが異なる送り速度でテストを複数回行えるようにするために、ランテストページ上で送り速度編集フィールドを利用可能にできる。送り速度編集フィールドは、ＲＴＣ状態のためのエントリ時タスクとして均一に使用可能にできるが、TestInProgress状態は例外で、この状態では該フィールドが使用不能にされる。スペースを節約するために、これらのアクションは図２３のＦＳＭダイアグラムには示されていない。状態がAtStartである場合、テストパートプログラムは既に発生されており、ＭＤＩバッファ内にある。状態がAtStartである時にユーザが送り速度を変更した場合、可変送り速度を表すためにプログラム中にプロセス制御変数を採用することによってこの変更に適応する。状態がTestInProgressに遷移する時、送り速度編集フィールドからの値をプロセス制御データテーブルの適切な項目にコピーし、送り速度編集フィールドに対する更なる編集を不可能にする。
２．バックラッシュテスト実行用チェックボックス：ＲＴＣ  ＦＳＭは、バックラッシュテスト実行用チェックボックスの状態に基づいてバックラッシュテストを行うべきか否かを決定できる。例示的実施形態では、チェックボックスの状態をユーザが変更できる機能が、AtStart状態及びTestInProgress状態に入った時に使用不能にされ、他の全ての状態に入った時に使用可能にされる。スペースを節約するために、これらのエントリ時アクションは図２３のＦＳＭダイアグラムには示されていない。AtStart状態及びTestInProgress状態への移行時にチェックボックスの変更を不可能にすることで、バックラッシュテストが実施中であるか否かがチェックボックスの状態に正確に反映されることを保証する。AtStart状態に入る時にテストパートプログラムをＭＤＩにロードすることができる。例示的実施形態では、バックラッシュチェックボックスにチェックが入れられている場合のみ、バックラッシュテスト用の運動を行うためのパートプログラムブロックが発生される。従って、一実施形態では、ＭＤＩバッファがテストパートプログラムを含んでいる期間の任意の時点でチェックボックスの状態を変更することをユーザに許可してはならない。
３．ボールバー較正制御：例示的実施形態では、制限された数のＲＴＣの状態からボールバー長較正が実施されたりキャンセルされたりする。ボールバー較正プロセスはＲＴＣ  ＦＳＭの実行を停止するため、パートプログラムがサイクルに入っているかサイクルに入る可能性がある間は、その実施が許容されない。これらのアクションは、後述する機構によって厳格に実施される。ボールバー長較正に関連するuicontrolは、特定の状態に入る時に実施不可能にされ、これにより機械がサイクルに入っていることが確実に分かっている場合にユーザが長さ較正を行うことを試みるのを阻止する。ボールバー較正制御は、MovingToCenter、MovingToStart、TestInProgress、TestAbort、及びWaitForCycCompleteの状態に入った時に使用不能にされる。例示的実施形態では、ボールバー較正制御のアクセス性はAlertMessage状態へ入る時には変更されず、ＲＴＣ内の残りの状態に入る時に使用可能に設定される。
【０４７４】
例示的ＲＴＣ  ＦＳＭダイアグラムが図２３に描かれている。再使用可能なAlertMessage状態の目的は、ユーザのための警報メッセージ付きウィンドウを発生し、ユーザがこの警報メッセージを確認するまで待機することである。図２３のＲＴＣ  ＦＳＭダイアグラムでは、再使用可能なAlertMessage状態の例が点線のボックスで囲まれた「Ａ」で表されている。
【０４７５】
Ａ状態のためのアクションと遷移を示すダイアグラムが図２４に示されている。図２４において、「GenericRTCState」と表示された状態は、特定のAlertMessageへの遷移が生じた起源となる状態を表す。警報ウィンドウに表示する文章は、GenericRTCStateからAlertMessageへの遷移の時に指定できる。
【０４７６】
また、この遷移の間にAlertExitStateを指定できる。AlertExitStateは、AlertMessageが確認（ack）刺激を受け取った時にＦＳＭが遷移する状態である。このack刺激は、例えば、ユーザが警報ウィンドウ内の「ＯＫ」ボタンを押した時に生じる。例示的実施形態では、AlertMessage状態から出た時に警報ウィンドウが消される。
【０４７７】
また、ＲＴＣ  ＦＳＭは再使用可能な状態Ｗを採用している。このＷ状態は、パートプログラムの実行が完了し、かつＭＤＩバッファが書込み可能となるまで、二つの状態の間での遷移を遅らせる目的を達成する。ＷはWaitCycCompleteを表す。例示的ＲＴＣ  ＦＳＭダイアグラムでのＷ状態は、実際には、図２５に示すように、WaitCycCompleteとＡ状態とを備えた２状態サブシステムを表す。
【０４７８】
図２５では、「Generic RTC State」は、WaitCycCompleteが再使用可能であり、WaitCycCompleteの固有の例はそれらの固有のエントリ遷移を有していることを示している。WaitCycCompleteへの遷移には、CycComplExitStateを指定することが伴う。CycComplExitStateは、Ｗ状態から出た時にシステムが遷移する状態を規定する。Ａ状態をＷサブシステム内に含めることにより、例えば、プログラムの実行が予想した時間枠の中で完了しなかった場合に、ユーザにフィードホールド／データリセットを提案する警報の発生を容易にできる。
【０４７９】
以下のエントリ時アクションをWaitCycComplete状態と関連付けることができる。
１）timeoutset(1)：timeout_timeはデフォルトとして１秒に設定される。これは充分である。何故なら、WaitCycCompleteへの遷移は、典型的には、プログラムの実行が最後の停止ループに到達したことを示すプログラムシーケンス番号によって刺激されるためである。timeout_timeがケースによって異なるWaitCycCompleteについては、遷移中にtimeoutset()を明確にプログラムすることによって、デフォルト値が無効にされる。
２）waitinloop(release)：プログラムの実行が停止ループに現在入っている場合には、プログラムの実行の継続を許容する。
以下の状態中アクションをWaitCycComplete状態と関連付けることができる。
１）poll(ateop)：プログラムがサイクル中でないこと及びＭＤＩバッファへの書込みアクセスをチェックする。
２）poll（time)：状態に入ってからの時間が指定されたtimeout_timeを超えたか否かをチェックする。
WaitCycComplete状態と関連付けられたイグジット時アクションはない。一方、以下のものはWaitCycComplete状態から出る遷移になり得る。
１）ateop：ＭＤＩバッファが書込み可能で、待機状態から出ることができる。遷移先の状態は、WaitCycCompleteに最初に入った時に定義された変数CycComplExitStateによって指定される。
２）timeout：許容できないと考えられる時間に亘ってWaitCycComplete状態が継続した場合、状態は、ユーザに手動でプログラムの実行を完了すると共にＭＤＩをアンロックすることを要求する警報（例えば、「フィードホールド／データリセットを押して継続」というメッセージ）を伴ってＡ状態（AlertMessage）に遷移する。警報が確認された時、状態はWaitingForCycCompleteに戻る。ユーザがデータリセットを行わない場合、timeout_timeの経過後、警報を再び発生できる。この動作は、ユーザが要求されたことを行うまで継続する。
【０４８０】
アイドル状態は、ＡＴＢソフトウェアの呼び出しに引き続く、例示的ＲＴＣ  ＦＳＭのデフォルト状態である。また、アイドル状態は、リセットイベントに応答してＦＳＭがセットされる状態である。リセットイベントは、例えば、テスト平面の選択又はセットアップデータが変更された場合に生じる。アイドル状態は、ユーザが、例えば「中心へ移動」と表示されたボタンを押すことによってテストの実施に含まれる一連のタスクの実行を開始できる開始点を提供できる。下記のエントリ時アクションをアイドル状態と関連付けることができる。
１）enable(1), disable(2:5), set_incmpl(1:5)：ボタンとチェックボックスを初期状態にリセット
２）statusmsg()：「テストを開始するために『中心へ移動』を押す」
【０４８１】
ＲＴＣアイドル状態と関連した明確な状態アクティビティ又はイグジット時アクションはない。ＲＴＣアイドル状態と関連した遷移、より詳細には、press(1)/check_setup()遷移に関連し、ユーザが、例えば「中心へ移動」ボタンを押すと、条件付テストへの遷移が生じる。遷移の間、アクションcheck_setup()は、本明細書で既に述べたようなテストセットアップ有効性テストを行う。もしセットアップが有効であれば、遷移は状態PreMoveToCenterへ進む。もしセットアップが無効であることが分かると、状態は或る再使用可能状態AlertMessage（Ａと表示された再使用可能状態）へ遷移する。check_setup()によって返されたエラーコードのリストから得られるもの等の警報メッセージ文は表示されると共に、例えばセットアップテストのページへ切り換えて（例えば、所定の円平面のための）有効なセットアップを構成するようにユーザに指示するのに使用される。
【０４８２】
PreMoveToCenterは、ＦＳＭが、（例えば、ＭＤＩプログラムを走らせることによって）セットアップデータで指定された円中心位置に機械軸を移動させるための指示を待っている（例えば、ユーザが機械のペンダント又はパネル上のサイクル開始ボタンを押すのを待っている）状態である。下記のエントリ時アクションをPreMoveToCenter状態と関連付けることができる。
１）enable(1), disable(2:5), set_incmpl(1:5)：「中心へ移動」のタスクを完了するための動作中。
２）statusmsg()：「中心への安全な経路を確保し、中心の蝶ねじを緩め、そしてサイクル開始」
３）setmdi()：軸をセットアップデータの円中心座標に移動させるために一連の機械座標運動を発生する。採用される送り速度はテストセットアップデータの項目である、トラバース送り速度とすることができる。円中心の水平軸座標及び垂直軸座標へ移動するブロックを最初にプログラムすることにより中心座標に接近できる。このブロックに続き、円中心の直交軸座標へ移動するブロックをプログラムすることができる。ＭＤＩプログラムの各ブロックは、前のブロックのシーケンス番号に対して１だけ大きいシーケンス番号を含んでいる。これらの運動ブロックの後には停止ループが続く。停止ループは、プログラムの実時間実行がＦＳＭの非実時間実行よりも先行して、シーケンス番号を問い合わせるＦＳＭの状態内アクションが実行されて状態遷移刺激を検出する前にプログラムが終わってしまう状況を防止するために含められる。以下に抜粋して示すコードは、Ｘ−Ｙ平面内の円の場合についてのPreMoveToCenterのsetmdi()メソッドによって創出されたＭＤＩプログラムの例を示す。
【０４８３】
2004525467.tif 000107
コードの抜粋２：円中心へ移動するためのＭＤＩプログラムの例
【０４８４】
４）set(NSTART, NSTOP）：NSTARTはＭＤＩプログラムの最初の運動ブロックのシーケンス番号に設定される（上記の例ではNSTART＝２）。NSTOPは停止ループのシーケンス番号に設定される（上記の例ではNSTOP＝４）。
５）est_prg_time()：（例えば、送り速度のオーバライドが１００％の時の）中心への移動を完了する時間の概略推定値を計算。この時間推定値は、MovingToCenter状態についてのタイムアウト条件の概算値を決定するのに利用できる。
【０４８５】
poll(ctlstate)状態アクティビティ及びpoll(NSEQ)状態アクティビティはPreMoveToCenter状態と関連付けることができる。従って、制御状態とシーケンス番号の両方が、PreMoveToCenterから出る遷移のための刺激条件を発生するための決定要因となり得る。一方、PreMoveToCenter状態と関連付けられたイグジット時アクションはない。さらに、PreMoveToCenter状態からの遷移、より詳しくは、NSEQ≧NSTART& incycleに関し、ユーザがサイクル開始を押し、プログラムの実行がトリガリングシーケンス番号に達した時に状態はMovingToCenterに遷移できる。
【０４８６】
例示的ＲＴＣ  ＦＳＭは、（PreMoveToCenter状態のエントリ時アクションによって発生された）ＭＤＩプログラムがサイクル中である場合、MovingToCenterの状態にある。以下のエントリ時アクションをMovingToCenter状態と関連付けることができる。
１）enable(1), disable(2:5), set_incmpl(1:5)：「中心へ移動」のタスクを完了するための動作中。
２）statusmsg()：「中心へ移動中」
３）timeoutset：timeout_timeは、推定移動時間の５倍に例えば３０秒を加えた値に設定できる。
一方、以下の状態アクティビティをMovingToCenter状態と関連付けることができる。
１）poll(NSEQ)：次の状態へ向かう遷移のための刺激を検出
２）poll(ateop)：プログラムの実行が未完了の状態で終わったエラー状態のための刺激を検出
３）poll(time)：タイムアウト状態のテスト
【０４８７】
MovingToCenterの状態に関係付けられた例示的waitinloop('release')イグジット時アクションに関しては、ＭＤＩプログラムの実行を完了することが許される。何故なら、MovingToCenterから出る遷移を刺激するイベントが生じたからである。以下のものがMovingToCenter状態からの遷移となり得る。
１）NSEQ≧NSTOP：シーケンス番号がNSTOPを超えた時、中心に向けての移動が完了し、状態は、SecureCenterに向かう方向の状態「Ｗ」に遷移する。Ｗ状態は、SecureCenter状態に入ってsetmdi()を試みる前にＭＤＩバッファがアンロックされていること（即ち、eop==「真」）を確実にするための中間手段として作動する。
２）ateop：この状態は、ユーザがフィードホールドを押した後データリセットが行われた場合に起こる。この状態は、PreMoveToCenterの方向の再使用可能なAlertMessage状態への遷移を刺激する。この特定の遷移の文章は、「中心に向かう運動は完了前に終了。継続するためには『ＯＫ』を押して下さい。」である。ユーザが警報窓内のＯＫボタンを押すと、確認即ちack刺激が発生され、状態はPreMoveToCenterへ遷移する（ここで、ユーザは、中心に向かうタスクを完了する新たな機会を得る）。
３）timeout：timeout_timeを超えた場合、timeout刺激は、PreMoveToCenterの方向のＡ状態に向かっての遷移を引き起こす。この遷移の間に作られる警報メッセージには、「中心に向かう運動は妥当な期間内に完了しませんでした。継続するためにはフィードホールド／データリセットを押して下さい。」という文が含まれる。この警報の確認は、PreMoveToCenterに到達する前にＷ状態に向かう遷移を引き起こす。
【０４８８】
SecureCenter状態の目的は、セットアップデータ内で指定されている座標に対して円中心の座標を調節する機会をユーザに提供することである。例えば、動力送り又はハンドル操作を行うことによって軸位置を調節し、及び／又は磁気カップがセンタボールを拾い上げるまでテーブル上のボールバーのセンタ治具の位置を調節することをユーザに指令できる。ユーザが、セットアップデータ内に定義された円中心の座標に機械を戻すことを望む場合、「中心へ移動」のボタンが押される。最終的な中心が正しく確立されると、ユーザはセンタ治具のセットねじを締めつけ、サイクル開始を押して、ＦＳＭが軸の現在の機械座標を獲得し、次の状態へ遷移するようにする。
【０４８９】
この場合の例示的ＦＳＭのアクションには、表示を正しく更新する、サイクル開始を検出してこれに応答する、又は使用可能とされている唯一のボタンである「中心へ移動」のボタンが押されたことを検出してこれに応答することが含まれる。サイクル開始は、ＭＤＩバッファが停止ループのみから成るプログラムを含む状況下で検出できる。プログラムがサイクル中で停止ループのシーケンス番号に到達したことをＦＳＭが検出した場合、状態はＷ状態へ遷移し、これと同時にwaitinloop(release)が出力される。例示的アクションと遷移についての下記の議論の中で追加の説明が行われる。
【０４９０】
以下の状態アクティビティをSecureCenter状態と関連付けることができる。
１）enable(1:2), disable(3:5), set_compl(1),set_incmpl(2:5)：この時点で中心へ移動のタスクが完了している。例示的実施形態では、「中心へ移動」のボタンのみが使用可能とされており、円中心の座標についての現在有効になっている値へ戻ることをユーザに許容している。
２）statusmsg()：「ハンドルを使用してボールを磁気カップ内に位置決めし、ねじを締め、そしてサイクル開始」
３）setmdi()：ＭＤＩバッファにロードされるプログラムは、プログラム中の各ブロックが同一のシーケンス番号を有するコードの抜粋１に示すような停止ループにすぎない。
４）setNSTART：ＭＤＩプログラム内の各ブロックが同一のシーケンス番号を有しているため、ＮSTARTはこの値に設定される。
一方、以下の状態内アクションをSecureCenter状態と関連付けることができる。
１）poll(NSEQ)：遷移刺激についての部分的条件のテスト
２）poll(ctlstate)：遷移刺激についての部分的条件のテスト
【０４９１】
SecureCenter状態と関連付けられたイグジット時アクションには、イグジット遷移の種類に関わらずwaitinloopセマフォがリリースにセットされるwaitinloop(release)が含まれる。一方、SecureCenterからの遷移には以下のものが含まれる。
１）NSEQ≧NSTART&incycle：ＭＤＩプログラムの実行が開始されると、状態が条件付遷移ノードへ遷移し、この間に（機械座標での）現在の軸位置が獲得され、続いて行われるテストで使用される有効円中心座標に割り当てられる。例示的実施形態では、このプロセスは恒久的に記憶された中心座標を変更しない。機械限界内の円についての最大軸範囲についての議論に関して先に記載したように、条件付遷移ノードはcheck_setup()有効性テストを行ない、中心の座標が変更された場合でも、機械包絡面が円テストを確実に収容できるようにする。テストが失敗に終わった場合、状態はSecureCenterに向かって戻る途中でAlertMessage状態に遷移する。そのような遷移の間に指定された警報は、ユーザが中心を変更した結果、機械が適合できない一組のテスト条件が発生されたことを示すと共に、円中心座標の許容範囲を特定する。この場合におけるAlertExitStateは、SecureCenter状態に再び入った時にＭＤＩバッファが書込み可能であることを確実にするWaitCycComplete状態である。有効性テストが成功した場合、WaitCycComplExitStateがAtFinalCenterにセットされるWaitCycComplに遷移する。
２）press(1)：ユーザが「中心へ移動」のボタンを押すと、状態はPreMoveToCenterに向かって戻るが、先ずWaitCycCompl状態に入る。図２３では、遷移は参照ノード１に入る。これは、ボタン１を押すことによって生じる、PreMoveToCenterへの遷移の全てを相互参照し得るように描かれており、実際にＦＳＭを実施する場合にはノード１の状態を使用しない。
【０４９２】
AtFinalCenter状態は、磁気カップがセンタボールから離れ、安全な位置へ（例えば、開始位置への移動の前に）移動させるために、例えば、ハンドル操作又は動力送りによって軸送りを行う機会をユーザに提供する。開始位置へ移動するための例示のプログラムの一部としてクリアランス移動が含まれていない。何故なら、本実施形態のＦＳＭは、磁気カップの方向ベクトルが分からないからである。セットアップによっては、磁気カップの方向ベクトルが、例えば工具ベクトルと平行であるか、円平面と直角であるか、又はある任意の角度を有している。例示的AtFinalCenter状態は、ユーザが円中心から安全な距離だけ軸送りを行ったことをＦＳＭが検出した時、PreMoveToStartへ遷移する。
【０４９３】
AtFinalCenter状態に関連付けられたエントリ時アクションには以下のものが含まれる。
１）enable(1:3), disable(4:5), set_compl(1:2),set_incmpl(3:5)：この時点では、「中心へ移動」及び「中心を固定」のタスクは完了しているが、他のタスクは完了していないと考えられる。対応のボタンが使用可能にされ、ユーザが新たな中心を選択できるようにする。
２）statusmsg()：「動力送り又はハンドルを使用して磁気カップをセンタボールから少なくとも５ミリの安全距離だけ移動」
３）setmdi()：ＭＤＩバッファに空の文字列をロードして、ユーザがサイクル開始を押しても何も起きないようにする。
【０４９４】
一方、AtFinalCenter状態に関連付けられた状態アクティビティにはpoll(dfcc）が含まれる。このアクションに関し、円中心からの距離（dfcc）は現在の軸位置と円中心の機械座標についての有効値とから計算できる。現在軸位置指令及びそれに続く誤差は、現在の状態のアクティビティメソッドの各反復呼び出しに先行する実時間処理からサンプリングできる。
【０４９５】
機械位置について得られた値は、各反復ＦＳＭ呼び出しに先立ってランテストページ上の表示を更新するためにも使用される。状態内アクションメソッドが呼び出される度に、有効な円中心からの各軸距離の平方和の平方根を評価することによってdfccの値が計算される。
【０４９６】
【数１０３】
2004525467.tif 000108
【０４９７】
例示的実施形態においては、AtFinalCenter状態に関連付けられたイグジット時アクションはない。以下のものがAtFinalCenter状態からの遷移となり得る。
１）dfcc＞5mm：軸が円中心から例えば少なくとも約５ミリ移動すると、状態はPreMoveToStartに遷移する。必要であれば、ユーザは、ＦＳＭに影響を与えることなく、状態遷移の後もセンタボールから更に離れる軸送りを継続してもよい。
２）press(1)：ユーザが「中心へ移動」のボタンを押すと、状態は参照ノード１にあるWaitCycCompleteへ遷移する。
３）press(2)：ユーザが「中心を固定」のボタンを押すと、状態は参照ノード２にあるWaitCycComplへ遷移する。
【０４９８】
PreMoveToStart状態は、オペレータがサイクル開始を押してＭＤＩブロックの実行を開始し、軸をテスト開始位置に移動させるのを待つ場所として機能する。PreMoveToStartから出る遷移について採用されたパターンはPreMoveToCenterによって採用されているパターンと同一である。テスト開始位置は、ボールバーの方向ベクトルに沿っての内方送り(例えば、１．５ミリ）手前の位置である。
PreMoveToStart状態に関連付けられたエントリ時アクションには以下のものが含まれる。
１）enable(1:3), disable(4:5), set_compl(1:2),set_incmpl(3:5)：「開始位置へ移動」のボタンは使用可能にされているが、チェックボックスにはチェックが入れられておらず、開始位置へ移動タスクが現在行われていることを示す。この状態から「開始位置へ移動」のボタンを押すことができるが、何らのアクションも生じない。
２）statusmsg()：「開始位置への安全な経路を確保し、サイクル開始を押す」
３）set(NSTART), set(NSTOP)：運動区間のシーケンス番号の値がNSTARTに割り当てられ、停止ループブロックのシーケンス番号の値がNSTOPに割り当てられる。
４）setmdi()：ＭＤＩプログラムは、例えば、開始位置の機械座標までセットアップデータからのtraverse_feedrateで移動させるための直線補間ブロックを含んでいる。運動区間の後に、コード抜粋１に示すような停止ループが続く。開始位置は、セットアップデータと円中心についての有効値から計算できる。開始位置は、最初にボールバーの向き（方向余弦）を表す単位ベクトルを決定し、単位ベクトル成分にボールバーの長さに１．５ミリを加えた値を掛け、円中心成分を加えることによって計算できる。ここでの計算には式（９２）〜（９５）が使用できる。
５）est_prg_time()：現在の軸位置から移動を開始し、送り速度オーバライド１００％での開始位置への移動を完了するまでの時間の概略推定値を計算して記憶する。
PreMoveToStart状態に関連付けられた状態アクティビティに関しては、遷移刺激条件を含むpoll(ctlstate,NSEQ）がある。一方、PreMoveToStart状態に関連付けられたイグジット時アクションはない。PreMoveToStart状態からの遷移には以下のものが含まれる。
１）NSEQ≧NSTART&incycle：状態MovingToStartへの遷移。
２）press(1)：ノード１のＷ状態を介してPreMoveToCenter状態へ戻る。
３）press(2)：ノード２のＷ状態を介してSecureCenter状態へ戻る。
【０４９９】
状態MovingToStartは、機械の運動が完了するまで待機する目的を果たす。MovingToStartから出る遷移について採用されたパターンはMovingToCenterについて採用されているパターンと同一である。MovingToStart状態に関係付けられたエントリ時アクションには以下のものが含まれる。
１）statusmsg()：「軸は開始位置へ移動中」
２）timeoutset()：タイムアウト条件は推定時間の５倍に、例えば３０秒を加えた値に設定される。
【０５００】
MovingToStart状態に関係付けられた状態アクティビティには以下のものが含まれる。
１）poll(NSEQ)：遷移刺激条件についてのテスト
２）poll(time)：状態に入ってからの経過時間の計算
MovingToStart状態に関係付けられたイグジット時アクションにはwaitinloop(release）が含まれ、状態から出るために行われる特定の遷移に関わらず、プログラムの実行を完了できることを均一に可能にしている。一方、MovingToStart状態からの遷移には以下のものが含まれる。
１）NSEQ≧NSTOP：この条件は、パートプログラムの実行が停止ループに到達し、状態AtStartへ向かう通常のイグジット遷移が開始されることを示す。遷移はAtStartへ向かうが、AtStartのsetmdi()エントリ時メソッドが正しく実行できるようにＭＤＩバッファがアンロックされていること確実にするために、最初にＷ状態に入る。
２）!incycle & ateop：通常のイグジット条件（NSEQ≧NSTOP）の前にこの条件が起きた場合、手動データリセット又はサーボ異常等のイベントが発生した可能性がある。この刺激に応答し、「開始位置への移動が突然終了された」という文章を表示できるAlertMessageへ状態が遷移する。警報メッセージが確認されると、状態がPreMoveToStartへ遷移してプロセスに２回目のチャンスを与える。
３）timeout：MovingToStart状態が予想よりもはるかに長く継続した場合、状態は、「開始位置への移動は予想よりも長い時間がかかっています：フィードホールドデータリセットを押して下さい」という文章を表示できるAlertMessageへ遷移する。ユーザがこの警報を確認すると、状態はＷ状態に遷移する。ユーザがデータリセットを行わなかった場合、Ｗ状態は、リセットすることをユーザに要求する警報メッセージを表示できる。ateop条件が一旦満たされると、状態はPreMoveToStartへ遷移してユーザが再度試みることを可能にする。送り速度オーバライドが零に設定されるかユーザがフィードホールドを押した場合、タイムアウト条件が生じるであろう。
４）press(1)：ノード１のＷ状態を介してPreMoveToCenter状態へ戻る。
５）press(2)：ノード２のＷ状態を介してSecureCenter状態へ戻る。
【０５０１】
AtStartは、ユーザがサイクル開始を押してテストの実行を開始するまで例示的ＲＴＣ  ＦＳＭが待つ状態を提供する。この状態に入る時、ボールバーを機械内に置くようにユーザーは要求される。また、この状態は現在の軸位置をチェックし、機械が正しい開始位置に位置していることを確実にする。軸位置が開始位置からずれている場合、状態はPreMoveToStartへ遷移する。この機構は、軸が開始位置にあることが予想される状態からAtStartへの遷移を許容することによって状態マシンを簡略化している。AtStartに入る時、テスト測定のための運動を生じさせるＭＤＩパートプログラムが作ることができる。AtStartに入る時に作られるＭＤＩパートプログラムについては後で詳細に記載する。
【０５０２】
以下のエントリ時アクションをAtStart状態と関連付けることができる。
１）enable(1:4), disable(5), set_compl(1:3),set_incmpl(4:5)：AtStartに入る時、「中心へ移動」、「中心を固定」及び「開始位置へ移動」のタスクは完了している。これらのステップの何れも、関連するボタンを押すことによって繰り返される可能性がある。テスト実行のタスクは完了していないが、それが次のタスクであることを表示するためにそのボタンが使用可能にされる。
２）statusmsg()：「開始位置で−ボールバーを機械内に置き、サイクル開始を押す」
３）setmdi()：連続運動テスト及びバックラッシュテストのための運動を発生するＭＤＩプログラムをセットアップデータから発生できる。それを発生させるのに用いるプログラムとメソッドについては、後で更に説明する。ＭＤＩプログラムの最初の部分は、状態マシンが起動してボールバーを初期化できるようにする停止ループとすることができる。
４）set(NSTART)：ＭＤＩパートプログラムの最初のシーケンス番号が(NSTART)に割り当てられる。
以下の状態アクティビティをAtStart状態と関連付けることができる。
１）poll(NSEQ)：遷移を刺激するためのイベントをチェックする。
２）poll(dfsp)：dfspは開始位置からの距離である。これは、実時間プロセスから得られる軸位置の現在の機械座標値を用いて計算できる。開始位置は、PreMoveToStart状態で定義された、内方送り移動直前の軸位置である。dfspは下記のように計算できる。
【０５０３】
【数１０４】
2004525467.tif 000109
【０５０４】
AtStart状態と関連付けられたイグジット時アクションはない。以下のものがAtStart状態からの遷移となり得る。
１）NSEQ≧NSTART/ capture_test_conds, check_fdrate()：ユーザがサイクル開始を押すと、ＦＳＭが、waitinloop(release)エントリ時条件を有するディスティネーション状態への遷移を実行するまでプログラムは停止ループを実行できる。停止ループのシーケンス番号の検出がトリガとなって状態TestInProgressへ向かう遷移を引き起こす。ＦＳＭダイアグラム中の条件遷移によって示されているように、TestInProgressに入る前に、特定のアクションとテストを実行できる。初期遷移の間、全てのテスト条件と、その場合における制御装置の構成の包括的な記載とを獲得できる。獲得した情報には、テストセットアップパラメータ、軸速度パラメータ、軸ゲイン、経路速度パラメータ、軸補償データ、フィードフォワードパラメータ等が含まれる。更に、例えば、ランテストページ上の編集ボックスからのテスト送り速度を獲得でき、編集ボックスへの更なる編集を不可能にできる。セットアップデータのオーバーシュート円弧に関しての送り速度が適切か否かは、先に述べたメソッドを用いてチェックできる。また、この時、トリガ間時間testの推定値を前述のようにして計算でき、この推定値は後で用いるために保存される。チェックの結果がオーバーシュート円弧が充分に大きくないことを示している場合、状態は、ユーザに問題を表示すると共に、現在のセットアップデータについての最大許容送り速度の推定値を提供するためのAlertMessageへ遷移する。警報が確認されると、状態はＷ状態に遷移し、ateop条件が満たされると、Ｗ状態からAtStartに遷移する。状態がAtStartに一旦到達すると、ユーザは送り速度を下げるか、例えば、テストセットアップページに戻ってオーバーシュート円弧を長くするであろう。送り速度のチェックが終わると、ボールバーへのソフトウェアインターフェースに関連して先に述べたように、ＦＳＭはボールバーをオンにして初期化しようと試みる。ボールバーの初期化に失敗した場合、状態は特定のAlertMessageへ遷移した後、特定のＷへ遷移し、その後、ユーザがテストの実行を再度試みることができるAtStartへ遷移する。ボールバーの初期化に成功した場合、状態は、ネスト化された状態マシンが走ることができるTestInProgressへ遷移する。
２）dfsp＞0.05 mm：ボールバーが正しい位置にない場合、状態は何らの警報を伴うことなく、PreMoveToStartに遷移する。これにより、軸が開始位置にあるであろうとＦＳＭが考える遷移がAtStartに向けられる。これにより、恐らく、ユーザによる余分なサイクル開始を避けることができる。また、軸が開始位置からハンドル送り又は動力送りされる状況から保護できる。
３）press(1)：ユーザが中心位置へ戻ることを望む場合、ＦＳＭを参照ノード１に遷移させるために「中心へ移動」のボタンが押される。
４）press(2)：ユーザが中心を再固定することを望む場合、ＦＳＭを参照ノード２に遷移させるために「中心を固定」のボタンが押される。
５）press(3)：ユーザが「開始位置へ移動」ボタンを押した場合、ダイアグラムにおいて参照ノード３で示されているように、状態は、PreMoveToStartに入る前にＷ状態に遷移する。開始位置に到達した後に軸が誤って微小量（例えば、０．０５ミリ未満）送られてしまったとユーザが考える場合にユーザが開始位置への移動を行えるようにするために、このボタンが利用可能にされる。
【０５０５】
例示的TestInProgress状態は、それ自体のネスト化されたＦＳＭを含む。例示的ＴＩＰ  ＦＳＭの詳細については後で述べる。現在の議論は、そのようなTestInProgress状態のエントリ時アクションとイグジット時アクションに限定されている。また、現在の議論では、ネスト化された状態に関わらず一様に生じるTestInProgress状態のための状態アクティビティについても述べる。状態がTestInProgressである場合におけるＲＴＣ  ＦＳＭの各反復呼び出しについて、TestInProgress状態の一様な状態アクティビティが、ネスト化された状態の状態アクティビティの実行に先立って行うことができる。例示的実施形態では、TestInProgress状態のエントリ時アクションとイグジット時アクションは、他のＲＴＣ状態の場合と同様に、適切な時間に一回だけ実行される。
【０５０６】
TestInProgress状態と関連付けられたエントリ時アクションには以下のものが含まれる。
１）set_compl(1:3), set_incmpl(4:5)：手続き中のこの時点では、「中心へ移動」、「中心を固定」及び「開始位置へ移動」のタスクは成功裡に完了している。例示的実施形態では、このボタンの使用可能状態は直接には変更されない。何故なら、テストの実行中、uicontrolsが一様に使用不能にされているためである。
２）statusmsg()：ネスト化された状態に依存して状態メッセージが変化する。例えば、TestInProgress状態に入る直前の状態メッセージは遷移中に設定でき、ボールバーの初期化が成功したことを示す。
３）disable(enabled)：アクセス可能性プロパティが「使用可能」にされているランテストページ上のuicontrolを識別し、リスト中に記憶できる。これらのコントロールの各々のアクセス可能性プロパティは使用不能に設定できる。更に、例えば、ページを切り換えるボタンも使用不能にできる。以前に使用可能にされたコントロールのリストを保持することができ、これによりＦＳＭは、テストが完了した時にどのコントロールが再度使用可能にされるかを知ることができる。
４）create(cancelbutton)：cancelbuttonは、TestInProgressに入る時に作ることができる新しいuicontrolである。例示的実施形態では、このボタンが使用可能にされた唯一のコントロールであり、手動で測定テストをキャンセルする能力をユーザに与える。キャンセルボタンのコールバック方法は、「テストキャンセル」刺激によってＦＳＭを呼び出すことである。
５）create objects：この動作は、resamp_pipe_bufferオブジェクトを作り、その属性を初期化できる。この動作は、再サンプリング速度を選択し、内方送りから外方送りまでの推定測定値を計算し、resamp_pipe_buffer及び種々のランオブジェクト（例えば、時計方向ラン、反時計方向ラン、バックラッシュラン）のためにメモリを割り当てる。（先に述べたような）トリガ間時間testの推定値、ボールバーのサンプル速度ｆｓ、及び再サンプリング周期Nresampからresamp_pipe_bufferのサイズを決定できる。再サンプリング周期はサンプルの数（整数）であり、BuffsizeMAXの最大値以下のサイズのデータバッファが必要となる最高サンプリング速度を計算することにより、状態に入る時に選択できる。パラメータBuffsizeMAXは、例えば、ＡＴＢプロセスがデータ解析ページのデータ解析及び表示タスクを実行できる速度に基づいて選択できる。例えば、動作が妥当な程度にスムーズな場合におけるペンティアムＩＩシステムについてのBuffsizeMAXの値は、BuffsizeMAX＝５０００である。resamp_pipe_bufferのために割り当てられるメモリの総量は、max_num_sampsである。max_num_sampsの計算では、推定されたトリガ間時間の精度についての公差tTOLとボールバーデータパイプのサイズNPIPE（これはボールバーインターフェースの定義によって指定される）とが考慮される。
【０５０７】
【数１０５】
2004525467.tif 000110
【０５０８】
【数１０６】
2004525467.tif 000111
【０５０９】
各テスト円弧（時計方向及び反時計方向）のためのデータコンテナ領域は、この時点で、データ円弧に関連するサンプルを含むのに充分な大きさになるように動的に割り当てられる。
【０５１０】
TestInProgress状態と関連付けられた状態アクティビティには以下のものを含むことができる。
１）check for ballbar errors：ＲＴＣ状態がTestInProgressの時、状態内アクションが呼び出される度に、ボールバーにエラー状態についての問い合わせを行うことができる。この時点では、ボールバー状態はオンとなっており（poweredbup）、データを収集しているものと予想され、ボールバーインターフェースオブジェクトについての他の状態は間違いと考えられる。さらに、resamp_pipe_bufferからの最少ボールバー偏倚（deflection）をテストし、ボールバーが圧縮されていない、即ち、その最少範囲よりも短くなっていないことを確認する。例示的実施形態では、最大範囲についての同様のテストは行われない。何故なら、テスト中の種々の時点においてボールバーがその最大範囲を超えて延びることが予想されるからである。最も最近のボールバーデータパイプ内の測定値の数が最大パイプ長と等しい場合、その区間でパイプオーバーフローが起こったと推定でき、不連続データエラー刺激が発生される。一実施形態では、ボールバースレッドが、ボールバー刺激によるＦＳＭへの呼び出しを開始するエラーイベントを提供するため、ボールバー状態の監視は必要でない。同様にエンプティーパイプスレッドがボールバーの範囲をチェックし、ボールバーの偏倚が有効範囲の最小値を下回るか、有効範囲の最大値を超えた時、適切な刺激でＦＳＭを呼び出す。
２）update displays：状態がTestInProgressである期間中、ランテストページは、現在のボールバー測定値の表示を含むことができる。この表示は、データパイプからの最新の値を表示オブジェクトに複写することによって更新できる。
３）run nested FSM：例示的実施形態では、ネスト化された状態に関わらず一様に実行される下記の状態アクティビティの後、例示的ＴＩＰ  ＦＳＭを走らせることによってネスト化された状態に固有の状態アクティビティを実行できる。ネスト化された状態のアクティビティが一旦完了すると、そのネスト化されたＦＳＭは実行を停止する。ネスト化された状態のアクティビティの結果、ネスト化された状態の遷移が起こった場合、この遷移を完了するためのステップを、ネスト化されたＦＳＭが実行を停止する前に実行できる。ネスト化された状態の遷移の場合、下記のシーケンスが生じる。１）元のネスト化された状態のイグジット時アクションの実行、２）任意の遷移アクションの実行、及び３）新たなネスト化された状態のためのエントリ時アクションの実行。ＴＩＰ  ＦＳＭの状態と遷移については後で更に詳細に記載する。ＲＴＣ状態がTestInProgressから遷移しなければならないことがＴＩＰ  ＦＳＭの実行によって示された場合、当遷移はＲＴＣ  ＦＳＭのコンテクスト内で実行される。
以下のイグジット時アクションがTestInProgress状態に関連付けられている。
１）turn off ballbar：何らかの理由でTestInProgress状態から出た場合、ボールバーをオフにすると共に、初期化の解除を行う（uninitialized）ことができる。
２）re_enable(disabled)：状態に入る前に使用可能にされると共に状態に入る時に使用不能にされたuicontrolを状態から出る時に再び使用可能にできる。
３）delete(cancel)：状態に入る時に作られた「キャンセル」ボタンを状態から出る時に消すことができる。
４）delete objects：測定データを一時的に記憶する目的で作られたオブジェクトを削除する。
TestInProgress状態からの遷移には以下のものを含むことができる。
１）test succeeded：この遷移は、エラー状態が検出されることなく一連のテストの全てが完了した時にネスト化されたＴＩＰ  ＦＳＭから起こり得る。
２）test failed：この遷移は、ネスト化されたＴＩＰ  ＦＳＭから起こり得る。ＴＩＰ  ＦＳＭの実行中にエラー状態に遭遇した場合、ＴＩＰ  ＦＳＭは、ネスト化された状態に固有の警報メッセージを発生し、ＲＴＣ  ＦＳＭのコンテクスト内のAlertMessage状態に遷移する。
３）press(cancel)：キャンセルボタンのためのコールバック方法は、press(cancel)刺激によってＲＴＣ  ＦＳＭの遷移メソッドを実行することである。press(cancel)刺激は、例えば、「ユーザによってテストがキャンセルされました。継続するためにはフィードホールド／データリセットを押して下さい。」というメッセージを表示するAlertMessage状態への遷移を引き起こす。ユーザが警報メッセージを確認すると、状態はＷ状態へ遷移する。ユーザがデータリセットを行わなかった場合、そうすべきことをユーザに示す警報をＷ状態が作ることができる。ateop条件が達成されると、状態はAtStartへ遷移する。
４）ballbar error：TestInProgress状態の一様な状態内アクションによってボールバーエラーが検出されると、特定のエラー状態を記述するため警報メッセージが発生される。ＲＴＣ状態はAlertMessageへ遷移する。警報が確認されると、Ｗ状態を介してのAtStartへの状態遷移が生じる。
【０５１１】
TestCompleteは、ボールバー測定テストが成功裡に実行された後に入る状態である。この状態は、ユーザがタスクボタンを押すか、又は円平面を変更するかセットアップページのセットアップデータを変更することによってリセットイベントを発生させるまで持続する。TestComplete状態に関連付けられたエントリ時アクションは以下のものを含むことができる。
１）enable(1:5), set_compl(1:4),set_incmpl(5)：データセーブ以外のタスクは完了している。全てのボタンを使用可能にできる。
２）analyze_data()：TestCompleteへ入る時、ＴＩＰ  ＦＳＭによるトリガ間測定から抽出された時計方向及び反時計方向データ円弧を一時データファイルに複写できる。獲得されたテスト条件及びコントロール構成をデータファイルのヘッダに複写できる。データファイルは、例えば、データ解析ページに自動的にロードされ、関連するデータ処理が行われる。
TestComplete状態に関連付けられた状態アクティビティ又はイグジット時アクションはない。TestComplete状態からの遷移には以下のものを含むことができる。
１）press(1:4)ＦＳＭダイアグラム中の関連する参照ノードへの遷移。
２）press(5)：SavingData状態への遷移。
【０５１２】
例えば、ユーザが「データセーブ」のボタンを押した時に、TestComplete状態からSavingData状態へ入ることができる。SavingDataへ入る時にモーダルダイアログウィンドウを作ることができる。このウィンドウにより、ユーザはデータファイルの名前を特定すると共に、機械、テストの詳細等についての詳細な情報を提供できる。ダイアログは、月日、時間、制御装置のシリアル番号、及びファイル名のためのフィールドに値をプリロードできる。一実施形態では、ユーザはこれらの値を変更できる。また、ダイアログボックスは  、ユーザが機械情報や種々の注意書きを入力するフィールドも含むことができる。ユーザが例えばセーブボタンを押すと、最新のデータ円弧のデータ、テスト条件ヘッダ、及びダイアログボックスフィールドに関する情報を含む追加のヘッダ情報を含むデータファイルを作ることができる。ファイルセーブ動作が完了すると、データセーブのチェックボックスにチェックが入れられる。SavingData状態は、ユーザがボタンの何れかを押すか、ＲＴＣ  ＦＳＭのリセットを生じさせるまで持続する。
【０５１３】
例示的連続運動プログラムは、以下に示す一連のブロックから構成されている。記載されれたプログラムの各ブロックは、前のブロックのシーケンス番号よりも大きな固有のシーケンス番号を含んでいる。一つの例外は、停止ループ内の各ブロックは同一のシーケンス番号を持ち得ることであるが、このシーケンス番号は、停止ループの最初のブロックの前のブロックのシーケンス番号よりも大きい。
１）ボールバーの初期化及び電源オンの完了を待つための停止ループ
２）モーダル状態と送り速度を設定
３）ボールバーの方向ベクトルに沿う内方送り移動
４）反時計方向加速円弧
５）反時計方向データ円弧の前半
６）反時計方向データ円弧の後半
７）反時計方向減速円弧
８）ボールバーの方向ベクトルに沿う外方送り移動
９）時計方向移動の準備を待つための停止ループ
１０）内方送り移動
１１）時計方向加速円弧
１２）時計方向データ円弧の前半
１３）時計方向データ円弧の後半
１４）時計方向減速円弧
１５）外方送り移動
１６）プログラム実行が終わる（又はバックラッシュテストを引続き行う）前にNSTOPを検出する機会を確保するための停止ループ
【０５１４】
運動ブロックは、オフセットや機械位置設定によって円中心が影響されるのを避けるために機械座標でプログラムできる。Ａ２１００で使用されるプログラム言語の文法を例にとると、例えば、軸を直線補間で円開始点までＧ９８．１モードで移動させ、その後、円の終点（Ｇ９１）についてのインクレメンタル座標と円中心（Ｇ２．０２又はＧ３．０２）についてのインクレメンタル座標を使用して円をプログラムすることで円を機械座標でプログラムできる。データ円弧を半分に分割することができ、これにより、二つの分離したブロックでデータ円弧が３６０度である場合に適応できる。
【０５１５】
例示的実施形態では、自動プログラム発生が、円平面、円方向、及び円半径に対するボールバー半径の比率を考慮する。ＸＹ及びＹＺ平面については、時計方向円弧（例えば、Ｇ２．０２）をプログラムすることによって時計方向移動を発生でき、反時計方向円弧（例えば、Ｇ３．０２）をプログラムすることによって反時計方向移動を発生できる。ＸＺ平面については、座標は左手系になる（反時計方向円弧（例えば、Ｇ３．０２）をプログラムすることによって時計方向移動を発生でき、時計方向円弧（例えば、Ｇ２．０２）をプログラムすることによって反時計方向移動を発生できる）。
【０５１６】
円弧ブロックは、終点と円中心についての水平及び垂直（インクレメンタル）座標を、特定の円平面の関連する論理軸の指令位置に複写することによって発生できる。プログラム発生のアルゴリズムを、時計方向及び反時計方向移動の両方の場合について以下に要約する。
【０５１７】
例示的実施形態では、ステップ１から４（下記参照）は１回しか実行されない。ステップ５から１０（下記参照）は連続して２回実行でき、１回は反時計方向移動角度θｃｃｗのためであり、もう１回は時計方向移動角度θｃｌｗのためである。以下の説明では、疑似コードは、シンボル「＜」と「＞」の間の変数の値を表す文字列を示すために文法<variable>を使用し、文字列が正確に複写されることを示すためにダブルコーテーションが使用されている。
【０５１８】
１．円半径がボールバーの長さよりも小さい可能性を考慮しつつ円平面に対するボールバーの向きを計算する。これは方向ベクトルｃｏｓφの面内成分と方向ベクトルｓｉｎφの面外成分によって表される。
【０５１９】
【数１０７】
2004525467.tif 000112
【０５２０】
２．反時計方向移動のためのプログラム中の円運動区間の各々について円角度を計算する。
【０５２１】
（数１０８）
加速区間の始点：
2004525467.tif 000113
データ円弧前半の始点：
2004525467.tif 000114
データ円弧後半の始点：
2004525467.tif 000115
減速円弧の始点：
2004525467.tif 000116
減速円弧の終点：
2004525467.tif 000117
【０５２２】
３．時計方向移動におけるブロックについて円角度を計算する。
【０５２３】
（数１０９）
加速区間の始点：
2004525467.tif 000118
データ円弧前半の始点：
2004525467.tif 000119
データ円弧後半の始点：
2004525467.tif 000120
減速円弧の始点：
2004525467.tif 000121
減速円弧の終点：
2004525467.tif 000122
【０５２４】
４．モーダル補間タイプ、円平面、論理軸、円平面の水平、垂直、及び直交軸に対応する円中心の名称についての文字列を発生する。
【０５２５】
【数１１０】
2004525467.tif 000123
【０５２６】
５．円中心に向かって軸をボールバーの向きに沿って直線的に移動させる内方送りブロックを発生する。
【０５２７】
（数１１１）
ｈｖｐ系におけるインクレメンタル軸運動
h=-1.5×cosφ×cos(θ1); v=-1.5×cosφ×sin(θ1); p=-1.5×sinφ （１１４）
ブロック文字列
2004525467.tif 000124
【０５２８】
６．加速円弧のブロックを発生する。
【０５２９】
（数１１２）
ｈ−ｖ−ｐ系における円弧終点のインクレメンタル座標
hend=RCircle×cos(θ2-θ1);vend=RCircle×sin(θ2-θ1);pend=0 （１１５）
ｈ−ｖ−ｐ系における円中心のインクレメンタル座標
hctr=-RCircle×cos(θ1); vctr=-RCircle×sin(θ1);pctr=0 （１１６）
ブロック文字列
2004525467.tif 000125
【０５３０】
７．データ円弧前半のブロックを発生する。
【０５３１】
（数１１３）
ｈ−ｖ−ｐ系における円弧終点のインクレメンタル座標
hend=RCircle×cos(θ3-θ2);vend=RCircle×sin(θ3-θ2);pend=0 （１１７）
ｈ−ｖ−ｐ系における円中心のインクレメンタル座標
hctr=-RCircle×cos(θ2); vctr=-RCircle×sin(θ2);pctr=0 （１１８）
ブロック文字列
2004525467.tif 000126
【０５３２】
８．データ円弧後半のブロックを発生する。
【０５３３】
（数１１４）
ｈ−ｖ−ｐ系における円弧終点のインクレメンタル座標
hend=RCircle×cos(θ4-θ3);vend=RCircle×sin(θ4-θ3);pend=0 （１１９）
ｈ−ｖ−ｐ系における円中心のインクレメンタル座標
hctr=-RCircle×cos(θ3); vctr=-RCircle×sin(θ3);pctr=0 （１２０）
ブロック文字列
2004525467.tif 000127
【０５３４】
９．減速円弧のブロックを発生する。
【０５３５】
（数１１５）
ｈ−ｖ−ｐ系における円弧終点のインクレメンタル座標
hend=RCircle×cos(θ5-θ4);vend=RCircle×sin(θ5-θ4);pend=0 （１２１）
ｈ−ｖ−ｐ系における円中心のインクレメンタル座標
hctr=-RCircle×cos(θ4); vctr=-RCircle×sin(θ4);pctr=0 （１２２）
ブロック文字列
2004525467.tif 000128
【０５３６】
１０．円中心から離れる方向に軸をボールバーの向きに沿って直線的に移動させる外方送りブロックを発生する。
【０５３７】
（数１１６）
ｈｖｐ系におけるインクレメンタル軸運動
h=1.5×cosφ×cos(θ5); v=1.5×cosφ×sin(θ5); p=-1.5×sinφ （１２３）
ブロック文字列
2004525467.tif 000129
【０５３８】
例示的バックラッシュテスト用パートプログラムは、軸を円象限境界上の多数の位置に移動させると共に、これらの位置においてバックラッシュ測定に関連する軸移動を行う。反時計方向へ移動した時にデータ円弧に沿って遭遇する各円象限境界において測定が行われる。連続運動反時計方向テストと同じ位置で反時計方向の運動が始まると共に終わる。
【０５３９】
反時計方向円弧の一部である最終ブロックの後に位置するように停止ループをプログラム中に挿入できる。この後に、ボールバーをその開始位置まで戻すための時計方向円弧を続けることができる（そして、必要であれば、ボールバーのコードを戻す（unwind））。時計方向円弧の一部である最終ブロックの後に停止ループを続けることができる。
【０５４０】
円象限境界は、正の水平軸に対する反時計方向角度が０度、９０度、１８０度及び２７０度である円上の位置によって定義できる。テストセットアップデータ内で認識されたデータ円弧の範囲内にあるこれらの円象限境界の各々についてtest_pointを確立できる。各test_pointについて、例えば、３回のボールバー測定に対応するために、円半径に沿う一連の移動を行うことができる。
【０５４１】
最初の測定を行う前に、正しい方向から最初の測定位置に接近していることを確実にするために軸が或る位置へ移動する。このapproach_locの座標は、test_pointと交差する円半径に沿ってRcircleよりも大きい距離だけ中心から離れている。円中心から距離Rcircle離れた位置に軸が停止している時に、特定のtest_pointについての最初の測定meas1を行うことができる。なお、その位置には、approach_locから始まった単軸の移動によって接近する。
【０５４２】
特定の点についての二回目の測定meas2を、円象限境界ラジアルに沿った位置で行うことができ、この位置は、Rcircleより僅かに少ない距離だけ円中心から離れた位置であり、位置meas1から直接接近できる。特定の点についての三回目の測定meas3をmeas1と同じ位置で行うことができるが、meas1とは反対の方向から接近する。即ち、meas3のための位置へは、meas2の位置から直接接近できる。
【０５４３】
測定位置に近づく各ブロックの後にドエルブロックを挿入して、軸が停止している間にボールバーのデータを収集する機会を提供することができる。所定のtest_pointでの測定に関するブロックの後に、次の円象限境界テストポイントへの円移動ブロックを続けることができ、そこに該ポイントでの測定のためのブロックを挿入できる。データ円弧が４象限の内の３象限に亘っている場合についての例示的運動が図２６に概略的に示されている。この図において、単一のtest_pointにおける測定間の円弧に沿った見掛け上の間隔は、実際の相対変位を表すことを意図するものでなく、図を判りやすくするためだけの目的で設けたものである。
【０５４４】
パートプログラム内の各ブロックは、先行するブロックのシーケンス番号よりも大きな固有のシーケンス番号を有している。このシーケンス番号は、例えば、適切なボールバーデータが収集されていること、及びそれが適切な測定に帰するものであることを確認するための遷移刺激としてＴＩＰ  ＦＳＭによって使用され得る。この機構を提供するために、バックラッシュパートプログラムを発生する機能は、ＴＩＰ  ＦＳＭが使用するためのプログラム固有の情報を含むデータ構造を駐在させ（populate）たり、返したりできる。この構造は、図２７に示すダイアグラムによって記載された情報の階層を特定する。図２７の表記はＵＭＬ（UnifiedModeling Language）で、オブジェクト指向デザインの分野では広く使用されている。
【０５４５】
階層中の最も高いレベルであるbck_testは、バックラッシュテストに関する情報を含んでいる。bck_testは、２個のrun_arc構造、即ち反時計方向の円弧のためのものと時計方向の円弧のためのものの集合である。例示的実施形態においては、反時計方向円弧の間だけ測定が行われ、bck_testは、（例えば、ボールバーのコードを戻し（unwinding）ながら）軸をそれらの開始位置へ戻すために時計方向のrun_arcを含んでいる。
【０５４６】
run_arc データは特定の円弧についての情報に関する。例示的run_arcは、零から４個のtest_point構造の集合を有している。テストポイントは、象限横断テストポイントの一つに関連する情報を含んでいる。例示的実施形態では、run_arcは一以上のtest_pointオブジェクトを含んでいる。各run_arcが所有するtest_pointオブジェクトの数は同一にでき、データ円弧開始角及びデータ円弧長とに依存する。
【０５４７】
一実施形態によれば、run_arcがテストポイントを一個しか含んでいない場合、水平又は垂直軸の内の一方のみについてのバックラッシュ推定値が発生される。runarcが二個以上のテストポイントを含んでいる場合、水平及び垂直軸の両方についてのバックラッシュ推定値が発生される。テストポイントは、バックラッシュ測定を適用する軸を識別するためのデータを含んでいる。反時計方向run_arcが所有しているテストポイントの各々は３個の測定オブジェクトの集合を含んでいる。時計方向run_arcが所有しているテストポイントの各々は如何なる測定も含んでいない。何故なら、それらは、ボールバーのコードを戻すために通過する経路を形成するだけであるからである。
【０５４８】
例示的実施形態においては、図２６に示すように、各テストポイントにおいて、位置meas1、meas2及びmeas3の各々のために一つの測定構造が設けられている。これらの四個のオブジェクトの各々に含まれるデータは、例えば、ＴＩＰ  ＦＳＭによって利用できる。データのある部分は、バックラッシュテストのためのプログラムブロックを発生している間に初期化できる。個々のデータ項目について以下説明する。
【０５４９】
bck_test
１）backlash[2]：水平（＝１）及び垂直（＝２）軸についての推定バックラッシュ。これらの値は、特定の軸についてのバックラッシュの測定を含む各テストポイントについてのバックラッシュ推定値を平均することによって計算できる。＊
２）validest[2]：バックラッシュアレー中の対応する値が有効であるか否かを示すシンジケータ。＊＊
【０５５０】
run_arc
１）direction：run_arcの方向。機械座標に関して＋１＝反時計方向、−１＝時計方向（必ずしも円平面座標での方向ではない：例えば、ＹＺ反時計方向＝−１）。†
２）program_string：run arcのための運動ブロックを含む文字列。†
３）first_seqnum：run arc中の最初のブロックのシーケンス番号。†
４）last_seqnum：run arc中の最後のブロックのシーケンス番号。†
【０５５１】
test_point
１）nominal_loc[3]：test_pointの論理軸機械座標（ＸＹＺ）。†
２）log_axis_ndx：このtest_pointでバックラッシュが測定される論理軸（Ｘ、Ｙ、又はＺ）。†
３）plane_axis_ndx：このtest_pointでバックラッシュが測定される円平面軸（水平又は垂直）。†
４）backlash：このtest_pointのための軸バックラッシュ測定。＊＊
５）valid：このtest_pointのバックラッシュの下で記憶された値が有効か否かを示すインジケータ。＊＊＊
６）first_seqnum：現在のテストポイントへ円弧運動するブロックのシーケンス番号。†
７）last_seqnum：現在のテストポイントから円弧運動するブロックのシーケンス番号。†
【０５５２】
measurement
１）start_seqnum：ボールバー測定が始まるシーケンス番号。†
２）stop_seqnum ：ボールバー測定が終わるシーケンス番号。†
３）measnum：現在の構造が関係する測定を示すインジケータ（例えば、１、２、又は３）。
４）data[250]：一連のボールバー測定サンプルのためのコンテナ。＊＊
５）datasize：有効なボールバーサンプルを表すdata[]内の項目の数。＊＊
６）mean：data[]内に含まれる有効なサンプルの平均。＊＊
７）stdev：data[]内に含まれる有効なサンプルの標準偏差。＊＊
注：  ＊      バックラッシュテスト完了後にセット
＊＊    ＴＩＰ  ＦＳＭ実行中にセット
＊＊＊  ＴＩＰ  ＦＳＭ実行中に更新
†      パートプログラム発生中にセット
【０５５３】
プログラムブロックを発生すると共に構造内の値を初期化するための例示的手続きが図２８にフローチャートによって記載されている。フローチャートは、図２６に示す運動を行うプログラムブロックがどの様にして作られるかを示す。フローチャートは、各ブロックのシーケンス番号は、そのブロックが作られた時におけるNSEQの値に等しいことを暗に示している。フローチャートは、測定が行われるブロックのシーケンス番号をどの様にしてデータ構造内に記憶できるかを示している。運動ブロックはインクレメンタルであることができ、円補間パラメータと方向についての計算は、連続運動プログラムに関する先の議論でのものに極めて類似している。
【０５５４】
測定ブロックは、直前のドエルと直後のドエルによって挟まれたドエル（特定の時間の一時停止）である。例示的実施形態では、これらのドエルの各々が可能な限り短い時間を消費する。測定ブロックのためのドエル時間は、得るべき連続データサンプルの要求数と、ＦＭＳの状態アクティビティメソッドの連続する呼び出しの間の予想される待機時間（latency）とに基づいて決定できる。
【０５５５】
【数１１７】
2004525467.tif 000130
【０５５６】
データ収集ドエルの直前のドエルは、戻る（unwind）（即ち、定常状態位置に達する）のに充分な時間を軸に与えることができる。時間の長さは機械によって異なり、構成可能である（configurable）。例示的実施形態では、データ収集ドエルの直後のドエルは、待機時間が予想よりも長くなった時に安全性の余裕を提供する。
【０５５７】
代替の解決策は、戻し（unwind）時間と状態内アクションの呼び出しの間隔についての事前の知識を必要としないものである。この代替の実施形態は、各測定についての総ドエル時間を最少にできる可能性がより高いであろう。この実施形態は、図２６又は図２９のＴＩＰ  ＦＳＭダイアグラム（以下を参照）には記載されていないが、非常に似通った基本的な構造を用いることによって実施できる。
【０５５８】
例えば、ドエルブロックを停止ループと置き換えることができる。プログラムの実行が停止ループに入ったことを（例えば、シーケンス番号をポーリングすることによって）ＴＩＰが検出した場合、ＴＩＰは、ボールバーデータをポーリングする状態に遷移する。ボールバーデータの統計的解析により、軸が定常状態になったことが示されると、ＴＩＰ状態は、ボールバーデータが収集される状態に遷移する。必要なサンプルを収集すると、ＦＳＭは、プログラムの実行が次の測定位置へ進行できるようにwaitinloop(release)を出力する。ＦＳＭ状態は、次の停止ループのシーケンス番号を待つ状態に遷移する。そのような実施形態は、種々の位置で多くの定常状態測定が行われたり、各測定の時間を最短にすることが恐らく重要となる広範な用途において特に有利である。
【０５５９】
TestInProgress有限状態マシンは、親のRunTestCoordinator有限状態マシンの状態がTestInProgressである時、ＦＳＭの状態アクティビティメソッドが呼び出される度に動作できる。TestInProgress（ＴＩＰ）についての例示的ＦＳＭダイアグラムが図２９に提供されている。TestInProgressの親の状態のためのエントリ時アクション、状態アクティビティ、及びイグジット時アクションについては既に議論した。以下、ネスト化された状態、ネスト化された遷移、及びネスト化された状態のエントリ時に起きるアクション、ネスト化された状態のアクティビティ、ネスト化された状態のイグジット時アクション、及びネスト化された状態間の遷移に焦点を当てて議論を行う。
【０５６０】
例示的ＴＩＰ  ＦＳＭは、二つのセクション、即ち、連続運動テストを実行するためのセクションと、バックラッシュテストを実行するためのセクションとに分割できる。例えば、連続運動テストを最初に行い、バックラッシュテストを二番目に行うことができる（その実行がユーザによって指定されていた場合）。個々のネスト化状態について以下説明する。
【０５６１】
例示的ＴＩＰ  ＦＳＭについてのデフォルトの状態は、PreTestとすることができる（例えば、ＲＴＣ状態がTestInProgressに遷移する度にＴＩＰ  ＦＳＭの状態がPreTestにリセットされる）。PreTestの目的は、連続運動テストのためのデータを初期化すると共に、ボールバーが予想通り完全に伸びていることをチェックすることである。例示的実施形態では、PreTestに入ると、パートプログラムが停止されるか、或いは（反時計方向又は時計方向）連続運動テストの開始における内方送り移動の直前の位置で停止される。例示的PreTest状態は、プログラムが停止ループを実行していることが確実になるまで継続する。
【０５６２】
以下のエントリ時アクションをPreTest状態と関連付けることができる。
１）select dyn_run(Nrun), set NSTARTand NSTOP：Nrunによって示されている実行されようとしているテストに関するbbardata構造が選択される。dyn_run構造は、内方送りブロックの直前の停止ループのシーケンス番号である次のランの開始シーケンス番号NSTARTについての値を含んでいる。また、dyn_run構造は、外方送りブロックに続く停止ループのシーケンス番号である次のランの終了シーケンス番号NSTOPについての値を含んでいる。さらに、dyn_runは、全てのボールバー測定値を記憶するためのメモリとデータ収集プロセスを容易にするフィールドとを含んでいる。
２）statusmsg():「ボールバーが内方送り移動を検出するまで待機」
PreTest状態と関連付けられた状態内アクションは以下のものを含むことができる。
１）poll(NSEQ)：シーケンス番号は、PreTestから出る遷移を刺激するファクタである。
２）min{D}:PreTest状態に入った以降におけるボールバーの偏倚（Ｄ）の最小値を保持する。これは、機械が停止している間にボールバーが誤ってその有効範囲に入っていないことを確実にするために行うことができる。
【０５６３】
PreTest状態と関連付けられたイグジット時アクションはない。PreTest状態からの遷移にはNSEQ≧NSTARTが含まれる。NSEQ≧NSTARTの時、プログラムは停止ループの実行に到達し、状態はWaitingForTriggerへ遷移する。例示的実施形態では、WaitingForTriggerへの遷移が完了するまで、停止ループは解放されない。
【０５６４】
WaitingForTrigger状態の目的は、内方送り移動がボールバーによって検出されるのを待つことである。その状態に入ると、例えば、内方送り移動を行うブロックの前の短いドエルブロックに先行する停止ループ内でパートプログラムを停止できる。WaitingForTrigger状態に入ると、waitinloopセマフォがインクリメントされ、パートプログラムを停止状態から解放すると共に、パートプログラムの実行は短いドエルブロックに進む。状態アクティビティは、トリガイベント又はタイムアウトイベントをテストする。
【０５６５】
以下のエントリ時アクションをWaitingForTrigger状態と関連付けることができる。
１）timeoutset()：状態に入る時に時間を獲得すると共に、１）停止ループに続くドエル時間と２）ボールバーをその有効範囲に持ってくるための内方送り移動のための推定時間との合計よりも幾分長いタイムアウト時間を選択する。一実施形態によれば、二番目の期間の推定時間は、トリガ間時間の推定におけるプログラム発生中に計算されている。
２）statusmsg():「ボールバーが内方送り移動を検出するまで待機」
３）waitinloop(release)：パートプログラムが、最後のエントリ時タスクとして停止状態から解放される。
WaitingForTrigger状態と関連付けられた状態アクティビティは以下のものを含むことができる。
１）check for timeout：WaitingForTrigger状態に入ってからの総時間がタイムアウト時間を超えたか否かをチェックする。
２）check{D}：ボールバーの偏寄が有効な測定範囲に入るまで待つ。先に述べたように、ＦＳＭは系統立ててトリガ条件をチェックする必要はない。何故なら、エンプティーパイプスレッドがボールバー偏倚の範囲への出入りを監視し、偏寄の範囲への出入りがあると、適切なボールバーによってトリガされた指定された刺激によりＦＳＭが呼び出されるためである。
WaitingForTrigger状態と関連付けられたイグジット時アクションはない。以下のものがWaitingForTrigger状態からの遷移になり得る。
１）timeout：状態が予想よりも長い期間継続した場合、テストに問題がある可能性がある。タイムアウトは、例えば、ボールバーが誤って固定されているためにボールバーが全くトリガ動作しない、ユーザがフィードホールドを押した、制御装置がシングルブロックモードにある等の場合に起きる。timeout条件は、「ボールバーデータ収集のための開始トリガが予想期間内に生じませんでした。テストは中断されます。フィードホールド／データリセットを押して下さい。」という警報文を有するTestProblem状態への遷移を引き起こす。
２）any{D} ＜ Dmax-ε：Dmaxは、ボールバーの偏寄が最大になった時にボールバーから出力される値である。最も最近のデータパイプからの再サンプルされたボールバーの偏倚測定値の内の少なくとも一つが、少なくとも或る小さな量（ε）だけDmaxを下回った場合、ボールバーはその有効範囲に入っており、トリガイベントは起きたものと考えられる。状態は、トリガの完全性をテストできる条件状態に遷移する。この遷移の間に、トリガ条件を満たした最初のサンプルに対応するresamp_buffer内のサンプルを指し示すようにdata_start_ptrをセットする。以下に列挙する二つの遷移の内の何れかを介して条件状態から出ることができる。
ａ）false trigger：誤ったトリガが存在するか否かは、resampledbufferのdata_start_ptrとlist_tail_ptrとの間の部分を調べることによってテストできる。resamp_bufferのこの部分にある測定値の何れかがDmax以上の値を持つ場合、誤ったトリガが起きたと推定される。誤ったトリガに対する条件の感度は、ε（pipe_resamp_bufferオブジェクトのtrigger_hysteresis属性）を変化させることで調節できる。εの初期値は０．０５ミリとすることができる。誤ったトリガが検出された場合、状態はTestProblemへ遷移し、「誤ったトリガが検出されました。これはボールバーの固定又は機械の振動によるものだと思われます。フィードホールド／データリセットを押してからもう一度行って下さい。問題が解決しない場合、パラメータballbartrigger hysteresisの値を増加させて下さい。」という警報を発生できる。
ｂ）else/initialize num_meas：遷移を刺激した最初の測定値に続くパイプ内のデータが範囲内である場合、状態はCollectingDataへ遷移する。resamp_bufferのdata_start_ptrとlist_tail_ptrとの間（両端を含む）のサンプルの数がresamp_pipe_bufferオブジェクトのnum_meas属性の初期値となる。
【０５６６】
CollectingData状態の目的は、内方送り移動以降の経過時間を絶えず把握すること、及び外方送り移動が起きていることをテストすることである。CollectingData状態に関連付けられたエントリ時アクションは、statusmsg()（「連続運動テスト進行中：Ｒｕｎ  ２の＜Ｎｒｕｎ＞実行中（Run<Nrun> of 2）。中断する場合、「キャンセル」を押して下さい。」）を含むことができる。一方、CollectingData状態と関連付けられた状態アクティビティは、以下のものを含むことができる。
１）check {Ｄ}：最も最近のデータパイプからの測定値に対応するボールバー偏倚の値を最大範囲内偏倚Dmaxを超える偏倚についてチェックする。或いは、このタスクはエンプティーパイプスレッドによって行われ、外方送りイベントが検出されると、TRIGOUT刺激によってＦＳＭが呼び出される。
２）update num_meas:現在のインターバルの間にresamp_bufferに追加されたサンプル数をnum_measの現在値に加える。
３）check(tmeas)：num_measについての更新された値を用いて、開始トリガ以後の総時間tmeasを導くと共に、この値をトリガ間時間についての推定値と比較する。
CollectingData状態と関連付けられたイグジット時アクションはない。以下のものがCollectingData状態からの遷移になり得る。
１）any {Ｄ} ≧ Dmax：最も最近のボールバーデータパイプから得た何れかのサンプルがDmaxを超えた場合、外方送り移動によっ偏倚が引き起こされた可能性があるか否かをテストする条件ノードに状態が遷移する。条件ノードは、例えば、num_measにNresamp/fsを掛けることによって内方送りトリガ以後の時間であるtmeasを計算し、この値をトリガ間時間についての推定値testと比較する。tmeasが公差tTOLを超えてtestよりも短い場合には、状態はTestProblemに遷移し、そうでなければ、状態はWaitForTestComplに遷移する。
２）tmeas ＞ test +tTOL：この状態が外方送り移動の検出の前に起きた場合、状態はTestProblemに遷移する。tmeas ＞ test + ttolという状態の存在は、内方送り以後、推定テスト時間よりも長い期間が外方送りトリガの発生を伴うことなく経過したことを示している。これは、例えば、ボールバー固定の問題、ユーザによるフィードホールドの押圧、又は非常に大きな円中心オフセットによって引き起こされる。
３）NSEQ≧NSTOP：この状態が外方送り移動の検出の前に起きた場合、状態はTestProblemに遷移する。例示的実施形態によれば、シーケンス番号が、外方送り移動に続く停止ループを含むブロックのシーケンス番号であるNSTOP以上の場合、外方送り移動は起きたがボールバーは伸びていない。これは、例えば、ボールバー固定の問題、又は非常に大きな中心オフセットによって引き起こされる。
【０５６７】
連続運動測定が成功裡に完了するとWaitForTestCompl状態に入ることができる。この状態の目的は、外方送りブロックの完了を待つこと、及び制御装置が連続運動テストに関連するブロックに続く停止ループに入るのを待つことである。この状態からは下記の状態へ遷移できる。
１）PreTest：第１の連続運動テスト（円−平面−反時計方向）が完了した直後で、第２のテスト（円−平面−時計方向）は実行中である場合。
２）PreBacklash：第２の連続運動テスト（円−平面−時計方向）が完了した直後で、バックラッシュテストをこれから実行する場合。
３）WaitForAtEOP：第２の連続運動テストが完了した直後で、バックラッシュテストを実行しない場合。
４）TestProblem：状態が、予想よりも長い期間、WaitForTestCompl状態にある場合。
【０５６８】
この状態に関する追加の議論は、条件NSEQ≧NSTOPによって上記の状態からの遷移に成功した時に行われるアクションに関連する。この遷移のアクションの内の一つは、resamp_pipe_buffer内に含まれているトリガ間データからデータ円弧データを抽出することである。この生データを操作して、円半径を表す値を得ることができる。これらの点についての議論は後で行う。
【０５６９】
PreBacklash状態は、連続運動テストの終了とバックラッシュテストの開始との間の状態を提供する。また、その状態は、反時計方向及び時計方向の円弧に沿うバックラッシュ測定をシステムが実行できるようにする機構を提供する。しかし、例示的実施形態では反時計方向円弧に沿う測定のみが行われる。アクティブなブロック（activeblock）のシーケンス番号が、実行中のバックラッシュ円弧の最初のブロックのシーケンス番号よりも大きいとき（例えば、run_arc[Nrun].first_seqnum≧NSEQ)、状態はPreBacklashから遷移する。この条件に応答して、状態はBacklashIdleに遷移する。
【０５７０】
BacklashIdleに入る時、現在又は次のテストポイントと測定オブジェクトを識別でき、これらのオブジェクトが適用可能なプログラムブラケットを識別する開始及び停止シーケンス番号を抽出できる。状態アクティビティは、現在実行中のブロックの最も最近のシーケンス番号を、測定及びテストポイントについての開始及び停止シーケンス番号と比較し、適切な時に、状態の遷移を開始する。BacklashIdle状態と関連付けられたエントリ時アクションは以下のものを含むことができる。
１）identify context：状態がBacklashIdleであるとき、ラン番号Nrunは分かっている。テストポイントインデックスNtestpointは、現在のtest_point構造についてのNfirst_seqnumとNlast_seqnumをチェックし、これをプログラムのアクティブなブロックのシーケンス番号NSEQについての最も最近の値と比較することで決定できる。NSEQがNlast_seqnum以上の場合、テストポイントインデックスNtestpointを１だけ増加させ、現在のテストポイント構造を再指定し、新しいテストポイント構造からテストポイントのNfirst_seqnumとNlast_seqnumを抽出し、測定インデックスNmeasを１に設定できる。テストポイントが変化していない場合、測定インデックスNmeasを１だけ増加させることができる。測定開始及び停止シーケンス番号NSTOP及びNSTARTを、NtestpointとNmeasによって識別された測定構造から抽出できる。
２）compute_backlash(testpt)：テストポイントインデックスがidentifycontextのエントリ時アクションの間に増加された場合、前のテストポイントについてのバックラッシュパラメータを計算して、そのテストポイントのデータ構造内に記憶できる。バックラッシュは、単にmeasurement[3].mean-measurement[1].meanであることができる。
BacklashIdle状態と関連付けられた状態アクティビティはpoll NSEQを含むことができる。アクティブなパートプログラムブロックのシーケンス番号が現在のテストポイント及び測定についての予想範囲内にあるか否かを判定するために該シーケンス番号がテストされる。また、アクティブなブロックが測定を行うべきブロックであるか否かもテストされる。BacklashIdle状態と関連付けられたイグジット時アクションはない。
【０５７１】
BacklashIdle状態からの遷移には以下のものが含まれる。
１）invalid NSEQ：アクティブに実行されているパートプログラムブロックのシーケンス番号が現在のテストポイントの最初のシーケンス番号から現在の測定の停止シーケンス番号の間（両端を含む）に入っていない場合、該ブロックは無効であると考えられる。即ち、test_point[Ntestpoint].first_seqnum≧ NSEQ≧test_point[Ntestpoint].meas[Nmeas].stop_seqnumという不等式が成り立たない場合、現在のシーケンス番号は無効である。このような状況は、ＦＳＭがリソースの「欠乏」に直面し、パートプログラムの実行に対して遅れてしまい、NSEQが大きくなり過ぎた場合に起きる可能性が最も高い。無効NSEQ刺激は、ボールバーエラーをテストする親状態のアクティビティから開始されたデータ不連続エラーによって廃棄されるであろう。NSEQが小さ過ぎるケースは起こり得ないが、頑強に（robustness）するために（例えば、設計又は実施エラーを識別するのを助けるために）含めることもできる。何れの場合も、上記の不等式が成り立たない場合には、状態はTestProblemに遷移し、「パートプログラムとバックラッシュ測定との間の同期に問題が発生。もう一度テストを行って下さい。問題が解決しない場合、サービス員にご連絡下さい。」という警報メッセージを提供できる。バックラッシュテストプログラムの自動発生に関連して記載したwaitinloopのアプローチを採用する場合には、上記のような刺激は起きないものと予想される。
２）NSEQ==NSTART：シーケンス番号が、上記した予想範囲内である場合、測定に関連するパートプログラムブロックが現在アクティブなブロックであるか否かを判別するためにテストされる。それがアクティブなブロックである場合（NSEQ==NSTART）、状態はBacklashMeasuringに遷移する。
３）NSEQ≧NSEQLAST：パートプログラムシーケンス番号が現在のランのシーケンス番号run[Nrun].last_seqnum以上である場合、状態はWaitForAtEOPへ遷移し、そこでＦＳＭは、テストパートプログラムが時計方向移動を行う（コードを戻す（unwind））のを待つと共に、ＭＤＩバッファに対して書込みアクセスが行われるのを待つ。ＦＳＭにおける遷移は、Nrunをインクリメントし、それが１より大きいか否かをテストすることでそれがどの様にして達成されるのかを示す。本明細書中で例示により議論する設計の範囲を超えたＦＳＭの拡張された応用に適応する複数のランのための追加の測定を可能にするためＦＳＭにこれを含めることができる。
【０５７２】
BacklashMeasuring状態の目的は、パートプログラムが測定に関連するドエルを実行している間に、データをボールバーパイプから測定構造内のデータバッファ領域に複写することである。BacklashMeasuring状態に関係付けられたエントリ時アクションはない。以下のものがBacklashMeasuring状態に関係付けられた状態アクティビティになり得る。
１）buffer data:ＦＳＭによってボールバーパイプから複写されたデータは、バックラッシュ測定のデータ領域の終わりに追加される。測定のデータアレーが一杯になって最大容量に達した場合、このアクションは止まるが、状態はBacklashMeasuringに留まる。
２）poll NSEQ：アクティブなパートプログラムブロックのシーケンス番号が増加し、これによって測定を終了することを示しているかをチェックする。
【０５７３】
一方、BacklashMeasuring状態に関係付けられたイグジット時アクションにはcheckdataが含まれる。例示的実施形態においては、バックラッシュ測定は、定常状態の一定軸位置を表す、少なくとも指定された最小数のサンプルを含んでいる。測定データの標準偏差を計算し、最小許容値と比較できる。標準偏差が最小許容値を超えた場合、測定は無効と考えることができる。例示的実施形態では、軸振動と測定ノイズを考慮して最小許容値が決められる（例えば、良好な初期値は０．１０ミクロンである）。機械軸の振動レベルが高い場合、この値を増加させる必要がある。このテストの目的は、軸が定常状態に達していない時に得た測定値は廃棄することである。サーボによって引き起こされた振動のレベルが高い軸については、標準偏差閾値は調整されるであろう。
【０５７４】
BacklashMeasuring状態からの遷移にはNSEQ≧NSTOPが含まれる。アクティブなパートプログラムのブロックのシーケンス番号が、現在の測定の停止シーケンス番号（測定ドエルに続くドエルのシーケンス番号）を超えると、状態は、次の測定に向けた準備のためにBacklashIdleへ戻ることを試みる。最近の測定において収集されたデータが上述のように無効であることがわかると、状態はTestProblemに遷移する。
【０５７５】
WaitForAtEOP状態では、最終のバックラッシュ測定が成功した後、パートプログラムの実行が完了することを待つ。例示的実施形態においては、ateop条件が満たされると、ＭＤＩパートプログラムの実行が完了し、ＭＤＩバッファへの書込みアクセスが可能となる。この条件は、親ＲＴＣ  ＦＳＭの状態のTestInProgressからTestCompleteへの遷移を刺激する。
【０５７６】
ateop条件が満たされると、状態中アクションが終わる前に、水平軸と垂直軸のバックラッシュが計算される。水平軸のバックラッシュ値は、水平軸に関連付けられた各テストポイントにおける有効なバックラッシュ測定値を平均し、この結果をbck_test構造のバックラッシュフィールド内のアレー中の第一の要素にコピーすることにより得ることができる。有効な測定値がない場合、bck_test構造内の有効フィールドの第一のアレー要素は偽と設定される。その他の場合は真と設定される。これと同様に、bck構造内の有効なバックラッシュアレーの第二の要素には、垂直軸のテストポイントのデータが入れられる。
【０５７７】
TestProblem状態は、何らかのエラー条件によりＴＩＰ  ＦＳＭから発生された警報をユーザが認識することをＴＩＰ  ＦＳＭが待機する場所である。警報の文章は、TestProblem状態への遷移中に指定される。再使用可能なAlertMessageのコールバックメソッドは、ＦＳＭダイアグラムに示されたＷ状態へ遷移するＲＴＣ  ＦＳＭメソッドのコールである。
【０５７８】
ＴＩＰ  ＦＳＭのWaitForTestCompl状態からの各遷移について行われるデータ処理について以下、説明する。例えば、データ円弧に対応する連続運動テストのデータバッファのセグメントが認識される方法について説明する。
【０５７９】
各連続運動テスト結果（反時計方向と時計方向）は、内方送りトリガから外方送りトリガまでの連続的なボールバーデータを含む。データ円弧における送り速度は一定であるため、データ円弧に対応するバッファのセグメントの（サンプルにおける）長さは、有効サンプリング頻度×円弧長さ（ｍｍ）÷プログラムされた送り速度と等しい。
【０５８０】
【数１１８】
2004525467.tif 000131
【０５８１】
データのセグメントの抽出開始ポイントは、位置コントローラの位相歪の影響と、推定トリガ間時間と実際のトリガ間時間の差とを考慮して決められる。
【０５８２】
生データ測定値の円半径への変換により、測定値をボールバー長さに基づき調整すると共に、ボールバー長さが円半径より大きい可能性を考慮する。ボールバーがオンになると、ボールバードライバによりパイプに置かれる測定データが較正オフセットとボールバースケールファクタの調整値を含むように、これらファクタが指定される。ボールバーの長さが較正されていないことがデータにより示される場合は、較正オフセットをゼロとする。絶対的なボールバー長さの測定値は、パイプからのデータにボールバーの公称長さを加えることにより得られる。
【０５８３】
ボールバーの長さが較正されている場合、この合計値は測定についての真のボールバー長さを示す。そうでない場合は、近似長を示す。この値（真あるいは近似長の値）は、円錐の角度がゼロでない場合を考慮して、例えば、ボールバーの変位Ｄの生の測定値に円錐角の余弦（即ち、プログラムされた円半径のボールバーの公称長さに対する比）をかけることにより調整される。
【０５８４】
【数１１９】
2004525467.tif 000132
【０５８５】
例えば、ランテストページ３０等のランテストページの更に別の機能は、ボールバー長さの較正である。ボールバー長さの較正は、本明細書に記載されている例示的なＲＴＣ  ＦＳＭの範囲内で実施されるが、例示的実施形態においては、アクティブに実行しているパートプログラムがなく且つボールバーがオフになっている（即ち、ボールバーの状態が非初期化されている）限り、ＲＴＣの状態に関わらず実施される。
【０５８６】
ボールバー長さの較正を実施するための例示的メカニズムを、図３０のＦＳＭダイアグラムに示す。丸で囲んだ「Ｈ」は、ＲＴＣ  ＦＳＭの履歴状態（即ち、較正を実施するためにＦＳＭがインターラプトされたときにアクティブであった状態）を示す。履歴状態への遷移により、特定の状態のエントリ時アクションが実施される。
【０５８７】
較正ボタンは、例えばＲＴＣ  ＦＳＭにおける各種状態のエントリ時に使用不可にされ、従ってpress(calibrate)刺激は発生しない。較正ボタンが使用可能である場合、ユーザが較正ボタンを押すことにより、ＭＤＩパートプログラムがateop状態にあるか否か、ボールバーがオフか否かを調べるためにテストを評価する。ＭＤＩパートプログラムがateop状態にないかボールバーがオフでない場合、（図示のようにＲＴＣ  ＦＳＭの履歴状態に戻ることによって）press(calibrate)アクションは無視される。
【０５８８】
ＭＤＩプログラムの状態がateopでありボールバーがオフである場合、ＲＴＣ状態は較正状態へ遷移する。ＲＴＣ  ＦＳＭの履歴状態は、遷移中は保持される。較正状態へ入る時、ボールバーは初期化され、オンとされ、正しいスケールファクタと０の較正オフセットで構成される。ボールバーは、データを収集してそのデータパイプへ送る動作を開始するように指令される。
【０５８９】
較正状態に入る時にも、タイムアウト時間が、例えば最大サンプリング速度ｆｓで１０００個のボールバー測定サンプルを収集する時間より若干長い時間に相当する値に設定される。ランテストスレッドからＲＴＣ  ＦＳＭが反復的に呼び出されるごとに、較正状態の状態アクティビティが呼び出される。タイムアウト状態やボールバーエラーが発生した場合、状態は較正状態から警報状態に遷移する。タイムアウト状態は、予想最長時間を超えて較正状態が継続するとき発生する。
【０５９０】
ボールバーがエラー状態である可能性が、ボールバーパイプの各問い合わせに先立ちテストされる。警報状態は、警報確認を受信すると、履歴ＲＴＣ  ＦＳＭ状態に遷移する。例えば、１０００個のボールバー測定値が収集された後、較正測定が成功したことを示す、較正状態からの遷移が起こる。この遷移中、ボールバーオフセットが計算され、データの完全性チェックが行われる。
【０５９１】
データに問題がないことがわかると、長さ較正状態は真と設定され、状態はＲＴＣ  ＦＳＭの履歴状態へ遷移する。データ完全性テストで完全でないと判定されると、状態はAlertMessage状態に遷移し、長さ較正状態は偽と設定される。警報確認により、ＲＴＣ  ＦＳＭの履歴状態への遷移が生じる。
【０５９２】
データ有効性テストには、１０００個の測定サンプルの標準偏差の計算が含まれる。標準偏差が例えば０．０１ミクロン未満であった場合、このデータは有効であると考えられ、そうでない場合は無効であると考えられる。長さ較正オフセットは、絶対的なボールバーの長さ測定値を得るために生のデータ測定値に加えられた値である。較正オフセットは、ユーザが入力した較正治具の長さの値から１０００個のポイントの平均値を引くことにより計算される。
【０５９３】
【数１２０】
2004525467.tif 000133
【０５９４】
例えばＡｃｒａｍａｔｉｃ  Ｒｅｌｅａｓｅ  ４及び／又はＲｅｌｅａｓｅ  ５のソフトウェア上で実行することができるＡＴＢソフトウェア等のソフトウェアは、例えばＭａｔｌａｂプログラミング言語とＭａｔｌａｂ数学ライブラリやＭａｔｌａｂグラフィックライブラリの機能を用いて記述することができる。Ｍａｔｌａｂソフトウェアのインストールの必要がないスタンドアローンバージョンは、ＭコードからＣコードに変換するＭａｔｌａｂ  Ｃｏｍｐｌｉｅｒを用いる等により作ることもできる。ワークステーションサービスレイヤ機能は、Ｍａｔｌａｂソースコードとサービス機能のＣコードコーリングコンベンションの間のインターフェースとして機能するＭａｔｌａｂ  Ｍｅｘ  Ｆｉｌｅｓからアクセスすることができる。他のソフトウェアの実行では他の言語ライブラリ及びグラフィックライブラリを用いる。例示的実施形態においては、数学的解析、スレッドハンドリング、機械構成データ管理及び／又は有限状態マシンは、例えばＣ又はＣ＋＋で記述したり、例えばＷｉｎ３２  ＡＰＩを採用したりすることができる。一方、別の例示的実施形態では、グラフィカルユーザインターフェースはＶｉｓｕａｌ  Ｂａｓｉｃで記述することができ、可能な場合は、既存の制御装置（例えば、Ａ２１００  ＡｃｔｉｖｅＸ制御装置）からのオブジェクトを再利用することができる。
【０５９５】
これまで述べた本発明の各種例示的実施形態の幾つかに伴う利点は、迅速且つ容易に使用できる、機械補償値を決定する方法を提供することである。この機能は、例えば、工作機械のＯＥＭや制御装置の改造業者、工作機械の最終ユーザに有用であることが予想される。例えば、ボールバーテストに関しては、ＯＥＭの製造ラインの技術者は、本発明の一実施形態を用いて、初期呼出し（例えば、ａｐｐｌｅｔの初期呼出し）において存在するあるいは（例えば、制御装置のディスクからのファイルから）ロードインされた一連の標準テストセットアップを用いることができる。測定データから得られる精度統計値は、ＯＥＭのデータベースに恒久的に保存されるファイルに記録される。この技術者により、制御装置の補償パラメータを更新して、存在する誤差を補正することが指示される。
【０５９６】
一方、よりレベルの高い技術者やエンジニアは、このような実施形態を利用して、製造中に用いる標準的なセットアップを設計することができる。また、レベルの高い技術者は、機械全体の性能を評価するあるいは製造上の問題を診断するための標準的でないテストを設計し実施することもできる。いずれの場合においても、テストは、最小限の専門技術で容易に実施でき且つテスト完了までの時間が最小であるのが好ましい。
【０５９７】
一実施形態では、ボールバーを使用して主平面を較正するために実施するタスクにかかる合計時間は３分未満である。これらのタスクには、治具の設定、テストの実行、補償値の更新、補償値を検証するための第二のテストの実行が含まれる。また、補償値の自動チューニングは、較正時間が長引くことによる追加的なコストを避けるために完全なレーザ較正を実施しない、低コストマシンのＯＥＭにとっても大変有用である。
【０５９８】
これと同様に、制御装置の改造業者も、使い易さと短いテスト時間の利益を享受することができる。例えば、本発明の特定の実施形態の自動チューニングにより改造業者は恩恵を受ける。即ち、機械を補償する際にかかる努力を最小のものとすることができる。ボールバーテストを行う本発明の実施形態と比較すると、レーザ干渉計を用いる場合には二方向軸補償と交差軸補償のためのデータテーブルを作成するのに数日かかることに留意されたい。
【０５９９】
更に、ボールバーテストを行う本発明の各種実施形態により、最終ユーザは様々な面で利益を享受できる。例えば、ボールバー測定を簡単に行えるため、保守チームは定期的にテストを実施して機械の性能記録を作成することが容易になる。この記録を、例えば、予測的保守計画の一部として利用できる。更に、工作機械の操作者は、加工プロセスの前にボールバーテストを行うことができる。この手順であれば、この時点で存在する、熱的状態から生じる機械の誤差を補償することができる。この他、テストの範囲はこれから実施する加工の包絡面に制限することができ、補償値は、限られた範囲の加工包絡面に対して最適化される。これにより、最終ユーザは、機械の精度仕様を上回る精度で部品を製造することができる。
【０６００】
本発明の各種例示的実施形態について前述した説明は、単に例示と説明を目的としたものである。これらは、本発明を、開示された形式そのものに限定することを意図したものではなく、各種変更例や各種変形例が可能であり且つ上述した教示に照らして考えられる。多くの例示的及び代替の実施形態、方法、システム、構成、潜在的なアプリケーションを示したが、本発明の範囲から逸脱することなく、多くの変形例や変更例も利用することができると理解されるべきである。更に、潜在的な構成や要素を各種記載したが、本発明の範囲から逸脱することなく、多くの他の構成や要素も利用することができると理解されるべきである。
【０６０１】
例えば、本明細書で記述した各種例示的実施形態の幾つかは、特定のボールバーからのデータは内部制御データに直接同期できないという制限に基づくものであった。直接同期が可能であれば、このデータを用いて、潜在的により強力で頑丈なデータ解析を直接行うことができる。例えば、軸フィードバック位置を用いて各ボールバー測定値に対する正確な角度を計算することができる（これは、例えば経過時間やインターポレータのエミュレーションに基づき角度を推定する技法とは異なる）。軸フィードバック測定値を用いて、ワインドアップ／バックラッシュトランジェントの正確な性質を説明するより正確なロストモーションモデルのパラメータを得ることもできる。このような機能を用いれば、本明細書で例として既に説明した、例示的なＲＴＣやＴＩＰの有限状態マシンの実施形態を簡略化することもできる。
【０６０２】
更に、本明細書において既に述べた各種例示的実施形態の幾つかは既存のレニショーのボールバー製品を用いたものであるが、本発明の他の実施形態は、例えば、変位センサ等のセンサや他の通信インターフェースにも適応できる。例えば、ＡクワドＢエンコーダ信号（A quad B encoder signals）等のデータを出力するボールバーを用いることができ、この場合ボールバーと内部制御データの間の正確な同期が提供され、これにより上に述べたような利点を得ることができる。
【０６０３】
これに加え、摩擦フィードフォワードパラメータの調整値の提案値を自動的に導出する等の機能も含まれる。このような機能により、摩擦トランジェントと、仮定された理想的なクーロン摩擦モデルとの違いにより生じる性能上の問題を（例えば、フィードフォワード自動チューニングにより）解決できる。このアプリケーションでは、摩擦補償値調整のための反復的アプローチの概要を記載した。これにより、このような問題を解決するために用いることのできるアルゴリズムの基本を見つけることができる。更に、このアプリケーションの技法とアプローチは、他のコントローラ製品ライン、例えばＳｉｅｍｅｎｓ８４０やＳｉｎｕｍｅｒｉｃＣＮＣコントローラの製品ラインにも十分に適用できることが予想できる。
【０６０４】
本明細書に記載した各種例示的実施形態における限定事項は、ボールバー測定から得られた補償パラメータを適用できる範囲のうち信頼性があるのは、パラメータを得るために用いたボールバーテストの包絡面内に含まれる加工包絡面の領域のみであることである。通常、（ＸＹ、ＸＺ、ＹＺの各平面について）３種類の測定結果を用いて、機械補償パラメータを発生する。これらのテストに伴う運動の範囲は、パラメータ的補償値が適用可能であることがわかっている機械包絡面内のボリュームと等しい。
【０６０５】
各平面で複数回の測定を行って補償パラメータを得た場合は、これらの補償パラメータにより機械包絡面全体を正確に表すことができる。各測定の領域を合わせると、その平面の機械包絡面の全体に及ぶ。これを行うには、例えば、複数の測定を同時に解析する、あるいは各測定の結果の加重平均を計算する。このような機能を持たせる場合は、本明細書で既に述べた例示的テスト環境全体の変更を伴う可能性がある。前述のテスト環境は、テスト平面における補償パラメータを得るためにボールバーテストを一回（二方向）行うという考えに基づいて設計されているためである。
【０６０６】
軸角度誤差（ロール・ピッチ・ヨー）により線形運動が生じ、この線形運動は、本明細書に記載されている一部の実施形態で用いた曲線当て嵌めにより直角度誤差や直線性誤差と判断されることがある。別の実施形態では、例えば、各タイプの角度誤差がボールバー測定値に及ぼす影響が定量化され、更なるテストや解析が行われ、これにより角度誤差が変位誤差と区別されて、両タイプの誤差のパラメータを抽出することができる。例えば、角度誤差の変位誤差に対する影響を補償する補償ソフトウェアが含まれる。このタイプの補償には、複数（例えば、全部で３種類の）の直動軸の位置に基づき軸位置を補償することが含まれる。
【０６０７】
本明細書に記載されている特定の実施形態に関しては、ユーザが行うタスクを更に自動化することができる。例えば、ボールバーテストの物理的セットアップをパレットに載せ、これを自動的に機械にロードすることができる。また、パブリックインターフェース（Ａ２１００のパブリックインターフェース等）を用いて、必要とされる「サイクル開始」押動信号を発生することができる。また、磁気カップを収容する工具ホルダを機械の工具マガジン内に置くこともできる。
【０６０８】
パレット上に設けたボールバー治具のボールバーは、パレット上の所定の位置にあるセンタボールに既に取り付けられている。この所定のテスト位置に関するパラメータをテストセットアップデータに含ませることができる。ボールバーは支持ポストにより支えられており、工具によりそこから拾い上げられる。テスト完了時にはフックを用いてボールバーをこの支持ポストに戻すことができる。このような実施形態の利点は、完全に自動化された環境において機械再較正の自動スケジューリングを容易に行うことができることである。
【０６０９】
ボールバーをセンサとして用いて機械の構造力学パラメータを自動的に推定することができる。このような機能は、例えば、位置フィードバックセンサによりその位置を直接測定しない工作機械の部材の撓みや振動を考慮してフィードフォワードコントローラのパラメータを自動チューニングする場合に必要となるであろう。例えば、ボールバーを用いて機械の構造モードの剛性パラメータやダンピングパラメータを推定することができ、これは、ボールバーを用いて工作機械のスピンドル先端と工作物支持テーブルとの間の相対運動を測定することにより行われる。これらの測定値は、軸位置及びトルクの測定値と同期できる。
【０６１０】
広周波数レンジのエネルギーを含む励起信号を加えた状態で得られた軸測定値とボールバー測定値を相関付けることによりモデルパラメータが得られる。この励起信号は、例えば、位置指令「チャープ」を出力するパートプログラムを作ることにより発生される。この位置指令「チャープ」は、送り速度を連続的に増加させながら、直径の小さな円の補間を指定するものである。円の直径はボールバーの範囲より若干小さく設定される。この状況の概要を図３１に示す。また、単一の基本振動モードを有する軸についての軸パラメータを推定するための行列方程式を図３１に示す。
【０６１１】
従って、例示的実施形態においては、ボールバー測定は、軸位置測定及びトルク測定と同期される。同期は、例えば、出力を直接同期できるボールバー装置を用いて行われる。このようなシリアルボールバーインターフェースの場合、同期は、データ解析中に、低周波数エネルギーのみを含むチャープ期間にボールバー測定データと軸フィードバックのマッチングさせることにより行われる。
【０６１２】
本明細書に記載した各種例示的実施形態において用いた、運動を発生させデータを収集しデータを解析する方法の全体は、他の自動チューニングアプリケーションにも適用できる。例えば、図３２を参照すると本発明の一実施形態では、グラフィカルユーザインターフェース（ＧＵＩ）が提供されている。このインターフェースにより、ユーザは、テストパラメータを指定し、構成データを変更し、測定／解析の結果を確認して解析し、テストシーケンスを開始することができる。これを実施する一例示的アプローチは、次のリストに挙げるようなテスト固有のオブジェクトを含むインターフェースを用いることである。
１）テストのタイプに固有の機能へのユーザアクセスを提供するＧＵＩ
２）所望の機械運動に影響を与えるためのパートプログラム指令を構成するプログラム発生オブジェクト
３）テストパラメータを保存しその有効性をチェックするセットアップデータコンテナ
４）ボールバー装置等の補助センサを管理するセンサインターフェース
５）ＮＣカーネルデータ取得データ等の複数のソースからのデータ、軸ドライブからのデータ、及び補助センサからのデータを組合せて同期させるためのデータ統合オブジェクト
６）データ解析及びパラメータ抽出のための、各ケース固有の条件を提供するためのパラメータ推定曲線当て嵌めオブジェクト
７）ユーザ、実時間カーネル及びセンサオブジェクトからのインプットを管理してこれに応答するためのテスト実行コーディネータＦＳＭ
【０６１３】
一実施形態においては、これらオブジェクトが図３２に示す概略の関係で配置される。
【０６１４】
このように、各種の実施形態や実施例を選択して説明したが、これは、本発明の原則及びその実際のアプリケーションを最も分かりやすく説明することにより、当業者が本発明を各種実施形態で且つ考えられる特定の用途に適切な各種変更を行って最大限に利用できるようにするためのものであると理解されるべきである。従って、本発明の範囲は、本明細書に添付される請求の範囲により定義される。
【図面の簡単な説明】
【０６１５】
【図１】ボールバーテストを示す図である。
【図２】本発明の例示的実施形態に係るセットアップインターフェースの画面である。
【図３Ａ】本発明の例示的実施形態に係るテストインターフェースの画面である。
【図３Ｂ】本発明の例示的実施形態に係るテストインターフェースの画面である。
【図４】本発明の例示的実施形態に係る解析インターフェースの画面である。
【図４Ａ】本発明の例示的実施形態に係る解析インターフェースの画面である。
【図５Ａ】本発明の例示的実施形態に係る調整インターフェースのサブページ画面である。
【図５Ｂ】本発明の例示的実施形態に係る調整インターフェースのサブページ画面である。
【図５Ｃ】本発明の例示的実施形態に係る調整インターフェースのサブページ画面である。
【図５Ｄ】本発明の例示的実施形態に係る調整インターフェースのサブページ画面である。
【図５Ｅ】本発明の例示的実施形態に係る調整インターフェースのサブページ画面である。
【図６】Ａは円中心誤差の発生を示すプロット、Ｂは円中心誤差から生じた極誤差プロットである。
【図７】半径に対する直角度誤差の影響を示すプロットである。
【図８】軸スケール誤差の影響を示すプロットである。
【図９】本発明の例示的実施形態に係る、位置ループ帯域幅により影響を受ける半径歪みを推定するための仮定された軸位置ループダイナミクスを示すブロック図である。
【図１０】放物線状直線性誤差の影響を示す極誤差プロットである。
【図１１】サーボ（位相）ミスマッチ誤差の影響を示すプロットである。
【図１２】円の輪郭に対するロストモーションの影響を示すプロットである。
【図１３】ロストモーションを示す極誤差プロットである。
【図１４】摩擦反転誤差を示す極誤差プロットである。
【図１５】本発明の例示的実施形態に係る、摩擦誤差推定において用いたシステムモデルを示すブロック図である。
【図１６】本発明の例示的実施形態に係る、データ円弧長さの関数として励起を示したグラフである。
【図１７】角度誤差（ｙ軸ロール誤差）の例を示すプロットである。
【図１８】直線性誤差の補償を適用した場合のクリッピングの挙動を示すグラフである。
【図１９】本発明の例示的実施形態に係る、開始及び終了の象限に基づく最大及び最小の軸撓みを示すグラフである。
【図２０】本発明の例示的実施形態に係る、テスト実現化の多重スレッドインプリメンテーションを示すブロック図である。
【図２１】本発明の例示的実施形態に係る、再サンプリングを示すブロック図である。
【図２２】本発明の例示的実施形態に係る、有限状態マシンのダイアグラムに用いたシンボルを説明する凡例である。
【図２３】本発明の例示的実施形態に係る、ランテストコーディネータ（ＲＴＣ）のアルゴリズムのための有限状態マシンのダイアグラムである。
【図２４】本発明の例示的実施形態に係る、再使用可能な「Ａ」状態を説明する図である。
【図２５】本発明の例示的実施形態に係る再使用可能な「Ｗ」状態を説明する図である。
【図２６】本発明の例示的実施形態に係る、バックラッシュテストの反時計方向円弧のための機械の運動を示すプロットである。
【図２７】本発明の例示的実施形態に係る、バックラッシュテストデータ構造のデータ階層を示すクラス図である。
【図２８】本発明の例示的実施形態に係る、バックラッシュプログラム発生手続を示すフローチャートである。
【図２９】本発明の例示的実施形態に係る、テストインプログレス（ＴＩＰ）アルゴリズムのための有限状態マシンのダイアグラムである。
【図３０】本発明の例示的実施形態に係る、ボールバー長較正アルゴリズムのための有限状態マシンのダイアグラムである。
【図３１】本発明の例示的実施形態に係る、ボールバーを用いた構造力学パラメータの推定を示す図である。
【図３２】本発明の例示的実施形態に係る、ＣＮＣの自動チューニングのための概略の構成である。
【図１】
2004525467.tif 000134
【図２】
2004525467.tif 000135
【図３Ａ】
2004525467.tif 000136
【図３Ｂ】
2004525467.tif 000137
【図４】
2004525467.tif 000138
【図４Ａ】
2004525467.tif 000139
【図５Ａ】
2004525467.tif 000140
【図５Ｂ】
2004525467.tif 000141
【図５Ｃ】
2004525467.tif 000142
【図５Ｄ】
2004525467.tif 000143
【図５Ｅ】
2004525467.tif 000144
【図６】
2004525467.tif 000145
【図７】
2004525467.tif 000146
【図８】
2004525467.tif 000147
【図１０】
2004525467.tif 000148
【図１１】
2004525467.tif 000149
【図１２】
2004525467.tif 000150
【図１３】
2004525467.tif 000151
【図１４】
2004525467.tif 000152
【図１５】
2004525467.tif 000153
【図１６】
2004525467.tif 000154
【図１７】
2004525467.tif 000155
【図１８】
2004525467.tif 000156
【図２０】
2004525467.tif 000157
【図２１】
2004525467.tif 000158
【図２２】
2004525467.tif 000159
【図２３】
2004525467.tif 000160
【図２４】
2004525467.tif 000161
【図２５】
2004525467.tif 000162
【図２６】
2004525467.tif 000163
【図２８】
2004525467.tif 000164
【図２９】
2004525467.tif 000165
【図３０】
2004525467.tif 000166
【図３１】
2004525467.tif 000167
【図３２】
2004525467.tif 000168
【国際公開パンフレット】
2004525467.tif 000169
2004525467.tif 000170
2004525467.tif 000171
2004525467.tif 000172
2004525467.tif 000173
2004525467.tif 000174
2004525467.tif 000175
2004525467.tif 000176
2004525467.tif 000177
2004525467.tif 000178
2004525467.tif 000179
2004525467.tif 000180
2004525467.tif 000181
2004525467.tif 000182
2004525467.tif 000183
2004525467.tif 000184
2004525467.tif 000185
2004525467.tif 000186
2004525467.tif 000187
2004525467.tif 000188
2004525467.tif 000189
2004525467.tif 000190
2004525467.tif 000191
2004525467.tif 000192
2004525467.tif 000193
2004525467.tif 000194
2004525467.tif 000195
2004525467.tif 000196
2004525467.tif 000197
2004525467.tif 000198
2004525467.tif 000199
2004525467.tif 000200
2004525467.tif 000201
2004525467.tif 000202
2004525467.tif 000203
2004525467.tif 000204
2004525467.tif 000205
2004525467.tif 000206
2004525467.tif 000207
2004525467.tif 000208
2004525467.tif 000209
2004525467.tif 000210
2004525467.tif 000211
2004525467.tif 000212
2004525467.tif 000213
2004525467.tif 000214
2004525467.tif 000215
2004525467.tif 000216
2004525467.tif 000217
2004525467.tif 000218
2004525467.tif 000219
2004525467.tif 000220
2004525467.tif 000221
2004525467.tif 000222
2004525467.tif 000223
2004525467.tif 000224
2004525467.tif 000225
2004525467.tif 000226
2004525467.tif 000227
2004525467.tif 000228
2004525467.tif 000229
2004525467.tif 000230
2004525467.tif 000231
2004525467.tif 000232
2004525467.tif 000233
2004525467.tif 000234
2004525467.tif 000235
2004525467.tif 000236
2004525467.tif 000237
2004525467.tif 000238
2004525467.tif 000239
2004525467.tif 000240
2004525467.tif 000241
2004525467.tif 000242
2004525467.tif 000243
2004525467.tif 000244
2004525467.tif 000245
2004525467.tif 000246
2004525467.tif 000247
2004525467.tif 000248
2004525467.tif 000249
2004525467.tif 000250
2004525467.tif 000251
2004525467.tif 000252
2004525467.tif 000253
2004525467.tif 000254
2004525467.tif 000255
2004525467.tif 000256
2004525467.tif 000257
2004525467.tif 000258
2004525467.tif 000259
2004525467.tif 000260
2004525467.tif 000261
2004525467.tif 000262
2004525467.tif 000263
2004525467.tif 000264
2004525467.tif 000265
2004525467.tif 000266
2004525467.tif 000267
2004525467.tif 000268
2004525467.tif 000269
2004525467.tif 000270
2004525467.tif 000271
2004525467.tif 000272
2004525467.tif 000273
2004525467.tif 000274
2004525467.tif 000275
2004525467.tif 000276
2004525467.tif 000277
2004525467.tif 000278
2004525467.tif 000279
2004525467.tif 000280
2004525467.tif 000281
2004525467.tif 000282
2004525467.tif 000283
2004525467.tif 000284
2004525467.tif 000285
2004525467.tif 000286
2004525467.tif 000287
2004525467.tif 000288
2004525467.tif 000289
2004525467.tif 000290
2004525467.tif 000291
2004525467.tif 000292
2004525467.tif 000293
2004525467.tif 000294
2004525467.tif 000295
2004525467.tif 000296
2004525467.tif 000297
2004525467.tif 000298
2004525467.tif 000299
2004525467.tif 000300
2004525467.tif 000301
2004525467.tif 000302
2004525467.tif 000303
2004525467.tif 000304
2004525467.tif 000305
2004525467.tif 000306
2004525467.tif 000307
2004525467.tif 000308
2004525467.tif 000309
2004525467.tif 000310
2004525467.tif 000311
2004525467.tif 000312
2004525467.tif 000313
2004525467.tif 000314
2004525467.tif 000315
2004525467.tif 000316
2004525467.tif 000317
2004525467.tif 000318
2004525467.tif 000319
2004525467.tif 000320
2004525467.tif 000321
2004525467.tif 000322
2004525467.tif 000323
2004525467.tif 000324
2004525467.tif 000325
2004525467.tif 000326
2004525467.tif 000327
2004525467.tif 000328
2004525467.tif 000329
2004525467.tif 000330
2004525467.tif 000331
2004525467.tif 000332
2004525467.tif 000333
2004525467.tif 000334
2004525467.tif 000335
2004525467.tif 000336
2004525467.tif 000337
2004525467.tif 000338
2004525467.tif 000339
2004525467.tif 000340
2004525467.tif 000341
2004525467.tif 000342
2004525467.tif 000343
2004525467.tif 000344
2004525467.tif 000345
2004525467.tif 000346
2004525467.tif 000347
2004525467.tif 000348
2004525467.tif 000349
2004525467.tif 000350
2004525467.tif 000351
2004525467.tif 000352
2004525467.tif 000353
【国際調査報告】
2004525467.tif 000354
2004525467.tif 000355