[西门子] 发那科工业机器人--KAREL语言之SELECT指令认识与使用

[复制链接]
查看11114 | 回复0 | 2024-10-15 09:05:16 | 显示全部楼层 |阅读模式
在发那科工业机器人KAREL语言进行二次开发中有时会需要使用分支逻辑,在发那科工业机器人的KAREL语言中提供了该逻辑的支持,使用一个指令实现,该指令为SELECT,下面来看下该指令在KAREL语言中的使用介绍:

指令:SELECT ... ENDSELECT

用途:允许执行一系列语句序列中的一个,具体取决于INTEGER表达式的值。

语法 : SELECT case_val OF

CASE(value{,value}):

{statement}

{ CASE(value{, value}):

{statement} }

<ELSE:

{ statement }>

ENDSELECT

各重要部分的含义:

case_val : INTEGER 表达式

value : INTEGER 常量或文字

statement : 有效的KAREL可执行语句

详细解释:

①case_val 与每个子句中 CASE 后面的每个值进行比较。如果它等于其中任何一个,则执

行 CASE 和下一个子句之间的语句。

②SELECT 语句中最多可以使用1000个CASE子句。

③如果在多个CASE中列出了相同的INTEGER值,则只会执行第一个匹配CASE后面的语句

序列。

④如果使用ELSE子句且表达式 case_val 与 CASE 子句中的任何值都不匹配,则执行关键字 ELSE 和 ENDSELECT 之间的语句。

⑤如果没有使用 ELSE 子句且表达式 case_val 与 CASE 子句中的任何值都不匹配,则程序

将以“'CASE中的不匹配'”错误中止。

接下来创建一组程序测试该语句,其中还会用到FOR循环语句配合测试,两种指令结构组合使用更有趣↓。

按下图步骤创建一个KAREL文件。



在KAREL程序编辑器里编写如下程序:

PROGRAM TEST_SELECT          --程序名

VAR

A : INTEGER

BEGIN                 --程序开始      

FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1)   --显示用户菜单界面

WRITE('WAIT...SELECT',CR)       --提示

FOR A = 1 TO 4 DO           --FOR循环四次

SELECT A OF              --进入选择

CASE (1):

WRITE('1',CR)           --A与1相等进入这里执行

DELAY 1000               --延时

CASE (2):                        

WRITE('2',CR)           --A与2相等进入这里执行

DELAY 1000           --延时

CASE (3):

WRITE('3',CR)            --A与3相等进入这里执行

DELAY 1000                --延时

ELSE:

WRITE('ELSE',CR)            --A与前面的条件不相等进入这里执行

DELAY 1000               --延时

ENDSELECT

ENDFOR

WRITE('DONE',CR)                --提示

END TEST_SELECT                 --程序结束

编写完成后按下编译按钮编译该程序。



关闭编译输出窗口。



关闭KAREL程序编辑器。



打开工业机器人示教器。



进入菜单的下页。



进入系统中的变量。



将图示项改成1。



点击“SELECT”按钮进入程序选择界面。



选择刚才创建好的KAREL程序。



准备运行刚才选择的程序。



运行结果如下,对SELECT的每一项都进行了执行。




您需要登录后才可以回帖 登录 | 注册哦

本版积分规则