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

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;ENDTESTMoveJ 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_1MoveJ 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机器人教程:基于系统输入输出的外部启动功能介绍与配置方法

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue2实践:el-table实现由用户自己添加删除行数的动态表格
  • 【Redis】redis5种数据类型(list)
  • 智能平衡移动机器人-MBD开发介绍
  • Golang | Leetcode Golang题解之第397题整数替换
  • CAN总线物理层知识点详解及大厂CAN总线高频面试题
  • 贪心-用最少的箭射球
  • 端口大全说明,HTTP,TCP,UDP常见端口对照表
  • 数据流图例题
  • SQL的基本语句(2024年9月最新版 入门级)
  • Python应用指南:获取行政区最小外接矩形
  • containerd二进制安装
  • React第二章(开发环境搭建 )
  • 78-java 多线程如何共享数据
  • 一篇文章了解Pytest单元测试框架
  • Vue3前端框架学习记录
  • const let
  • CSS盒模型深入
  • es6
  • JAVA 学习IO流
  • JavaScript函数式编程(一)
  • Javascript设计模式学习之Observer(观察者)模式
  • Java超时控制的实现
  • leetcode46 Permutation 排列组合
  • RxJS: 简单入门
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 数据结构java版之冒泡排序及优化
  • 我看到的前端
  • MPAndroidChart 教程:Y轴 YAxis
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (55)MOS管专题--->(10)MOS管的封装
  • (C#)一个最简单的链表类
  • (c语言+数据结构链表)项目:贪吃蛇
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)hibernate配置管理
  • (六)DockerCompose安装与配置
  • (面试必看!)锁策略
  • (十六)串口UART
  • (一)Docker基本介绍
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core docker部署教程和细节问题
  • .Net 路由处理厉害了
  • .net 设置默认首页
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .NetCore发布到IIS
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET未来路在何方?
  • .net中的Queue和Stack
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...