WHILE - 只要...便重复
只要给定条件表达式评估为TRUE值,当重复一些指令时,使用WHILE。
以下实例介绍了指令WHILE:
例 1
WHILE reg1 < reg2 DO !只要变量1小于变量1
...
reg1 := reg1 + 1; !便重复reg1加1赋值给reg1
ENDWHILE !结束循环
只要reg1 < reg2,则重复WHILE块中的指令。
说明:ABB机器人中的reg1代表一个寄存器。在ABB机器人的标准指令中,reg1可以作为一个变量使用,类似于其他编程语言中的变量。
例 2
WHILE Condition DO ... ENDWHILE !只要条件为真,便重复
Condition 数据类型:bool !条件
必须评估为TRUE的条件为用以满足待执行WHILE块中指令的值。
程序执行
评估条件表达式。如果表达式评估为TRUE值,则执行WHILE块中的指令。
随后,再次评估条件表达式,且如果该评估结果为TRUE,则再次执行WHILE块中的指令。
该过程继续,直至表达式评估结果成为FALSE。
随后,终止迭代,并在WHILE块后,根据本指令,继续程序执行。
如果表达式评估结果在开始时为FALSE,则不执行WHILE块中的指令,且程序控制立即转移至WHILE块后的指令。
二、流程控制指令-FOR
如果可能确定重复的数量,则可以使用FOR指令。
FOR - 重复给定的次数
当一个或多个指令重复多次时,使用FOR
例 1
FOR i FROM 1 TO 10 DO
routine1; !例行程序1
ENDFOR !结束重复
注释:重复routine1无返回值程序10次。
FOR Loop counter FROM Start value TO End value [STEP Step value] DO ... ENDFOR
Loop counter !循环计数器
Identifier !识别字(可用以进入程序或其中的数据集)
将包含当前循环计数器数值的数据名称。
自动声明该数据。
如果循环计数器名称与实际范围中存在的任意数据相同,则将现有数据隐藏在FOR循环中,且在任何情况下均不受影响。
Start value 数据类型:Num
循环计数器的期望起始值(通常为整数值)。
End value 数据类型:Num
循环计数器的期望结束值(通常为整数值)。
Step value 数据类型:Num
循环计数器在各循环的增量(或减量)值(通常为整数值)。
如果未指定该值,则自动将步进值设置为1(或者如果起始值大于结束值,则设置为-1)。
例 2
FOR i FROM 10 TO 2 STEP -2 DO
a{i} := a{i-1};
ENDFOR
将数组中的数值向上调整,以便a{10}:=a{9}、a{8}:=a{7}等等。
程序执行条件
评估起始值、结束值和步进值的表达式。
向循环计数器分配起始值。
检查循环计数器的数值,以查看其数值是否介于起始值和结束值之间,或者是否等于起始值或结束值。如果循环计数器的数值在此范围之外,则FOR循环停止,且程序继续执行紧接ENDFOR的指令。
执行FOR循环中的指令。
按照步进值,使循环计数器增量(或减量)。
重复FOR循环,从点3开始。
限制条件
仅可在FOR循环内评估循环计数器(数据类型为num),随之隐藏其他具有相同名称的数据和路径。其仅可通过FOR循环中的指令来进行读取(未更新)。
无法使用起始值、结束值或停止值的小数值,以及FOR循环的确切终止条件(不确定***后的循环是否在运行中)。
语法
FOR
[ STEP <
ENDFOR
三、TEST - 根据表达式的值...
根据表达式或数据的值,当有待执行不同的指令时,使用TEST。
如果并没有太多的替代选择,则亦可使用IF..ELSE指令。
以下实例介绍了指令TEST:
例 1
TEST reg1 !根据变量1的值,执行不同的指令
CASE 1,2,3 : !如果该值为1、2或3时
routine1; !则执行routine1
CASE 4 : !如果该值为4
routine2; !则执行routine2
DEFAULT : !否则
TPWrite "Illegal choice"; !打印出错误消息
Stop; !停止执行
ENDTEST
根据reg1的值,执行不同的指令。如果该值为1、2或3时,则执行routine1。如果该值为4,则执行routine2。否则,打印出错误消息,并停止执行。
TEST Test data {CASE Test value {, Test value} : ...} [ DEFAULT: ...] ENDTEST
Test data 数据类型:所有
用于比较测试值的数据或表达式。
Test value 数据类型:与test data相同
测试数据必须拥有的值,以供执行相关的指令。
将测试数据与***个CASE条件中的测试值进行比较。如果对比真实,则执行相关指令。此后,通过ENDTEST后的指令,继续程序执行。
如果未满足***个CASE条件,则对其他CASE条件进行测试等。如果未满足任何条件,则执行与DEFAULT相关的指令(如果存在)。
TEST <
{ CASE
[ DEFAULT ':'
ENDTEST
-结束-