⑴ 數控車床宏程序怎麼寫最好帶步驟解說
數控車床宏程序是非常靈活且因情況而異的,所以數控車床宏程序編程掌握以下參數即可:
普通加工程序直接用數值指定G代碼和移動距離;例如,GO1和X100.0。使用用戶宏程序時,數值可以直接指定或用變數指定。當用變數時,變數值可用程序或用MDI面板上的操作改變。
例如:#1=#2+100;G01X#1F300。
量的表示:計算機允許使用變數名,用戶宏程序不行。變數用變數符號(#)和後面的變數號指定。例如:#1,表達式可以用於指定變數號。
此時,表達式必須封閉在括弧中。例如:#[#1+#2-12]。
變數根據變數號可以分成四種類型:#0空變數,該變數總是空,沒有值能賦給該變數。#1-#33局部變數,局部變數只能用在宏程序中存儲數據,例如,運算結果。當斷電時,局部變數被初始化為空。調用宏程序時,自變數對局部變數賦值。
#100-#199、#500-#999公共變數,公共變數在不同的宏程序中的意義相同。當斷電時,變數#100-#199初始化為空。變數#500-#999的數據保存,即使斷電也不丟失。#1000---系統變數。系統變數用於讀和寫CNC運行時各種數據的變化,例如,刀具的當前位置,補償值。
局部變數和公共變數可以有0值或下面范圍中的值:-1047到-10-29或-10-2到-1047,如果計算結果超出有效范圍,則發出P/S報警NO.111。
當在程序中定義變數值時,小數點可以省略。例:當定義#1=123;變數#1的實際值是123.000。
為在程序中使用變數值,指定後跟變數號的地址。當用表達式指定變數時,要把表達式放在括弧中。例如:G01X[#1+#2]F#3;
被引用變數的值根據地址的最小設定單位自動地舍入。例如:當G00X#/;以1/1000mm的單位執行時,CNC把123456賦值給變數#1,實際指令值為G00X12346.改變引用變數的值的符號,要把負號(-)放在#的前面。
例如:G00X-#1當引用未定義的變數時,變數及地址都被忽略。例如:當變數#1的值是0,並且變數#2的值是空時,G00X#1Y#2的執行結果為G00X0。
(1)宏程序編程如何分段擴展閱讀:
數控宏程序編程是用變數的方式進行數控編程的方法,數控宏程序分為A類和B類宏程序,其中A類宏程序比較老,編寫起來也比較費時費力,B類宏程序類似於C語言的編程,編寫起來也很方便。
不論是A類還B類宏程序,它們運行的效果都是一樣的。
編寫一些大批相似零件的時候,可以用宏程序編寫,這樣只需要改動幾個數據就可以了,沒有必要進行大量重復編程。
⑵ 數控宏程序怎麼編
找本書看看,另外你要懂得曲線方程,等一些數學問題。 給你舉個例子看看先。 宏程序編程
一 變數
普通加工程序直接用數值指定G代碼和移動距離;例如,GO1和X100.0。使用用戶宏程序時,數值可以直接指定或用變數指定。當用變數時,變數值可用程序或用MDI面板上的操作改變。
#1=#2+100 G01 X#1 F300 說明: 變數的表示
計算機允許使用變數名,用戶宏程序不行。變數用變數符號(#)和後面的變數號指定。
例如:#1 表達式可以用於指定變數號。此時,表達式必須封閉在括弧中。
例如:#[#1+#2-12] 變數的類型 變數根據變數號可以分成四種類型
變數號 變數類型 功能 #0 空變數 該變數總是空,沒有值能賦給該變數. #1-#33 局部變數 局部變數只能用在宏程序中存儲數據,例如,運算結果.當斷電時,局部變數被初始化為空.調用宏程序時,自變數對局部變數賦值, #100-#199 #500-#999
公共變數 公共變數在不同的宏程序中的意義相同.當斷電時,變數#100-#199初始化為空.變數#500-#999的數據保存,即使斷電也不丟失. #1000 系統變數 系統變數用於讀和寫CNC運行時各種數據的變化,例如,刀具的當前位置和補償值. 變數值的范圍 局部變數和公共變數可以有0值或下面范圍中的值: -1047到-10-29或-10-2到-1047 如果計算結果超出有效范圍,則發出P/S報警NO.111. 小數點的省略 當在程序中定義變數值時,小數點可以省略。
例:當定義#1=123;變數#1的實際值是123.000。 變數的引用 為在程序中使用變數值,指定後跟變數號的地址。當用表達式指定變數時,要把表達式放在括弧中。
例如:G01X[#1+#2]F#3; 被引用變數的值根據地址的最小設定單位自動地舍入。
例如:
當G00X#/;以1/1000mm的單位執行時,CNC把123456賦值給變數#1,實際指令值為G00X12346. 改變引用變數的值的符號,要把負號(-)放在#的前面。
例如:G00X-#1 當引用未定義的變數時,變數及地址都被忽略。
例如:當變數#1的值是0,並且變數#2的值是空時,G00X#1 Y#2的執行結果為G00X0。
雙軌跡(雙軌跡控制)的公共變數 對雙軌跡控制,系統為每一軌跡都提供了單獨的宏變數,但是,根據參數N0.6036和6037的設定,某些公共變數可同時用於兩個軌跡。
未定義的變數 當變數值未定義時,這樣的變數成為空變數。變數#0總是空變數。它不能寫,只能讀。
引用 當引用一個未定義的變數時,地址本身也被忽略。
當#1=
當#1=0 G90 X100 Y#1 G90 X100 G90 X100 Y#1 G90 X100 Y0 (b) 運算
除了用賦值以外,其餘情況下與0相同。
當#1=時
當#1=0時
#2=#1 #2= #2=#1 #2=0 #2=#*5 #2=0 #2=#*5 #2=0 #2=#1+#1 #2=0 #2=#1+#1 #2=0 (c)條件表達式
EQ和NE中的不同於0。
當#1=時
當#1=0時
#1EQ#0 成立
#1EQ#0 不成立
#1 NE #0 成立
#1 NE #0 不成立
#1 GE #0 成立
#1 GE #0 不成立
#1 GT #0 不成立
#1 GT #0 不成立
限制 程序號,順序號和任選程序段跳轉號不能使用變數。
例:下面情況不能使用變數:
0#1;
/#2G00X100.0; N#3Y200.0; 二 算術和邏輯運算
下面表中列出的運算可以在變數中執行。運算符右邊的表達式可包含常量和或由函數或運算符組成的變數。表達式中的變數#j和#k可以用常數賦值。左邊的變數也可以用表達式賦值。
說明:
角度單位 函數SIN ,COS,ASIN,ACOS,TAN和ATAN的角度單位是度。如90°30'表示為90.5度。 ARCSIN # i= ASIN[#j]
(1)取值范圍如下:
當參數(NO.6004#0)NAT位設為0時,270°~90°
當參數(NO.6004#0)NAT位設為1時,-90°~90°
(2)當#j超出-1到1的范圍時,發出P/S報警NO.111. (3)常數可替代變數#j ARCCOS #i=ACOS[#j] 取值范圍從180°~0° 當#j超出-1到1的范圍時,發出P/S報警NO.111. 常數可替代變數#j 三 程序舉例 銑橢圓:
軌跡:
橢圓程序代碼如下: N10 G54 G90 G0 S1500 M03 N12 X0 Y0 Z20. N14 G0 Z1 N16 G1 Z-5. F150. N18 G41 D1 N20 #1=0 N22 #2=34 N24 #3=24 N26 #4=#2*COS[#1] N28 #5=#3*SIN[#1] N30 #10=#4*COS[45]-#5*SIN[45] N32 #11=#4*SIN[45]+#5*COS[45] N34 G1 X#10 Y#11
N36 #1=#1+1 N38 IF [#1 LT 370] GOTO26 N40 G40 G1 X0 Y0
N42 G0 Z100 N44 M30
銑矩形槽:
銑矩形槽代碼如下: #102=0. N3#100=0. #101=0. #103=200. #104=400. G91G28Z0. G0G90G54X0.Y0. G43H1Z20. M3S2000. N4G0X#100Y#101 G01Z#102F200. #102=#102-2. IF[#102EQ-50.]GOTO1 GOTO2 N2 N4X#104F500. Y#103 X#100 Y#101 #100=#100+10. #101=#101+10. #103=#103-10. #104=#104-10. IF[#100EQ100.]GOTO3 GOTO4 N3 N1 M5 M9 G91G28Z0. G28Y0. M30 銑傾斜3度的面:
軌跡:
銑傾斜3度的面的代碼如下: O0001 #[#1+1*2]=1 G65P9012L1A0B0.1C4I100J3K0 M30 宏程序O9012代碼如下: G54 G90 G00 X[#3] Y0 Z100 S500 M3 G01 Z0 F300 WHILE[#1LE10]DO1 #7= #1/TAN[#5]+#3 G1Z-#1 X#7 #8=#6/2-ROUND[#6/2] IF[#8EQ0]GOTO10 G1Y0
GOTO20 N10 Y#4 N20#1=#1+#2 #6=#6+1 END1 G0
Z100 銑半球:
軌跡:
銑半球代碼如下: G90G0G54X-10.Y0M3S4500 G43Z50.H1M8 #1=0.5 WHILE[#1LE50.]DO1 #2=50.-#1 #3=SQRT[2500.-[#2*#2]] G1Z-#1F20 X-#3F500 G2I#3 #1=#1+0.5 END1 G0Z50.M5 M30 銑喇叭:
銑喇叭代碼如下: M03 S500 M06 T01 #1=0 #2=0 G0 Z15 X150 Y0 N11 #2=30*SIN[#1] #3=30+30*[1-COS[#1]] G01 Z-#2 F40 G41 X#3 D01 G03 I-#3 G40 G01 X150 Y0 #1=#1+1 IF [#1 LE 90] GOTO 11 G0 Z30 M30
⑶ 加工中心分層銑圓用宏程序怎麼編程
關於宏程序編程拍森,步驟細致復雜,要對宏程序有相當的了解。
舉一個例題如下:
1、例如加工一個長半軸30,短半軸20一個橢圓,橢圓不是圓弧,所以我們不能用圓弧的方式來加橢圓,這里我們用一小段一小段的直線來拼接這個橢圓。
⑷ 數控車床宏程序怎麼編啊
宏程序序
大家都在問宏程序~其實說起來宏就是用公式來加工零件的,比如說橢圓,如果沒有宏的話,我們要逐點算出曲線上的點,然後慢慢來用直線逼近,如果是個光潔度要求很高的工件的話,那麼需要計算很多的點,可是應用了宏後,我們把橢圓公式輸入到系統中然後我們給出Z坐標並且每次加10um那麼宏就會自動算出X坐標並且進行切削,實際上宏在程序中主要起到的是運算作用..宏一般分為A類宏和B類宏.A類宏是以G65 Hxx P#xx Q#xx R#xx的格式輸入的,而B類宏程序則是
以直接的公式和語言輸入的和C語言很相似在0i系統中應用比較廣.由於現在B類宏程序的大量使
用很多書都進行了介紹這里我就不再重復了,但在一些老系統中,比如法蘭克OTD系統中由於它的MDI鍵盤上沒有公式符號,連最簡單的等於號都沒有,為此如果應用B類宏程序的話就只能在計算機上編好再通過RSN-32介面傳輸的數控系統中,可是如果我們沒有PC機和RSN-32電纜的話怎麼辦呢,那麼只有通過A類宏程序來進行宏程序編制了,下面我介紹一下A類宏的引用;
A類宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式輸入的xx的意思就是數值,是以um級的量輸入的,比如你輸入100那就是0.1MM~~~~~.#xx就是變數號,關於變數號是什麼意思再不知道的的話我也就沒治了,不過還是教一下吧,變數號就是把數值代入到一個固定的地址中,固定的地址就是變數,一般OTD系統中有#0~~~#100~#149~~~#500~#531關閉電源時變數#100~#149被初始化成「空」,而變數#500~#531保持數據.我們如果說#100=30那麼現在#100地址內的數據就是30了,就是這么簡單.好現在我來說一下H代碼,大家可以看到A類宏的標准格式中#xx和xx都是數值,而G65表示使用A類宏,那麼這個H就是要表示各個數值和變數號內的數值或者各個變數號內的數值與其他變數號內的數值之間要進行一個什麼運算,可以說你了解了H代碼A類宏程序你基本就可以應用了,好,現在說一下H代碼的各個含義:
以下都以#100和#101和#102,及數值10和20做為例子,應用的時候別把他們當格式就行,
基本指令:
H01賦值;格式:G65H01P#101Q#102:把#102內的數值賦予到#101中
G65H01P#101Q#10:把10賦予到#101中
H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的數值加上#103的數值賦予#101
G65 H02 P#101 Q#102 R10
G65 H02 P#101 Q10 R#103
G65 H02 P#101 Q10 R20
上面4個都是加指令的格式都是把Q後面的數值或變數號內的數值加上R後面的數
值或變數號內的數值然後等於到P後面的變數號中.
H03減指令;格式G65 H03 P#101 Q#102 R#103,把#102的數值減去#103的數值賦予#101
G65 H03 P#101 Q#102 R10
G65 H03 P#101 Q10 R#103
G65 H03 P#101 Q20 R10
上面4個都是減指令的格式都是把Q後面的數值或變數號內的數值減去R後面的數
值或變數號內的數值然後等於到P後面的變數號中.
H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的數值乘上#103的數值賦予#101
G65 H04 P#101 Q#102 R10
G65 H04 P#101 Q10 R#103
G65 H04 P#101 Q20 R10
上面4個都是乘指令的格式都是把Q後面的數值或變數號內的數值乘上R後面的數
值或變數號內的數值然後等於到P後面的變數號中.
H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的數值除以#103的數值賦予#101
G65 H05 P#101 Q#102 R10
G65 H05 P#101 Q10 R#103
G65 H05 P#101 Q20 R10
上面4個都是除指令格式都是把Q後面的數值或變數號內的數值除以R後面的數
值或變數號內的數值然後等於到P後面的變數號中.(余數不存,除數如果為0的話會出現112報警)
三角函數指令:
H31 SIN正玄函數指令:格式G65 H31 P#101 Q#102 R#103;含義Q後面的#102是三角形的斜邊R後面的#103內存的是角度.結果是#101=#102*SIN#103,也就是說可以直接用這個求出三角形的另
一條邊長.和以前的指令一樣Q和R後面也可以直接寫數值.
H32 COS余玄函數指令:格式G65 H32 #101 Q#102 R#103;含義Q後面的#102是三角形的斜邊
R後面的#103內存的是角度.結果是#101=#102*COS#103,也就是說可以直接用這個求出三角形的
另一條邊長.和以前的指令一樣Q和R後面也可以直接寫數值.
H33和H34本來應該是TAN 和ATAN的可是經過我使用得數並不準確,希望有知道的人能夠告訴我是為什麼?
開平方根指令:
H21;格式G65 H21 P#101 Q#102 ;意思是把#102內的數值開了平方根然後存到#101中(這個指令是非常重要的如果在車橢圓的時候沒有開平方跟的指令是沒可能用宏做到的.
無條件轉移指令:
H80;格式:G65 H80 P10 ;直接跳到第10程序段
有條件轉移指令:
H81 H82 H83 H84 H85 H86 ,分別是等於就轉的H81;不等於就轉的H82;小於就轉的H83;大於就轉的H84;小於等於就轉的H85;大於等於就轉的H86;
格式:G65 H8x P10 Q#101 R#102;將#101內的數值和#102內的數值相比較,按上面的H8x的碼帶入H8x中去,如果條件符合就跳到第10程序段,如果不符合就繼續執行下面的程序段.
用 戶 宏 程 序
能完成某一功能的一系列指令像子程序那樣存入存儲器,用一個總指令來它們,使用時只需給出這個總指令就能執行其功能。
l 所存入的這一系列指令——用戶宏程序
l 調用宏程序的指令————宏指令
l 特點:使用變數
一. 變數的表示和使用
(一) 變數表示
#I(I=1,2,3,…)或#[<式子>]
例:#5,#109,#501,#[#1+#2-12]
(二) 變數的使用
1. 地址字後面指定變數號或公式
格式:<地址字>#I
<地址字>-#I
<地址字>[<式子>]
例:F#103,設#103=15則為F15
Z-#110,設#110=250則為Z-250
X[#24+#18*COS[#1]]
2. 變數號可用變數代替
例:#[#30],設#30=3則為#3
3. 變數不能使用地址O,N,I
例:下述方法下允許
O#1;
I#26.00×100.0;
N#3Z200.0;
4. 變數號所對應的變數,對每個地址來說,都有具體數值范圍
例:#30=1100時,則M#30是不允許的
5. #0為空變數,沒有定義變數值的變數也是空變數
6. 變數值定義:
程序定義時可省略小數點,例:#123=149
MDI鍵盤輸一. 變數的種類
1. 局部變數#1~#33
一個在宏程序中局部使用的變數
例:A宏程序B宏程序
……
#10=20X#10不表示X20
……
斷電後清空,調用宏程序時代入變數值
2. 公共變數#100~#149,#500~#531
各用戶宏程序內公用的變數
例:上例中#10改用#100時,B宏程序中的
X#100表示X20
#100~#149斷電後清空
#500~#531保持型變數(斷電後不丟失)
3. 系統變數
固定用途的變數,其值取決於系統的狀態
例:#2001值為1號刀補X軸補償值
#5221值為X軸G54工件原點偏置值
入時必須輸入小數點,小數點省略時單位為μm
一. 運算指令
運算式的右邊可以是常數、變數、函數、式子
式中#j,#k也可為常量
式子右邊為變數號、運算式
1. 定義
#I=#j
2. 算術運算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3. 邏輯運算
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
4. 函數
#I=SIN[#j] 正弦
#I=COS[#j] 餘弦
#I=TAN[#j] 正切
#I=ATAN[#j] 反正切
#I=SQRT[#j]平方根
#I=ABS[#j]絕對值
#I=ROUND[#j]四捨五入化整
#I=FIX[#j]下取整
#I=FUP[#j]上取整
#I=BIN[#j]BCD→BIN(二進制)
#I=BCN[#j]BIN→BCD
1. 說明
1) 角度單位為度
例:90度30分為90.5度
2) ATAN函數後的兩個邊長要用「1」隔開
例:#1=ATAN[1]/[-1]時,#1為了35.0
3) ROUND用於語句中的地址,按各地址的最小設定單位進行四捨五入
例:設#1=1.2345,#2=2.3456,設定單位1μm
G91X-#1;X-1.235
X-#2F300;X-2.346
X[#1+#2];X3.580
未返回原處,應改為
X[ROUND[#1]+ROUND[#2]];
4) 取整後的絕對值比原值大為上取整,反之為下取整
例:設#1=1.2,#2=-1.2時
若#3=FUP[#1]時,則#3=2.0
若#3=FIX[#1]時,則#3=1.0
若#3=FUP[#2]時,則#3=-2.0
若#3=FIX[#2]時,則#3=-1.0
5) 指令函數時,可只寫開頭2個字母
例:ROUND→RO
FIX→FI
6) 優先順序
函數→乘除(*,1,AND)→加減(+,-,OR,XOR)
例:#1=#2+#3*SIN[#4];
7) 括弧為中括弧,最多5重,園括弧用於注釋語句
例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)
一. 轉移與循環指令
1.無條件的轉移
格式:GOTO1;
GOTO#10;
2.條件轉移
格式:IF[<條件式>]GOTOn
條件式:
#jEQ#k 表示=
#jNE#k 表示≠
#jGT#k 表示>
#jLT#k 表示<
#jGE#k 表示≥
#jLE#k 表示≤
例:IF[#1GT10]GOTO100;
…
N100G00691X10;
例:求1到10之和
O9500;
#1=0
#2=1
N1IF[#2GT10]GOTO2
#1=#1+#2;
#2=#2+1;
GOTO1
N2M301.循環
格式:WHILE[<條件式>]DOm;(m=1,2,3)
…
…
…
ENDm
說明:1.條件滿足時,執行DOm到ENDm,則從DOm的程序段
不滿足時,執行DOm到ENDm的程序段
2.省略WHILE語句只有DOm…ENDm,則從DOm到ENDm之間形成死循環
3.嵌套
4.EQNE時,空和「0」不同
其他條件下,空和「0」相同
例:求1到10之和
O0001;
#1=0;
#2=1;
WHILE[#2LE10]DO1;
#1=#1+#2;
#2=#2+#1;
END1;
M30; 這是簡單的拋物線程序! G99
S800M3
T0101
G0 X30. .Z10.
#1=0
N10 #2=SQRT[2*#1]
G1X[2*#2]Z-#1F0.05
#1=#1+0.1
IF [#1 LE 50] GOTO 10
G0X30
Z100
M5
M30
⑸ 數控宏程序
現行的數控程序的編制中,主要有兩種編程方式:手工編程和自動編程。雖然自動編程運用得越來越廣泛,但手工編程在某些領域也是不可或缺的一種編程手段。手工編程至少在此以下幾方面有著自己的優勢:其一,熟練的程序員編制的手工程序加工效率高於自動編程;其二,熟悉手工編程,對自動程序的修改是不無裨益的;其三,自動編程的所敲定的走刀路線限制了其加工工藝,通過手工編程能夠得到彌補。
在手工編程過程中,用戶宏程序的編制,能極大提高程序編制的效率,因此,我們在數控教學及訓練過程中,必須把用戶宏程序的編製作為我們數控教學的重要內容之一。從歷年全國數控大賽的試題中也不難發現,用戶宏程序的編制是運用得極其頻繁的。但是,我們很難在目前的教材中找到完整的宏程序的編寫的方法及思路。為此,筆者提出了一整套設計用戶宏程序的方法,通過利用流程圖來設計用戶宏程序,提高了編程的效率。
二、用戶宏程序簡介
用戶宏程序有A、B兩種,A類宏程序用G65指令編寫,其格式如下:
G65 Hm P#i Q#j R#k
其中,m—01~99表示運算命令或轉移命令功能;
#i—存入運算結果的變數名;
#j—進行運算的變數名1,可以是常數,常數直接表示,不帶#;
#k—進行運算的變數名2,也可以是常數。
意義, #i=#j○#k,表示運算符號,常用意義如表1
表1
G代碼
H代碼
功能
定義
G65
H01
賦值
#i=#j
G65
H02
加法
#i=#j+#k
G65
H03
減法
#i=#j-#k
G65
H04
乘法
#i=#j×#k
G65
H05
除法
#i=#j÷#k
G65
H80
無條件轉移
轉向N
G65
H81
條件轉移1
IF #j=#k,GOTO N
G65
H82
條件轉移2
IF #j≠#k,GOTO N
G65
H83
條件轉移3
IF #j>#k,GOTO N
G65
H84
條件轉移4
IF #j<#k,GOTO N
G65
H85
條件轉移5
IF #j≥#k,GOTO N
G65
H86
條件轉移6
IF #j≤#k,GOTO N
G65
H99
產生P/S報警
產生500+1號P/S報警
除此以外,G65指令還可以實現邏輯運算、開平方、取絕對值、三角運算及復合運算等,相關指令見有關書籍,這里不一一介紹。需要指出的是,不同的數控系統,其功能的多少也不一樣,用戶可參考有關系統的說明書。
B類宏程序由控制語句,調用語句所組成。宏程序可以與主程序做在一起,也可以單獨做成一個子程序,然後用G65指令調用。調用方法如下:
G65 P(程序號)〈引數賦值〉或G65 P(程序號) L(循環次數)〈引數賦值〉
所謂引數賦值,是指用A、B、C、D等地址給變數#1、#2、#3、#4等賦值。
B類宏程序的控制指令有三類,與C語言等高級程序設計語言的控制指令很類似。一類是IF語句,格式為:
IF[條件式]GOTO n (n即順序號)
條件式成立時,從順序號為n的程序段往下執行,條件式不成立時,執行下一下程序段;第二類是WHILE語句,格式為:
WHILE[條件式] DO m
.
.
.
END m
條件式成立時,從DO m的程序段到END m的程序段重復執行,條件式不成立時,則從END m的下一程序段執行。
第三類是無條件轉移指令,格式為:GOTO n。
三、運用流程圖編寫用戶宏程序的一般步驟
運用流程圖編寫用戶宏程序的一般步驟為:一分析零件結構,確定宏程序加工的內容,找出加工工藝路線的律;二將零件加工路線規律用流程圖表達出來,並進一步分清楚哪些是程序編制過程中的變數,哪些是常量,從而將一般的流程變成程序流程圖;三根據程序流程圖,編寫零件的加工程序。
四、應用舉例
(一)宏程序應用實例一
如圖1所示,在一根軸上加工N個槽,每個槽的寬度為a1,槽的間距為a2,槽底直徑為b1,棒料直徑b2,並且設所給材料足夠長,試編寫程序加工該零件,現有一零件參數為N=100個槽,槽底直徑b1=30mm,槽寬a1=5mm,工件直徑b2=40mm,間隔a2=2mm,刀寬=3mm,現編寫程序加工。圖11零件工藝過程分析
該零件是一個比較簡單的例子,在壓面機械上用得較多。零件的精度要求不高,為了使程序有更廣泛的適應性,將宏程序做成一個子程序,用主程序來調用實現零件的加工。加工時將坐標原點選擇在如圖所示的位置,X軸離第一個槽的距離為一個間距a2的距離。
零件的加工過程如下將:將刀具移至加工起點→進刀→切削第一個槽→計算下一槽的位置並將刀具移到此位置→加工下一個槽……如此至最後一個槽加工完為止。
將此過程畫成流程圖,如圖2(a)所示。
(a) (b)
圖2
2零件加工過程中所使用的變數
通過分析,要加工該零件,需要如下一些變數:
工件直徑#200= b2
槽底直徑#201= b1
槽寬#202= a1
槽間間隔#203= a2
切槽刀寬度#204
每加工一個槽後,切槽刀在Z軸方向移動的距離#205(等於槽間距加上槽寬)
槽的起點坐標Xs=#206,Zs=#207
槽加工終點的坐標Xf=#208,Yf=#209
計算槽數目的變數#215
加工槽的總數#216
由此畫出編製程序所用的流程圖,如圖2(b)所示。
3根據程序流程圖編製程序
宏程序O9061
N10 G65 H83 P160 Q#204 R#202 如果刀寬大於槽完,則結束
N20 G65 H01 P#215 Q0 計數器變數清零
N30 G65 H02 P#205 Q#202 R#203 計算#205
N40 G65 H02 P#206 Q#200 R5 工件直徑加上5mm作為X方向起點
N50 G65 H02 P#207 Q#203 R#204 槽的間距加上一個刀寬
N60 G65 H01 P#207 Q?#207 取負值後作為第一個槽的Z向起點
N70 G65 H01 P#208 Q#201 槽底直徑作為槽終點的X坐標
N80 G65 H01 P#209 Q?#205 第一個槽終點Z向坐標
N90 G00 X#206 Z#207 M08 定位到槽加工的位置
N100 G75 R1
N110 G75 X#208 Z#209 P2 Q#204 F20 加工槽
N120 G65 H03 P#207 Q#207 R#205 下一個槽起點Z向坐標計算
N130 G65 H03 P#209 Q#209 R#205 下一個槽終點Z向坐標計算
N140 G65 H02 P#215 Q#215 R1 槽計數器加1
N150 G65 H84 P90 Q#215 R#216 判斷槽是否加工完畢
N160 M08
N170 M99 結束
主程序 O0001
N10 G65 H01 P#200 Q40 工件直徑賦值
N20 G65 H01 P#201 Q30 槽底直徑賦值
N30 G65 H01 P#202 Q5 槽寬賦值
N40 G65 H01 P#203 Q2 槽間間隔賦值
N50 G65 H01 P#204 Q3 切槽刀寬賦值
N60 G65 H01 P#216 Q100 槽數賦值
N70 G00 X100 Z100 起刀點位置
N80 M98 P9061 調用宏程序
N90 M30 程序結束
(二)宏程序應用實例二
對於一些大懸伸(加工深度與刀具直徑之比較大)的零件,用普通加工方法總難達到理想效果,此時用插銑法容易保證零件精度,如圖3所示的零件,尺寸80很難保證,用插銑法後獲得了比較好的效果。曾經有工廠做過類似的程序,但程序只是針對零件本身,適應性不強,當零件的尺寸發生變化後,程序還得發生較大修改。筆者針對這種情況,將程序分為主程序和子程序,當零件的尺寸發生變化後,只需要修改主程序即可,非常方便。
1加工工藝分析
傳統加工工藝方法採用多次重復加工。很難消除讓刀,並且造成加工應力,最後由於應力釋放造成零件的內腔變小。為了解決這個問題,我們將加工分為粗加工和精加工,粗加工採用普通的工藝方法,精加工採用插銑。
建立如圖3所示的坐標系,為了保證加工質量,防止劃傷已加工過的表面,編程時避免使用鑽孔循環指令。加工軌跡如圖4所示,在YZ平面內進行以下加工步驟:加工第一刀→沿圓弧退刀→返回Z=3處→沿圓弧進刀→沿X方向移動一個步距→加工第二刀→…。
加工過程中,粗加工尺寸80按79.6加工,而精加工採用宏程序編制高速插銑程序。精加工的具體參數如表2所示
圖3零件圖及坐標系 圖4刀具路徑表2精加工參數
加工方式
加工材料
刀具
步距
設置安全高度
順銑
鋁合金
Φ18整體硬質合金加長球頭刀
0.05
Z=3
2加工流程圖
為增強程序的適應性,本程序刀分為子程序和主程序來編寫,子程序起始位置為(0,0,50),刀具在加工過程中的基本路線是按前面所給出的路線來走刀。
由此畫出加工流程圖如圖5(a)所示。(a) (b)
圖5
3程序所使用的變數及程序流程圖
本程序中所使用的變數如下:
需加工部位X方向的長度:#1;
需加工部位Y方向的長度:#2;
需加工部位Z方向的深度:#3;
X方向的步距:#4;
走刀軌跡中,退(或進)刀時的半徑:#5(本例圖4中的R10);
中間變數:#6、#7、#8、#9
由所確定的變數及加工流程圖,畫出程序流程圖如圖5(b)所示。
4編製程序
子程序:%9001
N10 #1=#1/2 #1變數取1/2作為X坐標
N20 #2=#2/2 #2變數取1/2作為Y坐標
N30 G00 X#1 X方向定位到加工位置
N40 G41 D1 Y#2 Y方向定位到加工位置
N50 G01 Z3 F3000 M08 下降下安全高度,開冷卻液
N60 #6=-(#3-#5) 計算加工終點Z向坐標
N70 #7=#2-2*#5 計算退刀終點Y坐標
N80 G01 Z#6 插銑加工
N90 G02 Y#7 R#5 退刀
N100 G01 Z3 返回
N110 G02 Y#2 R#5 進刀
N120 #8=#8+#4 X方向總加工長度計數
N130 G91 G01 X-#4 X方向走一個步距
N140 IF #8LE#1 GOTO 80 判別第一側是否加工完
N150 G90 Y-#2 移至另一側
N160 G01 Z#6 插銑加工另一側
N180 G02 Y-#7 R#5 退刀
N190 G01 Z3 返回安全高度
N200 G02 Y-#2 R#5 進刀
N210 #9=#9+#4 X方向總加工長度計數
N220 G91 G01 X#4 X方向移動一個步距
N230 IF #9LE#1 GOTO 160 判別另一側是否加工完
N240 G90 G40 G00 X0 Y0 M09 X、Y方向返回起始點
N250 Z50 Z方向返回起始點
N260 M99 宏程序結束
主程序:%1010
N10 T01 選一號刀
N20 M06 換刀
N30 G00 G90 G54 G19 X0 Y0 S5000 M03 定位到起始位置,選擇坐標平面及坐標系,啟動主軸。
N40 G43 H01 Z50 Z方向補償
N60 G65 P9001 A200 B80.05 C90 D0 E0 F0 I0.05 J10 K0 調用宏程序並給相關變數賦值
N70 M05 停止主軸
N80 G49 Z50 Z方向取消補償
N90 M30 程序結束
五、結束語
利用流程圖編制用戶宏程序,思路清晰,所編制的程序適應性好,是一種值得推廣的方法。
⑹ 請問大家數控加工中心怎麼鑽孔用宏程序怎麼編程,WHILE和IF[#100 GE #101]GOTO1 分別怎麼編寫.懸賞100
循環宏程序舉例:
IF[#100 GE #101]GOTO1
當#100大於等於#101時跳到N1程序段執行。
IF是滿足條件跳出,WHILE是滿足條件運行,掌握一個就夠了。
#1~#33是局部變數,局部變數只能在宏中使用,以保持操作的結果,關閉電源時,局部變數被初始化成「空」。宏調用時,自變數分配給局部變數。
#100~#149(#199)和#500~#531(#999)是公共變數,公共變數可在不同的宏程序間共享。關閉電源時變數#100~#149被初始化成「空」,而變數#500~#531保持數據。公共變數#150~#199和#532~#999可以選用,但是當這些變數被使用時,紙帶長度減少了8.5米。
(6)宏程序編程如何分段擴展閱讀:
數控系統為用戶配備了強有力的類似於高級語言的宏程序功能,用戶可以使用變數進行算術運算、邏輯運算和函數的混合運算,此外宏程序還提供了循環語句、分支語句和子程序調用語句,利於編制各種復雜的零件加工程序,減少乃至免除手工編程時進行繁瑣的數值計算,以及精簡程序量。
宏程序指令適合拋物線、橢圓、雙曲線等沒有插補指令的曲線編程;適合圖形一樣,只是尺寸不同的系列零件的編程;適合工藝路徑一樣,只是位置參數不同的系列零件的編程。較大地簡化編程;擴展應用范圍。