首页 理论教育 程序优化:避免重复指令(REPEAT,REPEATB)

程序优化:避免重复指令(REPEAT,REPEATB)

时间:2023-06-18 理论教育 版权反馈
【摘要】:用跳转标记符指定的程序段可以位于REPEATB LABELP=n程序段的前面或后面。跳转标记符至REPEAT指令间的程序段重复执行1)编程格式:LSA1:aaabbbREPEAT LSA1P=nccc2)指令参数说明:REPEAT LSA1P=n表示REPEAT语句和LSA1跳转标记符之间的程序段被重复执行n次。例2 在程序中可以多次使用重复结束标记符。3)在当前的程序显示中,程序重复部分作为单独的子程序级显示。

程序优化:避免重复指令(REPEAT,REPEATB)

程序段重复是指在一个程序中,可以任意组合重复已经编写的程序部分。需要重复的程序行或程序段落带有跳转标记符(标签)。

程序跳转功能在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)控制结构和程序部分重复可以组合使用,但两者之间不得产生重叠。一个程序部分重复应该位于一个控制结构分支之内,或者一个控制结构位于一个程序部分重复部分之内。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈