1. 數控銑削宏程序
數控銑削加工宏程序的編制與應用
在數控編程中,宏程序編程靈活、高效、快捷。宏程序不僅可以實現象子程序那樣,對編制相同加工操作的程序非常有用,還可以完成子程序無法實現的特殊功能,例如,型腔加工宏程序、固定加工循環宏程序、球面加工宏程序、錐面加工宏程序等。
一、FANUC宏程序的理論基礎
(一)FANUC宏程序的構成
1)包含變數
2)包含算術或邏輯運算(=)的程序段
3)包含控制語句(例如:GOTO,DO,END)的程序段
4)包含宏程序調用指令(G65,G66,G67或其他G代碼,M代碼調用宏程序)的程序段
(二)FANUC宏程序的變數
FANUC數控系統變數表示形式為# 後跟1~4位數字,變數有四種:
1、FANUC宏程序的變數Ⅰ
變數號
變數類型
功能
#0
空變數該變數總是空
沒有任何值能賦給該變數
2、FANUC宏程序的變數Ⅱ
變數號
變數類型
功能
#1——#33
局部變數
局部變數只能用在宏程序中存儲數據,例如運算結果。當斷電時局部變數被初始化為空,調用宏程序時自變數對局部變數賦值。
3、FANUC宏程序的變數Ⅲ
變數號
變數類型
功能
#100—#199
#500—#999
公共變數
公共變數在不同的宏程序中的意義相同當斷電時變數#100 #199初始化為空變數
#500 #999 的數據保存即使斷電也不丟失
4、FANUC宏程序的變數Ⅳ
變數號
變數類型
功能
#1000——
系統變數
系統變數用於讀和寫CNC 運行時各種數據的變化例如刀具的當前位置和補償值等
(三)刀具補償存儲器C用G10指令進行設定
H代碼的幾何補償值
G10L10P R ;
D代碼的幾何補償值
G10L12P R ;
H代碼的磨損補償值
G10L11P R ;
D代碼的磨損補償值
G10L13P R ;
P:刀具補償號
R:絕對值指令(G90)方式時的刀具補償值。增量值指令(G91)方式時的刀具補償值為該值與指定的刀具補償號的值相加。
用G10改變工件坐標系零點偏移值
格式:G10L12PpIP ;
P=0:外部工件零點偏移值
P=1:工件坐標系G54的零點偏移值
P=2:工件坐標系G55的零點偏移值
P=3:工件坐標系G56的零點偏移值
P=4:工件坐標系G57的零點偏移值
P=5:工件坐標系G58的零點偏移值
P=5:工件坐標系G59的零點偏移值
IP: 對於絕對值指令(G90),為每個軸的工件零點偏移值。
對於增量值指令(G91),為每個軸加到設定的工件零點偏移值。
(四)FANUC宏程序運算符Ⅰ
1、FANUC宏程序運算符Ⅰ
功能
格式
備注
定義
#i=#j
加法
#i=#j+#k
減法
#i =#j- #k
乘法
#i =#j*#k
除法
#i=#j/#k
2、FANUC宏程序運算符Ⅱ
功能
格式
備注
正弦
#i=SIN[#j]
角度以度指定,如90º30』表示為90.5度
反正弦
#i=ASIN[#j]
餘弦
#i=COS[#j]
反餘弦
#i=ACOS[#j]
正切
#i=TAN[#j]
反正切
#i=ATAN[#j]
3、FANUC宏程序運算符Ⅲ
功能
格式
備注
平方根
#i=SQRT[#j]
絕對值
#i=ABS[#j]
舍入
#i=ROUND[#j]
上取整
#i=FIX[#j]
下取整
#i=FUP[#j]
自然對數
#i=LN[#j]
指數函數
#i=EXP[#j]
4、FANUC宏程序運算符Ⅳ
功能
格式
備注
或
#i=#j OR #k
邏輯運算一位一位的按二進制數執行
異或
#i=#j XOR #k
與
#i=#j AND #k
從BCD轉為BIN
#i=BIN[#j]
用於與PMC的信號交換
從BIN轉為BCD
#i=BCD[#j]
(五)FANUC宏程序的轉移和循環
1、FANUC宏程序的轉移和循環Ⅰ
無條件轉移:GOTOn
(n為順序號,1——99999)
例:GOTO10為轉移到N10程序段
2、FANUC宏程序的轉移和循環Ⅱ
條件轉移:(IF語句)
IF [條件表達式] GOTOn
當指定的條件表達式滿足時,轉移到標有順序號n的程序段,如果指定的條件表達式不滿足時,執行下個程序段
3、FANUC宏程序的轉移和循環Ⅲ
條件轉移:(IF語句)
IF [條件表達式] GOTOn
如果變數#1的值大於10,轉移到順序號N20的程序段。
如果條件不滿足 IF [#1 GT 10] GOTO 2
如果條件滿足
程 序
程程序序
N20 G00 G90 X100. Y20.
:
4、FANUC宏程序的轉移和循環Ⅳ
IF [條件表達式] THEN
當指定的條件表達式滿足時,執行預先決定的宏程序語句。
例:IF [#1EQ #2] THEN #3=0;
(六)FANUC宏程序的循環
FANUC宏程序循環Ⅰ
WHILE [條件表達式] Dom;
(m=1,2,3)
條件不滿足 條件滿足
ENDm
註:循環允許嵌套,最多3層,但不允許交叉;
FANUC宏程序循環Ⅱ
FANUC宏程序循環Ⅲ
(七)FANUC宏程序的條件表達式運算符
運算符
含義
EQ
等於
NE
不等於
GT
大於
GE
大於或等於
LT
小於
LE
小於或等於
(九)FANUC宏程序的調用Ⅰ
FANUC宏程序的調用Ⅰ
非模態調用G65:
格式: G65PpLl<自變數指定>
其中
p:要調用的程序號
L:調用次數(默認為1)
自變數:數據傳遞到宏程序
FANUC宏程序的調用Ⅱ
模態調用(G66):
G66PpLl<自變數指定>;
程序點
G67;(取消模態)
其中
p:要調用的程序號
L:調用次數(默認為1)
自變數:數據傳遞到宏程序
(十)FANUC宏程序的自變數指定
1、FANUC宏程序的自變數指定I
地址
變數
地址
變數
地址
變數
A
#1
I
#4
T
#20
B
#2
J
#5
U
#21
C
#3
K
#6
V
#22
D
#7
M
#13
W
#23
E
#8
Q
#17
X
#24
F
#9
R
#18
Y
#25
H
#11
S
#19
Z
#26
2、FANUC宏程序的調用II
地址
變數
地址
變數
地址
變數
A
#1
K3
#12
J7
#23
B
#2
I4
#13
K7
#24
C
J4
#14
I8
#25
I
#4
K4
#15
J8
#26
J
#5
I5
#16
K8
#27
K
#6
J5
#17
I9
#28
I2
#7
K5
#18
J9
#29
J2
#8
I6
#19
K9
#30
K2
#9
J6
#20
I10
#31
I3
#10
K6
#21
J10
#32
J3
#11
I7
#22
K10
#33
二、FANUC宏程序的應用
(一)宏程序示例(銑圓)
#1=圓心坐標X值
#2=圓心坐標Y值
#3=園孔最終Z值
#4=圓孔直徑
#5=刀具直徑
#6=[#4+#5]/4 (進刀半徑)
#7= #3+50 (進刀高度)
#8= [#1+#4]/2-#6(進刀圓弧起點X值)
#9 = #2 - #6 (進刀圓弧起點Y值)
#10= #1+#4/2 (銑圓起點X值)
#11= -#4/2 (I矢量)
#12= #2+#6(退刀圓弧Y值)
%
O100
M03S1000
G00G90G54G43H01Z100.
X#1Y#2
Z#7
G01Z#3 F100
G41D02X#8Y#9
G03X#10Y#2R#6
G03X#10Y#2I#11J0
G03X#8Y#12R#6
G01G40X#1Y#2
G00Z100.
M30
%
(二)宏程序示例(銑半圓球)
自上而下等角度水平圓弧環繞球面精加工
#1=(A)球面的圓弧半徑
#2=(B)球頭銑刀刀具半徑
#3=(C)球面的起始角度
#4= (I)球面的終止角度,#4≤90°
#17=(Q)Z坐標每次遞減量
#24=(X)球心坐標X值
#25=(Y)球心坐標Y值
#26=(Z)球心坐標Z值
%
O200
M03S1000
G00G90G541Z100.
G00X0Y0
G65P1912X Y Z A B C I Q
M30
%
O1912 (宏程序)
G52X#24Y#25Z#26
G00X0Y0Z[#1+30]
#12=#1+#2
WHILE [#3LT#4]DO1
#5 = #12*COS[#3]
#6 = #12*SIN[#3]
X[#5+#2] Y#2
G03X#5Y0R#2F1000
G02 I-#5
G03X[#5+#2]Y-#2R#2
G00Z[#7+1]
Y#2
#3 = #3 + #17
END 1
GOO Z[#1+30]
G52 X0 Y0 Z0
M99
%
注釋說明
(主程序)
調用宏程序O1912
(空格處為變數賦值)
在球心處建立局部坐標
球心與刀心連線距離
如果#3<#4,循環1繼續
任意角度刀心X坐標值
任意角度刀心Y坐標值
G00定位於下刀點
圓弧進刀
沿球面切削
圓弧退刀
提刀1
移到進刀點
角度#3每次遞增#17
循環1結束
提刀
恢復G54坐標
宏程序結束返回
(三) 宏程序示例Ⅰ
採用Φ20R4銑刀加工SR30的球,已知球心坐標為(X0Y0Z-5.)
宏程序示例Ⅱ
1、分析:銑球程序一般採用自動編程來實現,但是,利用宏程序強大的功能同樣也可以實現,而且程序更加簡潔。
2、編程思路:
銑球可以認為是多個銑圓的組合。
3、排刀分布:
有兩種方案,一是按Z向分布,二是按圓心角分布。從保證表面質量來看,最佳方案為按圓心角分布。
圓弧起點計算,從X正向開始起刀。
刀具根部R4的圓心在XZ平面的運動軌跡為與R30等距的圓R34(見圖示中紅色軌跡),刀尖點上4mm處的軌跡(即褐色軌跡)為紅色軌跡沿X正向平移6毫米,刀尖點坐標為褐色軌跡沿Z軸向下平移4mm(即綠色軌跡)。
起始角度=ARCSIN((5+4)/34)=15.349º
起始位置X值=34*COS(15.349)+6=38.787
起始位置Z值=0 (通用表達式=34*sin(15.349)-5-4)
4、變數定義:
#1為圓心角,范圍由(15.349,90)
#2為刀尖中心X值,#2=34*COS[#1]+6
#3為刀尖中心Z值,#3=34*SIN[#1]-5-4
%
O300
M03S3000;
G00G90G54Z100.;
#1=15.349
X50.Y0;
Z10.;
WHILE[#1 LE 90] DO1;
#2=34*COS[#1]+6;
#3=34*SIN[#1]-5-4;
G01Z#3F900;
X#2;
G02X#2Y0I-#2J0;
#1=#1+1;
END1;
G00Z100.;
M30;
%
(四)宏程序示例II
用Φ20R10銑刀加工輪廓處R5圓角
下面為銑外形的一段程序,採用刀具半徑補償
G00X2.5Y26.664
G01G41D01X-8.991Y2.023
G03X2.5Y-3.336I11.491J9.641
X32.969Y-.208I0.J150.
G02X44.955Y-10.952I2.031J-9.792
G03Y-49.048I199.09J-19.048
G02X33.452Y-59.88I-9.955J-.952
G03X-28.452I-30.952J-197.59
G02X-39.922Y-48.75I-1.548J9.88
G03Y-11.25I-148.823J18.75
G02X-27.969Y-.208I9.922J1.25
G03X2.5Y-3.336I30.469J146.872
X13.991Y2.023I0.J15.
G40G01X2.5Y26.664
編程思路:
利用G10指令修改刀具半徑偏置值來實現倒圓角。
G10格式為G10L12P1R ,其中,P1表示修改D01,R後為刀具半徑偏置值。
設定倒角的圓心角為變數#1,取值范圍為0-90º
設定#2為刀具半徑偏置值,取值=COS[#1]*15-5
設定#3為Z值,取值=SIN[#1]*[5+10]-5-10
%
O400
M03S3000
G00G90G54Z100.
#1=0
X2.5Y26.64
Z5.
WHILE [#1 LE 90] DO1
#2= COS[#1]*15-5
#3= SIN[#1]
*[5+10]-5-10
G10L12P1R#2
G01Z#3F900
G00X2.5Y26.664
G01G41D01X-8.991Y2.023
G03X2.5Y-3.336I11.491J9.641
X32.969Y-.208I0.J150.
G02X44.955Y-10.952I2.031
J-9.792
G03Y-49.048I199.09J-19.048
G02X33.452Y-59.88I-9.955J-.952
G03X-28.452I-30.952J-197.59
G02X-39.922Y-48.75I-1.548J9.88
G03Y-11.25I-148.823J18.75
G02X-27.969Y-.208I9.922J1.25
G03X2.5Y-3.336I30.469J146.87
X13.991Y2.023I0.J15.
G40G01X2.5Y26.664
#1=#1+5
END1
G00Z100.
M30
%
三、小結
隨著現代製造技術的發展和數控機床的日益普及,數控加工得到廣泛應用。對於加工形狀簡單的零件,計算比較簡單,程序不多,採用手工編程較容易完成。因此,在點定位加工及由直線與圓弧組成的輪廓加工中,手工編程仍廣泛應用。但對於形狀復雜的零件,特別是具有非圓曲線、列表曲線及曲面的零件,用一般的手工編程就有一定的困難,且出錯機率大,有的甚至無法編出程序。在CAD/CAM軟體普遍應用的今天,手工編程的應用空間日趨縮小。但手工編程是自動編程的基礎。宏程序的運用,其最大的特點就是將有規律的形狀或尺寸用最短的程序段表示出來,具有極好的易讀性和易修改性。
2. 加工中心宏程序
宏程序的作用:
數控系統為用戶配備了強有力的類似於高級語言的宏程序功能,用戶可以使用變數進行算術運算、邏輯運算和函數的混合運算,此外宏程序還提供了循環語句、分支語句和子程序調用語句,利於編制各種復雜的零件加工程序,減少乃至免除手工編程時進行繁瑣的數值計算,以及精簡程序量。
宏程序指令適合拋物線、橢圓、雙曲線等沒有插補指令的曲線編程;適合圖形一樣,只是尺寸不同的系列零件的編程;適合工藝路徑一樣,只是位置參數不同的系列零件的編程。較大地簡化編程;擴展應用范圍。
加工中心宏程序應用:
以下都以#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報警)
以上內容參考:網路--宏程序
3. 宏程序系統變數怎麼用啊求明細表
1、使用環境變數,這里創建腳本 test.sh,並入截圖內容。
注意事項:
如果對%%括起來的系統變數具體含義不清楚,可進入運行--輸入cmd--在dos命令行下輸入 echo %變數名% 即可得到答案,輸入「cd 變數名」即可定位到變數位置。也可以在在dos命令行下輸入:「set」即可查看所有系統變數及對應位置。
4. 數控編程宏程序的指令
宏程序編程
一 變數
普通加工程序直接用數值指定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
5. 新代系統關於宏程序的問題
%@MACRO;T0808M3S1000;G0X82.Z5.;#1:=76.;
N10G0X#1;
G1Z-40.F0.2;X85.;G0Z5.;
#1:=#1-4.;
IF(#1>40.)THEN GOTO10;(也可以在同一行。)
ENDIF;
G0X100.Z100.;
M30;
1.WHILE語句格式:
WHILE(#1>40.) DO(這里不可以輸「;」字元。)
:(程序循環內容)
:(程序循環內容)
END_WHILE;(WHILE語句結束)
2.IF語句格式:
IF(#1>40.)THEN (這里不可以輸「;」字元。與「GOTO10不在同一行。)
GOTO10;
END_IF;(每次IF語句下一行都要加「END_IF」)
(機器操作面板上找不到 END_IF 中間的「_」符號,可以不輸。)
6. 簡單的解釋一下數控宏程序里的 變數 賦值 是什麼意思
基本指令:
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#2 6.00×100.0;
N#3 Z200.0;
4. 變數號所對應的變數,對每個地址來說,都有具體數值范圍
例:#30=1100時,則M#30是不允許的
5. #0為空變數,沒有定義變數值的變數也是空變數
6. 變數值定義:
程序定義時可省略小數點,例:#123=149
MDI鍵盤輸一. 變數的種類
1. 局部變數#1~#33
一個在宏程序中局部使用的變數
例: A宏程序 B宏程序
… …
#10=20 X#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
G91 X-#1;X-1.235
X-#2 F300;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.無條件的轉移
格式: GOTO 1;
GOTO #10;
2.條件轉移
格式: IF[<條件式>] GOTO n
條件式:
#j EQ#k 表示=
#j NE#k 表示≠
#j GT#k 表示>
#j LT#k 表示<
#j GE#k 表示≥
#j LE#k 表示≤
例: IF[#1 GT 10] GOTO 100;
…
N100 G00 691 X10;
例:求1到10之和
O9500;
#1=0
#2=1
N1 IF [#2 GT10] GOTO 2
#1=#1+#2;
#2=#2+1;
GOTO 1
N2 M301.循環
格式:WHILE[<條件式>]DO m;(m=1,2,3)
…
…
…
ENDm
說明:1.條件滿足時,執行DOm到ENDm,則從DOm的程序段
不滿足時,執行DOm到ENDm的程序段
2.省略WHILE語句只有DOm…ENDm,則從DOm到ENDm之間形成死循環
3.嵌套
4.EQ NE時,空和「0」不同
其他條件下,空和「0」相同
例:求1到10之和
O0001;
#1=0;
#2=1;
WHILE [#2LE10] DO1;
#1=#1+#2;
#2=#2+#1;
END1;
M30;
7. 加工中心宏程序
一、變數
1、變數的表示
FANUC系統使用「#」表示變數,例如:#1、#100等。變數根據變數號可以分成四種類型,見下表。
變數號 變數類型 功能
#0 空變數 該變數總是空,任何值都不能賦給該變數
#1~#33
局部變數 局部變數只能用在宏程序中存儲數據,例如,運算結果。當斷電時,局部變數被初始化為空。調用宏程序時,自變數對局部變數賦值
#100~#109
#500~#999 公共變數 公共變數在不同的宏程序中的意義相同。當斷電時,變數#500~#999的數據保存,即使斷電也不會丟失
#1000以上 系統變數 系統變數用於讀寫CNC運行時的各種數據,例如,刀具當前位置和補償
2、關於變數的說明
(1)變數引用時,為在程序中使用變數值,指定後跟變數號的地址。當用表達式指定變數時,要把表達式放在括弧中,例如,GO X[#1+#2]F#3。式中X後的坐標什即是由#1、#2這兩個變數組成的表達式來表示。
(2)表達式可以用於指定變數號。此時,表達式必須封閉在括弧中,例如,#[#1+#2-12]。
注意:
1) 宏程序中,方括弧用於封閉表達式,圓括弧只表示注釋內容,使用變數時必須注意,FANUC系統通過參數來切換圓括弧和方括弧。
2) 表達式可以表示變數號和變數。這兩者並不一樣,例如,X#[#1+#2]並不等於X[#1+#2]。
3) 當在程序中定義變數時,小數點可以省略。例如,當定義#1=123;變數#1的實際值是123.000。
4) 被引用變數的值根據地址的最小設定單位自動舍入。例如:G00X #1。
5) 改變引用的變數值的符號,要把負號放在「#」的前面。例如:G00X-#1。
6) 當變數值未定義時,這樣的變數成為「空」變數。當引用未定義的變數時,變數及地址字都被忽略。例如,當變數#1的值是0,並且變數#2的值是空時,G00X#1Z#2的執行結果為G00X0。
7) 變數#0總是空變數。它不能寫,只能讀。
二、變數的運算
1、算術、邏輯運算和運算符(見下表)
功能 格式 備注
定義 #i=#j
加法 #i=#j+#k
減法 #i=#j-#k
乘法 #i=#j*#k
除法 #i=#j/#k
正弦 #i=SIN[#j] 角度以度指定。90°30』表示90.5°
反正弦 #i=ASIN[#j]
餘弦 #i=COS[#j]
反餘弦 #i=ACOS[#j]
正切 #i=TAN[#j]
反正切 #i=ATAN[#j]/[#k]
平方根 #i=SQRT[#j]
絕對值 #i=ABS[#j]
舍入 #i=ROUND[#j]
上取整 #i=FUP[#j]
下取整 #i=FIX[#j]
自然對數 #i=LN[#j]
指數函數 #i=EXP[#j]
或 #i=#jOR#k 邏輯運算一位一位地按二進制數執行
異或 #i=#jXOR#k
與 #i=#jEXP#k
從BCD轉為BIN #i=BIN[#j] 用於與PMC的信號交換
從BIN轉為BCD #i=BCD[#j]
2、關於運算符的說明
(1)角度單位
函數SIN、COS、ASIN、ACOS、TAN和ATAN的角度單位是度(°)
(2)上取整和下取整
CNC處理數值運算時,若操作後產生的整數絕對大於原數的絕對值時為上取整;若小於原數的絕對值為下取整。對於負數的處理應小心。
例如:假定#1=1.2,並且#2=-1.2。
當執行#3=FUP[#1]時,2.0賦給#3。
當執行#3=FIX[#1]時,1.0賦給#3。
當執行#3=FUP[#2]時 ,-2.0賦給#3。
當執行#3=FIX[#2]時,-1.0賦給#3。
(3)運算符的優先順序
按優先的先後順序依次是函數→乘和除運算(*、∕、AND、MOD)→加和減運算(+、﹣、OR、XOR)。
(4)括弧嵌套
括弧用於改變運算優先順序。括弧最多可以嵌套使用5級,包括函數內部使用的括弧。
三、功能語句
1、無條件轉移(GOTO)語句——轉移到有順序號n的程序段
格式:
GOTOn ;n指行號
例如:
GOTO1 轉移至第一行
GOTO#10 轉移至變數#10所決定的行
2、運算符(見下表)
運算符 含義 運算符 含義
EQ 等於(=) GE 大於或等於(≥)
NE 不等於(≠) LT 小於(<)
GT 大於(>) LE 小於或等於(≤)
3、條件轉移(IF)語句
(1)IF[表達式] GOTOn
說明:如果指定的條件表達式滿足時,轉移到標有順序號n的程序段;如果指定的條件表達式不32滿足時,則執行下一個程序段。
(2)IF[表達式]THEN
說明:如果表達式滿足,執行預先決定的宏程序語句,且只執行一個宏程序語句。例如,條件語句IF[#1EQ#2]THEN#3=0表示如果#1和#2的值相同,0賦給#3。
4、循環功能(WHILE)語句
格式:WHILE[表達式]DOm ;(m=1,2,3)
……
ENDm
說明:在WHILE後指定一個條件表達式,當指定條件滿足時,執行從DO到END之間的程序;否則,轉到END後的程序段。
提示:通過上述介紹,完全可以藉助系統提供的二次開發功能定製出個性化的宏程序,例如,可以將例4—23中刀具軌跡路徑定製在宏程序中,然後通過G65方式或直接用G代碼調用.常見結構的宏程序定製是有效提高編程效率的手段之一.
8. 宏程序的變數如何賦值
用=號賦值,例: #1=10 執行後#1的內容是10了 =號的左邊一定是變數,右邊是表達式!