就 KUKA 示教器(SmartPad)上显示的各种图标大家一定不会陌生,但是对于这些图标代表的信息,你都知道吗?他们的作用是什么?区别又是什么呢?
KUKA 示教器(SmartPad)上的图标一共有5种类型,如下图所示噢:
看了上图的信息类型,大家肯定要问,它们的作用是什么呢?
确认信息:
通常用于表示发生了错误,信息生成后必须按下OK键,信息消失后才能让程序继续运行。
图1:确认信息
状态信息:
用于表示一种状态,比如在急停状态或者是程序正在运行状态。
特性:状态信息没有OK键确认,只有当这个状态消失了之后,信息才消失。
图2:状态信息
提示信息:
起提示作用,通常是提示一下操作人员需要去做什么事情,或者控制器完成了什么事情。
特性:该信息生成后不记录到缓存当中。信息生成后程序代码不能对信息进行后续操作,大约可生成300万条。
图3:提示信息
等待信息:
在等待信号或者某个条件时显示的信息。
特性:该信息有模拟键,用于模拟等待条件成立,程序直接往下执行。
图4:等待信息
对话信息:
在界面上出现一个窗口,可以有按钮进行选择,程序根据用户的选择进行后续操作。
图5:对话信息
看到这里,是不是又在好奇这些信息类型之间有什么区别呢?
确认信息、状态信息、提示信息、等待信息可看成是一个大类,这些信息都显示在SmartPAD上方的信息窗口中。
对话信息,又叫对话框,使用一个独立的窗口显示,因此可看成另一个大类。
这两类信息编辑方法上大致一致,但又有所区别。区别在于对话框生成消息和接收消息的按键反馈,都会有专用的函数,后续程序处理会复杂一些
既然大家已经知道图标所代表的信息类型,那如何在 smartpad 里面编辑出这些信息呢?
那么,我们就来讲讲这块的实操性的内容-- “信息编程的步骤(除对话信息)”
滴!KR C4 Smartpad 上传来一条提示信息“There are 3 cubes moved.”, wow ,是不是迫不及待自己可以编辑出这么一条信息?心动不如手动,以“提示信息”为示例,一起操作起来把!
注意:这个数字3是一个变量,数字3从一个叫 counter 的整型变量获得。在这一次显示的时候 counter是3,则显示“There are 3 cubes moved.”,在下一次,如果 counter 是4,则显示“ There are 4 cubes moved . ” ( counter 的整型变量会在编程初始时候提前设置好)
STEP 1:定义作者(来源)、编号、内容(关键字)
使用系统预定义结构体 KRLMSG_T
■(本章节中所提到的结构体都是系统预先构建好的,直接声明结构体变量使用即可)
decl krlmsg_t mess
mess={ modul[] “KUKA”, nr2019001, msg_txt[] “There are %1 cubes moved”}
上面橙色部分分别为作者、编号、和消息要显示的内容。
编号:由用户自定义,与系统无关,便于用户对信息进行识别。
内容:内容中的%1是占位符,表示这里要显示的是一个变量。内容作为字符串来显示,要显示变量,不可以直接把变量名字填入到字符串中。如果把变量名 counter 直接填入到字符串中,则系统会显示 There are counter cubes moved ,而不是显示 There are 3 cubes moved 。
STEP 2 :定义占位符
■占位符一共有3个,分别是%1、%2、%3。
这一步主要是说明占位符是否有使用。如果使用了,占位符的数值从哪个变量获得。
使用系统预定义结构体 KRLMSGPAR_T
decl krlmsgpar_t para[3]
■ 此处必须是长度为3的数组,因为系统默认有三个占位符。
对于**个占位符%1,上述例子使用了,并且%1的数值来源于叫做counter的int类型变量,所以
para[1]={par_type#value}
para[1].par_int=counter
其中parameter[1]表示%1;#value:表示%1使用了;int和counter:表示%1从一个叫做counter的整型变量获得数值。
对于第二个占位符%2和第三个占位符%3,例子未使用,所以
para[2]={par_type #empty}
para[3]={par_type #empty}
其中para[2]和para[3]分别表示%2和%3;#empty:表示未使用。因为这两个占位符没有使用,所以也不需要规定他们从哪里获得数值。
STEP 3 :定义信息生成后的选项
定义信息生成之后的一些操作选项
使用系统预先定义的结构体 KRLMSGOPT_T
decl krlmsgopt_t option
option={vl_stop true, clear_p_reset true, clear_p_saw true, log_to_db false}
vl_stop: 生成信息时,是否打断预进指针,true为打断;
clear_p_reset:生成信息后,进行程序复位或退出程序操作,这条信息是否删除, true 为删除;
clear_p_saw :生成信息后,进行语句行选择操作后,这条信息是否删除, true 为删除;
log_to_db:是否将信息记录到数据库中,true 为记录。
STEP 4 生成信息
使用系统自带的函数set_krlmsg生成信息。
函数有返回值,返回值是信息在缓存中的地址,类型是int。
int address
address = set_krlmsg( #notify, mess, para[], option)
其中#notify表示要生成提示信息。
如果要生成其他类型信息, #quit :确认信息;#state :状态信息;#waiting :等待信息。
之前讲过,对话信息(又名对话框,下面统称对话框)与其他的信息类型有所区别,属于单独的一个大类。不过对话框编程与提示信息编程步骤大致类似[在定义作者(来源)、编号、内容(关键字),占位符,选项这三个步骤上],但因对话框中需要提供按钮给用户选择,所以需要额外再定义按钮按键,如下图:
So, “对话框编程步骤”的重点讲解内容就是“按钮按键的编程”,那究竟怎么才能生成这些按键信息呢?一起往下看吧!
STEP 1 定义按键
使用系统预先构建的结构体 KRLMSGDLGSK_T
一个对话框中*多可以有7个按钮按键,在声明结构体变量时一定是7个元素的数组。
decl krlmsgdlgsk_t softkey[7]
softkey[1]={sk_type #value, sk_txt[] “Four”}
softkey[1]表示**个按钮按键,#value表示这个按键使用了,“Four”表示按键上要显示的内容。
softkey[5]={sk_type #empty}
softkey[5]表示第五个按钮按键,#empty表示这个按键未使用。
这7个按键,程序员可以决定使用哪个按键,不讲究顺序。
STEP 2 生成对话框
使用系统自带的函数 set_krldlg 生成信息。
函数有返回值,返回值是信息在缓存中的地址,类型是int。
int address
address=set_krldlg(mess,para[],softkey[],option)
生成对话框的函数 set_krldlg 不需要指定信息的类型,因为对话框只有一种类型,另外需要将按钮按键的数组作为参数传递进去。
STEP 3 生成对话框的后续处理
对话框生成后一定是停着等用户去进行选择的,所以让程序进入到一个循环中。循环一直在查询对话框是否还在缓存中,如果没有人去选择,则对话框一直不消失,能查询得到;如果被选择了,那么对话框消失,查询不到了。同时用户按了哪个按键,通过查询函数 exists_krldlg 的第二个参数进行反馈(在样例代码中为 answer )。
以下为样例代码:
在获得了 answer 值之后,就可以利用程序判断,按了哪个按键,该去做什么事情。
更多资讯:库卡机器人
- 下一篇:KUKA库卡机器人的安全系统
- 上一篇:库卡机器人编程之Frame数据