生産設備や装置の設計者さん向けに、“タメになる”部品設計の秘訣について、製造現場目線で情報を共有させていただくシリーズの第9回です。
前回までに、切削加工の基本事項や、設計時に押さえておいていただきたい注意点などについて説明させていただきました。
現在、切削加工において、特に精密加工の分野ではNC加工が主流となっています。NC加工機が現れる前は、職人さんが自らの腕と勘と度胸で汎用機を使って加工していたわけです。
現在でも汎用機による加工が使われる場面は多いですが、加工精度を求められる場合は、やはりNCによる加工が必須となってきています。また、汎用機の職人が高齢化し、リタイアが相次いでいますので、必然的にNC加工にシフトしている状況でもありますね。
目次
1. NC加工って何だろう?
今回は、NCプログラムによるNC加工の基本についてフォーカスしてみましょう。NCとは、Numerical Control = 数値制御という意味ですね。
アナログ的にハンドルを回して操作するのではなく、NCフライスやマシニングセンタなどの工作機械がプログラムに基づいて精密に位置や速度を自動で制御して加工するということです。
ワークや主軸の位置、刃物の回転数などをデジタルの「数値」で「制御」して動かすので、数値制御=NCというわけです。この工作機械を動かすためのプログラムがNCプログラムと呼ばれています。
NCプログラムは、工作機械の横に付いている「制御装置」でオペレータが入力して作る場合もありますし、PCのアプリケーション(CAM)で作成したプログラムを制御装置に転送して利用するケースもあります。簡単なプログラムは前者が多いですね。
ベテランのオペレータは、かなり長いプログラムでもあっという間に手で入力して、ミスなく完璧な加工を実現することができます。図1のように、多くのマシニングセンタには制御装置が付属しています。
制御装置には、補助的に機械を動かすためのスイッチやハンドル、そしてプログラムを作成するための入力用キーボードとディスプレイが備わっています。
そして、NCプログラムを格納し、実行するためのメモリや演算装置等が内蔵されているわけですね。
2. NC加工の計画
今回は、ある部品の加工の一部を詳細に見ていくことで、NC加工の基本的な仕組みを疑似体験していただきたいと思います。
2-1 今回加工するのは・・・
今回も、この部品に登場してもらいましょう。図2-1、図2-2に示されるような“ブロック”です。
それぞれの面に、穴や溝やポケットの加工が必要になります。全ての加工を解説していては大変なので、今回は<面3>のポケット部分の加工にフォーカスしてみましょう。
実際にエンドミルを動かしての加工が必要な要素ですね。以前の記事で、それぞれの加工工程について順を追って細かく疑似体験していただきました。
参考記事:
【第2回】切削加工を疑似体験してみよう!(前編)
【第2回】切削加工を疑似体験してみよう!(後編)
後編の最後でこの<面3>の加工について、以下のように説明させていただいています。
<面3> スクエアエンドミルによるポケット加工(図2-3)
「ツール取り付け」 → 「工具測長」 → 「プログラム作成」 → 「起動」
この「プログラム作成」と表現している部分が、まさに今回のテーマである「NCプログラムの作成工程」となります。
今まで曖昧にしてきましたが、現在の切削加工において最も重要な部分とも言えますので、今回はしっかりと解説していきたいと思います。
2-2 NC加工の計画を立てよう!
まず、NCプログラムのオペレータが何をするかと言うと、図面や3Dモデルを見て、どのように加工するか、ということを考えて具体的な加工方法を計画します。
NC加工においては、この計画の部分が最も経験と知識が必要な部分です。オペレータの一番の仕事がこのような加工の条件などを「決めること」になります。
主に、次のような項目を、決定していきます。
- 座標系(原点の位置、XYZ軸の方向)
- 使用するエンドミル(種類、大きさ、突き出し量等)
- 加工の段階(粗加工、仕上加工)とツールパスのイメージ
- 加工条件 (送り速度、回転速度)
順を追ってみていきましょう。
1. 座標系
図1のような機械の前に立っていると想像してみて下さい。
この時、基本的には左右方向がX軸方向、前後方向がY軸方向、上下方向がZ軸方向となります。
この前提で、加工の原点とX, Y, Zの基準方向をどの向きにするかといった加工の座標系を決めていきます。ここでは、加工の座標原点は「X方向(左右)、Y方向(前後)はワークの中央、Z方向(上下)はワーク上面」とします。
この位置が、加工時のX=0.0、Y=0.0、Z=0.0の原点ということですね。
2. 使用するエンドミル
このポケット部分の形状をよく見ると、幅40mm、奥行き40mm、深さ10mmで、4つの隅にR5の隅アールが付いています。
底面には隅アールが付いていないので、「エンドミルの種類はフラットエンドミル」を選択します。
隅アールが5なので、ここでは「エンドミルの大きさはΦ10mm」のエンドミルとします。
ポケットの深さが10mmなので突き出し長さは10mm以上あれば良いのですが、あまり短いとワークを固定するクランプとホルダがぶつかる可能性があります。ここでは、クランプの高さ10mmとさらに余裕を見て、「40mmの突き出し量」としましょう。
この時、エンドミルの突き出し量(L)は L/D<5となるように設定するのが基本でしたね。この場合は、50mm未満であればOKです。
ここで、Dはエンドミルの直径です。
※ 実際には、隅アールと同じ径のエンドミルで加工すると、アール部分でエンドミルが必要以上に振動して綺麗に仕上がらない場合があります。丁寧な職人さんは、1段階小さい径のエンドミル(この場合例えばΦ8など)で、ツールパスも円弧状のプログラムを作って綺麗に仕上げたりします。
3. NC加工の段階とツールパスのイメージ
次に粗加工と仕上げ加工をどのように進めていくか、ツールの軌跡(ツールパス)をどのように設定するか決めていきましょう。
まず、加工の段階としては、粗加工と仕上げ加工を行います。粗加工は、体積を削っていくステップですね。Φ10のエンドミルを使って、深さ10mmのポケットを削りますので、直径の半分の5mmずつ高さを変えて加工しましょう。
ポケットの側面は綺麗に仕上げたいので、仕上げ加工を行います。仕上げ加工用に、少しだけ余肉を付けておきます。この余肉を、仕上げ代(しあげしろ)等と呼びますね。ここでは、片側0.3mmの仕上げ代としておきましょう。
仕上げ加工は同様に、Φ10のエンドミルを使用して、ポケットの輪郭に沿って側面を加工します。
この方針に従って、具体的なエンドミルの軌跡をイメージしていきましょう。
【ステップ1 深さ5mmの粗加工】
粗加工では、Φ10mmのエンドミルを使って、39.4mm x 39.4mmの領域を効率よく削り取っていく必要がありますね。
40mmx40mmでないのは、この粗加工では仕上げ代(0.3mm)分だけ内側の領域を削るためです。
①深さ5mmで中心
②深さを変えず、外周と中心のちょうど真ん中を1周
③さらに39.4mmx39.4mmに沿わせて1周
こんな感じでエンドミルを動かしてみましょう。
エンドミルの直径がΦ10mmであることを考慮しながら、動きに合わせてエンドミル先端中心位置の座標を書き出してみます。イメージとしては、図3-1のようになります。
ワークを真上から見たときに、エンドミルがどのように動くかを模式図にしてみました。
( )内の数字は、左から、X座標、Y座標、Z座標になります。
このように動かせば削りたい領域を全て効率よく削り取ることができそうですね。このエンドミル先端中心位置の描く軌跡を、「ツールパス」と呼びます。
【ステップ2 深さ10mmの粗加工】
次に、エンドミルをさらに5mm深くして加工します。Z座標が-5.0から、-10.0に代わるだけで、X座標、Y座標の動きはステップ1と同様ですね。
【ステップ3 深さ10mmで仕上げ加工】
仕上げ加工は、側面に沿って仕上げ代分だけ、さらっと削っていきます。具体的には、図3-2のような動きになると思います。
余談ですが、エンドミルの動き方を決めるにあたって、進む方向も大事な要素になります。基本的に、エンドミルの進行方向右が壁側(削られる部分)になるように設定します。
エンドミルは基本的に時計回りに回転しています。そうすると、進行方向に対して右側は、エンドミルの刃が上から下に切り崩すように進みます。これを「ダウンカット」と呼びます。
逆に進行方向に対して左側は、下から上に切り上げるように進みます、これを「アップカット」と呼びます。
基本的には、アップカットよりもダウンカットの方が削った後の状態が良くなりますので、ダウンカットでの加工状態となるように、進行方向を工夫します。
本来であれば、底面に対しても粗加工で余肉を付けておいて、仕上げ加工を行います。
また、側面の仕上げ加工については、工具径の補正をしながら加工するのが基本ですが、ここではイメージを掴んでいただくことを優先して、細かい内容までは立ち入りません。
4. 加工条件
次に、3のステップごとに加工条件を決めていきます。加工条件とは、それぞれのツールパスにおける、回転速度(S)と送り速度(F)となります。
回転速度(S)は、主軸(エンドミル)の回転速度で、1分間に回転する回数です。単位はRPM又は、min-1です。
送り速度(F)は、主軸が1分間に動く速度で、単位はmm/minです。
これらを切削速度(V)やエンドミルの直径(D)、エンドミルの刃数(Z)、1刃当たり送り量(f)などから、ワークの材質や削りの方法、エンドミルの材質(ハイスや超硬など)に応じて経験値や実績のデータベースより決めます。
主に、次の式で最適な加工条件を決めていきます。
回転速度を求める式: S = (1,000 x V)/( π x D )
送り速度を求める式: F = S x Z x f
※ 切削速度(V)はエンドミルの刃先が1分あたりに移動する距離[m/min]です。
※ 1刃当たり送り量(f)はエンドミルの1刃当たりの切込み量[mm/1刃]です。
実際には、それぞれの加工業者やオペレータが持っている、ノウハウとも呼べる標準の条件を使うケースが多いと思います。
設計者として参考になるとすると、それぞれのエンドミルメーカーの出している推奨条件を見ることですね。
例えば、下記のミスミのサイトでも、エンドミルの条件表が掲載されています。
※ミスミ『金属加工用工具・消耗品』デジタルカタログ(2019年3月発刊)P438を参照
具体的には表3-1、表3-2のような表ですね。
素材とエンドミルの直径ごとの切削条件が出ています。実際にはこの数値を参考に、数値を調整します。
今回は、ワークはアルミ合金、エンドミルはハイス鋼 Φ10の2枚刃で条件を考えましょう。
そうすると、まずは次のような切削条件で良さそうです。
【ステップ1 深さ5mmの粗加工】及び【ステップ2 深さ10mmの粗加工】
送り速度(F): 170mm/min
回転速度(S): 1,050min-1
※ 表3-1より
【ステップ3 仕上げ加工】
送り速度(F): 490mm/min
回転速度(S): 1,270min-1
※ 表3-2より
ここまで決めれば、後は実際のNCプログラムを作っていくだけです。
2-3 NCプログラムを作って動かしてみよう!
さて、それでは具体的なNCプログラムを一緒に組みながら、画面上で機械を動かしていってみましょう。
まずは機械を動かす前の準備ですね。段取り作業で、ワークの座標系やエンドミルのセットを行います。
<加工前の段取り> ① <面3>を上に向け、平行出ししてクランプで固定。② ポイントマスター等で原点を割り出し、座標系に入力。加工用座標系「G54」に入力。③ エンドミルを取り付け、ツールプリセッタ等で測長し工具長を入力。 粗加工用のエンドミル:工具番号01 H01 仕上げ加工用のエンドミル:工具番号02 H02 |
ここで、座標系のG54というのは、今回利用する機械で任意に設定できる加工用の座標系の名前です。通常は、G54~G59までの6個の座標系を任意に設定することができます。
工具番号は、機械側でツールを識別するための工具番号です。通常、工作機械は複数のエンドミルを格納しておくことができます。そしてそれぞれの工具番号ごとに、工具補正値H〇〇を設定しておくことができます。
使用する工具ごとにツールプリセッタで工具長を設定し、工具補正値を登録しておきます。
ここまでの下準備をして、実際のプログラムを作成し、機械に転送して動かします。機械はプログラムに忠実に従って動作します。実際のプログラムは、例えば次のような記述がされます。
G 00 G 90 G 54 X 0 Y 0 ;
このように、NCプログラムは、アルファベットと数字の組み合わせが羅列され、行の最後にセミコロン“ ; ”で終わります。
このセミコロンからセミコロンまでが、機械が実行する1つの単位で「ブロック」と呼ばれます。利用されるアルファベットは主なものに、準備機能: Gと補助機能: Mなどがあります。アルファベットの後の数字ごとに特定の機能が割り当てられます。
例えば、G 00だと早送りで移動、G 01だと指定された送り速度で直線移動、といった具合です。
機械の動作を決めるのが、主軸機能: Sと送り機能: Fです。この後に具体的な数値を入れると、主軸の回転数や、送りの速度を指定できます。
例えば、S 1000とすると、1000min-1で主軸(エンドミル)が回転するように指定します。
そして、X、Y、Zが実際に主軸の次に動く座標値を指定します。X 0 Y 0とすると、次にX=0.0、Y=0.0の原点に移動するということです。
したがって、上のプログラムは、G54の座標軸の原点に、早送りで移動する、という指令のブロックになります。
それでは、順を追いながら最初からNCプログラムを見ていきましょう。
01 O 1000(POCKET); 02 G 91 G 28 Z 0 ; 03 G 28 X 0 Y 0 ; 04 G 00 G 17 G 40 G 80 G 98 ; 05 M 01 ; |
左側の数字2桁は識別のための行番号です。
01行目 O 1000はプログラムの名前です。Oの後に4桁の数字で、プログラムごとに識別するために名前を付けます。
通常のパソコンと同じように、NCプログラムは名前を付けて制御装置の目盛りに保管しておくことができます。また、メインプログラムとサブプログラムを分けて作り、サブプログラムをメインプログラムで呼び出す、などの入れ子構造にすることもできます。
02行目~05行目は、初期設定だと思ってください。02 行目、G 91 G 28 Z 0は、機械座標系(G28)のZ基準位置(Z 0)に戻る指令です。
03 行目、G 28 X 0 Y 0は、機械座標系のX基準位置、Y基準位置に戻る指令です。
この時点で、機械の中は下の図のような状況になっています。
04 行目、G 00はこれからの移動を早送りにする指令。G 17は円弧補間指令する際の平面の選択(G 17はX-Y平面)、G 40は工具径補正のキャンセル、G 80は固定サイクルのキャンセル、G 98は固定サイクルの初期点への復帰指令です。
これらは、もしこの時点で有効になっていたとしたら、念のためキャンセルして初期化しておく、といった意味合いがあります。
05 行目、M 01はオプショナルストップといって、一度ここでプログラムの実行を一時停止する、という指令です。オプショナルストップは好きな位置に配置できますので、プログラム中で何か確認が必要なときなどに入れて、問題なければプログラムを続きから再開するということを行います。
続いて06行目から、いよいよ動作するプログラムの開始です。
06 N 100 (D 10 T01 H01) 07 T 01 M 06 ; 08 G90 G 54 X 0 Y 0 S 1050 ; 09 G 43 Z 50.0 H 01 M 03 M 08 ; 10 G 01 Z 5.0 F 1000 ; |
06行目、N 100はシーケンス番号と呼ばれます。プログラムの区切りの良いところで一度区切る、“栞”のようなものですね。
07行目、 T01 M06で工具を呼び出します。T01で、工具番号01番に入れた粗加工用エンドミルを指定します。M06で、工具交換し、工具が加工スペースに現れます。実際には、工具交換用のアームが機械の横から出てきて、ホルダを掴み、主軸に取り付けられているホルダと準備中のホルダを一瞬で交換します。
08行目、工具を1,500min-1(S 1050)の回転数に指定し、座標系G 54のX=0、Y=0に早送りで移動させます。
09行目、G43は工具長補正の指令です。H 01の数値をこの座標系でZ=50.0とする工具補正を意味します。高さ50mmのツールプリセッタで工具長の登録をしているため、50mm分オフセットさせた位置がZ=0であると機械側に認識させるということですね。
M03は工具の回転(Sで指定した回転数)、M08はクーラントの吐出開始です。クーラントは切削液とも言われますが、ワークや、工具に至るところから吹きかけられ、加工による熱を除去したり、切り屑を排出したり、切削箇所の潤滑性を上げる、などの役割があります。クーラントをかけながら加工することを湿式加工、クーラントをかけないで加工することを乾式加工などとも言いますね。
10行目、1000mm/min(F1000)の送り速度で、直線移動(G01)でZ=5.0まで移動します。
いよいよワークに刃物が入っていきます。
11 Z-5.0 F 170 ; 12 X 7.5 Y-7.5 ; 13 Y 7.5 ; 14 X-7.5 ; 15 Y-7.5 ; 16 X 7.5 ; |
11行目、Z-5.0まで、送り170mm/minで下がります。
12~16行目で中心と外周の真ん中を削るツールパスになります。XやYなどの座標値は各ブロックで指定しなければ、前の状態のままと言うことです。
グルっと一周エンドミルを回すことで、一回り小さい四角形のポケットが加工できました。
17~21行目で、さらに外周に沿っての加工が進みます。
17 X 14.7 Y-14.7 ; 18 Y 14.7 ; 19 X-14.7 ; 20 Y-14.7 ; 21 X 14.7 ; |
これで、深さ5mmでの仕上げ代0.3mm分を残した粗加工が完了です。
21行目までで、深さ5mmの粗加工が完了です。
引き続き同じエンドミルで、深さを10mmにして加工します。
22 Z 50.0 ; 23 X 0 Y 0 F 1000 ; 24 Z 0 ; |
一度、エンドミルを高く上げて退避し、中心位置まで移動します。そして、次の加工のために、高さ0まで下げておきます。
25行目~35行目が、深さを10mmにしての粗加工の動きです。
25 Z-10.0 F 170; 26 X 7.5 Y-7.5 ; 27 Y 7.5 ; 28 X-7.5 ; 29 Y-7.5 ; 30 X 7.5 ; 31 X 14.7 Y-14.7 ; 32 Y 14.7 ; 33 X-14.7 ; 34 Y-14.7 ; 35 X 14.7 ; |
Zの数値だけ-10.0mmになっただけで、後は12行目~21行目と同様の動きになります。
ここまでで粗加工は終了です。
粗加工が完了しましたので、ツールを交換して仕上げ加工に移ります。ここでは工具交換までのプロセスになります。
36 Z 50.0 M 05 ; 37 G 91 G 28 Z 0 ; 38 G 28 X 0 Y 0 ; |
36行目、ひとまずZだけ高さ50mmに移動します。不用意なプログラムミスなどで主軸がワークなどとぶつかるリスクを下げるために、まずはZを上げて、退避するということを優先します。M 05は主軸回転の停止です。
37行目、機械座標系のZ= 0.0の位置に上げます。
38行目、機械座標系のX=0.0、Y=0.0に移動します。
39行目から、仕上げ加工のプログラムに入りますので、N200と栞を付けておきます。40行目で、仕上げ加工用の工具(工具番号02)と工具交換します。
39 N200 (D 10 T 02 H 02) 40 T 02 M 06 ; |
ここからは仕上げ加工に入ります。
41 G 90 G 54 G 00 X 0 Y 0 S 1270 ; 42 G 43 Z 50.0 H 02 M 03 ; 43 G 01 X15.0 Y-15.0 F 1000 ; 44 Z 5.0 ; 45 G 01 Z-10.0 F 490; 46 Y 15.0 ; 47 X-15.0 ; 48 Y-15.0 49 X 15.0 |
41行目、回転数を1270min-1に指定し、加工座標G54の原点(X=0.0、Y=0.0)に早送りで移動します。
42行目、工具補正02に指定し、高さを50mmまで移動、工具を回転させます。
43行目、送り速度1000mm/minで、X=15.0、Y=-15.0の位置に移動します。
44行目、Zを5.0まで下げます。
45行目、送り速度を490mm/minに変更し、Zを-10mmまで下げます。
46行目~49行目で、仕上げ面を1周ぐるりと回します。
加工が終わったので、収束に向けて機械を動かします。
50 G 00 Z 100.0 M 05 ; 51 G 91 G 28 Z 0 ; 52 G 28 X 0 Y 0 ; 53 M 30 ; |
50行目で、ひとまずのZの退避と主軸回転の停止、51行目で機械座標系のZ原点への復帰ですね。
52行目で、機械座標系のX原点、Y原点への復帰。
53行目のM 30は、NCプログラム(O 1000)の終了です。
これで、一連のポケット加工のプロセスが完了です。後は、段取りを解いて、製品を取り出し、検査に移ることになります。
お疲れさまでした。ポケット加工の計画からNCプログラム作成と実行までの、とても長いプロセスを一緒に疑似体験していただきました。
実はポケット加工のNCプログラム作成という1つの工程だけでも、ここまでの作業が必要になるわけですね。機械はNCプログラムで指示したこと以外の動作はしません。
NCプログラムには、加工すべき内容を100%機械が実行できるように、漏れなく指示を記述していかなければいけないのです。逆に言えば、機械はNCプログラムに忠実に動きます。もし、1つでもコードや数値の入力ミスなどがあると、大変なことになります。
例えば、46行目でZ-10.0としている部分を間違えてZ-100.0としていたらどうでしょうか。おそらく、エンドミルがホルダごとワークに突っ込んでしまいますね。ワークをダメにしてしまうだけでなく、機械の主軸を傷めたり、場合によっては交換が必要になる程のダメージを与えてしまう可能性もあります。
このように、NCプログラムはオペレータの知識や経験と共に細心の注意が合わさって初めて完成するものになります。そして、NCプログラムで実施する加工内容を、機械のオペレータが忠実に段取りする必要がありますね。座標系の入力を誤ってしまえば、そもそも加工が成立しなくなってしまいます。
NCプログラムのオペレータと、機械のオペレータの連携と信頼関係も重要な要素となります。NC加工と言うと、機械が自動で加工してくれるイメージが強いと思いますが、このように職人の技術や知識と、細かい作業があって初めて達成できる加工であるということを、是非覚えておいて欲しいと思います。
何せ、簡単なポケット加工をするのに、54ブロックものNCプログラムが必要になるわけです。NC加工の基本に加え、設計者がしっかりと加工のイメージを持ち、加工しやすい形状に設計することがいかに重要か、わかっていただけたのではないでしょうか。
是非、機械部品を設計する際には、頭の中でエンドミルを回しながら、加工現場の目線に立った設計を心掛けていただけると大変嬉しく思います。