库卡机器人对话信息方面编程案例

机器人

520人已加入

描述

只有当无其它对话存在时,才能生成一则对话。

对话可用一个软键删除,该软键的标注由程序员定义。

机器人

最多能定义 7 个软键。

 对话适用于显示必须由用户回答的问题。

 用函数 Set_KrlDlg( )  可生成一则对话。

 用函数仅仅可生成对话。

 但该函数不等到对话得到回答。

 用函数Exists_KrlDlg( ) 可检查一则特定的对话是否还存在。

 该函数也不等到对话得到回答,而是仅仅在缓存器中查找带有该句柄的对话。

 因此,KRL 程序中的询问必须循环进行,直至对话得到回答或被删除。

 接下来的程序流程根据用户所选的软键而定。

机器人

 按键的声明和初始化

DECL KRLMSGDLGSK_T Softkey[7] ; 准备 7 个可能的软键

softkey[1]={sk_type #value, sk_txt[] "key1"}

softkey[2]={sk_type #value, sk_txt[] "key2"}

softkey[3]={sk_type #value, sk_txt[] "key3"}

softkey[4]={sk_type #value, sk_txt[] "key4"}

softkey[5]={sk_type #value, sk_txt[] "key5"}

softkey[6]={sk_type #value, sk_txt[] "key6"}

softkey[7]={sk_type #value, sk_txt[] "key7"}

通过 Exists_KrlDlg() 进行分析:在索引 4 下创建的按键也以 4 作为反馈应答。

; 第 4 号软键以 4 作为反馈应答

softkey[4]={sk_type #value, sk_txt[] "key4"}

机器人

若未给所有按键编程或有间断地编程 (编号 1、4、6),则按键将并列排布。若仅使用了按键 1、4、6,则也只能给出 1、4、6 反馈。

给用户自定义的对话编程:

1. 将主程序载入编辑器。

2. 为以下对象声明工作变量:

发送人、信息号、信息文本 (自 KrlMsg_T )

具有 3 个用于参数的元素的数组 (自 KrlMsgPar_T )

7 个可能的按键 (自  KrlMsgDlgSK_T )

通用信息提示选项 (自 KrlMsgOpt_T )

“句柄”(作为 INT )

检查结果的变量 (作为 BOOL)

回答按了哪个按键的结果变量 (作为 INT )

3. 用所需值初始化工作变量。

4. 给函数调用 Set_KrlDlg(…)  编程。

5. 用一个循环停止程序,直到对话得到了应答。

6. 调用函数 Exists_KrlDlg( )  来分析对话。

7. 规划程序中的其它分支并进行编程。

8. 关闭并保存主程序。

机器人

生成对话后程序被停住。回答后信息提示被删除。然后程序继续运行。接着给 switch-case 分支编程同样,程序复位或退出程序时信息提示也将消失。可通过在信息提示选项中的设置 Clear_P_Reset TRUE  引发这种情况。

DECL KRLMSG_T myQuestion

DECL KRLMSGPAR_T Parameter[3]

DECL KRLMSGDLGSK_T Softkey[7] ; 准备 7 个可能的软键

DECL KRLMSGOPT_T Option

DECL INT handle, answer

DECL BOOL present

...

myQuestion={modul[] "College", Nr 1909, msg_txt[] "My Questiontext"}

Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW FALSE, 

Log_to_DB TRUE} 

; 通配符为空通配符 [1..3]

Parameter[1] = {Par_Type #EMPTY}

Parameter[2] = {Par_Type #EMPTY}

Parameter[3] = {Par_Type #EMPTY}

softkey[1]={sk_type #value, sk_txt[] "key1"} ; 按键 1

softkey[2]={sk_type #value, sk_txt[] "key2"} ; 按键 2

softkey[3]={sk_type #value, sk_txt[] "key3"} ; 按键 3

softkey[4]={sk_type #value, sk_txt[] "key4"} ; 按键 4

softkey[5]={sk_type #value, sk_txt[] "key5"} ; 按键 5

softkey[6]={sk_type #value, sk_txt[] "key6"} ; 按键 6

softkey[7]={sk_type #value, sk_txt[] "key7"} ; 按键 7

...

...; 生成对话

handle = Set_KrlDlg(myQuestion, Parameter[ ],Softkey[ ], Option)

answer=0

REPEAT ; 用于在回答对话前停住程序的循环

present = exists_KrlDlg(handle ,answer) ; 回答由系统写入

UNTIL NOT(present)

...

SWITCH answer

CASE 1 ; 按键 1

; 按键 1 的操作

...

CASE 2 ; 按键 2

; 按键的操作2

...

CASE 7 ; 按键 7

; 按键 7 的操作

ENDSWITCH

...

例如:

生成EMZ的选择框,选择几号焊钳

DEFFCT INT SetDlgMsg()

DECL KrlMsg_T Msg

DECL KrlMsgPar_T Par[3]

DECL KrlMsgOpt_T Opt

DECL KrlMsgDlgSK_T SK[7]

INT nHandle, nAnswer

T 2模式下执行EMZ

Msg = {Modul[] "vw_emz", Nr 10, Msg_txt[] "Antriebsschnittstelleselektieren"} 提示信息条 “EMZ使用几号工具用来测量”

SK[1]={ Sk_Type #VALUE, Sk_txt[] "1"} 生成的选项按钮

SK[2]={ Sk_Type #VALUE, Sk_txt[] "2"}

SK[3]={ Sk_Type #VALUE, Sk_txt[] "3"}

SK[4]={ Sk_Type #VALUE, Sk_txt[] "4"}

SK[5]={ Sk_Type #VALUE, Sk_txt[] "5"}

SK[6]={ Sk_Type #VALUE, Sk_txt[] "6"}

SK[7]={ Sk_Type #VALUE, Sk_txt[] "7"}

机器人

选择几号焊钳

Opt = { VL_Stop True, Clear_P_ResetTrue, Log_To_DB FALSE } 信息属性设置

nHandle = Set_KrlDlg (Msg, Par[],SK[], Opt) 激活信息提示

If (nHandle>0)Then

While (Exists_KrlDlg(nHandle, nAnswer)) 关闭对话窗口

Wait sec 0.1

Endwhile

Endif

Return(nAnswer) 选择按钮的值被发出

;

ENDFCT

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分