本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:このOSPのNCプログラムは正しいでしょうか?)

このOSPのNCプログラムは正しいでしょうか?

2023/10/16 01:29

このQ&Aのポイント
  • 初心者が投稿したNCプログラムの正当性を確認できない場合、以下のプログラムが正しいかどうか判断する方法について質問します。
  • NCプログラムの内容は、スクエアエンドミルの使用、工具長補正ナンバーの設定、下穴の加工、ヘリカル加工によるφ46の加工、平面ピックによるφ50の加工などが含まれています。
  • プログラムの制御はOSP-P200Mであり、変数や条件分岐などが使用されています。現在マシニングセンターに触れる環境がないため、正当性を確認できません。
※ 以下は、質問の原文です

このOSPのNCプログラムは正しいでしょうか?

2008/10/03 08:52

はじめて投稿します。
初心者ですが宜しくお願い致します。
《ご質問》
 以下のNCプログラムは正しいでしょうか?今現在マシニングセンターに触れる環境ではないので確認できません。宜しくお願いします。
※・T99→φ20のスクエアエンドミル
 ・H99→工具長補正ナンバー
 ・下穴(φ10)あり
 ・ヘリカルで深さ6ミリでφ46に加工し、平面ピック0.5でφ50に繰広げたい
 ・D99、D100は径補正ナンバー
 ・制御 OSP-P200M
N1 T99
N2 M6
VC1=2←コモン変数、ワークより2ミリ上空でスタート
N3 G00X0Y0S3300
N4 G56Z=VC1H99M3
N5 G41G01X0Y-23F200D99
N6 G03X0Y-23J23Z=VC1F200
N7 VC1 = VC1 - 2 ←ヘリカルZピック2ミリ
N8 IF[VC1 GE -6] N6 ←ワーク上面より6ミリまで加工
N9 G03G01X0Y-23J23Z-6F200
N10 G40G00X0Y0
VTOFD[100]=10 ←径補正ナンバー100に10の値を設定
N11 VC2=VTOFD[100] ←径補正ナンバー100をVC2に設定
N12 G42G01X0Y-23F200 D100
N13 G03X0Y-23J23F200
N14 VC2= VC2+0.5 ←平面ピック0.5を径補正値に加算していく
N15 IF[VC2 GE 15] N12 ←径補正値が15になったら加工完了
N16 G40G01X0Y0F200
N17 G00Z500
N18 M5
N19 M6
N20 M2

回答 (2件中 1~2件目)

2008/10/04 02:48
回答No.2

どういった状況でこのようなプログラムになるか等の加工事情は別としてのアドバイスとなります。
あくまでプログラムについてです。


>N1 T99
>N2 M6
>VC1=2←コモン変数、ワークより2ミリ上空でスタート
>N3 G00X0Y0S3300
>N4 G56Z=VC1H99M3
>N5 G41G01X0Y-23F200D99
>N6 G03X0Y-23J23Z=VC1F200
>N7 VC1 = VC1 - 2 ←ヘリカルZピック2ミリ
>N8 IF[VC1 GE -6] N6 ←ワーク上面より6ミリまで加工
>N9 G03G01X0Y-23J23Z-6F200
>N10 G40G00X0Y0

まずはココまでについて。
一応削り間違いは出さずに動くでしょうがプログラムとして多少の問題があります。
VC1が「2」からスタートして「-2」して「0」になる前に円弧動作していますよね。
これでは最初に「Z2」で空回りします。
この様なケースで変数を加算してから動かすか後で加算するか二通り考えられますが、今回は初期値として「2」を入れる事を尊重して、「先に加算してから動かす」方で回答します。

N1 T99
N2 M6
VC1=2←コモン変数、ワークより2ミリ上空でスタート
N3 G00X0Y0S3300
N4 G56Z=VC1H99M3
N5 G41G01X0Y-23F200D99
N6 VC1 = VC1 - 2 ←ヘリカルZピック2ミリ
N7 G03X0Y-23J23Z=VC1F200
N8 IF[VC1 GT -6] N6 ←先に変数を加算する様変更したのにともなって、ここは演算子「GE」をやめて「GT」にします。

N9 G03G01X0Y-23J23F200←先に変数を加算しているのでヘリカルは必要なくなりましたが、「Z-6」の高さで底を平らにする為に通常の円弧補間を追加します。

N10 G40G00X0Y0



では次、

>VTOFD[100]=10 ←径補正ナンバー100に10の値を設定
>N11 VC2=VTOFD[100] ←径補正ナンバー100をVC2に設定
>N12 G42G01X0Y-23F200 D100
>N13 G03X0Y-23J23F200
>N14 VC2= VC2+0.5 ←平面ピック0.5を径補正値に加算していく
>N15 IF[VC2 GE 15] N12 ←径補正値が15になったら加工完了
>N16 G40G01X0Y0F200
>N17 G00Z500
>N18 M5
>N19 M6
>N20 M2

について。

径補正の値を0.5ずつ変化させたいということだと、これではマズイです。
変わりません。
以下のように変えます。

VC2=10 ←径補正初期値としてVC2に10の値を設定
N11 VC2= VC2-0.5 ←平面ピック0.5を径補正値に加算していく。
最初のヘリカル部のアドバイス同様に先に変数を加算します。また最初は「+」していますが、径補正を変えて繰り広げるなら「-」させないといけません。


N12 VTOFD[100]=VC2 ←VC2に径補正ナンバー100を設定。元プログラムは解釈が逆で変化させたVC2が補正値に反映されません。
また
「VTOFD[100]=VTOFD-0.5」
のように直接計算するのも手で、あえてVC2を使う必要は無くなります。

N13 G41G01X0Y-23F200 D100 ←回答1で言われているように「G42」では逆です。

N14 G03X0Y-23J23F200

N15 IF[VC2 GT 8] N12 ←径補正値が8になるまでN11へ戻る。最初のアドバイスと同様の解釈と、補正値は小さくなるので数値を変更。

N16 G40G01X0Y0F200
N17 G00Z500
N18 M5
N19 M6
N20 M2


自宅での作業なので実機での確認はしていませんのであくまで参考程度です。ご了承下さい。


また、今回は元の意図を変えないように配慮させていただきましたが、これからこのようなプログラムを作るにあたって特に後半の50まで繰り広げる部分について多少のアドバイスを致したいと思います。


径補正を帰ることで穴径を拡げていますが、今回のケースでは径補正は変えずに円弧する半径自体を変数として変化させることをお勧めいたします。

VC2=23
N001
VC2=VC2+0.5
G41 G1 X0 Y-VC2 D99 ←径補正は工具番号通りの物が使えますね。
G3 J+VC2
IF [VC2 LT 25] N001 ←円弧半径が25になるまでループ

こんな感じです。

↓あるいは取り代を変数にする考え方。

VC2=2
N001
VC2=VC2-0.5
G41 G1 X0 Y-[25-VC2] D99
G3 J[25-VC2]
IF [VC2 GT 0] N001 ←取り代が0になるまでループ


径補正を変化させなくては実現しない加工もありますが、それ程の事情でない限りはなるべく径補正は「工具の実径」としたいところです。

それと老婆心ながらもう一つ。
動きとしては直接問題とはなりませんが最初の
「N4 G56Z=VC1H99M3」
の部分は注意が必要ですね。
間違いではありませんが、

G56Z100H99
M3
Z=VC1

と上空で一旦補正をかけ、目視あるいはスケールでの補正の確認をして
あらためて位置決めする事をおすすめします。
工具長補正値設定ミスを防ぐ観点からです。
※他の方法で既に確認が完璧な場合はこの限りではありません。

すでに解決したようですが、

私のした回答に誤りを見つけました。

IF文でループさせる前に径補正のキャンセルし忘れがあります。

後半のアドバイスでもそうです。

大変申し訳ありません。

例)
VC2=2
N001
VC2=VC2-0.5
G41 G1 X0 Y-[25-VC2] D99
G3 J[25-VC2]
G40G1X0Y0 ←この部分が抜けています!!
IF [VC2 GT 0] N001

お礼

2008/10/06 13:48

まーぼー様ご回答ありがとうございました。
大変勉強になりました。
またご質問することもありますので何卒宜しくお願い致します。
解決しました!

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2008/10/03 11:11
回答No.1

とりあえずΦ46の方だけ。参考までに

N1 T99
N2 M6
VC1=0
N3 G00 X0 Y0 S3300
VTOFD[99]=10
N4 G56 Z2 H99 M3
N5 G41 G01 X0 Y-23 F200 D99
N8 IF[VC1 GT 6] GOTO N10 
N9 G03 J23 Z=-VC1 F200
VC1=VC1+2
GOTO N8
G3 J23
N10 G40 G01 X0 Y0

※長いプログラムになれば、[IF分]より[WHILE分]の方が
処理時間が早いですよ。

すいません。OSPの取説にはWHILE分無いみたいです。
OSPは最近使ってなかったもので。
あと、少し訂正します。

N1 T99
N2 M6
VC1=0
N3 G00 X0 Y0 S3300
N4 G56 Z2 H99 M3
N5 G41 G01 X0 Y-23 F200 D99
N9 G03 J23 Z=-VC1 F200
VC1=VC1+2
IF[VC1 GT 6] N9   ←個人的にはこの位の変数であれば、正数を使う様にしています。 間違いが少なくなりました。
N10 G40 G01 X0 Y0    
   
基本的にプログラムは大丈夫だと思います。ただ
N12の[G42]は[G41]の間違いではないでしょうか?
あと、N6の円弧切削の箇所は、XYは変わらないので[X0 Y-23]は省略できます。
それとすいません、質問をよく見てなかったみたいで、2段の座グリ構造になってるのかと思い、Φ46だけ答えました。
Φ46にするのは、仕上げ代を肩肉2ミリ残して広げていくという解釈でよかったのですか?
加工プログラムは、材質等により変わってきますので…。
         

お礼

2008/10/03 11:34

ご返信ありがとうございます。
WHILE文というのがOKUMAのプログラミングガイドに乗ってないのですが、
参考までに教えて頂けますでしょうか?
また、先程教えて頂いたNCプログラムの意味はわかりますが、私が最初に
書いたNCプログラムは間違いなのでしょうか?

恐縮ですが私が作ったNCと他の方の作ったNCを見比べたいのですができればφ50の方も宜しくお願い致します。

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。