分享

KUKA机器人的程序控制指令说明

 新用户59353308 2023-01-06 发布于山东

图片

FOR... TO ...ENDFOR:编程设定计数循环


1. 说明:

① 执行指令块,直到计数器超出或低于定义的值。

② 在应用块的最后一次执行后,用 ENDFOR 后的第一个指令继续程序。可以用 EXIT提前离开循环。

③ 循环可嵌套。在循环已嵌套时,则首先完整地执行外部循环。然后完整地执行内部循环。

图片

2.语法格式:

FOR 计数器 = 起始值 TO 终值 <STEP 步幅>
<指令 >
ENDFOR

参数说明:

参数

说明

计数器

类型:INT

计算循环次数的变量。预填写为起始值。必须事先声明变量。

在指令中可在循环内或循环外使用计数器的值。离开循环后,计数器有最后接受的值。

起始值,

终值

类型:INT

计数器必须预填写为起始值。每次循环执行结束后,计数器自动以步幅变化。超出或低于终值时,循环终止。

步幅

类型:INT

计数器在每次循环执行时变化的数值。该值不得为负。缺省值:1.

  • 正值:当计数器大于终值时,循环终止。

  • 负值:当计数器小于终值时,循环终止。

该值不允许为零或变量。

3. 举例:
示例1:
变量 B 在 5 个循环中分别增加 1,最后的值是5。

变量 A 的值分别是 1,3,5,7,9 ;最后的值是11。

DECL INT A,B
INI
B = 0
FOR A=1 TO 10 STEP 2
B=B+1
ENDFOR

示例2:

变量 B 在 10 个循环中分别增加 1,最后的值是10。

变量 A 的值从1到10,依次累加,最后的值是11。

DECL INT A,B
INI
B = 0
FOR A=1 TO 10
B=B+1
ENDFOR

 GOTO:跳转至程序中的位置

1. 说明

务必跳至程序中指定的位置。程序在该位置上继续运行。跳转目标必须位于与 GOTO 指令相同的子程序或者功能中。

下列跳转是不可行的 :

①  从外部跳至 IF 指令。

② 从外部跳至循环语句。

③  从一个 CASE 指令跳至另一个 CASE 指令。

1.语法格式

GOTO 标签

...

标签:

参数说明:

参数

说明

标签

跳转的位置。在目标位置处在标签 结尾处必须有一个冒号。

2.示例

GOTO GLUESTOP
...
GLUESTOP:

务必从 IF 指令跳至程序位置结束。

IF X>100 THEN
GOTO ENDE
ELSE
 X=X+1
ENDIF
A=A*X
...
ENDE:
END

HALT:暂停程序

1.说明

停止程序。但是最后一次进行的运动指令仍然完整执行。程序仅可用启动键继续进行。随后执行“ 停止 ” 之后的下一个指令。中断程序中,程序在预进过程完整执行完毕后才被停止。

2.语法格式

HALT

图片

IF...THEN ...ENDIF:编程设定有条件的分支

1.说明

条件分支。取决于条件,执行第一个指令块 (THEN块)或第二个指令块(ELSE 块)。然后在 ENDIF 后继续程序。
允许缺少 ELSE 块。在条件不满足时,在 ENDIF 后立即继续程序。指令块中的指令数量没有限制。可以相互嵌套多个 IF 指令。

2.语法格式

IF 条件 THEN
指令
<ELSE
指令 >
ENDIF

参数说明:

参数

说明

条件

类型:BOOL

形式:

  • BOOL 类型变量

  • BOOL 类型函数

  • 运算,例如与 BOOL 类型结果的比较

图片

3. 示例

示例 1:不带 ELSE 的 IF 指令

IF A==17 THEN
B=1
ENDIF

示例 2:带 ELSE 的 IF 指令

IF $IN[1]==TRUE THEN
   $OUT[17]=TRUE
ELSE
   $OUT[17]=FALSE
ENDIF

示例 3:有复杂执行条件的 if 分支

DEF MY_PROG( )
DECL INT error_nr
...
INI
error_nr = 4
...
; 仅在 error_nr 1 或 10 或大于 99 时驶至 P21
IF ((error_nr == 1) OR(error_nr == 10) OR (error_nr > 99)) THEN
PTP P21 Vel=100% PDAT21
ENDIF
...
END

示例 4:有布尔表达式的 if 分支

DEF MY_PROG( )
DECL BOOL no_error
...
INI
no_error = TRUE
...
; 仅在无故障 (no_error) 时驶至 P21IF no_error == TRUE THEN
PTP P21 Vel=100% PDAT21
ENDIF
...
END
表达式 IF no_error==TRUE THEN 也可以简化为 IF no_error THEN,省略始终表示比较为真 (TRUE)。

LOOP...ENDLOOP:编程设定连续循环

1.说明

连续重复指令块的循环。可以用 EXIT 离开循环。循环可嵌套。在循环已嵌套时,则首先完整地执行外部循环。然后完整地执行内部循环。

图片

2. 语法格式

LOOP
指令
ENDLOOP

3. 示例

执行循环,直到输入端 $IN[30] 变为 TRUE。

LOOP
LIN P_1
LIN P_2
IF $IN[30]==TRUE THEN
EXIT
ENDIF
ENDLOOP

REPEAT...UNTIL:编程设定采用的循环

1. 说明

直到型循环。重复指令块直到满足了特定条件的循环。至少执行该指令块一次。在每次循环执行之后检查条件。如果满足了条件,则执行 UNTIL 后的下一个指令继续程序。
循环可嵌套。在循环已嵌套时,则首先完整地执行外部循环。然后完整地执行内部循环。

图片

2. 语法格式

REPEAT
指令
UNTIL 中断条件

参数说明:

参数

说明

中断条件

类型:BOOL

形式:

  • BOOL 类型变量

  • BOOL 类型函数

  • 运算,例如与 BOOL 类型结果的比较

3. 示例

示例1:执行循环,直到 $IN[1] 为TRUE,否则循环就一直循环。

REPEAT
R=R+1
UNTIL $IN[1]==TRUE

示例 2:无论在循环执行之前是否已满足了中断条件,执行一次循环,因为只在循环结束时对中断条件进行询问,执行后 R 的值为 102。

R=101
REPEAT
R=R+1
UNTIL R>100


SWITCH ...CASE ...ENDSWITCH:编程设定多重分支

1.说明

1)根据选择标准从多个可能的指令块中选择一个。每个指令块拥有至少一个标记。选择其标记与选择标准一致的块。

2)如果该块已执行,则在 ENDSWITCH 后继续程序。

3)如果没有标记与选择标准一致,则执行 DEFAULT 块。如果没有 DEFAULT 块,则不执行任何块并在 ENDSWITCH 后继续程序。

4)无法用 EXIT 离开 SWITCH 指令。

图片 

2.语法格式

SWITCH 选择标准
CASE 标记 1 <,标记 2,...>
指令块
<CASE 标记 M <,标记 N,...>
指令块 >
<DEFAULT
默认指令块 >
 ENDSWITCH
在 SWITCH 指令之内,DEFAULT 只允许出现一次。

参数说明:

参数

说明

选择标准

类型:INT、CHAR、ENUM

可能是所述数据类型的变量、功能调用或表达式。

标记

类型:INT、CHAR、ENUM

标记的数据类型必须与选择标准的数据类型一致。

一个指令块可以有任意多的标记。多个标记必须通过逗号相互隔开。

3. 示例 1:

选择标准和标记为 INT 类型。

INT VERSION
...
SWITCH VERSION
CASE 1
UP_1()
CASE 2
UP_2()
CASE 3
UP_3()
UP_3A()
DEFAULT
ERROR_UP()
ENDSWITCH

示例 2:

选择标准和标记为 CHAR 类型。在此绝不执行指令 Up_5()。

SWITCH NAME
CASE 'A'
UP_1()
CASE'B','C'
UP_2()
UP_3()
CASE 'C'
UP_5()
ENDSWITCH

WHILE ...ENDWHILE:编程设定当型循环

1.说明

1)当型循环。一直重复指令块直到满足了特定条件的循环。

2)如果不满足条件,则用 ENDWHILE 后的下一个指令继续程序。在每次循环执行之前检查条件。如果从一开始就不满足条件,则不执行指令块。

3)循环可嵌套。在循环已嵌套时,则首先完整地执行外部循环。然后完整地执行内部循环。

图片

2.语法格式

WHILE 重复条件
指令块
ENDWHILE

参数说明:

参数

说明

重复条件

类型:BOOL

条件类型:

  • BOOL  类型变量

  • BOOL  类型函数

  • 运算,例如与 BOOL 类型结果的比较

3.示例

示例 1:执行循环 99 次,最后一次执行后 W 的值为100。

W=1
WHILE W<100
W=W+1
ENDWHILE

示例 2 :执行循环,直到 $IN[1] 为 TRUE。

WHILE $IN[1]==TRUE
W=W+1
ENDWHILE

WAIT FOR … : 等至条件已满足

1.说明

WAIT FOR 停止程序,直到已满足特定的条件。然后程序继续运行。WAIT FOR 将触发预进停止。

1.语法格式

WAIT FOR 条件

参数说明:

参数

说明

条件

类型:BOOL

要继续程序运行的条件

标记

如果该条件为  FLASE,则停止程序运行,直到条件变为TRUE

如果该条件在  WAIT 调用时已经为 TRUE,则不停止程序运行

3.示例

中断程序运行,直到 $IN[17] 为 TRUE:

 WAIT FOR $IN[17]

中断程序运行,直到 BIT1 为 FALSE:

WAIT FOR BIT1==FALSE

WAIT SEC … :编程设定等待时间

1.说明

停止程序运行并在等待时间后继续程序运行。以秒为单位指定等待时间。WAIT SEC 将触发预进停止。

2.语法格式

WAIT SEC 等待时间

参数说明见:

参数

说明

等待时间

类型:INT、REAL

要中断程序运行的秒数。如果该值为负,则不等待。在等待时间很短时,通过 12 ms 的四倍确定精度。

3.示例

中断程序运行 17.156 s:

WAIT SEC 17.156

根据 V_ZEIT 的变量值 (单位:秒)中断程序运行:

WAIT SEC V_ZEIT

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多