■ XYθ⇒uvw変換 (KV File: XYt_uvwx_xxx 

内容

ヒーハイ スト精工株式会社様のアライメントステージ「NAF3C-16K00P」を使う機会がありましたので、 作った計算式をサンプルとして公開致します。
NAF3シリーズは、UVWの3軸アクチュエータと予圧型ダブルスライド・ユニットにて構成。薄型コンパクト・高剛性・高精度な位置決めが行えます。
上記の通り、このステージはUVWの3軸制御なので、座標をXYθからUVWに変換する必要が有ります。取扱説明書に 計算式が掲載されていますが、
今回はその式を「KVスクリプト」と「グローバルラベル」「ローカルラベル」を使って記述してみました。
(残念ながら取扱説明書掲載はNGと言う事なので、ヒーハイスト精工株式会社様までお問い合わせください。)
スクリプトを使えば、ラダーでの煩わしい記述から解放されます。また、「ラベル」を使う事で「デバイスコメント」が表示されず、可読性の悪い欠点も解消さ れます。
グローバルラベル/ローカルレベルの使い方も参考にしてください。

このサンプルは他と 独立したプロジェクト にしました。
下の「●コードをダウンロード」からダウンロードしてください。

●PDF を表示   ●コードをダウンロード ●登録モニ タをダウンロード
◆ 初期化ルーチン

00002
・変数[Initial]がFの時は未初期化なので、サブルーチン0にジャンプします。
・サブルーチン0を実行すると[Initial]はTとなり次スキャンからは初期化はパスされます。

00168
・サブルーチン番号0でローカル変数の型宣言や変数の初期化を行います。
・各変数の型をここで宣言しておく事で、ローカルラベルの取り込み時に「データ形式」を指定しなくても自動で判断してくれます。
・また、スクリプト記述内で「TYPE」コマンドを使う方法もありますが、宣言を行ったスクリプト内でしか有効ではありません。
・上の例では[DecPnt1]と[DecPnt2]を”2ワード符号あり整数”にしています。(この変数は小数点位置の定義なので”1ワード符号なし整数”で十 分です。

00171
・他の計算用偏すは、精度の関係でダブルフロート(倍精度浮動小数点型)にしています。
・変数の型宣言後、各々の変数に固定値や初期値を代入しています。

00185
・ 今回、分解能を0.0001mm(100nm)にしましたので、小数点位置に4を代入します。

00186
・同じく固定値(定数)として、各アクチュエータのピンの初期座標を代入します。
・ピン座標(固有値)はステージの 取扱説明書に記述されています。
・例えばU軸のX座標[Ux]は67.5mmなので、それを分解能0.0001mmで割った値”675000”を代入します。

00190
・旋回中心(UVWステージは物理的なθ軸が無いので、仮想的中心です。)は取扱説明書の参考例と同じ10mmと20mmにしています。

00192
・各パラメータに代入した値は整数なので、倍精度浮動小数点に変換します。
・設定値や移動量など、どのモジュールからでも代入される可能性のあるものはグローバルラベル(グローバル変数)にしました。

00247
・現在座標を0にします。勿論実際の軸も原点復帰してください。

◆ 軸移動量計算式

00009
・取扱説明書の 参考例では、与えるパラメータは「移動量(相対座標)」になっていますが、「絶対座標」でも計算できる様にスイッチを加えました。
・変数[MODE_Abs](MR001)をTにするとパラメータを「絶対座標」で与える事ができます。

ComDenominator
・式の中には共通の項目がある事が分かります。スクリプトではこの共通項を使って式記述を単純化しました。
・この共通項は [PAINT_Yelow] などのラベルを使って記述しています。

Loval-Label
・ローカルラベル編集画面です。ローカルラベルは内部ワーク領域に割当てられる様です。
・また、定数も割り付けできます。
UseMan

Global-Label
・グローバルラベルでは各デバイスまたは定数を割り付けます。

00008
・計算式は「STP」~「STE」の間に記述しています。グローバルラベル[TRIGGER](MR000)をONすると「STP」~「STE」間に記述 された命令(計算式)を実行します。

00155
・計算式を実行した後、目標座標を現在座標に更新しています。

00163
・命令の実行を終えるとグローバルラベル[TRIGGER](MR000)をOFFします。


◆ 確認

example
・では取扱説明書の参考例をもとに確認します。上表は計算式に与える パラメータ(テーブル位置/テーブル移動量)とUVW各軸の相対移動量を参考例から転写したものです。
・「登録モニタ」をダウンロードして確認してください。ラベル[TRIGGER]の現在値をダブルクリックするか、そこにカーソルを合わせスペースキーを 押すと計算を開始します。
・参考例では移動量として、相対座標で与えていますが[MODE_Abs](MR001)をONすることで絶対座標として与えることもできます。
・相対移動量で計算する場合は[RELATIV_X]/[RELATIV_Y]/[RELATIV_deg] がそれぞれ”テーブル移動量”のX/Y/θになります。
・絶対位置で計算する場合は[DESTINA_X]/[DESTINA_Y]/[DESTINA_deg] がそれぞれの”絶対座標”になります。上表の緑色の文字で書かれた数値を入れてください。

①⇒②
・①から②へ移動する時の計算結果です。
・[RELATIV_X]=10000/[RELATIV_Y]=20000/[RELATIV_deg]=10000 を書込んで[TRIGGER]をONします。
・ 浮動小数点の演算結果は[ANSWER_u]~、固定小数点の結果は[RELATIVE_u]~です。

②⇒③
・②から③へ移動する時の計算結果です。
・[RELATIV_X]=20000/[RELATIV_Y]=10000/[RELATIV_deg]=-20000 を書込んでください。

③⇒④
・③から④へ移動する時の計算結果です。
・[RELATIV_X]=-50000/[RELATIV_Y]=-40000/[RELATIV_deg]=40000 を書込んでください。

●PDFを表示   ●コードをダウンロード ●登録モニ タをダウンロード