[三菱] 发那科工业机器人--二次开发之SELECT语句的使用

[复制链接]
查看48015 | 回复0 | 2024-7-14 23:27:14 | 显示全部楼层 |阅读模式


在发那科工业机器人二次开发中有时会用到分支语句的逻辑,在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—

点点在看给小编加个鸡腿

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

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

本版积分规则