① 數控加工中心如何利用宏程序自定義g指令
系統說明書會寫
FANUC .0i
參數號 G代碼<g> 被調用的用戶宏程序<p>
6050-6059 g O9010-O9019
修改上面的參數就可以了 1<g<255
② 數控宏程序的使用方法
A類宏程序
1)變數的定義和替換 #i=#j
編程格式 G65 H01 P#i Q#j
例 G65 H01 P#101 Q1005; (#101=1005)
G65 H01 P#101 Q-#112;(#101=-#112)
2)加法 #i=#j+#k
編程格式 G65 H02 P#i Q#j R#k
例 G65 H02 P#101 Q#102 R#103;(#101=#102+#103)
3)減法 #i=#j-#k
編程格式 G65 H03 P#i Q#j R#k
例 G65 H03 P#101 Q#102 R#103;(#101=#102-#103)
4)乘法 #i=#j×#k
編程格式 G65 H04 P#i Q#j R#k
例 G65 H04 P#101 Q#102 R#103;(#101=#102×#103)
5)除法 #i=#j / #k
編程格式 G65 H05 P#i Q#j R#k
例 G65 H05 P#101 Q#102 R#103;(#101=#102/#103)
6)平方根 #i=
編程格式 G65 H21 P#i Q#j
例 G65 H21 P#101 Q#102;(#101= )
7)絕對值 #i=│#j│
編程格式 G65 H22 P#i Q#j
例 G65 H22 P#101 Q#102;(#101=│#102│)
8)復合平方根1 #i=
編程格式 G65 H27 P#i Q#j R#k
例 G65 H27 P#101 Q#102 R#103;( #101=
9)復合平方根2 #i=
編程格式 G65 H28 P#i Q#j R#k
例 G65 H28 P#101 Q#102 R#103
1)邏輯或 #i=#j OR #k
編程格式 G65 H11 P#i Q#j R#k
例 G65 H11 P#101 Q#102 R#103;(#101=#102 OR #103)
2)邏輯與 #i=#j AND #k
編程格式 G65 H12 P#i Q#j R#k
例 G65 H12 P#101 Q#102 R#103;#101=#102 AND #103
(3)三角函數指令
1)正弦函數 #i=#j×SIN(#k)
編程格式 G65 H31 P#i Q#j R#k (單位:度) .
例 G65 H31 P#101 Q#102 R#103;(#101=#102×SIN(#103))
2)餘弦函數 #i=#j×COS(#k)
編程格式 G65 H32 P#i Q#j R#k (單位:度)
例 G65 H32 P#101 Q#102 R#103;(#101=#102×COS(#103))
3)正切函數 #i=#j×TAN#k
編程格式 G65 H33 P#i Q#j R#k (單位:度)
例 G65 H33 P#101 Q#102 R#103;(#101=#102×TAN(#103))
4)反正切 #i=ATAN(#j/#k)
編程格式 G65 H34 P#i Q#j R#k (單位:度,0o≤ #j ≤360o)
例 G65 H34 P#101 Q#102 R#103;(#101=ATAN(#102/#103)
(4)控制類指令
編程格式 G65 H80 Pn (n為程序段號)
例 G65 H80 P120;(轉移到N120)
2)條件轉移1 #j EQ #k(=)
編程格式 G65 H81 Pn Q#j R#k (n為程序段號)
例 G65 H81 P1000 Q#101 R#102
當#101=#102,轉移到N1000程序段;若#101≠ #102,執行下一程序段。
3)條件轉移2 #j NE #k(≠)
編程格式 G65 H82 Pn Q#j R#k (n為程序段號)
例 G65 H82 P1000 Q#101 R#102
當#101≠ #102,轉移到N1000程序段;若#101=#102,執行下一程序段。
4)條件轉移3 #j GT #k (> )
編程格式 G65 H83 Pn Q#j R#k (n為程序段號)
例 G65 H83 P1000 Q#101 R#102
當#101 > #102,轉移到N1000程序段;若#101 ≤#102,執行下一程序段。
5)條件轉移4 #j LT #k(<)
編程格式 G65 H84 Pn Q#j R#k (n為程序段號)
例 G65 H84 P1000 Q#101 R#102
當#101 < #102,轉移到N1000;若#101 ≥ #102,執行下一程序段。
6)條件轉移5 #j GE #k(≥)
編程格式 G65 H85 Pn Q#j R#k (n為程序段號)
例 G65 H85 P1000 Q#101 R#102
當#101≥ #102,轉移到N1000;若#101<#102,執行下一程序段。
7)條件轉移6 #j LE #k(≤)
編程格式 G65 H86 Pn Q#j Q#k (n為程序段號)
例 G65 H86 P1000 Q#101 R#102
當#101≤#102,轉移到N1000;若#101>#102,執行下一程序段。
B類宏程序
1. 定義
#I=#j
2. 算術運算
#I=#j+#k (加)
#I=#j-#k (減)
#I=#j×#k (乘)
#I=#j/#k (除)
3.1 邏輯函數之布爾函數
=EQ等於
≠NE不等於
>GT大於
<LT小於
≥GE大於或等於
≤LE小於或等於
例:#I = #j即#I EQ #J
3.2 邏輯函數之二進制函數
#I=#J AND #k (與,邏輯乘)
#I=#J OR #k (或,邏輯加)
#I=#J XOR #k (非,邏輯減)
4.三角函數
#I=SIN[#j] 正弦
#I=COS[#j] 餘弦
#I=TAN[#j] 正切
#I=ASIN[#j]反 正弦
#I=ACOS[#j]反 餘弦 #I=ATAN[#j] 反正切
5.四捨五入函數
#I=ROUND[#j]四捨五入化整
#I=FIX[#j]上取整
#I=FUP[#j]下取整
6.輔助函數
#I=SQRT[#j]平方根
#I=ABS[#j]絕對值
#I= LN [#j]自然對數
#I= EXP [#j] 指數函數
7.變換函數 #I=BIN[#j]BCD→BIN(十進制轉二進制)
#I=BCD[#j]BIN→BCD (二進制轉十進制)
8.轉移和循環
1〉.無條件的轉移 格式:GOTO1; GOTO#10;
2〉.條件轉移1 格式:IF[<條件式>]GOTOn
條件式:例:#j=#k用 #j EQ #k 表示,即 IF[#j EQ #k] GOTO n
3〉.條件轉移2格式:IF[<條件式>]THEN #I
例:IF[#j EQ #k] THEN #a=#b
4〉.循環 格式:WHILE [<條件式>] DOm , (m=1、2、3)
N10~~~~~~~~~
N20~~~~~~~~~~~~
ENDm (上下兩個m只能為1、2、3且必須相
同, 這樣才能夠成一段程序的循環)
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 GOTO→GO
6) 優先順序 函數→乘除(*,1,AND)→加減(+,-,OR,XOR) 例:#1=#2+#3*SIN[#4];
7) 括弧為中括弧,最多5重,園括弧用於注釋語句 例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)
轉移與循環指令
③ 宏程序如何使用
記下指令和格式就和子程序差不多。指令(EQ為=,NE不等於,
GT大於,
LT小與,
GE大於等於
,LE小於等於)WH
DO
END是運算指令也是英文縮寫。
例賦值#2等於5。運算#2=#2+1
運行一次後#2值就是6,運行n次#2值為5+n。
A宏程序的編制方法就是:
利用變數編程的
;
1、條件語句1
IF
[條件表達式]
GOTO
n
n….
當條件滿足時,程序就跳轉到同一程序中語句標號為n的
語句上繼續執行,
當條件不滿足時,程序執行下一條語句。
2、條件語句2WHILE
[條件表達式]
DO
m...…END
m
當條件滿足時,從DO
m到ENDm之間的程序就重復執行;
當條件不滿足時,程序就執行ENDm下一條語句。
3、橢圓的解析方程:
4、橢圓的參數方程:
條件語句2。
5、橢圓加工程序
N010
#1=1
角度步長
N020
#2=-90
(270)
初始角度
N030
#3=90
終止角度
N040
#4=10
刀具半徑
N050
#5=30
長半軸
N060
#6=20
短半軸
N070
G90G00X0Y
[#6+#4]
刀具運行到(0,-30,)的位置
N080
S1000M03
N090
G01Z-3F100
刀具下到-3mm
N100
。
WHILE[#2LE#3]DO1
起始角度小於等於終止角度
N110
#7=#5*COS[#2]
計算X坐標值(橢圓參數方程)
N120
#8=#6*SIN[#2]
計算Y坐標值
(橢圓參數方程)
N130
G1X#7Y#8F300
直線插補一個步長
N14
0#2=#2+#1
變數#2增加一個角度步長
N150
END1
N160
G90G00Z100.0M05
快速抬刀。
④ FANUC0i系統加工中心宏程序怎麼做循環指令用
一GOTO
N....
無條件轉宴胡移
:
例:
N10
。。。。
N20。。。
。。
GOTO
10;
[回到N10那一段程序]
二IF
[
]GOTO[
]
當條件滿足的時候
就一直循環
反之就執行下一段
例畢祥氏:
N10
G90
G0
X
Y
;
#1=#1+1;
G1
X
F
;
G0
Z
;
IF[#1LE5]GOTO10;(當#1小於或等於5的時候,程序跳到N10那一段
]
三WHILE[
]
DO--
(當滿足括弧裡面的條件
程序就一直執行]
例:
#1=0;
WHILE[#1NE5]DO1;手散
#1=#1+1
G90
G0
X
Y
;
G1
X
F
;
G0
Z
;
END1;
⑤ 學宏程序如何入手
學好宏程序其實不難,人家花巨資開發就是為了方便使用。下面我給你詳細說說它的各系統的不同之處和使用方法:
不同的系統有不同編程語法。西門子明顯與三菱、法那科、華中、哈斯等系統不同。但編程思想是相通的。你的這個問題太寬泛了,我先說說相同的地方吧(西門子除外):
1.變數:正如計算機程序設計中的變數一樣,數控程序中也需要使用變數。要進行程序流程式控制制,變數是必不可少的。數控編程中的變數用符號#跟一個整數表示。例如 #1就是一個變數。給變數賦值的方法和計算機編程一樣,如#1=5。(相當於basic或C語言的a=5,pascal的a:=5。)
數控編程中的變數按作用域可分為三類:局部變數、全局變數、系統變數。#1~#33是局部變數,局部變數只在本程序內起作用;#100~#199、#500~#599(現在很多系統都不止599了)是全局變數,在所有程序中起作用;#1000以上的是系統變數,控制著機床運行的各種狀態,不要輕易修改。局部變數不能在程序運行時再加以修改,只能由程序控制。在使用局部變數時,必須在程序中賦初值。全局變數可以程序運行時人為地加以修改。在使用全局變數時,可以不在程序中賦初值,而在加工時打入所需值。補償量的本質是變數。
#0是空變數(相當於pascal的nil,C的NULL),不能給#0賦值。注意:空變數和0是不同的。正像在pascal里定義一個指針型變數p,則如下兩句程序是不同的:p:=nil、p^:=0。(或者C語言里的p=NULL、*p=0)當#1為0時,G1X100Y#1相當於G1X100Y0,而當#1為空時,G1X100Y#1相當於G1X100。當#1為0時,G#1X100相當於G0X100,而當#1為空時,G#1X100相當於X100。
表示變數的#號後面的數也可以是表達式或變數。例如,已知#1=5,#2=30,#3=25,#4=0,#5=80則#6=#[#1]相當於#6=80;#[3+4]=128相當於#7=128;#8=#[#4]相當於#8為空;#9=#[#2-#3]相當於#9=80;G#4X#2*#1Y#[#4]相當於G0X150。
變數可以自增或自減,變數經過運算後的值可以賦給自身。例如,當前#1=3;則執行#1=#1+1後#1的值是4。(相當於匯編語言里的INC AL;basic里的i=i+1;pascal里的inc(i);C語言里的i++。)再如,當前#1=3,則執行#1=#1EQ3後,#1的值是1。
2.算術運算和邏輯運算:①算術運算就是加減乘除(+-*/)。計算四則混合運算式時,先算乘除後算加減,如果有括弧則先算括弧里的。例如1+2*(7-4)=7。通常計算機程序設計里的括弧用圓括弧表示,但數控編程里用方括弧表示。數控編程里的圓括弧表示注釋(相當於匯編語言的分號、basic里的rem、pascal里的{}或(*…*)、C語言里的/*…*/。)②邏輯運算常見的有以下4種:與(and)、或(or)、非(not)、異或(xor)。與、或、非是基本邏輯運算,異或不是基本邏輯運算。A和B相異或的結果是AB+AB。「與」的運算規則是全1出1,有0出0,如1 and 1=1; 0 and 1=0;「或」的運算規則是全0出0,有1出1,如1 or 1=1; 0 or 1=1;「非」是單目運算符,即0變1,1變0。程序設計中的邏輯值(也叫布爾值,即「真」和「假」)在計算機中用1和0表示,通常1表示「真」,0表示「假」。如果是兩個整數進行邏輯運算,則是這兩個數的二進制的各位進行運算,例如5 and 6=4; 5 or 6=7。具體用法你可以回憶一下計算機程序設計中的用法,數控編程中也同樣使用。and、or、not、xor四種運算符分別相當於匯編、basic或pascal里的and、or、not、xor;C語言里的&、|、!、^。③數控編程中也可以使用取余運算(mod),例如10 mod 3=1。mod相當於匯編、basic或pascal里的mod、C語言的%。④數控編程中的比較運算符和匯編語言(指Intel80x86匯編語言)里的相同,即EQ(等於)、NE(不等於)、LT(小於)、LE(小於等於)、GT(大於)、GE(大於等於)。相當於basic或pascal里的=、<>、<、<=、>、>=,C語言里的==、!=、<、<=、>、>=。
3.常用數學函數:數控編程中用到的函數主要是數學函數。一般數控系統均提供下列函數:絕對值函數abs(x);平方根函數sqrt(x);三角函數sin(x);cos(x);tan(x) (單位是度,但華中是弧度);反三角函數asin(x);acos(x);atan(x);對數函數ln(x);指數函數exp(x);四捨五入取整函數round(x);截斷取整函數fix(x);進位取整函數fup(x);以及把8421BCD碼轉二進制的函數bin(x) 和把二進制轉8421BCD碼的函數bcd(x)。大多數數控系統要求函數名必須用大寫,括弧則必須用方括弧。例如G[#1GT30]X[50+2*ABS[#1]],當#1=20時相當於G0X90。
4.程序流程式控制制:程序流程可以進行無條件轉移、條件轉移、循環,還可以調用子程序或宏程序。
無條件轉移的格式是GOTO_。GOTO後面的數是要轉移到的程序行的標號(即N_)。如果無條件往回跳轉,則有可能造成死循環(即程序無法自然執行結束)。條件轉移的格式是IF[……]GOTO_或IF[……]THEN……。方括弧內是一個邏輯值,通常使用一個判斷表達式表示。循環的格式是WHILE[條件表達式]DO m …… END m。DO m和END m之間的部分是循環體,m是一個整數,用於說明哪個END和哪個DO配對。m可重復使用,只有在循環嵌套時才需要改變m。在進行程序跳轉時,可由循環體內跳轉至循環體外,但不能循環體外跳轉至循環體內(各種編程語言均如此)。
宏程序(用G65調用或直接寫成G××)和子程序(用M98調用或直接寫成M××)主要有以下區別:
①宏程序可以傳遞參數,子程序不能傳遞參數。
②M98指令可以指定標號,故可以把子程序和主程序寫在一個程序中(因系統而異);G65指令不能指定標號,宏程序必須單獨寫成一個程序。
③子程序里的變數不區分層次,主程序里的#1和子程序里的#1是同一個變數;宏程序里的變數區分層次,主程序里的#1和宏程序里的#1不是同一個變數。這類似於pascal里的函數嵌套(C語言不允許函數嵌套)。
各系統還有自己的特點,如三菱可以寫G#1+#2,法那科必須寫成G[#1+#2];三菱可以寫IF[#1]GOTO1(想想C語言里的if(a)...)法那科不行;西門子的變數是R1、R2,無條件轉移是gotof、gotob等,細節的差別太多了,你參考一下系統說明書。
宏程序可以定義成G代碼(如G200,只要系統沒用到),用法和系統原帶的幾乎沒有區別。實際上系統原帶的G代碼除了一些基本的(如G0~G4等)大都是用宏程序實現的,如G73~G89(孔加工)、M6(換刀)等。(我交待一句:你可以打開它們的宏程序看看,但不要修改!)
我花很大工夫給你回帖,不知你覺得有用沒有。請問你是學生還是已經參加工作了?在什麼地方?你要是參加工作了,我可以再詳細說說怎麼編宏程序,其中涉及到程序設計思想、數學計算、系統變數、參數傳遞方法等等。我也願意多交流交流經驗。如果你是學生,我再多說恐怕你嫌太枯燥了。
⑥ 數控車床宏程序怎麼寫最好帶步驟解說
數控車床宏程序是非常靈活且因情況而異的,所以數控車床宏程序編程掌握以下參數即可:
普通加工程序直接用數值指定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。
(6)宏程序怎麼讀取G1G0指令擴展閱讀:
數控宏程序編程是用變數的方式進行數控編程的方法,數控宏程序分為A類和B類宏程序,其中A類宏程序比較老,編寫起來也比較費時費力,B類宏程序類似於C語言的編程,編寫起來也很方便。
不論是A類還B類宏程序,它們運行的效果都是一樣的。
編寫一些大批相似零件的時候,可以用宏程序編寫,這樣只需要改動幾個數據就可以了,沒有必要進行大量重復編程。
⑦ 宏程序如何使用
宏就是用公式來加工零件的,普通加工程序直接用指定G代碼和移動距離。
指令(EQ為=,NE不等於, GT大於, LT小與, GE大於等於 ,LE小於等於)WH DO END是運算指令也是英文縮寫。
例賦值#2等於5,運算#2=#2+1 運行一次後#2值就是6,運行n次#2值為5+n。
宏程序的作用
數控系統為用戶配備了強有力的類似於高級語言的宏程序功能,用戶可以使用變數進行算術運算、邏輯運算和函數的混合運算,此外宏程序還提供了循環語句、分支語句和子程序調用語句,利於編制各種復雜的零件加工程序,減少乃至免除手工編程時進行繁瑣的數值計算,以及精簡程序量。
以上內容參考:網路-宏程序