ABB机器人的程序数据资料

合集下载

abb机器人编程手册

abb机器人编程手册

abb编程手册ABB 编程手册1、介绍1.1 本手册的目的1.2 适用范围1.3 术语解释2、ABB 基础知识2.1 ABB 系列介绍2.2 构造与原理2.3 的运动学2.4 控制系统3、ABB 编程环境3.1 编程软件介绍3.2 程序示教3.3 程序编辑器3.4 调试和运行程序3.5 程序备份和恢复4、ABB 编程语言4.1 RAPID 语言概述4.2 基本数据类型与变量 4.3 运算符和表达式4.4 基本控制结构和循环4.5 过程和子程序5、ABB 运动控制5.1 点到点运动5.2 直线运动5.3 圆弧运动5.4 坐标转换与变换5.5 关节状态和限制6、ABB 传感器接口6.1 传感器接口概述6.2 接口配置与连接6.3 传感器数据获取与处理6.4 传感器应用示例7、ABB 网络通信7.1 Ethernet 网络通信7.2 与外部设备的通信7.3 数据传输与共享8、ABB 安全与风险评估8.1 安全标准与规范8.2 风险评估方法8.3 安全控制系统介绍8.4 安全应用示例9、ABB 维护与故障排除9.1 维护周期与工作9.2 故障排除方法与工具9.3 常见故障与解决方法10、附件10.1 附件一、ABB 编程示例代码 10.2 附件二、ABB 用户手册法律名词及注释:1、版权:指作品的创作权和对作品的署名权、修改权、发表权、复制权、发行权以及演绎权等全部或者部分权利。

2、专利:指为了保护发明创造,经国家审查机关审查并认定其具有技术先进性、实用性和创造性,授予专利申请人专有的技术权利。

3、商标:指为区分同类商品或服务来源的标记,包括文字、图形、字母、数字、颜色、形状等。

4、注册商标:商标局根据申请人的申请,经审查,决定予以注册,并给予公告的商标。

5、著作权:指作者依照法律规定保护其作品所享有的经济权和非经济权。

6、知识产权:包括著作权、专利权、商标权、商业秘密等权利。

7、侵权行为:对他人享有的著作权、专利权、商标权等知识产权进行侵犯的行为。

ABB程序中文简介

ABB程序中文简介

ABB机器人编程与测试一、程序储存器(Programmemory)的组成:应用程序(Program)系统模块(Systemmodules)机器人程序储存器中,只允许存在一个主程序;所有例行程序与数据无论存在于哪个模块,全部被系统共享;所有例行程序与数据除特殊定义外,名称必须是唯一的。

1、应用程序(Program)的组成:·主模块(Mainmodule)主程序(Mainroutine)程序数据(Programdata)例行程序(Routines)·程序模块(Programmodules)程序数据(Programdata)例行程序(Routines)2、系统模块(Systemmodules)的组成:·系统数据(Systemdata)·例行程序(Routines)所有ABB机器人都自带两个系统模块,USER模块与BASE模块,根据机器人应用不同,有些机器人会配备相应应用的系统模块。

建议不要对任何自动生成的系统模块进行修改。

二、编程窗口:1、菜单键File:1、 Open:打开一个现有文件。

(程序.prg或模块.mod)2、 New:新建一个程序。

3 、Saveprogram :存储更改后的现有程序。

4 、Saveprogramas:存储一个新程序。

5 、Print: 打印程序,现已经不使用。

6、 Preferences:定义用户化指令集。

7、 Checkprogram :检验程序,光标会提示错误。

8 、Close:在程序储存器中关闭程序。

9、 Savemodule :存储更改后的现有模块。

(只在Module窗口中存在)0、 Savemoduleas : 存储一个新模块。

(只在Module窗口中存在)2、菜单键Edit:1、 Cut:剪切,可能会丢失指令或数据。

2 、Copy :复制。

3 、Paste :粘贴,将剪切或复制的指令或数据粘贴到相应位置。

4、 GotoTop:将光标移至顶端。

(完整版)ABB机器人的程序编程

(完整版)ABB机器人的程序编程

ABB[a]-J-6ABB 机器人的程序编程6.1 任务目标➢掌握常用的PAPID 程序指令。

➢掌握基本RAPID程序编写、调试、自动运行和保存模块。

6.2 任务描述◆建立程序模块test12.24,模块test12.24 下建立例行程序main 和Routine1,在main 程序下进行运动指令的基本操作练习。

◆掌握常用的RAPID 指令的使用方法。

◆建立一个可运行的基本RAPID程序,内容包括程序编写、调试、自动运行和保存模块。

6.3 知识储备6.3.1 程序模块与例行程序RAPID 程序中包含了一连串控制机器人的指令,执行这些指令可以实现对机器人的控制操作。

应用程序是使用称为RAPID 编程语言的特定词汇和语法编写而成的。

RAPID 是一种英文编程语言,所包含的指令可以移动机器人、设置输出、读取输入,还能实现决策、重复其他指令、构造程序、与系统操作员交流等功能。

RAPID 程序的基本架构如图所示:RAPID 程序的架构说明:1)RAPID 程序是由程序模块与系统模块组成。

一般地,只通过新建程序模块来构建机器人的程序,而系统模块多用于系统方面的控制。

2)可以根据不同的用途创建多个程序模块,如专门用于主控制的程序模块,用于位置计算的程序模块,用于存放数据的程序模块,这样便于归类管理不同用途的例行程序与数据。

3)每一个程序模块包含了程序数据、例行程序、中断程序和功能四种对象,但不一定在一个模块中都有这四种对象,程序模块之间的数据、例行程序、中断程序和功能是可以互相调用的。

4)在RAPID 程序中,只有一个主程序main,并且存在于任意一个程序模块中,并且是作为整个RAPID 程序执行的起点。

操作步骤:6.3.2 在示教器上进行指令编程的基本操作ABB 机器人的RAPID 编程提供了丰富的指令来完成各种简单与复杂的应用。

下面就从最常用的指令开始学习RAPID 编程,领略RAPID 丰富的指令集提供的编程便利性。

(完整版)ABB机器人的程序编程

(完整版)ABB机器人的程序编程

ABB[a]-J-6ABB 机器人的程序编程6.1 任务目标➢掌握常用的PAPID 程序指令。

➢掌握基本RAPID程序编写、调试、自动运行和保存模块。

6.2 任务描述◆建立程序模块test12.24,模块test12.24 下建立例行程序main 和Routine1,在main 程序下进行运动指令的基本操作练习。

◆掌握常用的RAPID 指令的使用方法。

◆建立一个可运行的基本RAPID程序,内容包括程序编写、调试、自动运行和保存模块。

6.3 知识储备6.3.1 程序模块与例行程序RAPID 程序中包含了一连串控制机器人的指令,执行这些指令可以实现对机器人的控制操作。

应用程序是使用称为RAPID 编程语言的特定词汇和语法编写而成的。

RAPID 是一种英文编程语言,所包含的指令可以移动机器人、设置输出、读取输入,还能实现决策、重复其他指令、构造程序、与系统操作员交流等功能。

RAPID 程序的基本架构如图所示:RAPID 程序的架构说明:1)RAPID 程序是由程序模块与系统模块组成。

一般地,只通过新建程序模块来构建机器人的程序,而系统模块多用于系统方面的控制。

2)可以根据不同的用途创建多个程序模块,如专门用于主控制的程序模块,用于位置计算的程序模块,用于存放数据的程序模块,这样便于归类管理不同用途的例行程序与数据。

3)每一个程序模块包含了程序数据、例行程序、中断程序和功能四种对象,但不一定在一个模块中都有这四种对象,程序模块之间的数据、例行程序、中断程序和功能是可以互相调用的。

4)在RAPID 程序中,只有一个主程序main,并且存在于任意一个程序模块中,并且是作为整个RAPID 程序执行的起点。

操作步骤:6.3.2 在示教器上进行指令编程的基本操作ABB 机器人的RAPID 编程提供了丰富的指令来完成各种简单与复杂的应用。

下面就从最常用的指令开始学习RAPID 编程,领略RAPID 丰富的指令集提供的编程便利性。

ABB机器人编程程序解析

ABB机器人编程程序解析

ABB编程程序解析本文档详细解析了ABB编程程序的各个方面和细节。

下面将从编程程序的结构、语句、命令等多个角度进行解析。

一、编程程序的结构编程程序一般由多个模块组成,每个模块包含多个子程序。

每个子程序又由若干行指令组成,指令按照执行顺序排列。

1、主程序:主程序是整个编程程序的入口,负责调用各个子程序、执行整个程序的控制流程。

主程序一般包含初始化程序和功能子程序的调用。

2、子程序:子程序是主程序调用的模块,实现具体功能和任务。

子程序可以被其他模块或主程序调用,提供对应的功能接口,具有独立的输入输出参数。

二、编程程序的语句编程程序的语句一般由指令、命令和注释组成。

1、指令:指令是编程程序的最基本单元,是执行的基本操作。

常见的指令有移动指令、IO操作指令、数据处理指令等,用于控制的运动和执行特定操作。

2、命令:命令由一条或多条指令组成,控制完成特定的动作或功能。

命令可以是顺序执行的、条件执行的、循环执行的等。

3、注释:注释用于对编程程序进行说明和解释,提高程序的可读性和维护性。

注释不会被编译器执行,只是给程序员看的。

三、编程程序的命令编程程序的命令包括运动命令、IO命令、数据处理命令等。

1、运动命令:运动命令用于控制的运动,包括直线运动、圆弧运动、轴运动等。

通过设定位置、速度和加速度等参数,实现的精确定位和运动控制。

2、IO命令:IO命令用于控制与外部设备的交互,包括输入和输出操作。

通过IO命令可以读取和控制传感器、执行器等外部设备的状态和动作。

3、数据处理命令:数据处理命令用于对的数据进行处理和计算,包括数学运算、逻辑运算、数据转换等。

通过数据处理命令可以实现的智能决策和复杂计算。

四、附件本文档涉及的附件包括示例代码、程序调试结果、相关文献等。

这些附件可以帮助读者更好地理解和应用本文档所述的内容。

五、法律名词及注释1、法律名词1:X注释:X是指2、法律名词2:X注释:X是指六、全文结束。

ABB机器人程序数据

ABB机器人程序数据
方法 3.机器人工件坐标系的定义及工件坐标系的
设定方法 4.机器人有效载荷的设定方法
任务1:认识程序数据
1、程序数据的类型分类
ABB工业机器人的程序数据共有76个,并且可以根据实际的一 些情况进行程序数据的创建为ABB机器人的程序编辑和设计 提供了较好的延伸性和扩展性。用户可以通过示教器中的程 序数据窗口查看所需要的程序数据基类型。
1、建立程序数据bool
数据设定参数 名称 范围
说明
设定程序数据的名称
设定数据的可使用的范围,包括全局、本地和任务三个选项。全局表示数据可以应用在所有模块中,本地 表示数据只可以应用于所在的模块中,任务则表示数据只能应用与所在的任务中。
存储类型 任务 模块 例行程序 维数 初始值
设定数据的可存储类型,包括变量、可变量和常量。 设定数据所在的任务 设定数据所在的模块 设定数据所在的例行程序 设定数据的维数。数据的维数一般是指数据不相干的几种特性。 设定数据的初始值。数据的类型不同,初始值可以不同,用户可根据实际使用的需要设定合适的初始值。
2、程序数据的存储类型
(3)常量CONST 在RAPID中还有一种常用的程序数 据类型就是常量型程序数据,常量 型的特点就是数据在定义的时候已 经被赋予了数值,并且不能在程序 中进行数据的修改,除非手动进行 修改,否则数据会一直保持不变。 CONST表示存储类型为常量。
3、常用的程序数据
bool byte clock dionum extjoint intnum jointtarget loaddata mecunit num orient pos pose robjoint speedata string tooldata trapdata wobjdata zonedata

ABB机器人的程序数据

ABB机器人的程序数据

ABB机器人的程序数据5.1任务目标➢掌握程序数据的建立方法。

➢掌握三个关键程序数据的设定。

➢熟悉机器人工具自动识别功能。

5.2任务描述◆以bool为例,建立程序数据,练习建立num、robtarget程序数据。

◆设定机器人的工具数据tooldata、工件坐标wobjdata、负荷数据loaddata。

◆使用LoadIdentify工具自动识别安装在六轴法兰盘上的工具(tooldata)与载荷(loaddata)的重量,与重心。

5.3知识储备5.3.1程序数据程序数据是在程序模块或者系统模块中设定的值与定义的一些环境数据。

创建的程序数据由同一个模块或者其他模块中的指令进行引用。

图中是一条常用的机器人关节运动的指令MoveJ,调用了四个程序数据。

图中所使用的程序数据的说明见表:程序数据数据类型说明p10 robtarget 机器人运动目标位置数据v1000 speeddata 机器人运动速度数据z50 zonedata 机器人运动转弯数据tool0 tooldata 机器人工作数据TCP5.3.2程序数据的类型与分类1.程序数据的类型分类ABB机器人的程序数据共有76个,同时能够根据实际情况进行程序数据的创建,为ABB机器人的程序设计带来了无限可能性。

在示教器的“程序数据”窗口可查看与创建所需要的程序数据。

2.程序数据的存储类型(1)变量VAR变量型数据在程序执行的过程中与停止时,会保持当前的值。

但假如程序指针被移到主程序后,数值会丢失。

举例说明:VAR num length:=0;名称之length的数字数据VAR string name:=”John”;名称之name的字符数据VAR bool finish:=FALSE;名称之finish的布尔量数据在程序编辑窗口中的显示如图:在机器人执行的RAPID程序中也能够对变量存储类型程序数据进行赋值的操作,如图:*注意:VAR表示存储类型为变量num表示程序数据类型*提示:在定义数据时,能够定义变量数据的初始值。

ABB机器人的程序编程

ABB机器人的程序编程

ABB的程序编程ABB程序编程1、简介1.1 介绍ABB1.2 程序编程概述2、程序编程基础知识2.1 程序语言2.2 坐标系2.3 程序结构2.4 变量和常量2.5 条件语句2.6 循环语句2.7 子程序和函数2.8程序调试和错误处理3、运动控制3.1 示教运动模式3.2 直线运动3.3 圆弧运动3.4 运动速度控制3.5 轨迹规划3.6 动作指令4、传感器和外围设备4.1 连接外围设备4.2 传感器的使用方法4.3 数据采集和处理5、编程实例5.1 取放操作5.2 精确拼接操作5.3 装配操作5.4 机器视觉应用5.5 跟踪和检测任务6、编程调优技巧6.1 提高程序执行速度6.2 优化轨迹规划6.3 减小运动干涉6.4 编写可重用程序7、安全注意事项7.1 安全处理7.2 紧急停止和重置7.3 防护设备要求8、相关附件8.1 附件一、ABB编程示例代码8.2 附件二、模型示意图8.3 附件三、程序调试和错误处理流程图注释:1、ABB:ABB公司生产的工业系列产品。

2、示教运动模式:通过手动示教方式录制的运动轨迹。

3、轨迹规划:根据给定的目标位置和运动速度计算的运动轨迹。

4、机器视觉应用:利用摄像头和图像处理算法实现对物体的识别和定位。

5、安全处理:保证操作人员的安全,防止造成危险。

6、紧急停止和重置:在遇到危险情况时立即停止运动并进行系统重置。

7、防护设备要求:使用适当的安全设备,如安全围栏、光幕等。

8、附件:本文所提到的相关附件。

ABB机器人的程序数据

ABB机器人的程序数据

ABB的程序数据ABB程序数据文档1.介绍1.1 背景:介绍ABB以及其在工业领域的应用1.2 目的:说明本文档的目标和用途1.3 范围:准确定义本文档所涵盖的程序数据范围2.程序概览2.1 程序名称:给出程序的名称和描述2.2 程序版本:记录程序的版本号和更新历史2.3 程序结构:说明程序的主要功能和模块结构3.程序输入与输出3.1 输入数据:程序的输入要求和格式3.2 输出数据:说明程序的输出结果和格式3.3 数据流程:描述程序运行期间数据的流动和处理方式4.程序逻辑和算法4.1 主要算法:详细描述程序的主要算法和逻辑流程4.2 细节算法:介绍程序中涉及的关键算法和处理细节4.3 条件与循环:说明程序中使用的条件和循环结构5.设备和接口5.1 硬件要求:列出与程序运行相关的硬件设备和配置要求5.2 软件要求:说明程序运行所需的相关软件和版本要求5.3 接口定义:定义程序与其他设备或软件的接口及通信方式6.错误处理和异常情况6.1 常见错误:程序常见的错误和异常情况6.2 处理方法:说明程序对错误和异常情况的处理方法和策略6.3 日志记录:描述程序的错误日志记录和报警操作7.安全和法规要求7.1 安全要求:说明程序开发和运行过程中的安全要求7.2 法规要求:与程序相关的法律法规及合规要求7.3 数据保护:描述程序对数据保护和隐私的措施8.附件在本文档中提及的附件:- 附件1:程序源代码- 附件2:程序测试报告9.法律名词及注释9.1 法律名词:列出本文中涉及到的法律名词及其解释9.2 注释:对本文中使用的专业术语和缩写进行解释和注释。

ABB机器人的程序数据 (2)

ABB机器人的程序数据 (2)

ABB[a]-J-5ABB机器人的程序数据任务目标掌握程序数据的建立方法。

掌握三个关键程序数据的设定。

了解机器人工具自动识别功能。

任务描述以bool为例,建立程序数据,练习建立num、robtarget程序数据。

设定机器人的工具数据tooldata、工件坐标wobjdata、负荷数据loaddata。

使用LoadIdentify工具自动识别安装在六轴法兰盘上的工具(tooldata)和载荷(loaddata)的重量,以及重心。

知识储备程序数据程序数据是在程序模块或系统模块中设定的值和定义的一些环境数据。

创建的程序数据由同一个模块或其他模块中的指令进行引用。

图中是一条常用的机器人关节运动的指令MoveJ,调用了四个程序数据。

图中所使用的程序数据的说明见表:程序数数据类型说明据p10robtarget机器人运动目标位置数据v1000speeddata机器人运动速度数据z50zonedata机器人运动转弯数据tool0tooldata机器人工作数据TCP程序数据的类型与分类1.程序数据的类型分类ABB机器人的程序数据共有76个,并且可以根据实际情况进行程序数据的创建,为ABB机器人的程序设计带来了无限可能性。

在示教器的“程序数据”窗口可查看和创建所需要的程序数据。

2.程序数据的存储类型(1)变量VAR变量型数据在程序执行的过程中和停止时,会保持当前的值。

但如果程序指针被移到主程序后,数值会丢失。

举例说明:VAR num length:=0;名称为length的数字数据VAR string name:=”John”;名称为name的字符数据VAR bool finish:=FALSE;名称为finish的布尔量数据在程序编辑窗口中的显示如图:在机器人执行的RAPID程序中也可以对变量存储类型程序数据进行赋值的操作,如图:*注意:VAR表示存储类型为变量num表示程序数据类型*提示:在定义数据时,可以定义变量数据的初始值。

ABB常用指令 程序数据

ABB常用指令 程序数据

2016年12月31日
26
程序编写及程序结构介绍
常用指令
通信指令(人机对话)-TPReadFK
TPReadFK Answer,text,FK1,FK2,FK3,FK4,FK5;
Answer:赋值数字变量
(num)
Text:显示屏显示的字符串
(string)
FK1: 功能键1显示的字符串
(string)
FK2:功能键2显示的字符串
(string)
FK3:功能键3显示的字符串
(string)
FK4:功能键4显示的字符串
(string)
FK5:功能键5显示的字符串
(string)
2016年12月31日
27
程序编写及程序结构介绍
常用指令
程序流程指令-IF IF<exp>THEN ﹔ “Yes-part” ﹔ ENDIF﹔
如果同时选用参变量[\MaxTime]和参变量[\MaxFlag],等待 超过最长时间后﹐无论是否满足等待的状态﹐机器人将 自动执行下一句指令﹐如果在最长等待时间内得到相应 信号﹐将逻辑量置为FALSE 。如果超过最长等待时间﹐ 将逻辑量置为TRUE
2016年12月31日
23
程序编写及程序结构介绍
转弯区尺寸 单位:mm
数据类型:zonedata
18
程序编写及程序结构介绍
常用指令
-----输入输出信号 DO-指机器人输出信号 DI-指机器人输入信号 • 机器人数字输入输出采用直流24V电流 • 输入输出信号有两种状态
-1(High)为接通 -0(Low)为断开 • 输入输出信号必须为系统参数中定义
2016年12月31日
17

ABB机器人程序指令全集资料

ABB机器人程序指令全集资料

ABB机器人程序指令全集一指令格式二指令及其参数Data := ValueAccSet Acc RampActUnit MecUnitAdd Name AddValueBreakCallBy Var Name NumberClear NameClkReset ClockClkStart ClockClkStop ClockClose IODevice! CommentConfJ [\On] | [\Off]ConfL [\On] | [\Off]CONNECT Interrupt WITH Trap routine CorrCon DescrCorrDiscon DescrCorrWrite Descr DataCorrClearDeactUnit MecUnitDecr NameEOffsSet EaxOffs ErrWrite [ \W ] Header Reason[ \RL2] [ \RL3] [ \RL4]ExitExitCycleFOR Loop counter FROM Start value TO End value[STEP Step value] DO ... ENDFORGOTO LabelGripLoad LoadIDelete InterruptIF Condition ...IF Condition THEN ...{ELSEIF Condition THEN ...}[ELSE ...]ENDIFIncr NameIndAMove MecUnit Axis [ \ToAbsPos ] | [ \ToAbsNum ] Speed[ \Ramp ]IndCMove MecUnit Axis Speed [ \Ramp ] IndDMove MecUnit Axis Delta Speed [ \Ramp ]IndReset MecUnit Axis [ \RefPos ] | [ \RefNum ] | [ \Short ] |[ \Fwd ] |[ \Bwd ] | [ \Old ]IndRMove MecUnit Axis [ \ToRelPos ] | [ \ToRelNum ] |[ \Short ] |[ \Fwd ] | [ \Bwd ] Speed [ \Ramp ]InvertDO SignalIODisable U nitName MaxTimeIOEnable UnitName MaxTimeISignalDI [ \Single ] Signal TriggValue Interrupt ISignalDO [ \Single ] Signal TriggValue Interrupt ISleep Interrupt ITimer [ \Single ] Time Interrupt IVarValue V arNo Value, InterruptIWatch InterruptLabe l:MoveAbsJ [ \Conc ] ToJointPos Speed [ \V ] | [ \T ] Zone [ \Z]Tool[\WObj ]MoveC [ \Conc ] CirPoint ToPoint Speed [ \V ] | [ \T ] Zone [ \Z]Tool [\WObj ]MoveJ [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool[ \WObj ] MoveL [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool[ \WObj ] Open Object [\File] IODevice [\Read] | [\Write] | [\Append] | [\Bin] PathResol ValuePDispOn [ \Rot ] [ \ExeP ] ProgPoint Tool [ \WObj ]PDispSet DispFramePulseDO [ \PLength ] SignalRAISE [ Error no ]Reset SignalRETURN [ Return value ]Rewind IODeviceSearchC [ \Stop ] | [ \PStop ] | [ \Sup ] Signal SearchPoint CirPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ]SearchL [ \Stop ] | [ \PStop ] | [ \Sup ] Signal SearchPoint ToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ]Set SignalSetAO Signal Value SetDO [ \SDelay ] Signal ValueSetGO Signal ValueSingArea [ \Wrist] | [ \Arm] | [ \Off]SoftAct Axis Softness [\Ramp ]Stop [ \NoRegain ]TEST Test data {CASE Test value {, Test valu e} : ...}[ DEFAULT: ...] ENDTESTTPReadFK Answer String FK1 FK2 FK3 FK4 FK5 [\MaxTime] [\DIBreak] [\BreakFlag]TPReadNum Answer String [\MaxTime] [\DIBreak] [\BreakFlag] TPShow WindowTPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient]TriggC CirPoint ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3 ][ \T4] Zone Tool [ \WObj ]TriggInt TriggData Distance [ \Start ] | [ \Time ] InterruptTriggIO TriggData Distance [ \Start ] | [ \Time ] [ \DOp ] | [ \GOp ]|[\AOp ] SetValue [ \DODelay ] | [ \AORamp ]TriggJ ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3] [ \T4]Zone Tool [ \WObj] TriggL ToPoint Speed [ \T ] Trigg_1 [ \T2] [ \T3] [ \T4]Zone Tool[ \WObj ] TuneServo MecUnit Axis TuneValueTuneServo MecUnit Axis TuneValue [\Type]UnLoad FilePath [\File]VelSet Override MaxWaitDI Signal Value [\MaxTime] [\TimeFlag]WaitDO Signal Value [\MaxTime] [\TimeFlag]WaitTime [\InPos] Time WaitUntil [\InPos] Cond [\MaxTime] [\TimeFlag] WHILE Condition DO ... ENDWHILEWrite IODevice String [\Num] | [\Bool] | [\Pos] | [\Orient][\NoNewLine] WriteBin IODevice Buffer NCharWriteStrBin IODevice StrWZBoxDef [\Inside] | [\Outside] Shape LowPoint HighPoint WZCylDef [\Inside] | [\Outside] Shape CentrePoint Radius WZDisable WorldZoneWZDOSet [\Temp] | [\Stat] WorldZone [\Inside] | [\Before]Signal SetValueWZEnable WorldZoneWZFree WorldZoneWZLimSup [\Temp] | [\Stat] WorldZone ShapeWZSphDef [\Inside] | [\Outside] Shape CentrePoint Radius 三函数及其参数Abs (Input)ACos (Value)AOutput (Signal)ArgName (Parameter)ASin (Value)ATan (Value)ATan2 (Y X)ByteToStr (ByteData [\Hex] | [\Okt] | [\Bin] | [\Char]) ClkRead (Clock) CorrReadCos (Angle)CPos ([Tool] [\WObj])CRobT ([Tool] [\WObj])DefDFrame (OldP1 OldP2 OldP3 NewP1 NewP2 NewP3) DefFrame (NewP1 NewP2 NewP3 [\Origin])Dim (ArrPar DimNo)DOutput (Signal)EulerZYX ([\X] | [\Y] | [\Z] Rotation)Exp (Exponent)GOutput (Signal)GetTime ( [\WDay] | [\Hour] | [\Min] | [\Sec] ) IndInpos MecUnit AxisIndSpeed MecUnit Axis [\InSpeed] | [\ZeroSpeed] IsPers (DatObj)IsVar (DatObj)MirPos (Point MirPlane [\WObj] [\MirY]) NumToStr (Val Dec [\Exp])Offs (Point XOffset YOffset ZOffset)OrientZYX (ZAngle YAngle XAngle)ORobT (OrgPoint [\InPDisp] | [\InEOffs]) PoseInv (Pose)PoseMult (Pose1 Pose2)PoseVect (Pose Pos)Pow (Base Exponent) Present (OptPar) ReadBin (IODevice [\Time])ReadMotor [\MecUnit ]AxisReadNum (IODevice [\Time])ReadStr (IODevice [\Time])RelTool (Point Dx Dy Dz [\Rx] [\Ry] [\Rz])Round ( Val [\Dec])Sin (An gl e )Sqrt (Value)StrFind (Str ChPos Set [\NotInSet])StrLen (Str)StrMap ( Str FromMap ToMap)StrMatch (Str ChPos Pattern)StrMemb (Str ChPos Set)StrOrder ( Str1 Str2 Order)StrPart (Str ChPos Len)StrToByte (ConStr [\Hex] | [\Okt] | [\Bin] | [\Char]) StrToVal ( Str Val )Tan (Angle)TestDI (Signal)Trunc ( Val [\Dec] )ValToStr ( Val )。

ABB机器人程序指令全集

ABB机器人程序指令全集

ABB机器人程序指令全集一指令格式二指令及其参数Data := ValueAccSet Acc RampActUnit MecUnitAdd Name A ddValueBreakCallBy Var Name NumberClear NameClkReset ClockClkStart ClockClkStop ClockClose IODevice! CommentConfJ [\On] | [\Off]ConfL [\On] | [\Off]CONNECT Interrupt WITH Trap routineCorrCon DescrCorrDiscon DescrCorrWrite Descr DataCorrClearDeactUnit MecUnitDecr NameEOffsSet EaxOffs ErrWrite [ \W ] Header Reason[ \RL2] [ \RL3] [ \RL4]ExitExitCycleFOR Loop counter FROM S tart value TO End value [STEP Step value] DO ... ENDFORGOTO L abelGripLoad LoadIDelete InterruptIF Condition ...IF Condition THEN ...{ELSEIF Condition THEN ...}[ELSE ...]ENDIFIncr NameIndAMove MecUnit Axis [ \ToAbsPos ] | [ \ToAbsNum ]Speed[ \Ramp ]IndCMove MecUnit Axis Speed [ \Ramp ]IndDMove MecUnit Axis Delta Speed [ \Ramp ]IndReset MecUnit Axis [ \RefPos ] | [ \RefNum ] |[ \Short ] | [ \Fwd ] |[ \Bwd ] | [ \Old ]IndRMove MecUnit Axis [ \ToRelPos ] | [ \ToRelNum ] |[ \Short ] |[ \Fwd ] | [ \Bwd ] Speed [ \Ramp ]InvertDO SignalIODisable UnitName MaxTimeIOEnable UnitName MaxTimeISignalDI [ \Single ] Signal TriggValueInterruptISignalDO [ \Single ] Signal TriggValueInterruptISleep Interrupt ITimer [ \Single ] Time InterruptIVarValue VarNo Value, InterruptIWatch InterruptLabe l:MoveAbsJ [ \Conc ] ToJointPos Speed [ \V ] | [ \T ] Zone[ \Z]Tool[\WObj ]MoveC [ \Conc ] CirPoint ToPoint Speed [ \V ] | [ \T ] Zone [ \Z]Tool [\WObj ]MoveJ [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool[ \WObj ]MoveL [ \Conc ] ToPoint Speed [ \V ] | [ \T ] Zone [ \Z ] Tool[ \WObj ]Open Object [\File] IODevice [\Read] | [\Write] | [\Append] | [\Bin]PathResol ValuePDispOn [ \Rot ] [ \ExeP ] ProgPoint Tool [ \WObj ]PDispSet DispFramePulseDO [ \PLength ] SignalRAISE [ Error no ]Reset SignalRETURN [ Return value ]Rewind IODeviceSearchC [ \Stop ] | [ \PStop ] | [ \Sup ] Signal SearchPoint CirPointToPoint Speed [ \V ] | [ \T ] Tool [ \WObj ]SearchL [ \Stop ] | [ \PStop ] | [ \Sup ] Signal SearchPoint ToPointSpeed [ \V ] | [ \T ] Tool [ \WObj ]Set SignalSetAO Signal Value SetDO [ \SDelay ] Signal ValueSetGO Signal ValueSingArea [ \Wrist] | [ \Arm] | [ \Off]SoftAct Axis Softness [\Ramp ]Stop [ \NoRegain ]TEST Test data {CASE Test value {, Test valu e} : ...}[ DEFAULT: ...] ENDTESTTPReadFK Answer String FK1 FK2 FK3 FK4 FK5 [\MaxTime][\DIBreak] [\BreakFlag]TPReadNum Answer String [\MaxTime] [\DIBreak] [\BreakFlag] TPShow WindowTPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient]TriggC CirPoint ToPoint Speed [ \T ] Trigg_1 [ \T2 ][ \T3 ][ \T4]Zone Tool [ \WObj ]TriggInt TriggData Distance [ \Start ] | [ \Time ] InterruptTriggIO TriggData Distance [ \Start ] | [ \Time ] [ \DOp ] | [ \GOp ]|[\AOp ] SetValue [ \DODelay ] | [ \AORamp ]TriggJ ToPoint Speed [ \T ] Trigg_1 [ \T2 ] [ \T3] [ \T4]Zone Tool [ \WObj]TriggL ToPoint Speed [ \T ] Trigg_1 [ \T2] [ \T3] [ \T4]Zone Tool[ \WObj ]TuneServo MecUnit Axis TuneValueTuneServo MecUnit Axis TuneValue [\Type]UnLoad FilePath [\File]VelSet Override MaxWaitDI Signal Value [\MaxTime] [\TimeFlag]WaitDO Signal Value [\MaxTime] [\TimeFlag]WaitTime [\InPos] Time WaitUntil [\InPos] Cond [\MaxTime] [\TimeFlag]WHILE Condition DO ... ENDWHILEWrite IODevice String [\Num] | [\Bool] | [\Pos] |[\Orient][\NoNewLine]WriteBin IODevice Buffer NCharWriteStrBin IODevice StrWZBoxDef [\Inside] | [\Outside] Shape LowPoint HighPointWZCylDef [\Inside] | [\Outside] Shape CentrePoint RadiusWZDisable WorldZoneWZDOSet [\Temp] | [\Stat] WorldZone [\Inside] | [\Before] Signal SetValueWZEnable WorldZoneWZFree WorldZoneWZLimSup [\Temp] | [\Stat] WorldZone ShapeWZSphDef [\Inside] | [\Outside] Shape CentrePoint Radius 三函数及其参数Abs (Input)ACos (Value)AOutput (Signal)ArgName (Parameter)ASin (Value)ATan (Value)ATan2 (Y X)ByteToStr (ByteData [\Hex] | [\Okt] | [\Bin] | [\Char]) ClkRead (Clock) CorrReadCos (Angle)CPos ([Tool] [\WObj])CRobT ([Tool] [\WObj])DefDFrame (OldP1 OldP2 OldP3 NewP1 NewP2 NewP3) DefFrame (NewP1 NewP2 NewP3 [\Origin])Dim (ArrPar DimNo)DOutput (Signal)EulerZYX ([\X] | [\Y] | [\Z] Rotation)Exp (Exponent)GOutput (Signal)GetTime ( [\WDay] | [\Hour] | [\Min] | [\Sec] ) IndInpos MecUnit AxisIndSpeed MecUnit Axis [\InSpeed] | [\ZeroSpeed] IsPers (DatObj)IsVar (DatObj)MirPos (Point MirPlane [\WObj] [\MirY]) NumToStr (Val Dec [\Exp])Offs (Point XOffset YOffset ZOffset)OrientZYX (ZAngle YAngle XAngle)ORobT (OrgPoint [\InPDisp] | [\InEOffs]) PoseInv (Pose)PoseMult (Pose1 Pose2)PoseVect (Pose Pos)Pow (Base Exponent) Present (OptPar)ReadBin (IODevice [\Time])ReadMotor [\MecUnit ]AxisReadNum (IODevice [\Time])ReadStr (IODevice [\Time])RelTool (Point Dx Dy Dz [\Rx] [\Ry] [\Rz])Round ( Val [\Dec])Sin (An gl e )Sqrt (Value)StrFind (Str ChPos Set [\NotInSet])StrLen (Str)StrMap ( Str FromMap ToMap)StrMatch (Str ChPos Pattern)StrMemb (Str ChPos Set)StrOrder ( Str1 Str2 Order)StrPart (Str ChPos Len)StrToByte (ConStr [\Hex] | [\Okt] | [\Bin] | [\Char]) StrToVal ( Str Val )Tan (Angle)TestDI (Signal)Trunc ( Val [\Dec] )ValToStr ( Val )欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。

ABB机器人的程序数据要点

ABB机器人的程序数据要点

ABB机器人的程序数据要点1.程序指令:-ABB机器人的程序通常由基本指令组成,如移动、旋转、控制等。

- 移动指令包括直线移动(MoveL)、圆弧移动(MoveC)等,用于机器人的路径规划。

- 旋转指令包括旋转(Rotate)和朝向(Orient)等,控制机器人的朝向和姿态。

- 控制指令用于控制机器人的操作流程,如条件判断(If)、循环(Loop)等。

2.坐标系:- ABB机器人使用基于DH(Denavit-Hartenberg)参数的坐标系来描述机器人的位置和姿态。

- 坐标系由基点(Base)、工具(Tool)和用户定义的坐标系(Wobj)组成。

-基点是机器人的基准位置,工具是机器人的末端执行器,用户定义的坐标系用于特定任务或对象。

3.速度:-ABB机器人的速度指定机器人的运动速度,包括关节速度和末端速度。

- 关节速度(Speed)指定机器人各个关节的运动速度,单位为°/s或rad/s。

- 末端速度(Tool Speed)指定机器人末端执行器的运动速度,单位为mm/s。

4.路径规划:-路径规划是指机器人在执行任务时如何规划运动路径,以达到最佳效果。

-ABB机器人的路径规划通常使用直线插值和圆弧插值。

- 直线插值(Linear Interpolation)用于在直线路径上进行均匀的插值运动。

- 圆弧插值(Circular Interpolation)用于在圆弧路径上进行均匀的插值运动。

5.传感器数据:-ABB机器人可以与各种传感器进行连接,包括视觉传感器、力传感器等。

-视觉传感器可以用于机器人的视觉定位、目标检测等任务。

-力传感器可以用于机器人的力控制、物体抓取等任务。

-传感器数据可以通过机器人的IO接口进行读取和控制。

6.通信接口:-ABB机器人通常可以通过以太网、RS232等接口与外部设备进行通信。

-以太网接口用于机器人与上位控制系统、其他设备之间的数据交换。

-RS232接口用于机器人与外部设备之间的串行通信。

(完整版)ABB机器人的程序编程

(完整版)ABB机器人的程序编程

(完整版)ABB机器⼈的程序编程ABB[a]-J-6ABB 机器⼈的程序编程6.1 任务⽬标掌握常⽤的PAPID 程序指令。

掌握基本RAPID程序编写、调试、⾃动运⾏和保存模块。

6.2 任务描述◆建⽴程序模块test12.24,模块test12.24 下建⽴例⾏程序main 和Routine1,在main 程序下进⾏运动指令的基本操作练习。

◆掌握常⽤的RAPID 指令的使⽤⽅法。

◆建⽴⼀个可运⾏的基本RAPID程序,内容包括程序编写、调试、⾃动运⾏和保存模块。

6.3 知识储备6.3.1 程序模块与例⾏程序RAPID 程序中包含了⼀连串控制机器⼈的指令,执⾏这些指令可以实现对机器⼈的控制操作。

应⽤程序是使⽤称为RAPID 编程语⾔的特定词汇和语法编写⽽成的。

RAPID 是⼀种英⽂编程语⾔,所包含的指令可以移动机器⼈、设置输出、读取输⼊,还能实现决策、重复其他指令、构造程序、与系统操作员交流等功能。

RAPID 程序的基本架构如图所⽰:RAPID 程序的架构说明:1)RAPID 程序是由程序模块与系统模块组成。

⼀般地,只通过新建程序模块来构建机器⼈的程序,⽽系统模块多⽤于系统⽅⾯的控制。

2)可以根据不同的⽤途创建多个程序模块,如专门⽤于主控制的程序模块,⽤于位置计算的程序模块,⽤于存放数据的程序模块,这样便于归类管理不同⽤途的例⾏程序与数据。

3)每⼀个程序模块包含了程序数据、例⾏程序、中断程序和功能四种对象,但不⼀定在⼀个模块中都有这四种对象,程序模块之间的数据、例⾏程序、中断程序和功能是可以互相调⽤的。

4)在RAPID 程序中,只有⼀个主程序main,并且存在于任意⼀个程序模块中,并且是作为整个RAPID 程序执⾏的起点。

操作步骤:6.3.2 在⽰教器上进⾏指令编程的基本操作ABB 机器⼈的RAPID 编程提供了丰富的指令来完成各种简单与复杂的应⽤。

下⾯就从最常⽤的指令开始学习RAPID 编程,领略RAPID 丰富的指令集提供的编程便利性。

ABB程序介绍

ABB程序介绍
2、菜单键Edit:
1、 Cut:剪切,可能会丢失指令或数据。
2 、Copy :复制。
3 、Paste :粘贴,将剪切或复制的指令或数据粘贴到相应位置。
4、 GotoTop:将光标移至顶端。
5、 GotoBottom :将光标移至底端。
6 、Mark :定义一块,涂黑部分。
·zone指机器人TCP不达到目标点,连续运行时,机器人动作圆滑、流畅。
·Base模块中已经定义的转弯区尺寸最小为z1,最大为z200。
·尽量使用较大的转弯区尺寸。
(3)参变量:
光标指在当前指令时,按功能键OptArg,可选择参变量。
·[\Conc](switch)
协作运动。机器人未移动至目标点,已经开始执行下一个指令。
二、编程窗口:
1、菜单键File:
1、 Open:打开一个现有文件。(程序.prg或模块.mod)
2、 New:新建一个程序。
3 、Saveprogram :存储更改后的现有程序。
4 、Saveprogramas:存储一个新程序。
5 、Print: 打印程序,现已经不使用。
一、程序储存器(Programmemory)的组成:
应用程序(Program)
系统模块(Systemmodules)
机器人程序储存器中,只允许存在一个主程序;所有例行程序与数据无论存在于哪个模块,全部被系统共享;所有例行程序与数据除特殊定义外,名称必须是唯一的。
1、应用程序(Program)的组成:
FK5:功能键5显示的字符串。(string)
在示教器显示屏上显示字符串数据,在功能键上显示相应字符串,选择按相应的功能键,机器人自动给数字变量赋于相应数值1-5。

ABB机器人编程程序解析汇报

ABB机器人编程程序解析汇报

ABB机器人编程1程序解析:1、此程序是典型的ABB机器人官方编程思路与方法,分为主程序,初始化例行程序和轨迹程序2、思路清晰,结构编排明确,方便使用者阅读。

%%%VERSION"LANGUAGE:ENGLISH%%%MODULE Mai nM odulePERS tooldata tGripper:=[TRUE,[[0,0,100],[1,0,0,0]],[25,[0,0,10],[1,0,0,0],0,0,0]];PERS wobjdata WobBox:=[FALSE,TRUE,"",[[1,1,1],[0,0,0,0]],[[0,0,0],[1,0,0,0]]];CONST robtargetpPoi ntA:=[[1,1,1],[1,1,1,1],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetpPoi ntB:=[[1,1,1],[1,1,1,1],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPHome:=[[1,1,1],[1,1,1,1],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERS loaddata load_Empty:=[1,[0,0,0],[1,0,0,0],0,0,0];PERS loaddata load_Box:=[20,[0,0,0],[1,0,0,0],0,0,0]; 以上是固定的数据存放位置。

PROC main() 主程序,是一个程序的开始rIn itial;Accset 60,60; 此部分其实可放入到rlni tial中去,这样管理起来更方便velset 100,100; 此部分其实可放入到rln itial中去,这样管理起来更方便WHILE TRUE DOrBox; 在此指令后插入0.3秒的等待指令,防止CPU过负荷的情况岀现。

ABB机器人程序

ABB机器人程序

ABB机器人程序MODULE Vanta_palletVAR intnum intno1:=0;CONST robtargetpHome40:=[[,,],[,,,],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetpmid:=[[,,],[,,,],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09 ,9E+09]];CONST robtargetpmid10:=[[,,],[,,,],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetpmid20:=[[,,],[,,,],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetpmid30:=[[,,],[,,,],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetpWait12:=[[,,],[,,,],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E +09,9E+09]];CONST robtargetpWait22:=[[,,],[,,,],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetpWait13:=[[,,],[,,,],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetpttt100:=[[,,],[,,,],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetpPrePlace11:=[[,,],[,,,],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+ 09,9E+09,9E+09]];CONST robtargetp11:=[[,,],[,,,],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09 ,9E+09]];CONST robtargetp21:=[[,,],[,,,],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09 ,9E+09]];CONST robtargetp31:=[[,,],[,,,],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09 ,9E+09]];CONST robtargetpWait10:=[[,,],[,,,],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E +09,9E+09]];CONST robtargetpWait14:=[[,,],[,,,],[0,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E +09,9E+09]];CONST robtargetpWait20:=[[,,],[,,,],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E +09,9E+09]];CONST robtargetpWait21:=[[,,],[,,,],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E +09,9E+09]];CONST robtargetpWait30:=[[,,],[,,,],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E +09,9E+09]];CONST robtargetpWait31:=[[,,],[,,,],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtargetpWait32:=[[,,],[,,,],[-2,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetwait10:=[[,,],[,,,],[0,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetwait11:=[[,,],[,,,],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetwait20:=[[,,],[,,,],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetwait21:=[[,,],[,,,],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetwait30:=[[,,],[,,,],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetwait31:=[[,,],[,,,],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];CONST robtargetwait23:=[[,,],[,,,],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+ 09,9E+09]];VAR num speed1:=30;CONST robtargetpWait15:=[[,,],[,,,],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E +09,9E+09]];PROC Main()SpeedRefresh 40;MotionSup\On\TuneValue:=250;VelSet 30, 1500;rInitAll;AccSet 40, 40;TPReadNum count1, "place1 num is ";TPReadNum count2, "place2 num is ";TPReadNum count3, "place3 num is ";rEjectPal;WaitUntil di04_RqPick1 = 0 OR di06_p2 = 1 OR di05_p1 = 1; IF di04_RqPick1 = 0 THENMoveJ wait10, vMaxEmpty, z15, tGripper;ELSEIF di05_p1 = 1 THENMoveJ wait20, vMaxEmpty, z15, tGripper;ELSEIF di06_p2 = 1 THENMoveJ wait30, vMaxEmpty, z15, tGripper;ENDIFWHILE TRUE DOClkReset clock1;ClkStart clock1;!IF bLoadOnGriper = FALSE THENrPickPart;!ENDIF!IF bLoadOnGriper = TRUE THEN!rPlacePart;!ENDIFClkStop clock1;TPWrite "CT "\Num:=ClkRead(clock1);!Stop;ENDWHILEENDPROCPROC rInitAll()rMoveHome;ClampOpen;ClkStop Timer;ClkReset Timer;ConfJ\off;ConfL\off;nInput:=0;!ncodenPassword:=0;nCycleTime:=0;VelSet 90,5000;AccSet 90,90;ENDPROCPROC rEjectPal()IF count1 >= 9 THENcount1:= 0;PulseDO\PLength:=, do06_FullPallet1; ENDIFIF count2 >= 9 THENcount2:=0;PulseDO\PLength:=, do05_RdyPick2; ENDIFIF count3 >= 9 THENcount3:=0;PulseDO\PLength:=, do04_RdyPick1; ENDIFENDPROCPROC rPickPart()WaitUntil di05_p1 = 1 OR di06_p2 = 1 OR di04_RqPick1 = 0; IF di04_RqPick1 = 0 THENrPickPart1;ELSEIF di05_p1 = 1 THENrPickPart2;ELSEIF di06_p2 = 1 THENrPickPart3;ENDIFENDPROCPROC rPickPart1()MoveJ pWait1, vMidEmpty, z15, tGripper\WObj:=WPick_1;MoveJ Offs(pPick1_1,0,0,0), vMidEmpty, z15,tGripper\WObj:=WPick_1;WaitTime 2;ClampClose;WaitTime 2;ConfL\Off;MoveL Offs(pPick1_1,0,100 - 200,nBoxH1 * , vMidLoad, fine, tGripper\WObj:=WPick_1;GripLoad LoadBox;!WaitTime ;GripLoad LoadBox;MoveL Offs(pPick1_1,200 - 1200,-368,500), vMaxLoad, z50, tGripper\WObj:=WPick_1;bLoadOnGriper := TRUE;COU1;IF jiou = 0 THENrPlace1;ELSEIF jiou = 1 THENrPlace3;ENDIFENDPROCPROC rPickPart2()MoveJ pWait2, vMidEmpty, z20, tGripper\WObj:=WPick_2; Wait;MoveL Offs(pPick2_1,0,0,0), vMidEmpty, z10,tGripper\WObj:=WPick_2;WaitTime 2;ClampClose;WaitTime 2;ConfL\Off;MoveL Offs(pPick2_1,0,0,nBoxH1 * 2), vMidLoad, z10, tGripper\WObj:=WPick_2;GripLoad LoadBox;MoveL Offs(pPick2_1,-500,-1500,600), vMaxLoad, z10, tGripper\WObj:=WPick_2;bLoadOnGriper := TRUE;COU2;rPlace2;ENDPROCPROC rPickPart3()MoveJ pWait3, vMidEmpty, z50, tGripper\WObj:=WPick_3; Wait;MoveL Offs(pPick3_1,0,0,0), vMidEmpty, z50,tGripper\WObj:=WPick_3;WaitTime 2;ClampClose;WaitTime 2;ConfL\Off;ConfJ\Off;MoveL Offs(pPick3_1,0,0,-nBoxH1 * 3), vMidEmpty, z15, tGripper\WObj:=WPick_3;MoveJ Offs(pPick3_1,-900,-1800,-600), vMaxLoad, z100, tGripper\WObj:=WPick_3;bLoadOnGriper := TRUE;COU3;rPlace3;ENDPROCPROC Wait()WaitDI di11_Clamp_close, 1;WaitDI di16_up, 0;ENDPROCPROC GripperOpen()Set do15;Set do16;ENDPROCPROC GripperClose()Reset do12;Reset do15;Reset do14_GripperDown;Reset do09;Set do11_GripperClose;Set do08;Set do13;Set do07;PulseDO\PLength:=, do07;ENDPROCPROC GripperDown()Reset do07;ENDPROCPROC GripperUp()Reset do12;!DIWait di07_GripperUp, 1, 3, "Cylinder GripperUp", "Upside sensor-> 1";ENDPROCPROC ClampOpen()Reset do12;Reset do07;Reset do13;Reset do09;Set do11_GripperClose;Set do08;ENDPROCPROC ClampOpen1()Reset do12;Reset do13;Set do11_GripperClose;ENDPROCPROC ClampOpen2()Reset do07;Reset do09;Set do08;ENDPROCPROC ClampClose()Set do12;Set do13;WaitTime 1;Reset do15;Reset do16;ENDPROCPROC rMoveHome()VAR string HomeOffset; CONST num MinX:=-50; CONST num MaxX:=50;CONST num MinY:=-50; CONST num MaxY:=50;CONST num MinZ:=-50; CONST num MaxZ:=50;VelSet 100,500;IF bCurrentPos(pHome,tGripper)=FALSE THEN! If no known position is found, check if the robot is in a specified! window and move him to the first position in the program ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);IF OR OR OR OR OR THENHomeOffset:="";IF THENHomeOffset:=HomeOffset+"X :"+NumToStr" ";ELSEIF THENHomeOffset:=HomeOffset+"X :"+NumToStr" ";ELSEHomeOffset:=HomeOffset+"X : OK ";ENDIFIF THENHomeOffset:=HomeOffset+"Y :"+NumToStr" ";ELSEIF THENHomeOffset:=HomeOffset+"Y :"+NumToStr" ";ELSEHomeOffset:=HomeOffset+"Y : OK ";ENDIFIF THENHomeOffset:=HomeOffset+"Z :"+NumToStr" ";ELSEIF THENHomeOffset:=HomeOffset+"Z :"+NumToStr" ";ELSEHomeOffset:=HomeOffset+"Z : OK ";ENDIF!ErrWrite HomeOffset,"Move robot manually near homeposition";pPre_Home:=CRobT(\Tool:=tGripper\WObj:=wobj0);:=;:=;MoveJ PTo_home,v500,z10,tGripper;!MoveJDO pHome, v500, z10, tGripper, do02_RobHomePos, 1;MoveJ pHome, v500, z10, tGripper;ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);ENDIFENDIFMoveJ pHome,v500,fine,tGripper;Reset do12;Reset do13;Set do15;Set do16;!MoveJDO pHome, v500, fine, tGripper, do02_RobHomePos, 1; !Set do02_RobHomePos;!Reset do02_RobHomePos;ENDPROCPROC rPlacePart()WaitUntil di08_b1 = 1 OR di09_b2 = 1 or di10_b3 = 1; IF GIPlaceNum = 1 THENrPlacePal1;rPlace1;ELSEIF GIPlaceNum = 2 THENrPlacePal2;rPlace2;ELSEIF GIPlaceNum = 3 THENrPlacePal3;rPlace3;ELSEMoveJ pHome,v200,fine,tGripper; ENDIFENDPROCPROC COU1()count3:=count3+1;dec3:=count3-1;Flool1:=dec3 div 4;jiou:=Flool1 mod 2;IF jiou = 0 THENbaishu3:=dec3 mod 4;ENDIFIF jiou = 1 THENxef1:=dec3 mod 4;baishu3 := jiou * 3 - xef1;ENDIFENDPROCPROC COU2()count2:=count2+1;dec2:=count2-1;Floom1:=dec2 div 3;baishu2:=dec2 mod 3;jiou2:=Floom1 mod 2;ENDPROCPROC COU3()count1:=count1+1;dec1:=count1-1;Floob1:=dec1 div 3;baishu1:=dec1 mod 3;jiou3:=Floob1 mod 2;ENDPROCPROC rPlace1()ConfJ\Off;ConfL\Off;!MoveJ pWait22, v1000, z20, tGripper\WObj:=wPal1;WaitUntil di07_p3 = 0;IF baishu3 = 3 THENMoveJ Offs(pWait117,0,jiou * (0 - 800),nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait117,0,jiou * (0 - 800),nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait117,0,jiou * (0 - 800),nBoxH1 * Flool1 + 80), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 1;GripperOpen;WaitTime 1;MoveJ Offs(pWait117,0,jiou * (0 - 800),nBoxH1 * Flool1), vMaxLoad, fine, tGripper\WObj:=wPal1;WaitTime ;ClampOpen;WaitTime 2;WaitTime ;MoveJ Offs(pWait117,0,jiou * (0 - 800),nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait117,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ELSEIF baishu3 = 2 THENMoveJ Offs(pWait116,0,jiou * (0 - 500),nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait116,0,jiou * (0 - 500),nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait116,0,jiou * (0 - 500),nBoxH1 * Flool1 + 60), vMaxLoad, z20, tGripper\WObj:=wPal1;GripperOpen;WaitTime 2;MoveJ Offs(pWait116,0,jiou * (0 - 500),nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 2;ClampOpen;WaitTime ;MoveJ Offs(pWait116,0,jiou * (0 - 500),nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait116,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ELSEIF baishu3 = 0 THENMoveJ Offs(pWait13,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait13,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 80), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 1;Set do15;WaitTime 1;MoveJ Offs(pWait13,0,jiou * (0 + 1000),nBoxH1 * Flool1),vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 2;Reset do13;WaitTime ;MoveJ Offs(pWait13,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 300), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait14,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 300), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait14,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 80), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 1;Set do16;WaitTime 1;MoveJ Offs(pWait14,jiou * (0 - 300),jiou * (0 + 1000),nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1; WaitTime 2;Reset do12;WaitTime ;MoveJ Offs(pWait14,jiou * (0 - 300),jiou * (0 + 1000),nBoxH1 * Flool1 + 500), vMaxLoad, z20,tGripper\WObj:=wPal1;MoveJ Offs(pWait14,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ELSEIF baishu3 = 1 THENMoveJ Offs(pWait15,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait15,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 80), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 1;Set do16;Set do15;WaitTime 1;MoveJ Offs(pWait15,0,jiou * (0 + 1000),nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 2;Reset do12;Reset do13;WaitTime ;MoveJ Offs(pWait15,0,jiou * (0 + 1000),nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait15,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ENDIFGripLoad LoadEmpty;bLoadOnGriper := FALSE;IF count3 <= 16 GOTO C1;count3:= 0;PulseDO\PLength:=, do04_RdyPick1;C1:WaitUntil di04_RqPick1 = 1 OR di05_p1 = 1 OR di06_p2 = 0;IF di04_RqPick1 = 0 THENMoveJ wait10,vMaxEmpty,z20,tGripper;ELSEIF di05_p1 = 1 THEN!MoveJ wait21,v3000,z40,tGripper;MoveJ wait20,vMaxEmpty,z10,tGripper;ELSEIF di06_p2 = 1 THENMoveJ wait30,vMaxEmpty,z20,tGripper;MoveJ wait30,vMidEmpty,z10,tGripper;ENDIFENDPROCPROC rPlace2()ConfL\Off;ConfJ\Off;WaitUntil di08_b1 = 1;IF baishu2=0 THENMoveJ Offs(pWait21,0,0,-nBoxH1 * Floom1 - 200), vMaxLoad, z20, tGripper\WObj:=wPal2;MoveJ Offs(pWait21,0,0,-nBoxH1 * Floom1), vMaxLoad, z20, tGripper\WObj:=wPal2;WaitTime 2;ClampOpen;WaitTime ;MoveJ Offs(pWait21,0,0,-nBoxH1 * Floom1 - 1000), vMaxLoad, z20, tGripper\WObj:=wPal2;ELSEIF baishu2=1 THENMoveJ Offs(pWait22,0,0,nBoxH1 * Floom1 ), vMaxLoad, z20, tGripper\WObj:=wpal21;WaitTime 2;ClampOpen;WaitTime ;MoveJ Offs(pWait22,0,0,nBoxH1 * Floom1 + 1000), vMaxLoad, z20, tGripper\WObj:=wpal21;ELSEIF baishu2=2 THENMoveJ Offs(pWait23,0,0,-nBoxH1 * Floom1 - 200), vMaxLoad,z20, tGripper\WObj:=wpal22;MoveJ Offs(pWait23,0,0,-nBoxH1 * Floom1 ), vMaxLoad, z20, tGripper\WObj:=wpal22;WaitTime 2;ClampOpen1;WaitTime ;MoveJ Offs(pWait23,0,0,-nBoxH1 * Floom1 - 200), vMaxLoad, z20, tGripper\WObj:=wpal22;MoveJ Offs(pWait24,0,0,nBoxH1 * Floom1 + 200), vMaxLoad, z20, tGripper\WObj:=wpal23;MoveJ Offs(pWait24,0,0,nBoxH1 * Floom1 ), vMaxLoad, z20, tGripper\WObj:=wpal23;WaitTime 2;ClampOpen2;WaitTime ;MoveJ Offs(pWait24,0,0,nBoxH1 * Floom1 + 1000), vMaxLoad, z20, tGripper\WObj:=wpal23;ENDIFGripLoad LoadEmpty;bLoadOnGriper := FALSE;IF count2<24 GOTO C2;count2:=0;PulseDO\PLength:=, do05_RdyPick2;C2:WaitUntil di04_RqPick1 = 1 OR di06_p2 = 0 OR di05_p1 = 1; IF di04_RqPick1 = 1 THEN!MoveJ wait10 ,v3000,z30,tGripper;MoveJ wait10 ,vMaxEmpty,z20,tGripper;ELSEIF di05_p1 = 1 THENMoveJ wait20, vMaxEmpty, z30, tGripper;ELSEIF di06_p2 = 0 THENMoveJ wait30,vMaxEmpty,z30,tGripper;!MoveJ wait30,v3000,z30,tGripper;ENDIFENDPROCPROC rPlace3()ConfL\Off;WaitUntil di07_p3 = 0;IF baishu3 = 1 THENMoveJ Offs(pWait11,0,0,nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait11,0,0,nBoxH1 * Flool1 + 80), vMaxLoad, z20, tGripper\WObj:=wPal1;GripperOpen;WaitTime 1;MoveJ Offs(pWait11,0,0,nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime ;ClampOpen;WaitTime 2;WaitTime ;MoveJ Offs(pWait11,0,0,nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait11,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ELSEIF baishu3 = 0 THENMoveJ Offs(pWait12,0,0,nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;z20, tGripper\WObj:=wPal1;GripperOpen;WaitTime 2;MoveJ Offs(pWait12,0,0,nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 2;ClampOpen;WaitTime ;MoveJ Offs(pWait12,0,0,nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait12,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ELSEIF baishu3 = 3 THENMoveJ Offs(pWait118,0,0,nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait118,0,0,nBoxH1 * Flool1 + 80), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 1;Set do15;WaitTime 1;MoveJ Offs(pWait118,0,0,nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 2;Reset do13;WaitTime ;MoveJ Offs(pWait118,0,0,nBoxH1 * Flool1 + 300), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait119,0,0,nBoxH1 * Flool1 + 300), vMaxLoad, z20, tGripper\WObj:=wPal1;z20, tGripper\WObj:=wPal1;WaitTime 1;Set do16;WaitTime 1;MoveJ Offs(pWait119,0,0,nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 2;Reset do12;WaitTime ;MoveJ Offs(pWait119,0,0,nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait119,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ELSEIF baishu3 = 2 THENMoveJ Offs(pWait200,0,0,nBoxH1 * Flool1 + 200), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait200,0,0,nBoxH1 * Flool1 + 80), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 1;Set do16;Set do15;WaitTime 1;MoveJ Offs(pWait200,0,0,nBoxH1 * Flool1), vMaxLoad, z20, tGripper\WObj:=wPal1;WaitTime 2;Reset do12;Reset do13;WaitTime ;MoveJ Offs(pWait200,0,0,nBoxH1 * Flool1 + 500), vMaxLoad, z20, tGripper\WObj:=wPal1;MoveJ Offs(pWait200,0,0,1500), vMaxLoad, z20,tGripper\WObj:=wPal1;ENDIFGripLoad LoadEmpty;bLoadOnGriper := FALSE;IF count3 <= 15 GOTO C1;count3:= 0;PulseDO\PLength:=, do04_RdyPick1;C1:WaitUntil di04_RqPick1 = 1 OR di05_p1 = 1 OR di06_p2 = 0; IF di04_RqPick1 = 0 THENMoveJ wait10,vMaxEmpty,z20,tGripper;ELSEIF di05_p1 = 1 THEN!MoveJ wait21,v3000,z40,tGripper;MoveJ wait20,vMaxEmpty,z10,tGripper;ELSEIF di06_p2 = 1 THENMoveJ wait30,vMaxEmpty,z20,tGripper;MoveJ wait30,vMidEmpty,z10,tGripper;ENDIFENDPROCTRAP trCLAMPTPErase;ErrWrite "Clamp close abnormal.", "Check the clamp status!";EXIT;ENDTRAPPROC rCheckClamp()IDelete intno1;CONNECT intno1 WITH trCLAMP;ISignalDI\Single, di11_Clamp_close, low, intno1;ENDPROCPROC rHome()IF bCurrentPos(pHome,tGripper)= True THENMoveJ pHome,v200,fine,tGripper;ELSE!ErrWrite HomeOffset,"Move robot manually near homeposition";TPWrite "Move Robot go home manually";Stop;EXIT;ENDIFENDPROCPROC Routine1()!MoveL pttt100, v100, z50, tGripper\WObj:=wobj0;rPlacePal2;rPlace2;ENDPROCENDMODULE。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ABB[a]-J-5ABB 机器人的程序数据
5.1 任务目标
掌握程序数据的建立方法。

掌握三个关键程序数据的设定。

了解机器人工具自动识别功能。

5.2 任务描述
◆以bool 为例,建立程序数据,练习建立num、robtarget 程序数据。

◆设定机器人的工具数据tooldata、工件坐标wobjdata、负荷数据loaddata。

◆使用LoadIdentify 工具自动识别安装在六轴法兰盘上的工具(tooldata)和载荷(loaddata)的重量,以
及重心。

5.3 知识储备
5.3.1 程序数据
程序数据是在程序模块或系统模块中设定的值和定义的一些环境数据。

创建的程序数据由同一个模块或其他模块中的指令进行引用。

图中是一条常用的机器人关节运动的指令MoveJ,调用了四个程序数据。

图中所使用的程序数据的说明见表:
5.3.2 程序数据的类型与分类
1.程序数据的类型分类
ABB 机器人的程序数据共有76 个,并且可以根据实际情况进行程序数据的创建,为ABB 机器人的程序设计带来了无限可能性。

在示教器的“程序数据”窗口可查看和创建所需要的程序数据。

2.程序数据的存储类型
(1)变量VAR
变量型数据在程序执行的过程中和停止时,会保持当前的值。

但如果程序指针被移到主程序后,数值会丢失。

举例说明:
VAR num length:=0;名称为length 的数字数据
VAR string name:=”Jo hn”;名称为name 的字符数据
VAR bool finish:=FALSE;名称为finish 的布尔量数据
在程序编辑窗口中的显示如图:
在机器人执行的RAPID 程序中也可以对变量存储类型程序数据进行赋值的操作,如图:
*注意:VAR 表示存储类型为变量
num 表示程序数据类型
*提示:在定义数据时,可以定义变量数据的初始值。

如length 的初始值为0,name 的初始值为John,finish 的初始值为FALSE。

*注意:在程序中执行变量型数据的赋值,在指针复位后将恢复为初始值。

(2)可变量PERS 可变量最大的特点是,无论程序的指针如何,都会保持最
后赋予的值。

举例说明:
PERS num nbr:=1;名称为nbr 的数字数据
PERS string test:=”Hello”;名称为test 的字符数据
在机器人执行的RAPID 程序中也可以对可变量存储类型程序数据进行赋值的操作。

在程序执行以后,赋值的结果会一直保持,直到对其进行重新赋值。

*注意:PERS 表示存储类型为可变量
(3)常量CONST 常量的特点是在定义时已赋予了数值,并不能在程序中进行修改,除非手动修改。

举例说明:
CONST num gravity:=9.81;名称为gravity 的数字数据
CONST string greating:=”H ello”;名称为greating 的字符数据
*注意:存储类型为常量的程序数据,不允许在程序中进行赋值的操作。

三种数据的存储类型在编辑界面的显示如下:
3.常用的程序数据
根据不同的数据用途,定义了不同的程序数据,下表是机器人系统中常用的程序数据:
*提示:系统中还有针对一些特殊功能的程序数据,在对应的功能说明书中会有相应的详细介绍,请查看随机光盘电子版说明书。

也可以根据需要新建程序数据类型。

5.4 任务实施
5.4.1 建立程序数据
程序数据的建立一般可以分为两种形式,一种是直接在示教器中的程序数据画面中建立程序数据;另
一种是在建立程序指令时,同时自动生成对应的程序数据。

本节将介绍直接在示教器的程序数据画面中建立程序数据的方法。

下面以建立布尔数据为例子进行说明,练习时建立num 和robtarget 程序数据。

建立bool 数据的操作步骤:
5.4.2 三个关键的程序数据的设定
在进行正式的编程之前,就需要构建起必要的编程环境,其中有三个必须的程序数据(工具数据tooldata、工件坐标wobjdata、负荷数据loaddata)就需要在编程前进行定义。

1.工具数据tooldata
工具数据tooldata 用于描述安装在机器人第六轴上的工具的TCP、质量、重心等参数数据。

一般不同的机器人应用配置不同的工具,比如说弧焊的机器人就使用弧焊枪作为工具,而用于搬运板
材的机器人就会使用吸盘式的夹具作为工具。

默认工具(tool0)的工具中心点(Tool Center Point)位于机器人安装法兰盘的中心。

图中A 点就是原始的TCP 点。

TCP 的设定原理如下:
1)首先在机器人工作范围内找一个非常精确的固定点作为参考点。

2)然后在工具上确定一个参考点(最好是工具的中心点)。

3)用之前介绍的手动操纵机器人的方法,去移动工具上的参考点,以四种以上不同的机器人姿态尽可能与固定点刚好碰上。

为了获得更准确的TCP,在以下例子中使用六点法进行操作,第四点是用工具的参考点垂直于固定点,第五点是工具参考点从固定点向将要设定为TCP 的X 方向移动,第六点是工具参考点从固定点向将要设定为TCP 的Z 方向移动。

4)机器人通过这四个位置点的位置数据计算求得TCP 的数据,然后TCP 的数据就保存在tooldata 这个程序数据中被程序进行调用。

*提示:执行程序时,机器人将TCP 移至编程位置。

这意味着,如果要更改工具以及工具坐标系,机器人的移动将随之更改,以便新的TCP 到达目标。

所有机器人在手腕处都有一个预定义工具坐标系,该坐标系被称为tool0。

这样就能将一个或多个新工具坐标系定义为tool0 的偏移值。

*注意:TCP 取点数量的区别:
4 点法,不改变tool0 的坐标方向
5 点法,改变tool0 的Z 方向
6 点法,改变tool0 的X 和Z 方向(在焊接应用最为常用)。


三个点的姿态相差尽量大些,这样有利于TCP 精度的提高。

操作步骤:
如果使用搬运的夹具,一般工具数据的设定方法如下:
图中,搬运薄板的真空吸盘夹具为例,质量是25kg,重心在默认tool0 的Z 的正方向偏移250mm,TCP 点设定在吸盘的接触面上,从默认tool0 上的Z 方向偏移了300mm。

在示教器上设定如下:
1.
在“手动操纵”界面,选择“工具坐 标”。

2.
单击“新建”。

2.工件坐标wobjdata
工件坐标对应工件,它定义工件相对于大地坐标(或其他坐标)的位置。

机器人可以拥有若干工件坐
标系,或者表示不同工件,或者表示同一工件在不同位置的若干副本。

建立工件坐标的操作步骤:
3.有效载荷 loaddata
15. 设 定 手 动 操 纵 画 面 项
目,使用线性动作模式, 体 验 新 建 立 的 工 件 坐 标。

对于搬运应用的机器人,应该正确设定夹具的质量、重心 tooldata
以及搬运对象的质量和重心数据
loaddata 。

操作步骤:
1. “手动操纵”界面,选择“有效载
荷”。

在RAPID 编程中,需要对有效载荷的情况进行实时的调整:
Set do1;夹具夹紧
GripLoad load1;指定当前搬运对象的质量和重心load1
……
Reset do1;夹具松开
GripLoad load0;将搬运对象清除为load0
5.5 知识链接
5.5.1 复杂程序数据赋值
在RAPID 程序数据中,有一些结构较为复杂的程序数据,如robtarget 程序数据,即MoveJ 指令中的p10 数据:
如上图所示,在光盘的此文档中可以找到RAPID 程序中所有程序数据、功能、指令的详细介绍。

文档中此数据是由一串数字组成(包括笛卡尔坐标xyz、q1-4、轴角度等)
以此数据为例,介绍复杂数据的赋值操作。

首先查看此数据的架构:
以修改trans of pos 中的x 为例。

操作步骤:
1. 首先确定程序数据的类型为可变量
2. 打开程序编辑器进入例行程序添加赋值指
令“p10.trans.x:=400”(即将p10 的
trans 下的x 的值更改为400)。

5.5.2 工具自动识别程序
介绍工具自动识别(LoadID)功能。

LoadIdentify 是ABB 机器人开发的用于自动识别安装在六轴法兰盘上的工具(tooldata)和载荷(loaddata)的重量,以及重心。

(前面介绍到,设置tooldata 和loaddata 是自己测量工具的重量和重心,然后填写参数进行设置,但是这样会有一定的不准确性)
手持工具的应用中,应使用LoadIdentify 识别工具的重量和重心。

手持夹具
的应用中,应使用LoadIdentity 识别夹具和搬运对象的重量和重心。

操作步
骤:
10. 进行慢速测试。

相关文档
最新文档