ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

ABB机器人系统选项解析:从Advanced RAPID到绝对精度

ABB机器人系统选项解析:从Advanced RAPID到绝对精度 简介这是一份面向ABB机器人系统集成工程师、调试与维护人员的PDF文档系统梳理ABB机器人系统各选项的功能定位与使用方法涵盖RobotWare操作系统、Advanced RAPID高级编程语言、位功能、数据搜索、别名I/O信号、配置与断电功能等核心知识点适合需要全面了解或选配ABB机器人功能的读者。全文为单个PDF文件容量约3.96MB下载后可离线查阅。目前已有3606人学习下载内容受到实际工程读者关注。文档基于RobotWare 6.05及IRC5控制器体系编写并对应用手册、控制器软件、Workspace开发环境、Skribenta文档工具等配套模块作了系统说明帮助读者快速厘清各系统选项之间的关系为后续的机器人编程、I/O配置与功能调试提供参考。1. 从RobotWare-OS看ABB系统选项一份手册能拆出什么ABB的IRC5控制器在RobotWare 6.05时代就已经把“系统选项”做成了模块化授权而不是一堆零散的补丁。这份手册覆盖了从Advanced RAPID编程增强到Absolute Accuracy运动补偿的几乎全部可选功能适合做集成方案选型、产线故障排查和维护保养的工程师。单纯看目录会觉得是罗列选项但实际拆解后你会发现每个选项背后都有一套RAPID组件与系统参数的联动机制理解了这套机制拿到任何新机器人工作站都能快速定位功能边界。比如Advanced RAPID里的位功能和数据搜索表面是语言特性底层却是数据模型的扩展再比如Electronically Linked Motors不是简单地把两台电机接在一起而是通过服务程序管理从动轴的校准与扭矩微调。所以这份资源的价值不在“知道有哪些选项”而在于把这些选项的配置入口、RAPID调用方式和调试思路串起来。2. Advanced RAPID高级编程功能的设计逻辑与落地2.1 位功能Bit Functions与数据搜索先理解RAPID的数据模型2.1.1 位功能的RAPID组件位功能是Advanced RAPID里最容易被低估的能力。它允许你在bool变量上按位操作而不是每次用一整个bool数组去表达多个状态。常见使用场景是把多个传感器状态打包进一个字节通过Modbus或TCP发给上位机或者从PLC来的一个字里拆出不同的含义。ABB在RAPID中提供了BitSet、BitClear、BitCheck、BitChange等指令配合系统的位类型变量使用。注意这里的“位”不是单独的bit数据类型而是对bool变量内部二进制位的操作所以声明时仍然用VAR bool只是通过位指令访问它的每一位。VAR bool bFlags; VAR num nResult; PROC BitExample() BitClear bFlags, 0; ! 初始状态清零第0位 BitSet bFlags, 0; ! 置位第0位 BitSet bFlags, 3; ! 置位第3位 IF BitCheck(bFlags, 0) THEN nResult : BitToNum(bFlags); ! 把bool按位转换为num ENDIF ENDPROC逻辑说明BitClear和BitSet分别对指定位置零和置一BitCheck返回该位的bool值。BitToNum可以把bool表示的位模式转成整数方便CRC校验或协议打包。参数里第一个参数是bool变量第二个是位下标范围取决于系统定义通常是0-7或0-31。实际使用中我一般先BitClear整个变量清空再逐位赋值避免历史脏数据。常见的位操作指令如下表所示方便快速查阅参数顺序指令作用参数格式BitSet将指定位设为1(boolVar, bitIndex)BitClear将指定位清0(boolVar, bitIndex)BitCheck读取指定位置的bool值(boolVar, bitIndex)BitToNum将bool位模式转为num(boolVar)BitNum将num的指定位拷贝到bool变量(boolVar, num)注意BitNum这个指令的语义是从num里取出某一位写入bool方向与BitToNum相反别搞混。2.1.2 数据搜索功能的RAPID用法数据搜索功能解决的是“运行时通过名字找数据”的问题。在标准RAPID里变量引用是编译期确定的但有了数据搜索功能就可以用字符串指定任务名和变量名动态读写。这个在需要在上位机交互修改参数的产线里非常有用不需要每次都重新生成模块。VAR string sTask : T_ROB1; VAR string sVar : nCounter; VAR num nReadValue; PROC SearchData() GetDataVal sTask, sVar, nReadValue; ! 读取T_ROB1任务里的nCounter ENDPROC逻辑说明GetDataVal的语法是任务名、变量名、存储位置。这里任务名必须和RAPID任务的配置名一致变量名可以是局部变量或全局变量但如果变量是局部的需要确认任务级作用域。反过来用SetDataVal可写入。我在调试时常用这个方法在即时面板里改参数不用反复重启任务。注意这个功能需要Advanced RAPID选项解锁否则编译期会报未声明指令。2.2 别名I/O信号从硬件映射到逻辑名的工程意义2.2.1 为什么需要别名一个标准的IRC5系统里硬接线的I/O信号名往往由板卡和端子决定比如d652_do10这类名字。程序里到处写d652_do10一旦换板卡所有程序都要改。别名I/O就是把物理信号映射成业务名比如diWorkpieceIn、doClampOpen。这样程序只认逻辑名硬件变更时只需改一层映射表。ABB支持在系统参数里配置别名也可以直接在RAPID中用ALIAS指令创建I/O别名。2.2.2 配置步骤与代码在RobotStudio的“控制器”标签页里打开System Parameters定位到I/O System添加一个Alias条目指定Name为diWorkpieceIn指向现有信号d652_do10。保存后重启控制器程序里就可以直接用diWorkpieceIn了。RAPID中的使用示例PROC CheckWorkpiece() IF diWorkpieceIn 1 THEN doClampOpen : TRUE; ENDIF ENDPROC逻辑说明diWorkpieceIn是配置后的别名doClampOpen也一样。这样做的意义是程序的可移植性。我见过不少项目在换I/O板后因为信号名变化全程序搜索替换极易漏改。用别名后只改配置不用动RAPID。需要注意别名不能同名、不能指向另一个别名而且改完必须热重启生效。2.3 配置功能与断电功能系统参数如何与RAPID协同Advanced RAPID还有一个常被忽视的“配置功能”它允许RAPID程序在运行时读取系统参数并按参数值改变行为。比如根据系统里的机器人类型、载荷配置决定轨迹速度、加速度不必为不同型号各写一套逻辑。实际实现通常是调用ReadSysPara这类封装好的函数配合RAPID的case语句。断电功能则是针对突然掉电的恢复场景在掉电前记录关键位置和过料状态上电后自动回到断点。这需要结合系统参数中“断电恢复”配置和RAPID里的写断点指令一般做法是在每个运动周期前保存目标点到一个持久变量。下表是断电恢复相关的主要系统参数配置路径在Controller → Motion → Power Loss参数名说明推荐值RecoveryMode掉电后恢复模式Off/Manual/AutoManualReturnDistance恢复到断点前的安全抬升距离10 mmReturnSpeed恢复运动时的速度倍率20 %配置完成后程序里需要把断点写入一个持久变量VAR PERS再通过PERSISTENT指令在掉电时保存。这样上电后可以提示操作员选择“回断点”还是“回原点”。注意持久变量只能在运动暂停时写入不能在运动过程中频繁写否则触发文件系统写保护。2.4 中断与用户消息实时反馈的两种实现2.4.1 中断功能中断功能是让程序在运动过程中也能立刻响应外部信号的手段。比如检测到安全门打开或者模拟量越过阈值立即停住当前指令。RAPID中先声明中断句柄然后用ISignalDI或ISignalAI把信号上升沿/下降沿绑定到特定的中断服务程序。VAR intno intStop; VAR bool bStopShot : FALSE; PROC Main() CONNECT intStop WITH StopHandler; ISignalDI diEstop, 1, intStop; ... ! 主程序 ENDPROC TRAP StopHandler bStopShot : TRUE; StopMove; ENDTRAP逻辑说明CONNECT把中断句柄intStop关联到服务程序StopHandlerISignalDI监听diEstop的上升沿第二个参数1表示边沿触发后CPU跳到限定的TRAP段执行StopMove。注意TRAP运行期间不能执行与主程序冲突的指令一般只做标志位记录和简单停止。我一般会在服务程序里加一个时间戳便于追溯是哪个信号触发的。2.4.2 用户消息功能用户消息功能用于把日志、报警、文本信息写到系统事件日志或用户界面。相比TPWrite它支持多语言文本表格文件和格式化参数。比如不同国家产线用不同语言配置好语言文件后程序自动匹配。PROC ReportError() ErrWrite ERR_OIL, Oil pressure too low; ENDPROC逻辑说明ErrWrite第一参数是事件ID会出现在日志里第二个参数是默认消息文本。配合用户消息选项这个ID会在文本表格文件里查找多语言版本。调试时我常用TPWrite直接输出变量但正式程序建议用ErrWrite因为日志可以导出分析。除了上述功能Advanced RAPID还包含工艺配套功能比如输送链跟踪的CoordOffs和RAPID配套功能例如程序内动态调用模块。这些功能通常在特定工作站才会用到但原理都是“把系统层面的能力封装成RAPID可调用的接口”理解这个思路后看其他选项就不会再觉得陌生。3. 控制器级特殊选项从模拟量中断到电子联动轴3.1 Analog Signal Interrupt模拟量触发的时机控制标准中断服务程序大多基于数字信号跳变但有些工艺需要在模拟量越过某个阈值时动作比如激光功率、力传感器信号。Analog Signal Interrupt就是为此设计的你可以为某个模拟输入信号设置一个触发值系统在信号超过或低于该值时产生中断。在RAPID中通过ISignalAI指令绑定模拟量信号和中断服务程序。VAR intno intForce; VAR num nForceLimit : 50; PROC SetForceInterrupt() CONNECT intForce WITH ForceHandler; ISignalAI aiForce, nForceLimit, intForce; ENDPROC TRAP ForceHandler TPWrite Force over limit; StopMove; ENDTRAP逻辑说明ISignalAI第一个参数是模拟信号第二个参数是阈值第三个是中断句柄。注意这个功能需要在系统参数里为模拟信号配置好滤波否则信号抖动会造成反复触发。我一般会在硬件端加RC滤波或在RAPID里加一个去抖标志位比如记录上一次触发时间小于200ms忽略。3.2 Cyclic bool循环评估逻辑条件Cyclic bool是一种在RAPID任务循环执行时周期性评估逻辑条件的机制。它不是由硬件中断驱动而是由控制器在每个控制周期比如4ms里检查一组布尔表达式表达式为真时立即执行关联的RAPID函数或设置一个标志。常见用在安全互锁、轨迹品质监测等场景。配置在系统参数的Cyclic Bool页面定义一个名称和表达式表达式可以引用I/O信号、系统变量、RAPID数据。系统参数示例参数值说明NameCycleOK逻辑名ConditiondiDoorClosed AND diEStopOK条件表达式ActionRAPID动作类型触发RAPID例程TaskT_ROB1目标任务设置后在RAPID任务里编写一个与Name同名的无参例程系统周期调用它。示例PROC CycleOK() IF NOT diDoorClosed THEN StopMove; ENDIF ENDPROC需要注意的是Cyclic bool的周期很短例程里不能有过长的阻塞操作否则会影响任务周期。我一般只放标志位赋值和简单的停止判断复杂逻辑放到主循环里处理。3.3 Electronically Linked Motors电子联动从动轴的管理3.3.1 系统参数配置电子联动ELM用于将外部轴比如伺服焊钳、变位机与机器人运动组联动形成一个运动链。配置时在Motion System里添加一个电子联动单元指定主组和从动轴。关键参数是Transmission Unit和Motor Type。这里需要特别留意扭矩从动件的配置它既要跟随主运动又要输出一定的压力或扭矩比如伺服焊钳的加压阶段。! 从动轴使能示例 VAR string sStation : STN1; ... SyncMoveOn sStation;3.3.2 服务程序校准从动轴、重置与微调扭矩配置完成后需要在校准模式下执行服务程序。ABB的标准服务程序可以通过RobotStudio的“校准”入口访问。常见操作有校准从动轴位置、重置从动轴、微调扭矩。校准从动轴时需要先确认机械标记点然后记录当前编码器位置作为零点。重置从动轴是针对不可恢复的位置偏差复位到机械原点。扭矩从动件微调则是在监控面板上设置目标扭矩和允许偏差系统会通过力/电流环自动调节。我一般建议在首次调试时按顺序做一次机械原点校准、位置校准、扭矩验证。如果从动轴在运动中抖动先检查传动比参数是否匹配再看扭矩增益是否过大。注意不要在不带电的状态下手动转动从动轴否则编码器位置会漂移。3.4 Fixed Position Events固定位置事件与MotionTrigger固定位置事件用于在机器人运动路径上、精确位置触发逻辑而不依赖运动停止。这对涂胶、点焊等工艺有实际价值。RAPID中通过MotionTrigger指令指定一个位置或距离系统在到达该位置时自动执行指定的中断服务程序。示例VAR intno intGlue; CONNECT intGlue WITH GlueShot; MotionTrigger \Time, 0.05, intGlue, 1;逻辑说明MotionTrigger后跟的可选参数\Time表示在运动开始后0.05秒触发一次第三个参数intGlue是中断句柄最后一个参数1表示触发次数。这里更常用的是指定位置比如MotionTrigger \Pos, posShot, intGlue, 0代表到了posShot这个位置就触发。注意固定位置事件要求中断服务程序执行时间极短且不能有等待指令否则会阻塞运动任务。4. 通信与设备集成选项文件通道、命令接口与逻辑互锁4.1 File and Serial Channel Handling二进制/字符与原始数据通信这个选项把文件读写和串口通信统一成一套API可以读U盘上的配方、写数据媒体验证记录、与扫码枪/智能相机做串口交互。标准RAPID只支持基于字符串的TPRead/TPWrite的有限通道而File and Serial Channel Handling允许用Open、Read、Write对文件或串口进行操作。代码示例VAR iodev dev; VAR string sLine; VAR num nLen; PROC ReadRecipe() Open HOME:/recipe.csv, dev, File_Read; Read dev, sLine; Close dev; ENDPROC逻辑说明Open的第三个参数是访问模式File_Read表示读文件第二个参数dev是通道句柄。Read按行读取字符串。实际使用中要注意路径规范HOME:是控制器用户目录。串口通信时把路径换成COM1:之类的设备名模式可以加Bin表示二进制。读取后需要Close释放句柄。原始数据通信是指按字节流读写不经过字符解释。适合协议帧这类场景VAR bytes binData; ... Open COM1:, dev, Bin_Read \Bin; ReadBin dev, binData;逻辑说明ReadBin把原始字节读入bytes变量然后可以用UnpackBytes解析。这里我在Open时加了\Bin这个开关表示通道按原始二进制模式打开这样就不会发生换行符转换。解析字节时ABB的Bytes包提供了ByteToNum、UnpackBytes等函数可以按需要拆出各个字段。文件与目录管理也是这个选项的一部分比如DirExists判断目录是否存在、Delete删除文件、Rename重命名。这些指令在自动化前的数据准备阶段很有用比如清理旧日志、归档配方文件。代码示例IF DirExists HOME:/backup/ THEN CopyFile HOME:/data.txt, HOME:/backup/data.txt; ENDIF逻辑说明DirExists返回目录是否存在CopyFile做整文件复制。注意路径最后面的斜杠不能漏。我一般会在每班次结束时用这类指令把当班报表拷到备份目录再通过FTP或共享目录让上位机拉取。4.2 Device Command Interface外部设备命令的RAPID封装Device Command Interface 提供了一套标准指令让RAPID能够向连接的外部设备发送命令并接收响应常用于与输送线、变位机、视觉结果通信。配置时在系统参数里定义设备类型和通信端口RAPID里用DeviceCommand发送命令字符串。示例VAR string sResponse; DeviceCommand CAMERA, TRIGGER, 10, sResponse;逻辑说明第一个参数是设备别名第二个是命令字符串第三个是超时秒数第四个是响应存储。设备别名需要预先在系统参数里注册。注意同步等待会占用任务时间如果命令耗时较长建议放在低优先级任务里执行。4.3 Logical Cross Connections信号间的布尔逻辑链Logical Cross Connections允许在不写RAPID的情况下把多个I/O信号按逻辑表达式连接起来比如让一个输出等于两个输入的“与”或“或”关系。这在纯逻辑互锁、安全联锁场合非常实用省去了程序轮询。配置示例输入1操作符输入2输出diPartInANDdiClampCloseddoRunEnable配置在System Parameters的I/O System的“Cross Connection”页。可以配置多个信号和括号逻辑系统会在后台周期性刷新。需要注意的是Cross Connection的更新周期不是绝对实时的如果用于安全回路仍需硬件安全继电器不能拿这个做安全等级保护。4.4 Connected Services与User logs远程服务与日志的工程用法Connected Services是ABB的远程服务选项可以接入RobotCare或自定义网关把控制器日志、报警、能耗数据上传到云端。配置时需要在系统参数里设置服务器地址和端口并注册服务。User logs则是一个本地日志系统用于记录RAPID程序运行中的自定义信息便于后期回溯。RAPID里写日志Log CycleStart, Nest_ID3;逻辑说明Log指令将消息写入用户日志。我用它来统计每班次启动次数或者把关键工艺参数打进去出现质量问题时能查到当时的实际值。注意日志文件有大小限制长期运行要配置轮转策略。5. 运动精度与工艺选项Absolute Accuracy与Shape Tuning的应用边界5.1 Absolute Accuracy [603-1, 603-2]补偿理论与围笼对准Absolute Accuracy绝对精度选项解决的是机器人理论轴角度与实际末端位姿的偏差。出厂前ABB会用高精度测量设备标定每个轴的误差源再把补偿参数写入控制器。选型时注意有两个选项号603-1是基础版通常配套线性轴或变位机603-2是增强版包含更全面的补偿模型。启用后程序里不需要额外操作控制器自动修正逆解结果。实际工程里用Absolute Accuracy前必须保证“围笼对准”。如果机器人底座的安装位置与设计图纸偏差超过允许值补偿模型会失效。我一般会在调试现场用激光跟踪仪或ABB的校准时具测量机器人基坐标系相对产线坐标系的关系把结果填进系统参数里的Robot Frame。否则你会在TCP标定后发现同一个示教点在不同的时侯偏了几个毫米。5.2 Advanced robot motion [687-1]摩擦微调与Shape Tuning5.2.1 自动微调与手动微调Advanced robot motion选项687-1包含Advanced Shape Tuning、Motion Process Mode和Wrist Move三个子项。Shape Tuning的目的是改善复杂轨迹上的动态精度通过微调各轴的摩擦补偿参数减少折弯处的轮廓波动。系统提供自动微调和手动微调两种方式。自动微调时让机器人按预设测试程序运行一段轨迹控制器自动计算摩擦补偿系数手动微调则是直接修改每个轴的摩擦参数。5.2.2 系统参数设置在Motion System参数里可以设置Shape Tuning的参考轴和增益。常用参数是Shape Tuning Gain、Friction Compensation等。参数范围作用ShapeTuningGain0.5 - 2.0补偿强度FrictionCompensation0 - 100%摩擦前馈AccPar加减速参数抑制过冲手动微调时我建议先记录默认值每次只改一个轴的摩擦补偿变化幅度控制在5%以内然后跑一段圆轨迹看偏差。千万不要一次改多个参数否则无法定位是哪个轴引入的问题。5.3 Motion Process Mode与Wrist MoveMotion Process Mode用于在运动的同时执行工艺任务比如涂胶、焊接时让机器人根据工艺指令平滑调整速度和加速度而不是每个路径段都停下来。Wrist Move则是针对腕关节可达性的优化允许在切割等场景中定义切割面框架让刀具按固定姿态移动。5.4 验证技巧用服务程序校准电子联动从动轴这里给一个可复用的验证流程如果你配置了Electronically Linked Motors用服务程序校准从动轴位置时要确认主组的位置处于校准时具定义的参考点。在RobotStudio中进入校准页面选择“从动轴”对应的校准服务程序按提示将机器人移动到参考点然后记录当前编码器值为新零位。完成后用一个已知长度的标尺或激光测距仪验证末端位移。验证时先低速运行观察从动轴是否同步、是否有异响。如果位置偏差大于1mm重新检查传动比如果偏差随时间累积大概率是编码器零点漂移需要重新校准。这个技巧不只在调试时用每次更换机械部件、电机或联轴器后都应该重新走一遍。ABB的系统选项很多但真正影响产线稳定性的往往就是这些“校准、验证、再记录”的细节。比如换完电机后编码器零点漂移约0.2mm但如果不走服务程序你根本不会发现。本文还有配套的精品资源点击获取
返回列表