当前位置: 首页 > article >正文

ABB机器人教程:外部调用例行程序功能介绍与使用方法

目录

概述

机器人I/O信号配置

例行程序调用指令介绍

机器人示教编程

例行程序调用指令添加方法

机器人程序运行测试


概述

众所周知,ABB机器人具备外部自动功能,此功能允许用户通过远程控制,实现机器人自动运行。

通常情况下,机器人的外部自动功能都包含外部启动和外部程序调用两种功能。

外部启动功能在之前发布过的文章《ABB机器人教程:基于系统输入输出的外部启动功能介绍与配置方法》中已经介绍过了,感兴趣的可以翻找查阅。

外部程序调用是通过外部PLC或HMI等监控设备,远程设定机器人例行程序编号,来控制机器人执行对应编号的例行程序。

使用外部程序调用功能前,必须先示教完要调用的例行程序,并且还要事先约定好程序调用编号与待调用的例行程序名称之间的对应关系,如1对应Routine1()、2对应Routine2()、3对应SpotWelding()等。

程序调用编号都是数字,而机器人例行程序名称则可以任意命名,比如字母加数字后缀形式或者只有字母的形式等,不同名称的例行程序要使用不同的调用方法。

机器人I/O信号配置

一般情况下,机器人例行程序调用编号的数值都是在某个有限范围内的正整数或者0。ABB机器人系统中,能够传输正整数和0这种数据的信号是组信号。

ABB机器人的组信号是将若干个数字信号组合起来使用,用于接收或发送BCD编码类型的十进制数。

机器人的组信号包括组输入信号和组输出信号。组输入信号是将数字输入信号组合起来,用于接收外围设备输入的十进制数。组输出信号则是将数字输出信号组合起来,用于向外围设备发送十进制数。

组信号在使用前,需要先配置出来。以组输入信号配置为例,在示教器上点击“ABB菜单”,然后依次点选“控制面板”→“配置”→“Signal”,然后点击“显示全部”按钮,进入I/O信号配置界面。

点击“添加”按钮,进入I/O信号添加界面。按照下表所示的参数名称,输入对应的设定值,就能配置出1个组输入信号,此组输入信号用来作为外部设定机器人例行程序调用编号的I/O信号。

参数名称

设定值

说明

Name

giProcNo

设定信号名称

Type of Signal

Group Input

设定信号类型

Assigned to Device

PB_Internal_Anybus

设定信号所属模块

Device Mapping

6-13

设定信号占用的地址

示教器中设定完参数后的组输入信号配置界面,如下图所示。组输出信号配置方法与之类似,参考操作即可。

无论是组输入信号还是组输出信号,它们的十进制数最小值都是0,而十进制数的最大值则与构成组信号所占用的地址位数有关,计算方法可以参考下方公式。

a=2^{n}-1

其中,a是十进制数最大值,n是组信号所占用的地址位数。

以我们配置的组输入信号giProcNo为例,其对应的十进制数最大值为

2^{13-6+1}-1=255

即组输入信号giProcNo可以设定的十进制数最大值为255。

基于此,本案例中,例行程序调用编号的有效设定范围就是0~255。

例行程序调用指令介绍

ABB机器人的例行程序有3种调用方法,每种方法对应一种调用指令,以下分别介绍。

  • ProcCall

ProcCall是ABB机器人最常用的例行程序调用指令,通过使用该指令能够将正在执行的程序转移到另一条程序。当调用的程序执行完成后,则立刻返回程序调用位置,继续执行程序调用后的指令。ProcCall指令语句格式,如下图所示。

某些情况下,程序调用过程中可以向新调用的例行程序发送一些参数。这些参数可以控制程序的行为,使同一条程序能够用于不同的用途。

  • CallByVar

CallByVar是Call By Variable的缩写,即通过变量调用。顾名思义,该指令可用于通过变量调用具有特定名称的例行程序,例如,proc_name1、proc_name2、proc_name3 ... proc_namex。CallByVar指令语句格式,如下图所示。

指令中,Name的数据类型是字符串,它是构成调用的例行程序名称的第1部分,也就是程序名称文本,例如proc_name。这部分内容是固定不变的,一旦设定完成,不支持通过机器人程序或变量来修改。

Number是程序名称编号,是构成调用的例行程序名称的第2部分。它是一个变量,用户可以通过修改此变量值来修改所调用的程序的编号,该变量必须是正整数,例如1。指令执行过程中,此编号值将转换为字符串。

综上,所举的例子中,通过CallByVar指令所调用的例行程序的完整名称就是Name与Number的组合,即proc_name1。

当遇到例行程序名称文本部分相同,只有名称编号不同的情况时,使用CallByVar指令调用例行程序会更加方便。

  • %<expression>%

%<expression>%是ABB机器人基于RAPID语法形式的例行程序调用方法,指令语句格式,如下图所示。指令中,%是RAPID语法程序调用标识符,两个%之间的<expression>是待调用的例行程序名称,数据类型必须为字符串,{Argument}是程序参数。

与前两种方法不同,%<expression>%中待调用的例行程序名称无论是文本还是数值,都可以是变量。用户可以将<expression>设定为变量表达式形式的程序名称,这样程序语句执行过程中,通过修改变量值就可以指定要调用的例行程序。

机器人示教编程

上述介绍过的ABB机器人的3种例行程序调用方法,每一种方法都能实现通过外部设定程序调用编号调用例行程序。但是,在示教编程时略微有所不同,以下分别介绍。

  • 第1种方法

ProcCall指令中待调用的例行程序名称自身不能包含变量,因此需要与其他指令相互配合才能实现外部设定程序调用编号。现举1例,机器人程序代码如下所示。

PROC main()  !主程序
    MoveJ Target_10,v100,fine,tool0\WObj:=wobj0;
    procNo := giProcNo;  !将组输入信号值转换为num类型变量值
    TEST procNo  !根据外部设定的程序调用编号,调用相应的例行程序
    CASE 1:
    Path_1;
    CASE 2:
    Path_2;
    CASE 3:
    Path_3;
    DEFAULT:
    EXIT;
    ENDTEST
    MoveJ Target_10,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_1()  !编号为1的例行程序
    MoveJ Target_20,v100,fine,tool0\WObj:=wobj0;
	MoveL Target_30,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_2()  !编号为1的例行程序
    MoveL Target_40,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_50,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_3()  !编号为1的例行程序
    MoveL Target_60,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_70,v100,fine,tool0\WObj:=wobj0;
ENDPROC
  • 第2种方法

CallByVar指令中待调用的例行程序名称编号自身可以是变量。基于此,示教编程时可以直接添加指令,然后按照指令语句格式设定指令参数即可,程序代码如下所示。

PROC main()
    MoveJ Target_10,v100,fine,tool0\WObj:=wobj0;
    procNo := giProcNo;
    CallByVar "Path_", procNo;  !调用的例行程序名称为Path_与procNo变量值的组合,如Path_1
    MoveJ Target_10,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_1()
    MoveJ Target_20,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_30,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_2()
    MoveL Target_40,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_50,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_3()
    MoveL Target_60,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_70,v100,fine,tool0\WObj:=wobj0;
ENDPROC
  • 第3种方法

%<expression>%中待调用的例行程序名称不仅编号可以是变量,文本也可以是变量。因此,示教编程时,也是直接按照程序语句格式编写即可,程序代码如下所示。

PROC main()
    MoveJ Target_10,v100,fine,tool0\WObj:=wobj0;
    procNo := giProcNo;
    %"Path_"+NumToStr(procNo,0)%;  ! NumToStr函数将变量中的数值转换为字符串
    MoveJ Target_10,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_1()
    MoveJ Target_20,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_30,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_2()
    MoveL Target_40,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_50,v100,fine,tool0\WObj:=wobj0;
ENDPROC
PROC Path_3()
    MoveL Target_60,v100,fine,tool0\WObj:=wobj0;
    MoveL Target_70,v100,fine,tool0\WObj:=wobj0;
ENDPROC

注:以上案例程序中的注释语句仅作为程序说明使用,实际的机器人程序并不支持这种注释语句添加方式。

例行程序调用指令添加方法

ABB机器人的ProcCall指令与CallByVar指令的添加方法较为简单,在示教器程序编辑器中,点击“添加指令”按钮,指令列表上方点选“Prog.Flow”,在其下就可以找到ProcCall指令和CallByVar指令,如下图所示。

相较于ProcCall指令与CallByVar指令,%<expression>%的添加方法略微复杂一些。

先在程序编辑器中添加任意一条指令,如跳转标签指令Label。

然后点击“编辑”按钮,在编辑列表中点选“ABC…”,如下图所示。

此时,示教器界面切换为输入面板,使用软键盘按照%<expression>%的程序语句格式输入程序语句,如下图所示。

程序语句输入完成后,点击“确定”按钮,即可完成添加。

机器人程序运行测试

机器人程序示教完成后,可以在组输入信号中输入要调用的程序编号,然后运行主程序来测试对应编号的子程序是否能够调用成功。

本案例在RobotStduio中对ABB机器人外部设定例行程序调用编号进行了仿真测试,通过在组输入信号中设定程序调用编号完全可以实现例行程序的调用。真实的机器人中,只需要将构成组输入信号的数字输入信号映射到PLC中,这样就能通过PLC实现远程机器人例行程序外部调用了。

点击下方视频,可以查看仿真测试效果。

RobotStudio虚拟仿真:ABB机器人例行程序外部调用

The End


上一篇:ABB机器人教程:基于系统输入输出的外部启动功能介绍与配置方法


http://www.kler.cn/a/298946.html

相关文章:

  • 探索 Seaborn Palette 的奥秘:为数据可视化增色添彩
  • 鸿蒙学习笔记:用户登录界面
  • mysql的事务控制和数据库的备份和恢复
  • 防火墙技术与网络安全
  • 【集合】Java 8 - Stream API 17种常用操作与案例详解
  • 全志H618 Android12修改doucmentsui鼠标单击图片、文件夹选中区域
  • 流媒体之HLS协议(其三)
  • 动态规划-最长回文子序列
  • Android自动化1️⃣环境搭建【基于Appium】-基于python
  • 在执行django定时任务中,遇到的celery woker生命周期问题
  • 【区块链 + 基层治理】基层党建投票应用“We 投票” | FISCO BCOS应用案例
  • 掌握python-pptx:打造专业PPT表格
  • MIT6.824 课程-GFS
  • PyCharm修改背景颜色、修改字体大小+Python常用快捷键+Python常见的运算符
  • 【PyQt6 应用程序】一键视频解说克隆字幕切割版
  • Linux命令分享 三 (ubuntu 16.04)
  • flink程序 轻松测试
  • 如何在Selenium中捕获网络请求响应
  • 缓存穿透、缓存雪崩、缓存击穿
  • 国产ERT/ECT工业电阻/电容层析成像系统在多相流领域的应用
  • IP地址是怎么实现HTTPS访问的?
  • Vue组件:动态组件、缓存组件、异步组件
  • HarmonyOs 应用基础--Swiper-样式结构重用-GridGridItem
  • 《垃圾回收的算法与实现》-算法-摘抄
  • Matlab中BaseZoom()函数实现曲线和图片的局部放大
  • 精密夹治具加工的精度和创新特点