産業機械をパソコンの中でひも解く・XYステージ ―― まっすぐな円が、四か所だけ内側にへこむ

  • python
  • シミュレーション
  • 制御
  • 数値計算
  • メカトロニクス

XYステージが動くアニメーション
平面上の狙った座標へテーブルを運ぶ位置決めステージ。歯竿と歯車で駆動しています。この立体は計算から起こしています。

まっすぐな円を、機械になぞらせます。ところが軌跡は真円になりません。四か所、それも上下と左右のちょうど頂点だけ、内側にかくっとへこみます。

これは、プログラムを書く人なら覚えのある壊れ方だと思います。値を書き戻しても、ある幅を超えるまで実際の状態が動かない。方向を変えた最初の一回だけ、前の値が残って効かない。ヒステリシスやデッドバンドのついたセッター、というやつです。今回はそれが、XYステージの歯車の遊びとして現れます。

前回は卵パッカーでした。今回はXYステージです。私はこの機械を触ったことも、実機を用意したこともありません。

ステージをパソコンの中に建てる

動かす距離が長い(ストローク800mm)ので、ねじではなく、ラックとピニオン、つまり歯竿と歯車で駆動しています。ねじは長くすると自分の重みでたわむので、長距離ではこちらが向いています。モータが1回転するとテーブルが25.13mm進む、という関係も、歯数や減速比から計算していて、直書きしていません。

その代わりに付いてくるのが、歯の噛み合わせの遊び、バックラッシです。反転するとき、モータは回っているのに、遊びの分だけテーブルが動かない一瞬がある。この機械では60マイクロメートル、髪の毛一本ほどの太さです。

反転すると歯の遊びだけテーブルが遅れる
遊びを誇張して描いたもの。ピニオン(歯車)は回っているのに、赤い基準線で示すテーブルは、遊びの分だけ動き出さない。

四か所だけへこむ理由

円をなぞると、X軸は左右の頂点で、Y軸は上下の頂点で、速さがゼロになって向きが反転します。その瞬間、反転した軸だけが遊びの分だけ遅れる。だから、なぞる半径が内側に段付きます。ほかの誤差と違って、四つの頂点に集まって出るのが、バックラッシの特徴です。

ボールバー試験
円をなぞらせて真円からのずれを見るボールバー試験(ISO 230-4)。モータ側のエンコーダで測ると(左)四頂点でへこみ、テーブル側のスケールで測ると(右)ほとんど消える。

反転のたびに出力が遊びの幅だけ据え置かれる様子は、そのまま履歴のループになります。

遊びのヒステリシス
行きと帰りで経路がずれる。方向を変えた直後、遊びの幅だけ動かない。

ソフトで言えば、方向転換の最初の一回だけ、キャッシュが古い値を返しているのに近い挙動です。

ここで効いてくるのが、どのセンサで位置を測るかです。モータのエンコーダは、この遊びを検出できません。モータ側は指令どおりに追従しているように見えます。テーブルの実際の位置を測れるのは、負荷側に貼ったスケールだけです。同じ機械でも、モータ側と負荷側で位置が食い違います。

遊びをどう埋めるか

直しは二つあります。ひとつは、反転する瞬間に、遊びの分だけ進行方向へ先回りして押し込み、歯を正しい面に当てておく。ただしこれは、遊びの量がいつも同じ、という前提の上に立っています。摩耗して遊びが増えると、増えた分がずれとして残る。

もうひとつが本命で、テーブル側のスケールでループを閉じてしまう。遊びがループの中に入るので、スケールで補正できます。このスケールの分解能は1マイクロメートルで、補正なしで30マイクロメートルあったへこみが、0.6マイクロメートルまで小さくなりました。

ただし、負荷側で閉じるループには制約があります。モータ側で閉じたループは安定余裕を取りやすいのに対して、テーブル側で閉じたループは、機械の共振(反共振252ヘルツ、共振563ヘルツ)が効いてゲインを上げられません。テーブルの位置を直接測れるセンサほど、制御は難しくなります。

このモデルの限界

テーブルの本当の位置は、スケールの分解能と、その先に残るAbbe誤差(このモデルには入れていません)まで、としか言えません。摩擦は代表値で、実機で測ったものではありません。ラックの熱膨張は、このモデルでは計算していません。先回りの補正は繰り返し性が前提で、それが崩れたら、全部を閉じるループだけが頼りになります。ここから先は実機の仕事です。

実機がなくても、確かめられること

遊びの数字をゼロにすると、ヒステリシスの幅も、四頂点のへこみも、自動でゼロになります。失敗が、たった一つのパラメータの関数になっている。壊すと不変条件テストが赤くなる、という形で確かめてあります。摩耗が進むシナリオでは、スケールとエンコーダの差から測った遊びが保全アラームの線(120マイクロメートル)を越えて検知されるのが、809サイクル目あたりでした。実機がなくても、いつ手を入れるべきかの目安までは、机の上で出せます。

分かったこと

まっすぐな円が、四か所だけ内側にへこむ。原因は歯の遊びで、方向転換の最初の一回だけ効くヒステリシスでした。ソフトのあの壊れ方と、同じ話です。直しは先回りの補正か、テーブル側でループを閉じること。そして、どのセンサで位置を測るかで見える誤差が変わり、真の位置を測れるセンサほど制御が難しいことも分かりました。

触ったことのない機械でも、パソコンの中でならここまではたどれます。別の機械でも、同じ手順を試しているところです。

補正なしと補正ありのボールバー比較
左はモータのエンコーダだけで動かした軌跡、右はテーブル側のスケールでループを閉じた軌跡。同じ円をなぞらせている。左の軌跡は四か所だけ内側にへこむ。実寸30マイクロメートルほどのへこみを400倍に拡大してあります。

コードと詳しい諸元・検証は GitHub に置いてあります。

https://github.com/logicia32/xy-stage-labhttps://github.com/logicia32/xy-stage-lab

この記事は Zenn に初出したものを加筆・補足したものです ── Zenn の元記事を見る