程序段重复是指在一个程序中,可以任意组合重复已经编写的程序部分。需要重复的程序行或程序段落带有跳转标记符(标签)。
程序跳转功能在SINUMERIK 828D或828D BASIC数控系统中,除5.5节所表述的五种循环结构外,还可以使用程序段重复方式,即采用REPEAT或REPEATB编程来实现,其中REPEAT为区域内程序段重复,REPEATB为某一程序段重复。
使用程序段重复指令时,对于需要重复的程序段利用跳转标记符识别,其编程格式主要有以下四种。
(1)程序段重复执行
1)编程格式:
LSA1:aaa
bbb
REPEATB LSA1P=n
ccc
2)指令参数说明:
LSA1:跳转标记符。如果该程序行中还有其他的指令,在每次重复时都会重新执行这些指令。
执行REPEATB LSA1P=n程序段时,P=n表示LSA1指定的程序段aaa被重复执行n次;如果P未被指定,那么LSA1指定的程序段只执行一次。
REPEATB LABEL P=n程序段执行之后,继续执行ccc程序段。
用跳转标记符指定的程序段可以位于REPEATB LABELP=n程序段的前面或后面。首先在向程序起始的方向搜索。如果在该方向没有找到跳转标记,则向程序末尾方向搜索。
3)编程示例:
程序代码 注释
…
N10 LSA1:X10 Y20
N20 …
N30 REPEATB LSA1P=3 ;执行N10程序段3次
N40 …
(2)跳转标记符至REPEAT指令间的程序段重复执行
1)编程格式:
LSA1:aaa
bbb
REPEAT LSA1P=n
ccc
2)指令参数说明:REPEAT LSA1P=n表示REPEAT语句和LSA1跳转标记符之间的程序段被重复执行n次。REPEATLSA1P=n程序段执行之后,执行ccc程序段。
跳转标记符必须出现在REPEAT指令语句之前,此时只向程序起始的方向搜索。
3)编程示例:
程序代码 注释
…
N10 LOOP l:R6=R6-1
N40 …
N50 REPEAT LOOPl P=4;执行N10~N40之间程序段4次
N60 …
(3)重复两个跳转标记间程序段的重复执行
1)编程格式:
START_LABEL:aaa
bbb
END_LABEL:ccc
ddd
REPEAT START_LABEL END_LABEL P=n
eee
2)指令参数说明:START_LABEL(<起始跳转标记>)和END_LABEL(<结束跳转标记>)两个标记符之间的程序段被重复执行n次。最后一次重复,且REPEATSTART_LABEL END_LABELP=n程序段执行之后,执行eee程序段。
注意:REPEAT指令不能出现在这两个跳转标记之间。如果在REPEAT指令前找到了<起始跳转标记>,但在REPEAT指令前没有找到<结束跳转标记>,则重复执行<起始跳转标记>和REPEAT指令之间的程序段落。
3)编程示例:
程序代码 注释
N10 L00Pl:R5=R5+20
N20 …
N30 LOOP2:X=R5∗SIN(38)
N40 …(www.xing528.com)
N50 REPEAT LOOPl LOOP2 P=5;执行N10~N30之间程序段5次
N60 …
(4)跳转标记符与结束标记符间的重复执行
1)编程格式:
LSA1:aaa
bbb
ENDLABEL:ccc
REPEAT LSA1 P=n
ddd
2)指令参数说明:ENDLABEL是带有固定名字的跳转标记符,表示要重复的被标记标志的程序段的结束,在程序中对ENDLABEL前面所有的标记符都起作用。如果该程序行中还有其他的指令,在每次重复时都会重新执行这些指令。
注意:REPEAT指令不能出现在<跳转标记符>和结束标记符(ENDLABEL)之间。如果在REPEAT指令前找到了<跳转标记符>,但在REPEAT指令前没有找到结束标记符(ENDLABEL),则重复执行<跳转标记>和结束标记符(ENDLABEL)指令之间的程序段落。
3)编程示例:
例1
程序代码 注释
N10 LOOPl:R8=R8-1 ;跳转标记1
N20 …
N30 LOOP2:X=R5+10 ;跳转标记2
N40 …
N50 ENDLABEL:G00 Z100 ;重复的被标记的程序段的结束
N60 …
N70 LOOP3:X50 ;跳转标记3
N80 …
N50 REPEAT LOOP3 P=2 ;执行N70~N80之间程序段2次
N60 REPEAT LOOP2 P=4 ;执行N30~N50之间程序段4次
N60 REPEAT LOOPl P=3 ;执行N10~N50之间程序段3次
N70 …
例2 在程序中可以多次使用重复结束标记符(ENDLABEL)。
程序代码 注释
N10 CENTER_DIRLL() ;换上定中钻头。
N20 POS_1: ;钻孔位置1
N30 X1 Y1
N40 X2
N50 Y2
N60 X3 Y3
N70 ENDLABEL:
N80 POS_2: ;钻孔位置2
N90 X10 Y5
N100 X9 Y-5
N110 X3 Y3
N120 ENDLABEL:
N130 DIRLL_6 ;更换ϕ6mm钻头和钻孔循环
N140 REPEAT POS_1 ;重复程序部分一次,自POS_1到ENDLABEL
N150 DIRLL_8 ;更换ϕ8mm钻头和钻孔循环
N160 REPEAT POS_2 ;重复程序部分一次,自POS_2到ENDLABEL
N170 M30
其他说明:
1)程序部分重复可以嵌套调用。每次调用占用一个子程序级。
2)如果在执行程序的重复过程中设定了M17或者RET,则程序重复被停止。程序接着从REPEAT指令行之后的语句开始运行。
3)在当前的程序显示中,程序重复部分作为单独的子程序级显示。
4)控制结构和程序部分重复可以组合使用,但两者之间不得产生重叠。一个程序部分重复应该位于一个控制结构分支之内,或者一个控制结构位于一个程序部分重复部分之内。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。