在发那科工业机器人二次开发中有时会用到分支语句的逻辑,在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中的不匹配'”错误中止。
下面编写一个KAREL程序测试该语句
按下图步骤创建一个KAREL文件。
编写如下程序:
PROGRAM TEST_SELECT --程序名
VAR --变量声明
A : INTEGER
BEGIN --程序开始
A = 2 --给A数值量赋值2,自行决定赋值什么值,决定显示结果。
FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1) --显示用户菜单
DELAY 1000 --延时
SELECT A OF
CASE (1): --当A等于1时
WRITE('ACTUAL:1',CR)
DELAY 1000
CASE (2): --当A等于2时
WRITE('ACTUAL:2',CR)
DELAY 1000
CASE (3): --当A等于3时
WRITE ('ACTUAL:3',CR)
DELAY 1000
ELSE : --当A不等于1、2、3时
WRITE ('ACTUAL:ELSE',CR)
DELAY 1000
ENDSELECT --SELECT指令结束
DELAY 1000 --延时
END TEST_SELECT --程序结束
创建完成后按下图步骤点击编译按钮进行编译。
按下图步骤关闭编译成功输出对话框。
按下图步骤关闭KAREL程序编辑器。
按下图步骤打开工业机器人示教器。
按下图步骤点击“MENU”按钮进入菜单后点击“下页”。
按下图步骤点击“系统”,进入“变量”。
将下图图示选项该为1后点击“SELECT”按钮进入程序选择界面。
按下图步骤选择该程序。
按下图步骤运行该程序。
运行结果↓
—THE END—
点点在看给小编加个鸡腿 |