您好!欢迎光临工博士商城
您当前的位置:首页 » ABB机器人新闻中心 » 关于ABB机器人常用流程控制指令WHILE、FOR、TEST的准确含义
ABB机器人新闻中心
关于ABB机器人常用流程控制指令WHILE、FOR、TEST的准确含义
发布时间:2024-07-02        浏览次数:181        返回列表
 一、流程控制指令- WHILE

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 <loop variable> FROM <expression> TO <expression>

[ STEP <expression> ] DO

<statement list>

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 <expression>

{ CASE <test value> { ',' <test value> } ':'

<statement list> }

[ DEFAULT ':'

<statement list> ]

ENDTEST

-结束-



 

联系热线:18616038825 联系人:郭加友 联系地址:上海市宝山区富联一路98弄6号

技术和报价服务:星期一至星期六8:00-22:00 ABB工业机器人集成服务商