宏程序应用指令.docx
《宏程序应用指令.docx》由会员分享,可在线阅读,更多相关《宏程序应用指令.docx(11页珍藏版)》请在冰豆网上搜索。
宏程序应用指令
宏程序应用指令
宏程序跳转及重复指令
GOTOS:
跳回到程序开始
GOIOB:
以程序开始方向的带跳转目标的跳转指令。
GOTOF:
以程序末尾方向的带跳转目标的跳转指令。
GOTO
带跳转目标查找的跳转指令。
查找先向程序末尾方向进行,
然后再从程序开始处进行查找。
GOTOC:
与GOTO有区别的是,报警14080“跳转目标未找到”被抑制。
这表示,在跳转目标查找没有结果情况下不中断程序加工,而以指令GOTOC下面的程序行继续进行。
跳转条件允许使用所有的比较运算和逻辑运算(结果:
TRUE或者FALSE。
如果这种
运算的结果为TRUE则执行程序跳转。
TRUE真实、准确)FALSE(错误)
特殊情况
一般情况
IFV跳转条件〉=TRUEGOTOIB跳转目标〉
IFV跳转条件〉=GOTOV跳转目标二
►
IFV跳转条件〉=TRUEGOTOV跳转目标〉
IFV跳转条件〉=GOTOFV跳转目标二
►
IFV跳转条件〉=TRUEGOTV跳转目标〉
IFV跳转条件〉=GOTOV跳转目标〉
IFV跳转条件〉=TRUEGOTOV跳转目标〉
IFV跳转条件〉=GOTOCV跳转目标二
►
CASE功能可以检测一个变量或者一个计算函数当前值(类型:
INT),
根据结果跳转到程序中的不同位置。
句法:
CASE(表达式>)OF<常量_1>GOTOF跳转目标_1><常量_2>GOTOF跳转目标
常量:
变量或者计算函数首先规定的恒定值
2>...DEFAULTGOTOF<跳转目标n>
DEFAULT:
对于变量或者计算函数没有采用规定值的情况,可以用DEFAULT指
令确定跳转目标。
N20DEFINTVAR1VAR2VAR3
N30CASE(VAR1+VAR2-VAR3)OF7GOTOFLabel_19GOTOFLabel_2DEFAULTGOTO
Label3
N40Label1:
GOX1Y1
N50Label2:
GOX2Y2
N60Label3:
G0X3Y3
CASE指令由N30定义下列程序分支可行性:
1.如果计算函数值VAR1+VAR2-VAR3=7则跳转到带有跳转标记定义的程序段
"Label_1"(—N40)。
2.如果计算函数值VAR1+VAR2-VAR3=9则跳转到带有跳转标记定义的程序段
"Label_2"(—N50)。
3.如果计算函数VAR1+VAR2-VAR3勺值既不等于7也不等于9,则跳转到带有跳转标
记定义的程序段“Label_3”(—N60)。
程序部分重复(REPEAT,REPEATB,ENDLABEL,P)
功能:
程序部分重复是指在一个程序中,可以任意组合重复已经编写的程序部分。
需要重复的程序行或程序段落带有跳转标记(标签)。
REPEATB:
重复程序行的指令
REPEAT:
重复程序段落的指令
1、重复单个程序行
<跳转标记>:
...
REPEATB跳转标记>P=vn>
2.重复跳转标记和REPEAT!
令之间的程序段落:
<跳转标记>:
...
REPEAT跳转标记>P=vn>
3.重复两个跳转标记间的段落:
<起始跳转标记>:
...
<结束跳转标记>:
...
REPEAT起始跳转标记><结束跳转标记>P=<n>
说明
REPEAT指令不能被括在这两个跳转标记之间。
如果在
REPEAT指令前找到了<起始跳转标记>,但在REPEAT指令
4.重复跳转标记和ENDLABEL间的
段落:
<跳转标记>:
...
ENDLABEL:
...
REPEAT跳转标记>P=vn>
说明
REPEAT指令不能被括在<跳转标记>和ENDLABEI之间。
女口果在REPEAT指令前找到了<跳转标记〉,但在
REPEAT指令前没有找至UENDLABEL贝U重复<跳转标记>和
REPEAT指令之间的程序段落。
前没有找到<结束跳转标记>,则重复<起始跳转标记>和REPEAT指令之间的程序段
洛。
示例1:
重复单个程序行
N10P0SITI0N1:
X10Y20
N20P0SITI0N2:
CYCLE(0,,9,8);位置循环
N30...
N40REPEATBP0SITI0N1P=5;执行程序段SATZN10五次
N50REPEATBP0SITI0N2;执行程序段N20一次
N60...
N70M30
示例2:
重复跳转标记和REPEAT指令之间的程序段落
N5R10=15
N10Begin:
R10=R10+1;宽度
N20Z=10-R10
N30G1X=R10F200
N40Y=R10
N50X=-R10
N60Y=-R10
N70Z=10+R10
N80REPEATBEGINP=4;执行N10至UN70程序部分四次
N90Z10
N100M30
示例3:
重复两个跳转标记间的段落
程序代码注释
N5R10=15
N10Begin:
R10=R10+1;宽度
N20Z=10-R10
N30G1X=R10F200
N40Y=R10
N50X=-R10
N60Y=-R10
N70END:
Z=10
N80Z10
N90CYCLE(10,20,30)
N100REPEATBEGINENDP=3;执行N10至UN70程序部分三次
N110Z10
N120M30
示例4:
重复跳转标记和ENDLABEL间的段落
N10G1F300Z-10
N20BEGIN1:
N30X10
N40Y10
N50BEGIN2:
N60X20
N70Y30
N80ENDLABEL:
Z10
N90X0Y0Z0
N100Z-10
N110BEGIN3:
X20
N120Y30
N130REPEATBEGIN3P=3;执行N110到N120程序部分三次
N140REPEATBEGIN2P=2;执行N50至UN80之间的程序部分两次
N150M100
N160REPEATBEGIN1P=2;执行N20至UN80之间的程序部分两次
N170Z10
N180X0Y0
N190M30
示例5:
铣削加工、采用不同的工艺加工钻孔位置
N10ZENTRIERBOHRER()换上定中钻头。
N20POS_1:
;钻孔位置1
N30X1Y1
N40X2
N50Y2
N60X3Y3
N70ENDLABEL:
N80POS_2:
;钻孔位置2
N90X10Y5
N100X9Y-5
N110X3Y3
N120ENDLABEL:
N130BOHRER();更换钻头和钻孔循环。
N140GEWINDE(6);换上螺纹钻M6和螺纹循环。
N150REPEATPOS_1;重复程序部分一次,自POS_1至UENDLABEL,
N160BOHRER();更换钻头和钻孔循环。
N170GEWINDE(8);换上螺纹钻M8和螺纹循环。
N180REPEATPOS_2;重复程序部分一次,自POS_2至UENDLABEL
N190M30
1、程序部分重复可以嵌套调用。
每次调用占用一个子程序级。
2、如果在执行程序重复过程中编程了M17或者RET则程序重复被停止。
程序接着从
REPEA指令行之后的语句开始运行。
3、在当前的程序显示中,程序重复部分作为单独的子程序级显示。
4、如果在执行程序部分重复过程中取消该级别,则在调用程序部分执行之后,继续加工该程序。
1、控制结构和程序部分重复可以组合使用。
示例6
N10G1F300Z-10
N20BEGIN1:
N30X=10
N40Y=10
N50GOTOFBEGIN2
N60ENDLABEL:
N70BEGIN2:
N80X20
N90Y30
N100ENDLABEL:
Z10
N110X0Y0Z0
N120Z-10
N130REPEATBEGIN1P=2
N140Z10
N150X0Y0
N160M30
说明:
REPEAT指令应位于运行程序段之后。
但是,两者之间不得产生重叠。
一个程序部分重复应该位于一个控制结构分支之内,或者一个控制结构位于一个程序部分重复部分之内。
2、如果跳转和程序重复部分交织在一起,则程序段按次序执行。
比如说,程序重复部分有一个跳跃,则一直进行加工,直至找到编程的程序结束部分。
带选项的程序循环(IF,ELSE,ENDIF)
IF<条件>
ELSE
ENDIF
当查询循环应包含一个可选的程序块时,可使用带IF和
ELSE的结构:
如果满足IF条件,则执行IF内的程序块。
如果IF条件不满足,则执行ELSE内可选的程序块。
说明:
如果不需要选择,则IF循环也可以不带ELSE指令,并对ELSE后的程序块编程。
计数循环(FOR...TO...,ENDFO)
FOR<变量>=<初值>TO<终值>
ENDFOR
示例1:
整数变量作为计数变量:
DEFINTiVARIABLEI
R10=R12-R20*R1R11=6
FORiVARIABLEI=R10TOR11;
计数变量=整数变量
R20=R21*R22+R33
ENDFOR
FOR:
引入计数循环。
ENDFOR一旦还没有得到计数终值,则标记循环结
束处并跳转到循环开头。
<变量>:
计数变量从初值开始向上计数,直到终值
且在每次运行时提高
值“1”。
示例2:
R参数作为计数变量:
R11=6
FORR10=R12-R20*R1TOR11;
计数变量=R参数(实数变量)
R20=R21*R22+R33
ENDFOR
M30
功能:
当一个带有一个确定值的操作程序被循环重复,计数循环就会被运行
M30
示例3:
加工一个固定的零件数
DEFINTSTUECKZAHL
FORSTUECKZAHL=0TO100
G01…
ENDFOR;计数循环结束
用名称“STUECKZAHL定义的INT型变量
引入计数循环。
变量“STUECKZAHL从初值“0”
向上计数,直到终值“100”。
M30
在循环开始处带有条件的程序循环(WHILEENDWHIL)
功能:
WHILE循环的开始是有条件的。
一旦满足条件,
WHILE循环即开始运行。
句法
注释
WHILE<条件>
WHILE:
引入程序循环。
ENDWHILE
<条件>:
必须满足条件,只有这样WHILE循环才能运行
3
・・・
ENDWHILE标记循环结束处并跳转到循环开头。
示例(方法1):
R参数赋值
示例(方法2):
变量赋值
R1=1
WHILE$AA_IW|占削轴]>-10;
WHILER1>-10
调用WHILE循环,当前的钻削轴WKS额定值必须大于
G90G1Z=-R1F169
-10。
R1=R1+1
G1G91F250AX[钻削轴]=-1
ENDWHILE
ENDWHILE
在循环结束处带有条件的程序循环(REPEATUNTIL)
句法
注释
功能
REPEAT;
调用REPEAT循环
REPEAT循环的结束是有条件的。
REPEAT
UNTIL...;
检查是否已满足条件。
循环一旦被执行会不断重复,直到满足条件为止
示例:
带层叠控制结构的程序示例
LOOP
IFNOT$P_SEARCH;没有程序段搜索
G01G90X0Z10F1000
WHILE$AA_IM[X]<=100
G1G91X10F500;钻孔图
Z-F100
Z5
ENDWHILE
Z10
ELSE
MSG(“在搜索过程中不钻
孔”)
ENDIF
$A_OUT[1]=1;下一个钻孔板
G4F2
ENDLOOP
M30