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

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

ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ヘリカル仕様で無いマシン)

ヘリカル仕様で無いマシン

2023/09/06 15:49

このQ&Aのポイント
  • オークマOSP7000Mを使用しているが、ヘリカルプログラムのエラーが出た
  • オークマ担当者によると、円を分割すれば可能だが理解できない
  • 複数の穴径の加工をするためにMODINとG91を使ったプログラムを教えてほしい
※ 以下は、質問の原文です

ヘリカル仕様で無いマシン

2008/06/27 21:30

初めて投稿します。昨年から部署移動で、オークマOSP7000Mを使用してます。昨年の秋にオークマOSP200が入りました。7000を使ってた方が、現在200を使ってます。それで、ヘリカルのプログラムを丸々コピーした物を7000に読み込ませた所、軸指令2でエラーが出たので、オークマに問い合わせしたら、ヘリカル仕様で無いとの事でした。で、オークマ担当者曰く、円を分割すれば可能との事なのですが、良く理解出来ませんでした。ワンツールで、複数の穴径の加工をするので、MODINとG91を使ってマクロで組めるプログラムを教えて頂ければと思います。参考までに、現在、組んでるプログラムを下記に書いときます。
例、100丸H7公差、板厚50,溶断にて90丸の下穴貫通。5ヶ所で荒加工で、径28の4枚刃の三菱のフルバックです。仕上げは、ボーリングバー使用。
メインの例↓
T19M6
G15H1
X0Y0
G56Z100H19
S1500M3
M8
MODIN OR100
CALL O100
MODOUT
G0Z500M9
M5
G15H11
X0Y600
M01
G15H1
M63
M6
M2
サブの例↓
O100
X50Y50(書き込み文字の都合で穴数(穴位置)は省略します)
RTS
OR100
GOZ5
G1Z0F4000
CALL OR101 Q51
G0Z100
RTS
OR100
G91Z-1F4000
G41G1X-25Y-25F1200D19
G3X25Y-25R25F450
G3I0J50
G3X25Y25R25
G40G1X-25Y25F2500
G90
RTS

質問者が選んだベストアンサー

ベストアンサー
2008/07/09 07:01
回答No.5

やはりユーザタスク2が付いていたみたいですね。
既に色々と試されているようですが、一例を書き込みします。

>ワンツールで、複数の穴径の加工をするので、
>MODINとG91を使ってマクロで組めるプログラムを教えて頂ければと思います。

G91は使用していませんが、現状のメインプログラム(MODIN)はそのまま使えるようにした例が下記です。
φ100とφ120の例で、現状にならってサブを分けてみましたが、これもまとめたほうが良いかも知れません。
XC=~・YC=~・ZS=~は、システム変数を用いてワーク座標系の現在位置を読み込んでいます。
----------
G15 H1
T19 M6
G0 X0 Y0
Z100. G56 H19 D19 M3 S1500
M8
MODIN OD100
CALL O100
MODOUT
MODIN OD120
CALL O120
MODOUT
M9
G0 Z1000. M5
M63
M6
M2
-----
O100
X0 Y0
X300. Y0
RTS
-----
O120
X300. Y200.
X0 Y200.
RTS
-----
OD100
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X=25.+XC Y=-25.+YC G41 F1200
G3 X=50.+XC Y= +YC J25. F450
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=50. ZL=1. AP=1.
G3 X=25.+XC Y= 25.+YC I-25.
G1 X= +XC Y= +YC G40 F2500
G0 Z100.
RTS
-----
OD120
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X=35.+XC Y=-25.+YC G41 F1200
G3 X=60.+XC Y= +YC J25. F450
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=60. ZL=1. AP=1.
G3 X=35.+XC Y= 25.+YC I-25.
G1 X= +XC Y= +YC G40 F2500
G0 Z100.
RTS
-----
OHEL1
AA=0 AE=360.
NJ1 AA=AA+AP
IF[AA GE AE]NJ2
G1 X=COS[AA]*RD+XC Y=SIN[AA]*RD+YC Z=-ZL*AA/AE+ZS M132
GOTO NJ1
NJ2 G1 X=COS[AE]*RD+XC Y=SIN[AE]*RD+YC Z=-ZL*AE/AE+ZS
ZS=ZS-ZL M133
RTS
----------
本NCプログラムを参考にされる場合は、充分注意して確認をして下さい。
また、回答(4)では書き忘れていましたが、M132からM133まではシングルブロック無効になるので特に注意して下さい。

本例では下(Y-)ではなく右(X+)にアプローチしていますのでJ60.ではなくI-60.になります。
-----
OD100
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X=25.+XC Y=-25.+YC G41 F1200
G3 X=50.+XC Y= +YC J25. F450
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=50. ZL=1. AP=1.
G3 I-50.
G3 X=25.+XC Y= 25.+YC I-25.
G1 X= +XC Y= +YC G40 F2500
G0 Z100.
RTS
-----
OD120
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X=35.+XC Y=-25.+YC G41 F1200
G3 X=60.+XC Y= +YC J25. F450
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=60. ZL=1. AP=1.
G3 I-60.
G3 X=35.+XC Y= 25.+YC I-25.
G1 X= +XC Y= +YC G40 F2500
G0 Z100.
RTS
-----

既にご自分で直されているかもしれませんが、確認のため書いておきます。
◇1周回すところ以外は「R」でも構いません。
◇「0」を書いたほうが分かりやすそうなのでそのように変えました。
◇「OR24」は直線アプローチにされたのですよね?
-----
OR40
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X=10.+XC Y=-10.+YC G41 F500
G3 X=20.+XC Y= 0 +YC R10. F300
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=20. ZL=1. AP=1
G3 X=10.+XC Y= 10.+YC R10.
G1 X= 0 +XC Y= 0 +YC G40 F500
G0 Z100.
RTS
-----
OR24
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X=12.+XC Y=0+YC G41 F300
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=12. ZL=1. AP=1.
G1 X= 0 +XC Y=0+YC G40 F500
G0 Z100.
RTS
-----

φ24穴の円弧アプローチが下記です。こちらで確認した限りではφ18(径補正9.000)のカッタでも問題ないようです。
-----
OR24
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X= 1.+XC Y=-11.+YC G41 F500
G3 X=12.+XC Y= 0 +YC R11. F300
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=12. ZL=1. AP=1.
G3 X= 1.+XC Y= 11.+YC R11.
G1 X= 0 +XC Y= 0 +YC G40 F500
G0 Z100.
RTS
-----

すみません、Fの指令は関係なく、M132の位置が悪かったです。
-----
OR40
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X= 9.+XC Y=-11.+YC G41 F500
G3 X=20.+XC Y= 0 +YC R11. M132 F300
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=20. ZL=1. AP=1
G3 X= 9.+XC Y= 11.+YC R11. M133
G1 X= 0 +XC Y= 0 +YC G40 F500
G0 Z100.
RTS
-----
OR24
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X= 1.+XC Y=-11.+YC G41 F500
G3 X=12.+XC Y= 0 +YC R11. M132 F300
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=12. ZL=1. AP=1.
G3 X= 1.+XC Y= 11.+YC R11. M133
G1 X= 0 +XC Y= 0 +YC G40 F500
G0 Z100.
RTS
-----
OHEL1
AA=0 AE=360.
NJ1 AA=AA+AP
IF[AA GE AE]NJ2
G1 X=COS[AA]*RD+XC Y=SIN[AA]*RD+YC Z=-ZL*AA/AE+ZS
GOTO NJ1
NJ2 G1 X=COS[AE]*RD+XC Y=SIN[AE]*RD+YC Z=-ZL*AE/AE+ZS
ZS=ZS-ZL
RTS
-----
アプローチからエスケープ(M132からM133)まではシングルブロック効きませんので注意して下さい。

お礼

2008/07/10 23:11

今回は、有難う御座います。ヘリカルに関しては、そのまま、書き込んでグラフィックで確認したところ、エラーも出ず、径補正も掛かり、一発で穴底まで起動しました。本当に、有難う御座います。それで、少しいじって、穴底で、Zの切り込みは、しないで1周させようと思い、OD120の、CALL OHEL1の下段に、"G3 I0 J60"と追加しましたが、エラーで、径補正 交点が・・・でした。貫通穴だと、1ミリか2ミリ程度、深くすれば、削り残しは有りませんが、座グリや止まり穴だと、最後の1周分で削り残りが出ますが、このサブで、穴底で、1周させるには、どうすれば良いですか?参考までに、OSP200で教えて貰ったヘリカルのサブです。

OP33
G0 Z1
G91 G41 G1 X-16 Y-0.5 F600 D50
G3 X16 Y-16 R16
CALL OH33 Q50
G91 G3 I0 J16.5
G3 X16 Y16 R16
G40 G1 X-16 Y0.5
G90
G0 Z100
RTS
/
OH33
G91 G3 I0 J16.5 Z-0.5 F300
RTS

早速の回答、有難う御座います。いつもG3及びG2での指令は、R・・で指令してましたので、IとJが今一解りませんでした。それで、今日は、24丸と40丸に書き変えて、先の例で読み込ませたのですが、径補正干渉 交点が定まりませんで、アラームBで停止しました。OHEL 1はそのままで、ODは、いじりました。

OR40
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X=10.+XC Y=-10.+YC G41 F500
G3 X=20.+XC Y= +YC J20. F300
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=20. ZL=1. AP=1
G3 X=20.+XC Y= 20.+YC I-20.
G1 X= +XC Y= +YC G40 F500
G0 Z100.
RTS

OR24
XC=VRCOX-VMOFX-VZOFX[VACOD] YC=VRCOY-VMOFY-VZOFY[VACOD]
G0 Z0
ZS=VRCOZ-VMOFZ-VZOFZ[VACOD]-VTOFH[VHCOD]
G1 X= .+XC Y=-12.+YC G41 F300
CALL OHEL1 Q51 XC=XC YC=YC ZS=ZS RD=12. ZL=1. AP=1.
G1 X= +XC Y=12 +YC G40 F500
G0 Z100.
RTS

使用工具は、三菱の径18の2枚刃のフルバックです。径補正は、8.750なので、G91~指令の時は、普通に動いてました。修正する箇所が解りません。G0には、なんとか馴れましたが、毎日いっぱいいっぱいです

親切に、アドバイス頂き、本当に有難う御座います。まだ、修正してませんでしたので、本当に助かります。普段は、40以下の穴を拡げる時は、径補正の干渉エラーが出る為、アプローチ無しで直線で当てて、回ってました。早速、試してみます。

毎回、適切なアドバイス頂き、本当に有難う御座います。それで、本日、社長の許可を得て、廃材を利用して、実際にテストしました。100丸、120丸については、問題無く動作しました。それと、一週したら、必ず一瞬止まるのは、仕方ないですか?24丸だと、アプローチは、指令した速度で動作しましたが、周り始めると、極端に切削送りが遅くなりました。F300が、F80位?のような感じです。OHEL1では、切削速度の指令は、無いようですが、指令出来ますか?

今まで、本当に有難う御座いました。プログラムの、流れも把握出来つつ有ります。それで今日は、自分なりにOHEL1~の所を少しいじり、穴径によってAP=○○の数値を変えてみた所、下穴8.5貫通、径13.5、深さ9の座グリを径8のラフィングでAP=3で加工しましたが、スムーズに加工出来ました。その他では、径40はAP=2、径120はAP=1.5とあれこれと試してます。オークマに問い合わせした時に、『円を細かく分割すれば出来ます』みたいな事を言ってましたが、G1でってのが理解できませんでした。でも、やっと理解出来ました。直径〇〇を360分割し、X軸Y軸対して半径○○で指令し、1周円をAP=〇〇で、1なら1度ずつ、AP=3なら3度ずつで(120角型)、斜めに直線で繋いで、円に限りなく近い多角型と言う事ですよね。本当に、お世話になりました。今後は、自分なりに、色々と試して行きたいと思います。

因みに、M132とM133は、省きました。

質問者

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

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

質問する

その他の回答 (5件中 1~5件目)

2008/06/30 08:02
回答No.4

[MODIN]+[G91]+[ユーザタスク2なし]となると、先に表計算・言語ソフト等にて一周分の指令値を求める方法になるでしょう。
下記がNCプログラム例(1度ごとに求めた例)になります。
----------
G15 H1
T19 M6
G0 X0 Y0
Z100. G56 H19 D19 M3 S1500
M8
MODIN OR100
CALL O100
MODOUT
M9
G90 G0 Z1000. M5
M63
M6
M2
-----
O100
X0 Y0
X200. Y100.
RTS
-----
OR100
G90 G0 Z0
G91 G1 X25. Y-25. G41 F1200
G3 X25. Y25. J25. F450
CALL OR101 Q51
G3 X-25. Y25. I-25.
G1 X-25. Y-25. G40 F2500
G90 G0 Z100.
RTS
-----
OR101
N001G1X-0.008Y0.873Z-0.003 M132
N002X-0.022Y0.872Z-0.003
N003X-0.039Y0.872Z-0.002
N004X-0.053Y0.871Z-0.003
N005X-0.068Y0.870Z-0.003
N006X-0.084Y0.868Z-0.003
N007X-0.099Y0.867Z-0.002
N008X-0.114Y0.866Z-0.003
N009X-0.129Y0.863Z-0.003
N010X-0.144Y0.860Z-0.003
N011X-0.159Y0.858Z-0.003

(中略)

N350X0.159Y0.858Z-0.003
N351X0.144Y0.860Z-0.003
N352X0.129Y0.863Z-0.003
N353X0.114Y0.866Z-0.003
N354X0.099Y0.867Z-0.002
N355X0.084Y0.868Z-0.003
N356X0.068Y0.870Z-0.003
N357X0.053Y0.871Z-0.003
N358X0.039Y0.872Z-0.002
N359X0.022Y0.872Z-0.003
N360X0.008Y0.873Z-0.003 M133
RTS
----------
本NCプログラムを参考にされる場合は、充分注意して確認をして下さい。

それから、
OSP7000Mでしたらヘリカル切削は付いていなくてもユーザタスク2は付いているのでは?
オークマ担当者に再確認するなどしてみて下さい。

お礼

2008/07/01 21:24

回答頂き、有難う御座います。機械の詳細の仕様に関しましては、オークマに問い合わせてみます。

質問者
2008/06/28 20:30
回答No.3

岩魚内様、回答頂き、有難う御座います。G1で3軸指令は、G17の平面指令しての事でしょうか?エルセルで作成出来るとは?

tarown様、回答頂き有難う御座います。残念ながら、オプションは、何も入ってません。サブプロでの関数表とは?

2008/06/28 15:11
回答No.2

OSP7000Mでユーザータスク2というオプションが機械についていれば、
簡単に出来ると思います。
VC1=0
NJP1
VC1=VC1+1
IF[VC1 GT 360]NJP2
VC2=(半径)*COS[VC1]
VC3=(半径)*SIN[VC1]
VC4=(Zの切り込み)*VC1/360
G1 X=VC2 Y=VC3 Z=VC4 F○○
GOTO NJP1
NJP2
こんな感じで条件分岐を適当なステップでループさせればできます。
三角関数が使えない場合は変数やサブプロで関数表を持つしか
ないでしょうね。

まずVC○○がコモン変数というのはご存知ですね?1~128まで自由に使用できます。NJP1とNJIP2はシーケンス№です。オークマの説明書の表記に合わせただけで別にN001、N002でも問題ありません。
VC1はここでは角度のパラメータとして定義してます。最初に「ゼロ」にリセットしてます。VC=VC+1(角度を1度ずつ変えていきます)もっと粗くても良い場合は「1」を適当に変えれば良いです。
VC2、3、4がX,Y,Z座標ですが(0,0)中心からの座標です。
MODIN+G91ということで、おっしゃりたいことは分かりますが、
サブプログラムの中に加工するX座標、Y座標、半径なども変数として一般化した式を作製し、呼び出しの際に「引渡し変数」として数値を指定してあげれば、任意の位置に任意の大きさの穴をヘリカル加工できるプログラムは作成可能です。変数や条件分岐はユーザータスク1でもサポートされていますが三角関数はオプションですから、このオプションが入ってない場合は他の回答者が既にお答えですが一周分の分割座標を「テーブル」として持つ必要があります。サブプロの中で持つか、コモン変数(128個)ローカル変数(255個)の中で収まる範囲で設定するかの何れかになります。

結局、三角関数は使えたのですね。そして一周分の動きまでは出来ました。
ということですね。あとは、プログラムを作る人の趣味の問題で、どうにでもできると思いますが、たとえば、、、、こんな感じで一般化すれば、
加工座標=(SX、SY)
加工半径=SR
ヘリカル切込み開始Z座標=SZ
一周での切り込み深さ=PZ
切り込み終了Z座標=EZ
として

CALL O100 SX=50 SY=60 SR=70 SZ=0 PZ=1 EZ=-40
O100
VC4=SZ
NJP1
IF[VC4 LT EZ]NJP2
VC1=0
NJP11
VC11=VC11+1
IF[VC11 GT 360]NJP12
VC2=SX+SR*COS[VC11]
VC3=SY+SR*SIN[VC11]
VC4=VC4-PZ*VC11/360
G1 X=VC2 Y=VC3 Z=VC4 F=FEED
GOTO NJP11
NJP12
GOTO NJP1
NJP2
G0 Z100
RTS
こんな感じではなでしょうか。実際に機械に打ち込んで動作確認してませんので参考程度と考えてください。
ではがんばってください。

径補正と同じ動きをさせれば良いです。
まず工具径補正値を変数に取り込む
VC10=VTOFD[19]
これを半径から引く
SY=SY-VC10
このような行を追加すれば指示した加工半径から
工具径補正の19番の中の値の分だけ小さい半径で周ります。

おそらく CALL の行で FEED=50 とか適当な送りを引き渡してあげれば動くのではないでしょうか。プログラムは自分しか分からないプログラムになってしまっても問題ない職場環境ですか?変数の定義やシーケンス№のつけ方など、社内で統一まではいかなくても、少なくとも自分の中ではある程度ルールを決めておいた方が良いでしょうね。もうここまでくればもうひといきで「使いこなせる」と言える域まで到達できますよ。がんばってください。

お礼

2008/07/01 22:06

回答頂き、有難う御座います。指令の出し方が、いまいち掴めません。サブでの指令なのか、メインでの指令なのかです。VC1=0とは、X0Y0の事なのうでしょうか?VC2=から、G1までの指令は、イメージ出来ましたが、GOTO NJP1,
NJP2が、今一つ解りません。

回答頂き、有難う御座います。上記の例で、取り敢えず、サブに書き込みしてCALLで呼び、グラフィック画面で、確認したところ、1周はしましたが、1周したらZが500まで逃げて、プログラムが終了しました。適当なステップでループをさせるのが解りません。仮にZ-40までループさせるには、どうすれば良いですか?VC4は、1周辺りの切り込みですよね?VC4=-2だと1周で-2まで切り込んでました。
下記がサブに試しに書き込んだ例です。

OR120
VC1=0
NJP1
VC1=VC1+1
IF[VC1 GT 360]NJP2
VC2=60*COS[VC1]
VC3=60*SIN[VC1]
VC4=-1*VC1/360
G1 X=VC2 Y=VC3 Z=VC4 F450
GOTO NJP1
NJP2
RTS

本当に、有難う御座います。早速、週明けに試したいと思います。それと、機械に付属してたプログラミングガイドを参照した所、コモン変数を使って、径補正も使えるみたいですが。上記の例で、径補正を掛けるには、どの行で指令すれば良いですか?Gコードマクロのように”G1 X=VC2 Y=VC3 Z=VC4 F=FEED”この後に、D19と直接指令するのか、VC5等でVC5=15.670とするのかです。因みに、会社で横型の東芝のNCを使ってる人にも、聞いてみましたが、コモン変数やローカル変数は、分からないみたいです。僕の前に7000Mを使ってた方も、Gコード、Mコードのみで、昨年OSP200Mが入ってから、講習で、MODINやヘリカルを知ったとの事です。

毎回、色々と本当に有難う御座います。残念ながら、下記のプログラムでは、式 コモン変数でアラームBでエラーが出ました。少しいじって再度読み込ませたら、ローカル変数登録無しとエラーでした。やはり、オプション仕様で無いから、無理なのでしょうか?




CALL O100 SX=50 SY=60 SR=70 SZ=0 PZ=1 EZ=-40
O100
VC4=SZ
NJP1
IF[VC4 LT EZ]NJP2
VC1=0
NJP11
VC11=VC11+1
IF[VC11 GT 360]NJP12
VC2=SX+SR*COS[VC11]
VC3=SY+SR*SIN[VC11]
VC4=VC4-PZ*VC11/360
G1 X=VC2 Y=VC3 Z=VC4 F=FEED
GOTO NJP11
NJP12
GOTO NJP1
NJP2
G0 Z100

毎回、指南頂き、有難う御座います。上記の例で、再度試してみました。CALLの行ですが、メインで指令した所、機械がフリーズして反応しなくなりました。職場環境ですが、社員9名の町工場なので、任された機械は、各自で管理しています。僕は、7000Mを任される、去年の秋頃までは、門型の汎用機でしたので、NCは初めてです。メインの例です。

T19M6
G15H1
X0Y0
G56Z100H19
S1500M3
M8
CALL OR120 SX=50 SY=60 SR=70 SZ=0 PZ=1 EZ=-40 FEED=50
以下省略

M8の所で、機械が止まったままになります。

質問者

補足

2008/07/05 20:13

VC1=0
NJP1
VC1=VC1+1
IF[VC1 GT 360]NJP2
VC2=(半径)*COS[VC1]
VC3=(半径)*SIN[VC1]
VC4=(Zの切り込み)*VC1/360
G1 X=VC2 Y=VC3 Z=VC4 F○○
GOTO NJP1
NJP2

このプログラムで、メインで径補正の指令しましたが、径補正は、無視されてました。下記がメインの例です。

G15H1
X0Y0
G56Z100H19"D19"
です。

質問者
2008/06/27 22:42
回答No.1

サブをざっと見渡して、G3を使われてるので、
  Z切込み→円弧送り
の繰返しのようですね。

成るべく多点に分解して、同時3軸でG1X**Y**Z-**の形の方が好ましいと思います。固定的ならエクセルで作成出来ます。

FANUCで最大64分割まで可能なマクロを組んだことがあります。

?SINCOS計算が必要だが、演算時間が長いので冒頭で分割分のものを1回だけ求める。
?以降は加法定理を使い掛け算だけにする。次の地点まではG91で移動。
?G91で1周回るとXYの誤差が累積するので、開始点を記憶させておき、最後だけG92にして辻褄合わせする。
?以上をローカル変数33個を引数とあわせてフル動員(64分割の制限はこの数による)。グローバルを使ってないので移植性は完全。

64分割では作成されたようなR25では多少角張ってくるかもしれませんが荒取りでは充分なはずです。

なお、OSPの古い機種ではSINCOSがオプションだったので、その計算も補間法で作成したことがあります。
残念ながらOSP用のヘリカルマクロは途中で中断したままです。

エクセルでのやりかた。G90で1°ごとのプログラムを作る。

↓入力行

A B C D E F
------------------------------------------------------------------------------
1 X =COS((PI()/180)*ROW(A1))*25 Y =SIN((PI()/180)*ROW(A1))*25 Z =-ROW(A1)*0.01
------------------------------------------------------------------------------

* 行をコピー
* 小数点表示桁を合わせる。列幅を調整する。

画面は↓のようになる

X 24.996 Y 0.436 Z -0.01
X 24.985 Y 0.872 Z -0.02
X 24.966 Y 1.308 Z -0.03
---------------------
---------------------
X 21.865 Y 12.120 Z -0.29
X 21.651 Y 12.500 Z -0.30
---------------------

ファイル>名前を付けて保存>ファイル名(適当に)>ファイルの種類>テキスト(スペース区切り)
>保存

【メモ帳】で編集。スペースを消す。消さなくとも読めるはず?。必要なGコードを追加する。

1°ごと→360分割では非常に長くなるので、メモリに収まるか心配ですが。。。。
この場合の円周の誤差は1μなので充分過ぎます。

>G17の平面指令

平面指定は円弧、固定サイクル、工具径/長オフセット、座標回転、、、に関してどの平面で行うかの指令であって、同時3軸でのG00、G01には関係しないはずです。
関連して、上記の様な細かい区間での指令で値の大きい工具径オフセットをかけるとエラーが起きます。
(オフセット値のパラメータを読んで)Rを変えてG40モードでプログラムするのがテクニックです。

お礼をおくりました

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

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