【库卡】KUKA机器人:信息编程—信息类型介绍
想必对于 KU 粉们而言,就 KUKA 示教器(SmartPad)上显示的各种图标大家一定不会陌生,但是对于这些图标代表的信息,你都知道吗?他们的作用是什么?区别又是什么呢?
01、库卡机器人示教器(SmartPad)上的图标一共有5种类型,如下图所示噢:
02、看了上图的信息类型,大家肯定要问,它们的作用是什么呢?
确认信息:
通常用于表示发生了错误,信息生成后必须按下OK键,信息消失后才能让程序继续运行。
图1:确认信息
状态信息:
用于表示一种状态,比如在急停状态或者是程序正在运行状态。
特性:状态信息没有OK键确认,只有当这个状态消失了之后,信息才消失。
图2:状态信息
提示信息:
起提示作用,通常是提示一下操作人员需要去做什么事情,或者控制器完成了什么事情。
特性:该信息生成后不记录到缓存当中。信息生成后程序代码不能对信息进行后续操作,大约可生成300万条。
图3:提示信息
等待信息:
在等待信号或者某个条件时显示的信息。
特性:该信息有模拟键,用于模拟等待条件成立,程序直接往下执行。
图4:等待信息
对话信息:
在界面上出现一个窗口,可以有按钮进行选择,程序根据用户的选择进行后续操作。
图5:对话信息
03、看到这里,是不是又在好奇这些信息类型之间有什么区别呢?
➤ 确认信息、状态信息、提示信息、等待信息可看成是一个大类,这些信息都显示在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 值之后,就可以利用程序判断,按了哪个按键,该去做什么事情。
好的文章,需要您的鼓励
2
- 最新资讯
- 最新问答
-
智能仓储系统的构成包括什么?有哪些特点?
关键字: 智能仓储 智慧物流 2025-05-15 -
微型压力传感器的原理是什么?有哪些应用?
关键字: 传感器 压力传感器 鑫精诚 2025-04-03 -
立体库堆垛机是什么?有哪几种类型?
关键字: 堆垛机 立体仓库 2025-03-24 -
埋弧焊是什么焊接方法?有什么特点?
关键字: 弧焊 埋弧焊 2025-03-17 -
AGV小车是什么?有哪些分类及特点?
关键字: agv小车 2025-03-12
-
激光焊接机器人的特点有哪些?
标签: 激光焊接机器人,焊接机器人,工业机器人 提问:小T 2025-04-15 11:02:00 -
工业机器人码垛原理是什么?
标签: 码垛机器人,工业机器人 提问:晓明 2025-03-24 12:00:00 -
什么是自动焊接和半自动焊接?
标签: 焊接,焊接机器人 提问:小君 2025-03-18 09:00:00 -
发那科机器人的信号种类?
标签: 发那科机器人,IO信号 提问:小马 2025-03-10 15:00:00 -
弧焊机器人有什么性能标准和要求?
标签: 弧焊机器人 提问:小常 2025-03-05 15:00:00
- 2021-06-10 10:45:45
- 2021-06-11 13:34:28
- 2020-05-29 10:03:22
- 2019-09-24 11:19:01
- 2020-01-16 13:27:13
- 2019-10-08 09:43:45
- 2024-04-14 14:23:20
- 2022-10-24 15:03:31
- 2022-11-01 14:31:15
- 2022-10-30 13:44:41
- 2022-10-28 13:20:07
- 2022-08-03 10:20:40
- 2025-05-15
- 2025-04-03
- 2025-03-24
- 2025-03-17
- 2025-03-12
- 2025-03-05
- 2025-02-27
- 2025-02-19
- 2025-02-18
- 2025-02-10