誰(shuí)能告訴我在宏程序if語(yǔ)句中總有一句類(lèi)似于#3=#3-0.5的語(yǔ)句是什么意思?
程序段為宏程序語(yǔ)句:
? 包含算術(shù)或邏輯運算(=)的程序段。
? 包含控制語(yǔ)句(例如,GOTO,DO,END)的程序段。
? 包含宏程序調用指令(例如,用G65,G66,G67 或其它G 代碼,M 代碼
調用宏程序)的程序段。
除了宏程序語(yǔ)句以外的任何程序段都為NC 語(yǔ)句。
說(shuō)明
? 即使置于單程序段運行方式, 機床也不停止。但是, 當參數
N0.6000#5SBM 設定為1 時(shí),在單程序段方式中,機床停止。
? 與NC 語(yǔ)句的不同
? 在刀具半徑補償方式中宏程序語(yǔ)句段不做為不移動(dòng)程序段處理(見(jiàn)Ⅱ-
15.7 節)。
如果NPS(參數N0.3450#4)為1,滿(mǎn)足以下條件時(shí)程序段中的NC 語(yǔ)句
可認為與宏程序語(yǔ)句性質(zhì)相同。
? 與宏程序語(yǔ)句有相
同性質(zhì)的NC 語(yǔ)句
? 含有子程序調用指令(例如,用M98 或其它M 代碼或用T 代碼調用子
程序)但沒(méi)有除O,N 或L 地址之外的其它地址指令的NC 語(yǔ)句其性質(zhì)
與宏程序相同。
? 不包含除O,N,P 或L 以外的指令地址的程序段其性質(zhì)與宏程序語(yǔ)句
相同。
15.5.2 IF 之后指定條件表達式。
條件轉移
(IF 語(yǔ)句)
IF[條件表達式] GOTO n
如果指定的條件表達式滿(mǎn)足時(shí),轉移到標有順序號n 的程序段。如果指定
的條件表達式不滿(mǎn)足,執行下個(gè)程序段。
如果變量#1 的值大于10,轉移到順序號N2 的程序段。
IF[#1GT10]GOTO2;
如果條件滿(mǎn)足
程序
如果條件不滿(mǎn)足
N2 G00 G91 X10.0;
IF[條件表達式
]THEN
如果條件表達式滿(mǎn)足,執行預先決定的宏程序語(yǔ)句。只執行一個(gè)宏程序語(yǔ)
句。
如果#1 和#2 的值相同,0 賦給#3。
IF〔#1 EQ #2〕THEN #3=0;
說(shuō)明
·條件表達式 條件表達式必須包括算符。算符插在兩個(gè)變量中間或變量和常數中間,并
且用括號 (〔,〕)封閉。表達式可以替代變量。
運算符由2 個(gè)字母組成,用于兩個(gè)值的比較,以決定它們是相等還是一個(gè)
值小于或大于另一個(gè)值。注意,不能使用不等符號。
·運算符
表15.5.2 運算符
運算符 含義
EQ 等于(=)
NE 不等于(≠)
GT 大于(>)
GE 大于或等于(≥)
LT 小于(<)
LE 小于等于(≤)
·示例程序 下面的程序計算數值1~10 的總和
〇9500
#1=0;???????????存儲和數變量的初值
#2=1;???????????被加數變量的初值
N1 IF〔#2 GT 10〕GOTO2;??當被加數大于10 時(shí)轉移到N2
#1=#1+#2;?????????計算和數
#2=#2+#1;?????????下一個(gè)被加數
GOTO1;??????????轉到N1
N2 M30;??????????程序結束
功能 格式 備注
定義 #i=#j
加法 #i=#j+#k;
減法 #i=#j-#k;
乘法 #i=#j*#k;
除法 #i=#j/#k;
正弦 #i=SIN[#j];
反正弦 #i=ASIN[#j];
余弦 #i=COS[#j];
反余弦 #i=ACOS[#j];
正切 #i=TAN[#j];
反正切 #i=ATAN[#j]/[#k];
角度以度指定。90°30′
表示為90.5 度。
平方根 #i=SQRT[#j];
絕對值 #i=ABS[#j];
舍入 #i=ROUND[#j];
上取整 #i=FIX[#j];
下取整 #i=FUP[#j];
自然對數 #i=LN[#j];
指數函數 #i=EXP[#j];
或 #i=#j OR #k;
異或 #i=#j XOR #k;
與 #i=#j AND #k;
邏輯運算一位一位地按
二進(jìn)制數執行。
從BCD 轉為BIN #i=BIN[#j];
從BIN 轉為BCD #i=BCD[#j]; 用于與PMC 的信號交換
轉移和循環(huán)
在程序中,使用GOTO 語(yǔ)句和IF 語(yǔ)句可以改變控制的流向。有三種轉移
和循環(huán)操作可供使用:
轉移和循環(huán) GOTO 語(yǔ)句(無(wú)條件轉移)
IF 語(yǔ)句(條件轉移:IF?THEN?)
WHILE 語(yǔ)句(當?時(shí)循環(huán))
轉移到標有順序號n 的程序段。當指定1 到99999 以外的順序號時(shí),出現
P/S 報警No.128??捎帽磉_式指定順序號。
15.5.1
無(wú)條件轉移
(GOTO 語(yǔ)句)
GOTOn;n:順序號(1~99999)
例:
GOTO1;
GOTO#10;
15.5.3 循環(huán)
(WHILE 語(yǔ)句)
在WHILE 后指定一個(gè)條件表達式,當指定條件滿(mǎn)足時(shí),執行從DO 到END
之間的程序。否則,轉到END 后的程序段。
WHILE [條件表達式]DO m;(m=1,2,3)
如果條件不滿(mǎn)足
END m;
如果條件滿(mǎn)足程序
當指定的條件滿(mǎn)足時(shí),執行WHILE 從DO 到END 之間的程序。否則,
轉而執行END 之后的程序段。這種指令格式適用于IF 語(yǔ)句。DO 后的號
和END 后的號是指定程序執行范圍的標號,標號值為1,2,3。若用1,
2,3 以外的值會(huì )產(chǎn)生P/S 報警No.126。用下面的方法調用宏程序:
15.6
宏程序調用
宏程序調用 非模態(tài)調用(G65)
—— 模態(tài)調用(G66,G67)
—— 用G 代碼調用宏程序
—— 用M 代碼調用宏程序
—— 用M 代碼調用子程序
—— 用T 代碼調用子程序
限制
? 宏程序調用和子程 宏程序調用(G65)不同于子程序調用(M98),如下所述。
序調用之間的差別 ? 用G65,可以指定自變量(數據傳送到宏程序)。M98 沒(méi)有該功能。
? 當M98 程序段包含另一個(gè)NC 指令(例如,G01 X100.0 M98Pp)時(shí),在指
令執行之后調用子程序。相反,G65 無(wú)條件地調用宏程序。
? M98 程序段包含另一個(gè)NC 指令(例如,G01 X100.0 M98Pp)時(shí),在單程
序段方式中,機床停止。相反,G65 機床不停止。
? 用G65,改變局部變量的級別。用M98,不改變局部變量的級別。
說(shuō)明
? 呼調 ? 在G65 之后,用地址P 指定用戶(hù)宏程序的程序號。
? 當要求重復時(shí),在地址L 后指定從1 到9999 的重復次數。省略L(fǎng) 值時(shí),
認為L(cháng) 等于1。
? 使用自變量指定,其值被賦值到相應的局部變量。
可用兩種形式的自變量指定。自變量指定I 使用除了G,L,O,N 和P 以
外的字母,每個(gè)字母指定一次。自變量指定Ⅱ使用A,B,C 和Ii,Ji 和
Ki(i 為1~10)。根據使用的字母,自動(dòng)地決定自變量指定的類(lèi)型。
? 自變量指定
自變量指定I
地址 變量號
T #20
U #21
V #22
W #23
X #24
Y #25
Z #26
地址 變量號
I #4
J #5
K #6
M #13
Q #17
R #18
S #19
地址 變量號
A #1
B #2
C #3
D #7
E #8
F #9
H #11
? 地址G,L,N,O 和P 不能在自變量中使用。
? 不需要指定的地址可以省略,對應于省略地址的局部變量設為空。
? 地址不需要按字母順序指定。但應符合字地址的格式。但是,I,J 和
K 需要按字母順序指定。
例:
B_A_D_??J_K_ 正確
B_A_D_??J_I_ 不正確
調用宏程序的主程序 O0003;
G50 X100.0 Z200.0;
S1000 M03;
G66 P9110 U5.0 F0.5;
G00 X60.0 Z80.0
Z50.0
Z30.0
G67;
G00 X00.0 Z200.0 M05;
M30;
? 宏程序 O9110;
(被調用的程序) G01U-=#21F#9??????????加工
G00U#21????????????撤回刀具
M99;
有一橢圓,長(cháng)軸b=25,短軸a=18,現在加工其右半部分,工件坐標系設在右端面。
主程序:
N10 G98 G21 F60
N20 T0101
N30 M03 S600
N40 G00 X40 Z5;設毛坯為φ38mm
N50 #105=38
N60 IF #105 GT 0
N70 G65 P1015 A18 B25 C25 D0 K1;A--#1,B--#2,C--#3,D--#7,K--#6
N80 G00 X40 Z5
N90 #105=#105-1
N100 GOTO 60
N110 G00 X80 Z80
N120 M05
N130 M30
子程序:
O1015
N10 #5=[#1+#1]*SQRT[1-#2*#2/#3/#3];[X=2a ]
N20 G01 X[#5+#105] Z[#2-#3]
N30 #2=#2-#6;Z軸方向切削的步長(cháng)為1
N40 IF [#2 GE #7] GOTO 10
N60 M99
注意:這是一個(gè)通用的橢圓加工宏程序,只要改變起刀點(diǎn)的坐標和G65指令中的A、B、C三個(gè)賦值(橢圓的長(cháng)軸和短軸的長(cháng)度),即可加工任意橢圓。