リニアライゼーション・「Gコード」円弧補間を微小直線化(フリーソフト公開)

NC

円弧補間を微小直線化するアプリの作成しました。
まずは今回の記事の内容とはちょっと外れますが、リニアライゼーションと言う言葉を聞いたのは、5軸機を始めたころで、かなり昔でした。
筆者が5軸加工機を触り始めた2006年は先端点制御機能が一般的になり始めた時期でした。
先端点制御は、直行軸と回転軸を同時に動かしても、工具の切削点が維持される機能です。
当時触っていた5軸機は、EUメーカーのハイデンハイン制御機でしたが、EU機を選択したのは、ファナックの制御機ではまだ未完成とのウワサもあり、一例では、先端点制御機能と高精度輪郭制御機能を同時に使用すると、機械がガクガクした動作になる言っている加工屋さんもいました。
そんな感じで、国内ではまだ完全に先端点制御が完成されていない時期だと判断したからです。
先端点制御機能がない5軸機も多くありましたから、回転動作での加工誤差をカバーするため、5軸CAMには、微小直線に分割する機能が備わっていて、CAM屋さんはリニアライゼーションと呼んでいました。
今回は、5軸ではなく、2軸が対象で、Gコードの円弧補間を微小直線化しようと言う試みです。

リニアライゼーション・微小直線化

同時5軸加工

もう少し、5軸の話をします。
イメージしやすいように、主軸側に回転軸がある構成で考えてます。
先端点制御機能を使用しないで、直行軸(X,Y,Z)と回転軸を同時に動かしての同時5軸加工の場合、
主軸はXYZ指令の位置(P1→P2→P3)へ直接向かいますが、回転軸も回転するため、工具先端では削り残りや削りすぎが発生してしまいます。
先端点制御機能は、この誤差が出ないように、主軸切込み軸を調整してくれますが、先端点制御機能がない場合には、この誤差はそのまま加工してしまいます。

この誤差は、一行の指令での移動距離が長いほど大きくなります。
したがって、当時の5軸CAMは、回転が発生する移動指令を、微小直線に分解する処理を行っていてリニアライゼーションと呼ばれていました。
この一回の移動距離を微小にする事で、先端点制御を使用しない同時5軸制御でも、誤差を少なくして加工しようと言う事です。
ところが、微小指令になる事で、NCデータサイズは格段に大きくなり、読み込みの遅い制御機では太刀打ちできません。
読み込み機能も、ハイデンハインやレダースなどの、EU制御機は、1000行や10000行先読みと言われていましたから、読み込みスピードもヨーロッパに軍配が上がっていた時期だったと思います。
現在では、ほぼ解消されていると思います。

2軸・3軸加工パスの直線化

回転軸を同時に動かさない場合、上述の誤差は起きません。
むしろ、微小直線化する事で、データ容量が増え、制御機の読み込み能力によっては機械動作は不安定になります。
ただ、制御機能力も急上昇していて新しい制御機では、3D加工でも浅切込み高速切削の加工方法が推奨されるようになると、CAMの内部計算の問題なのか、微小直線補間(G01)での出力が普通でした。
ところが古い制御機では、読み込み能力や容量の問題で、微小直線での動作は不向きでした。
そこで今度は微小直線補間を円弧に近似するCAMも出てきました。
当時紙テープやDNC運転の古いマシンを動作させる場合には、結構重宝した記憶があります。
現在では、円弧近似データのほうが、一般的になっていると思います。
そんなわけで、今考えている、円弧補間の直線化は、逆戻りな発想かもしれません。

直線補間と円弧補間

Gコードで、2軸での輪郭動作定義をする場合、直線(G01)、円弧(G02,G03)のコードで定義していきます。
同時3軸の場合でも、ヘリカルオプションが有効な機械の場合、円弧補間で定義できます。
上でも書きましたが、円弧補間を使ったほうが、データサイズも小さく、NCデータを確認する場合でも動きを想像しやすいデータになります。
ところが、これを受け取った制御機はどうでしょう?
筆者はNCの制御方法には、まったくのド素人ですが、円弧補間の場合でも結局は各軸に分解され直線的な指令をしているのではないでしょうか??
もし、私が制御機だったら、円弧補間での指令より、直線補間での指令が楽なように思います。
最近は制御機は、送受信や処理能力も高速になったので、全て直線補間でもいいのでは?との考えもあります。
ただ、問題もあります。
制御機によっては、工具径補間(G41,G42)させる場合、エラーになる可能性のあります。
ここが解決できれば、制御機的には、すべて直線のほうがいいのではないでしょうか?

事前に直線化する制御機がもある?

筆者の想像ですが、あるメーカーの高速ミリングマシンは受け取ったGコードを円弧補間であっても、事前に微小直線化してCNCへ送っている予感がしています。
この制御機は、NCデータを読み込むとシミュレーション機能で動作の確認ができますが、シミュレーション時の、Gコードがすべて直線補間に変換されていました。
上で問題にした円弧補間の工具径補正の場合でも、補正が適応されたデータがシミュレーションされています。
つまり、制御機内部に円弧動作や補正を任せるのではなく、事前にソフト的に補正経路を直線化したデータを制御機へ送っているイメージです。
実際にこのシミュレーション用に変換されたコードで機械が動作するのかは、検証できていませんが、筆者の推測では、制御機は全て直線補間で動作していると思っています。

2,3軸でのリニアライゼーションの効果は?

同時5軸でない場合、リニアライゼーションは効果はあるのでしょうか?
Ai「Google Gemini」 に聞いてみました。

NCコードのリニアライゼーションは、主に以下の目的で行われます。
・円弧補間を直線補間に置き換える:
・円弧補間の計算負荷を軽減し、加工時間を短縮できる。
・一部のNC装置では円弧補間がサポートされていない場合がある。
・シンプルな直線運動の方が制御が容易である。
・非線形な動きを直線的に近似する:
・複雑な形状を複数の直線で近似することで、プログラムを作成しやすくなる。
・加工精度が厳しくない場合、直線近似で十分な場合もある。

注意点
・精度: リニアライゼーションによって加工精度が低下する場合がある。
・計算負荷: 分割数や多項式の次数が増えると、計算負荷が増大する。
・工具の寿命: リニアライゼーションによって工具の摩耗が促進される場合がある。

なんとなく、私の思っていた事とだいたい一致してます。
ただ、加工精度や工具寿命の件はちょっと疑問です。

微小直線動作での加工精度検証

会社の3軸マシン用のCAMでは、等高線などの3D加工でも、円弧近似してくれますが、パラメータにより直線補間でも出力可能です。
このCAMを使用して、円弧補間モードと直線補間モードでNCデータを出力し加工テストしてみました。
結果的には、それほど差はありませんでしたが、すべりガイド機とLMガイド機で若干の差がでました。
すべりの方は、円弧補間のほうが加工時間も加工面も良好でしたが、逆にLMガイド機は直線補間のほうが勝っていました。
ただ、すべりガイド機のほうが、年式も古いので、製造年数の影響も出たかもしれません。
今回のテストでは、大きな差はみられませんでしたが、新しい機械で高速加工機であれば、効果がでるかもしれません。

2軸加工での、X,Y軸の比率を変えたい

前置きが長くなってしまいましたが、ここからが本題です。
今回作成ソフトの本来の目的は、X、Yの加工輪郭の比率をCADを使用せず、生のNCデータで調整できないか?と言う事です。
筆者の知る限りでは、円弧補間が含まれるGコード全軸同じスケールリングしか対応していないと思っていましたが、「GEMINI」に聞いた所、ファナックのGコードG51では可能だとの回答をもらいましたが、検証はできていません。
ただ下記は、「HEIDENHAIN iTNC530」の取説の抜粋ですが、円弧以外では各軸違う値でスケーリングはできるが、円弧補間では同じ比率が条件になるとありますから、制御機によってはできない場合もあると思います。

プログラミングの前に、次の点に注意してください。
円弧の座標を共有する座標軸は、同じ係数で拡大または縮小する必要があります。
各座標軸を、独自の軸固有のスケーリング係数でプログラミングできます。
さらに、すべてのスケーリング係数の中心の座標を入力できます。
輪郭のサイズは、中心を基準にして拡大または縮小され、必ずしも (サイクル 11 のスケーリング係数のように) アクティブなデータムを基準にして拡大または縮小されるわけではありません。
(Google 翻訳)

したがって、円弧補間を使用せず、全て直線補間であれば、各軸で違うスケーリングができそうです。
今回作成した、ソフトは、ここが目的になります。
直線補間のみのデータにすれば、Gコード指令を使って各軸違う比率にスケーリングできそうだと言う事です。
さらに、部分的とか特殊な変形させるソフトを開発する場合でも、直線(G01)コードは、次の行先の座標があるだけなので、円弧(G02,G03)に比べると、はるかに単純で楽です。
機械も年季が入ってくると、XYの加工精度比率に誤差が出てくる場合があります。
現状、XYの比率がよくない機械で精度を保つには、加工結果を基にCAD上で輪郭を描き直し、パスを出し直す事になりますね。
ところが直線補間のみのNCデータであれば制御機のスケーリングで対応できる可能性がありますし、専用にソフト開発する場合でも簡単になります
直線補間のみであれば、終点の座標値を誤差分だけ足し算引き算でいけそうです。
そんな訳で、あまり利用価値はないかもしれませんが、円弧補間が含まれるNCデータを、直線補間化するソフトを作成してみました。

円弧補間を直線分解する方法

トレランス以内で円弧を直線分割

直線化により円弧軌跡が変換でトレランス以上の誤差になると意味がありません。
指定トレランス以内に収まるように、直線分割する角度を求める計算式を求めます。

トレランス以内で、分割する角度は、「(円弧半径ートレランス)/円弧半径」のアークコサインで求められ、この角度の二倍で一分割の角度が求まります。
Gコードを読み取り、円弧補間の場合、円弧中心から円弧の始まり座標び向かう直線の角度から、分割角度ごとに円弧終点まで分割するような処理をさせます。

ソフト的には、対象円弧を、円弧の中心点から円弧始点への直線と、中心点から終点までの直線の範囲を、分割角度で分割した弦を直線に変換させています。

プログラム構成

  • NCデータファイルを読み込む
  • 円弧補間以外はそのまま出力
  • 円弧補間の場合、上記計算式に伴いトレランス内で直線分割する
  • 変換したデータをファイルとして保存する
  • 確認用としてオリジナルデータと直線化データをそれぞれDXFファイルにも出力可能

プログラム制限

  • 筆者のプログラミングスキルの問題で長いデータの場合に計算時間がかかりそうです
    一応、途中強制終了できるような仕様にしていますが、必要なデータのみサブプログラム的に、必要な輪郭だけのファイルにしておくほうが無難です。
  • 今回は、「I」「J」仕様の円弧補間のみの対応です。
    「R」方式には、対応していません。
    また、「I」「J」方式の場合、国内ではほとんど、「I」「J」値は、相対指令ですが、EUでは、アブソリュート指令も多いです。
    今回は、国内で一般的な相対指令仕様でのみ対応しています。

ソフト公開

「LinearizationOfArc.zip」のファイル名で公開しました。

こちらの、「自作ソフト公開」のページから、ダウンロードできます

展開後「README.TXT」に使用方法など書いてあります。
今後の展開としては、直線のみになった輪郭データを利用して、輪郭の一部分のみ変形できたらいいな~と思っています。
輪郭精度が重要な場合、主に輪郭の凸凹のフィレットが、削り過ぎたり、削り残ったり、する場合があります。
そのような場合、その部分のみ、NCデータを変形させる事で、輪郭加工精度を向上できないか?
とういう事です。

コメント

タイトルとURLをコピーしました