建立属于自己的原创信息品牌站 了解企业站
返回首页 hi, 欢迎来到机器人在线 请登录/ 免费注册 订阅邮件
  • 【库卡】KUKA机器人:信息编程—信息类型介绍

    发布时间:2020年01月09日

    想必对于 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 值之后,就可以利用程序判断,按了哪个按键,该去做什么事情。

  • 获取验证码