ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

四轴机械手装配程序开发与调试实战:从选型到节拍优化

四轴机械手装配程序开发与调试实战:从选型到节拍优化

最近在弄一条小型电子产品的自动化装配线,核心设备是一台汇川四轴机械手。我负责整台机械手的装配程序开发和现场工艺调试,说白了就是让这台机械手自己完成“抓料—对位—插装—压合—检测”这一整套动作,代替原来人工重复的装配工位。项目从方案确认到设备稳定跑通,前后用了三周左右,中间踩了不少坑,也积累了一些比较实用的经验。这篇笔记就把整个装配程序的开发过程完整梳理一遍,从方案选型、程序框架设计、点位示教到问题排查,给打算自己做类似项目的同行一个参考。

这个内容不需要多深的数学基础,但需要有一点PLC或者工业机器人编程的基本概念。如果你准备上第一个机器人装配项目、或者正在犹豫要不要用四轴机械手替换人工工位,这篇文章应该对你有用。我会把关键技术点、参数设定思路、现场故障排查方法都放在后面,直接照着走基本就能搭出一条能跑的自动装配逻辑。

1. 项目背景与整体方案选型

1.1 为什么装配场景优先选四轴机械手

四轴机械手,行业内通常指SCARA形态的设备,三个旋转轴负责水平面内的移动和旋转,一根垂直升降轴负责上下插装动作。这种结构从运动学上就非常契合装配工艺:水平方向灵活、垂直方向刚度大,插装时不容易歪斜,对零件配合段的冲击也小。

我这里的工件是一个尺寸大概拳头大小的塑料壳体,需要把内部的限位卡簧、密封圈和一个小型PCB组件依次装进去。最开始考虑过六轴机械手,但实际测算后发现六轴在这种工况下属于“大材小用”:第一,整个装配过程不需要复杂的空间姿态变换,关键动作就是垂直插装;第二,六轴多出来的两个关节反而会放大末端误差,垂直方向刚度也不如SCARA结构;第三,六轴本体价格和后期维护成本都明显高出四轴一截。

在装配线上,四轴机械手的优势可以简单归纳成几点:

  • 垂直刚度大:Z轴上下动作稳定,适合压装、插入、铆接这类对垂直方向刚性要求高的工艺。
  • 水平柔顺性好:SCARA结构在水平方向天然带有一定柔性,配合浮动接头可以容忍零件和定位治具之间的小量偏差,不易卡死。
  • 速度快:同级负载下运动惯量小,整体节拍可以做得比六轴快,对产线节拍提升更友好。
  • 性价比高:机构简单、轴数少,采购成本和后期保养成本都更低。

打个比方,六轴机械手像人的手臂,能做各种复杂姿态;四轴SCARA像“桌面上的圆规笔尖”,在平面上跑得又快又准,垂直方向按下去又特别稳。绝大多数“从上方把零件放进固定工装”的装配动作,都用不到六轴的那种灵活性,四轴才是效率最高的选择。

如果你遇到需要倾斜装配、绕障碍摆位或者工件需要多角度翻转的工况,那还是要老老实实选六轴。装配场景选型的第一原则不是“功能越多越好”,而是“结构匹配工艺”。

1.2 控制方案与通信架构

确定机械手本体之后,紧接着要定控制方案。四轴机械手的控制通常有两种做法:一种是用机械手自带的专用控制器,示教器编程,通过总线或者IO和PLC交互;另一种是用PLC本身做运动控制,把四个伺服轴挂在一个控制器下自己写运动逻辑。

我这次选的是第一种方案,汇川四轴机械手自带控制器,配合外部PLC做整线逻辑。原因很直接:机械手控制器的插补、轨迹规划、防碰撞、力矩限制这些功能是出厂就调好的,自己用PLC写四轴联动轨迹,耗费的开发时间远超省下的成本,而且后期维护难度大。产线自动化项目讲究的是可靠和可维护,能用成熟功能就别自己造轮子。

PLC和机械手控制器之间的数据交互,我实测下来推荐用EtherCAT总线。EtherCAT循环周期短、数据量大,可以同时传输位置给定、状态反馈和工艺参数,机械手动作和PLC逻辑的配合会非常丝滑。如果现场条件受限,CANopen和Modbus RTU也能用,但通讯周期和抗干扰能力要额外验证。

这里有一个必须特别注意的点:安全类信号绝对不要依赖总线传输,必须走硬接线IO。急停、安全门、安全光栅这些信号要直接串进伺服使能回路的继电器链里,一旦触发就立刻断使能停车。总线通讯再快也有延迟和断线的可能,安全信号走总线等于拿命赌运气,这是行业里血的教训换来的共识。

机械手和PLC之间预留的IO点也不要吝啬,每个关键动作最好都有对应的状态反馈信号,哪怕暂时用不上也要预留。信号点补齐了,后续调试和排故障能省一大半时间。

1.3 机械手负载选型与节拍估算

机械手选型不能只看“能不能抓起来”,还要算动态负载和节拍。负载校核的公式不复杂,但每一项都要认真填:

总负载 = 末端夹具重量 + 工件重量 + 抓取附加力(吸盘吸力、夹爪夹紧反力、偏载力矩)

比如我的项目里,末端气动夹爪加连接板接近1.8公斤,工件0.6公斤,加起来2.4公斤,我选的是负载能力5公斤的机型,留了超过一倍的余量。余量不是浪费,机械手在高速加减速时产生的惯性力远大于静态负载,余量不足轻则抖动丢步,重则损坏减速机。

还有一点容易被忽略:惯量匹配。机械手末端夹具和工件的转动惯量也要落在厂商给的允许范围内,否则高速旋转轴容易过载报警。选型阶段可以直接把夹具的3D模型和重量发给机械手厂商的技术人员帮忙校核,比自己闷头算准确得多。

节拍估算同样要提前做。一个简单的经验公式:

单循环时间 = 各段运动时间总和 + 夹爪/气缸动作时间 + 信号确认延迟 + 预留安全余量

运动时间可以粗略用“移动距离/平均速度×1.5”来估算,因为实际运动包含加减速阶段,平均速度并不会总在最大值附近。我们最初预估单循环28秒,实际调试完空跑是24秒,带料后稳定在26秒,和估算值差距不大,说明前期预留余量的思路是对的。如果节拍预估严重超标,就要在方案阶段考虑双机械手并行或者优化工艺动线,而不是等设备到场后再硬压缩速度。

2. 装配程序的核心逻辑与关键设计

2.1 程序流程框架的标准三段式

装配程序的结构不需要多花哨,基本就是“取料—装配—返回”的标准三段式循环。程序设计失败的项目,多半不是因为逻辑复杂,而是把简单逻辑写复杂了。我习惯把整个循环拆成三个阶段,每个阶段再切分成若干“动作—确认”的配对组合。

取料阶段:机械手从供料盘上方快速移动到取料位,慢速下降,夹爪闭合,确认工件夹紧信号到位后抬升离开。

装配阶段:机械手携带工件快速移动到装配工位上方,慢速下降接近定位治具,执行插装动作,等待装配到位信号,松爪,再抬升。

返回阶段:机械手抬升到安全高度,回到原点或等待位,输出循环完成信号给PLC,等待下一个启动指令。

每个阶段内部的逻辑就是“发动作指令—等待确认信号—继续下一步”。机械手程序内部不判断工件好坏的工艺逻辑,夹具有没有夹到料、装配是不是到位,这些确认信号都来自外部传感器和PLC的判断。机械手就是一个“执行者”,PLC才是“大脑”。这种分工的好处是以后换产品、换治具,只需要改机械手点位和PLC工艺逻辑,程序架构本身不需要大改。

具体的程序结构我用类似结构化文本的伪代码来表示,方便大家理解核心顺序:

PROGRAM MainLoop WHILE TRUE // 等待PLC启动信号 WaitFor(StartSignal := TRUE); // 阶段一:取料 MoveJ(PickAbove, Speed := 50%); MoveL(PickPosition, Speed := 15%); SetDO(GripperClose, TRUE); WaitFor(PartClamped := TRUE); MoveL(PickAbove, Speed := 50%); // 阶段二:装配 MoveJ(InsertAbove, Speed := 70%); MoveL(InsertStart, Speed := 30%); MoveL(InsertDeep, Speed := 8%, TorqueLimit := 30%); WaitFor(InsertOK := TRUE); SetDO(GripperOpen, TRUE); MoveL(InsertAbove, Speed := 50%); // 阶段三:返回 MoveJ(SafePosition, Speed := 80%); SetDO(CycleDone, TRUE); WaitFor(CycleAck := TRUE); SetDO(CycleDone, FALSE); END_WHILE END_PROGRAM

这样的结构有一个显著的优点:任意一个确认信号没有到位,程序就停在当前步骤,不会继续执行后续动作,天然具备防错能力。调试过程中,哪一步卡住就查哪个信号,定位问题非常快。比把所有动作串在一起不停执行、靠延时硬撑的写法要安全得多。

2.2 坐标系与工具标定

装配程序开发里最容易返工的就是坐标系没弄对。四轴机械手涉及坐标系包括:世界坐标系、工具坐标系(TCP)、工件坐标系(用户坐标系)和关节坐标系。其中TCP和用户坐标系的标定质量,直接决定装配精度。

TCP就是工具中心点,具体到这个项目就是夹爪两个手指闭合后的中心点。机械手控制器的位置指令控制的是TCP点,而不是末端法兰中心。出厂时控制器只知道法兰盘中心在哪里,装完夹爪之后TCP位置发生了变化,必须重新标定。如果TCP不标或者标得不准,最典型的表现是:单点定位没问题,但换一个姿态去同一个位置时,末端偏得很离谱。

四轴机械手的TCP标定通常用四点法,操作上就是把一个尖锐的针尖固定在某个位置,机械手用四个不同的姿态去对同一个针尖,控制器根据四个姿态自动反算出TCP偏移量。这个操作看似简单,但有两个细节直接影响精度:

  • 对针时一定要慢速微调,最好用增量模式每步0.1毫米甚至更小去逼近,手一抖偏差就大了。
  • 标定完成后必须做验证,用尖点分别在不同高度、不同方向反复对准同一物理标记点,误差超过0.5毫米就要重新标。

工件坐标系的设定同样重要。我在装配治具的定位销平面上建立了一个用户坐标系,水平面方向和治具安装方向对齐。这样做的好处非常明显:所有装配点位都基于这个用户坐标系记录,将来整个治具整体平移或者旋转,我只需要更新用户坐标系的原点和方向,不用一个一个重新示教点位。这种思路在换型调试时能省出大量时间和精力。

2.3 装配工艺参数的设定策略

程序框架搭好之后,真正决定装配成败的是工艺参数。这些参数包括各段运动速度、加速度平滑系数、Z轴力矩限制阈值、到位确认信号的选择。

速度分段是最基础也是最重要的策略。我自己的习惯是三段法:远距离快速移动用最大速度的70%到90%,缩短空跑时间;接近工件的阶段降到30%左右,给机械手留出减速缓冲;真正进入装配配合段的插装动作控制在5%到15%,保证零件以稳定的速度进入配合位置,减小冲击。很多人图省事,全程用一个速度跑,结果要么空跑太慢拖节拍,要么插装太快把零件撞飞。

Z轴压装时的力矩限制值也很关键。四轴机械手的垂直轴通常支持力矩限制功能,也就是在位置控制的同时设定一个扭矩上限,一旦实际力矩超限就停止或者报警。这个功能本质上就是一个“软性力控”,用来保护零件不被压坏。我做的这个项目里,卡簧需要压入壳体卡槽,纯位置控制很难把握压入深度,我用的是“位置控制+力矩报警”的方式:压入过程中,如果力矩超过设定阈值,程序立刻停止并报警,防止卡簧变形或者壳体破裂。力矩阈值通过多次手动压装测试取平均值再加上20%余量来确定,不能拍脑袋填。

对位找正方面有一个小技巧。如果零件和定位孔都做了导向倒角,允许一定的位置偏差,可以在机械手抓具和法兰之间加一个浮动接头。浮动接头让夹爪在水平方向有少量自由活动空间,插装时零件会顺着导向倒角自动滑入定位位置,相当于机械结构帮忙做了一次“被动找正”。我见过很多项目纠结于提高机械手重复定位精度来解决插装卡料,其实加个浮动接头就解决了,成本低而且非常可靠。

装配程序里还必须设计完善的“信号确认”逻辑。夹爪是否真正夹到料、压装是否到位、松爪是否完成,每一步都要有传感器信号反馈,不能只靠程序延时猜测。我在取料位装了光电传感器检测工件存在,夹爪气缸上装了磁性开关检测夹紧状态,装配工位装了接近开关检测插装到位。程序每个动作之间等待这些信号确认,缺一个就停在该步骤报警。虽然信号点多花了些成本,但设备在无人值守运行时出的问题大幅减少,这笔投入非常值得。

3. 实操过程与程序实现示例

3.1 程序架构与模块划分

装配程序在机械手控制器里最好不要只写一个巨大的主程序,我习惯按功能拆成多个子程序模块,主程序只负责流程调度。这样写的好处是逻辑清楚、排查方便,后续换产品或增加新工序时,可以直接复用现有子程序,不用动主流程。

我这次的项目把程序拆成六个模块:

  • Main主循环:负责整机启动、停止、复位和循环流程调度。
  • Pick取料子程序:管理取料位移动、夹爪控制、料检测和夹紧确认。
  • Insert装配子程序:管理装配位移动、压装参数、插入深度和到位确认。
  • Detect检测子程序:配合PLC让机械手停留在检测位,读取外部视觉或者传感器结果。
  • Alarm报警处理子程序:汇总各类报警,执行安全回退动作并通知PLC。
  • Home回零子程序:开机或者报警恢复后的回零动作。

程序之间的信号联锁通过控制器和PLC之间的IO映射表来实现。调试阶段我把这套信号联锁表保存在柜门内侧,方便现场人员随时查阅。这里分享一张项目里实际使用的信号点表,大家可以作为参考:

信号名称方向作用备注
StartSignalPLC → 机械手启动一次装配循环上升沿触发
PartClampedIO → 机械手工件已夹紧到位取料完成确认
InsertOKIO → 机械手装配已到位压装完成确认
GripperClose机械手 → IO夹爪闭合指令控制气动电磁阀
GripperOpen机械手 → IO夹爪张开指令控制气动电磁阀
CycleDone机械手 → PLC单次循环完成等待PLC复位
AlarmOut机械手 → PLC机械手报警输出触发产线声光报警

模块化的思路在调试阶段体现出的最大价值是:我调整Insert子程序里的压装深度和速度,完全不需要担心影响Pick部分,主程序只要调用的子程序名称不变,内部逻辑随便改。这种“高内聚低耦合”的架构思路,放在机器人编程里一样成立。

3.2 从示教到运行调试的完整步骤

很多第一次做机械手项目的同行,拿到设备之后不知道从哪里下手。我整理了一套现场调试流程,严格按照这个顺序推进,基本能避免“回头返工”的尴尬。

第一步,机械手安装与零点设置。机械手底座必须用水平仪校准,水平度太差会直接影响装配精度和运行稳定性。底座固定螺丝采用对角顺序逐步紧固,确保底座不变形。然后在控制器里执行回零操作,把机械手设定到机械原点,确认各轴编码器零点无偏差。首次通电建议先手动低速测试每个轴的运动方向,确认与示教器显示一致,再尝试联动。

第二步,点位示教与程序编写。示教之前先把所有关键位置在设备上用记号笔标记出来,包括取料位、装配位、安全等待位、中间过渡点。示教器操作时用增量模式低速移动,逐步逼近理想位置。点位记录完成后,把前面设计的模块化程序录入控制器,编译通过后下载到控制器。

第三步,空跑与带料调试。先不给机械手装工件,以低速空跑完整循环,观察轨迹有没有干涉、点位有没有碰撞风险。空跑没问题后,逐步加快速度到目标值。然后开始带料调试,第一次带料建议全程低速,用单步模式一步一步执行,确认每一段的动作和信号都正常后再切换到连续模式。我在第一次带料时发现插装动作会轻微碰擦治具边缘,就是因为单步模式下一段一段盯出来的,如果一上来就连续跑,大概率直接撞坏治具。

第四步,节拍优化与稳定性测试。连续运行24小时以上或者至少1000个循环,记录中途的报警次数和停机原因,统计实际节拍,分析瓶颈后再针对性地优化。稳定性测试期间不要离开现场,随时记录异常声音和信号状态。

整个调试周期,我实际用了4个工作日就完成了从零位设置到带料连续运行。如果PLC程序、机械安装这些都和机械手调试并行推进,一定要提前约定好信号时序,避免互相等待浪费时间。

3.3 节拍优化实录

节拍优化这块我用真实数据来说明,更有参考价值。项目刚跑起来时,单循环节拍是34秒,离客户要求的28秒差了6秒。我没有直接加高速度,而是先做瓶颈分析。

我打开程序监控界面,把每个动作的耗时拉出来看,发现问题集中在三处:

  • 取料位到装配位的长距离移动速度只给了50%,明显偏保守,白白浪费了空跑时间。
  • 压装动作统一用10%的速度执行,连中间的空行程也在蠕动,实际上只需要在进入配合段之后保持低速,接近段可以用中速。
  • 机械手每次循环结束等待PLC复位信号,PLC扫描周期配合不好,多出将近1秒的空闲等待。

针对这三个问题做了优化:长距离移动速度提高到80%,接近段用30%,只有实际插入段保持10%;PLC侧把CycleDone复位逻辑改到中断任务里,减少扫描周期延迟。改完之后,单循环节拍从34秒降到26秒,完全满足客户要求。而且机器运行声音、振动都在正常范围,没有因为提速出现抖动。

这里想提醒一点:节拍优化的大忌是“一上来就拉满加速度”。加速度设置过大,机械手末端会出现明显抖动,时间长了还会损害减速机,甚至把螺丝震松。优化顺序一定是先清理逻辑浪费,再调整路径规划,最后才是提升速度和加速度参数。

4. 常见问题与排查技巧实录

4.1 抖动、过冲与定位偏差

现场调试中遇到最多的问题就是机械手运动到目标点之后出现抖动或者过冲,定位结果忽好忽坏。出现这类现象时,我建议按照“先机械、后电气、再参数”的顺序排查。

先检查机械:底座固定螺丝有没有松动、机械手安装面是否水平、末端夹具连接板有没有松脱。我有一次遇到高速定位后末端明显抖动,排查了很长时间,最后发现是夹爪连接板的四个安装螺丝有两个已经松了。这种机械问题初期很隐蔽,因为低速时感觉不出来,速度一高就暴露。

再检查控制器参数:加速度设置是否过猛、S曲线平滑参数是不是设成了0、负载参数是否和实际夹具一致。我见过的多起抖动问题,最后都是因为把加速度调到接近最大值,机械手末端负载的惯性力超过了机构承受能力。处理方式很简单,把加速度回调到一个不再抖动的值,通常是在原参数的70%到80%。如果项目节拍要求必须用很高的加减速,就需要考虑换更大规格的机械手,而不是硬逼现有设备超限运行。

定位偏差的问题则要回到零点、TCP和用户坐标系检查。零点如果因为断电或者报警时位置跑丢重新回零,会导致所有点位整体偏移,这种情况要重新校准零点再示教关键点。TCP不准的典型特征是机器人在不同姿态下对同一个物理点存在偏差,解决办法就是重新做TCP标定和验证。

4.2 抓料位置漂移

抓料位置漂移的故障在装配产线上非常影响士气,因为它的表现往往是“时好时坏”。早晨开机位置准,运行两小时后慢慢偏,下午出现抓空或者碰料。

这种漂移首先怀疑机械结构的热变形和应力释放。供料盘的定位治具如果材质较软,或者固定方式只用了单边压紧,运行一段时间后受机械手反复推料的影响会产生微小位移,累积下来就足够导致抓空。我处理过一个类似问题,对策是在治具底面增加定位销和双边压紧,位置就稳定下来了。

如果确认治具没有位移,还要排查供料盘上的来料位置是否有累积误差。前段工序如果来料摆放本身就不稳定,机械手固定点位当然会“时准时不准”。这种情况要么要求前道工序改进定位,要么在机械手上加视觉引导,用相机识别来料实际位置后自动补偿抓取。视觉引导路径看起来投入高,但如果是长期生产需求,性价比很高。

零点丢失导致的漂移也要留意。机械手如果频繁急停报警、断电时未回零,编码器数据可能丢失,重新上电后必须回零。我建议在程序里设置开机强制回零逻辑,不回零不允许进入自动模式,从制度上杜绝零点丢失带来的批量不良。

4.3 机械手与PLC通讯偶发断线

EtherCAT总线在正常运行时非常稳定,但在复杂的工业现场偶尔会出现“运行几个小时断一次线,重新上电又好了”的故障。这种偶发故障最难查,因为现场再现困难,测试过程中可能几个小时一段时间就是不复现。

排查这类问题要按电磁兼容的思路来走。先检查通讯线缆的屏蔽层接地:屏蔽层必须在控制器侧单端接地,不能在两侧同时接地形成地环流,也不能悬空不接。然后检查通讯电缆是否和动力电缆在同一个线槽里贴着走线,动力电缆的变频器输出会产生强烈的电磁干扰,如果通讯电缆没有屏蔽或者距离太近,就会出现偶发丢包断线。处理方式包括:通讯电缆单独走线槽并与动力线保持至少20厘米间距、加装磁环、通讯接头重新压接保证接触可靠。

另一个容易被忽视的是连接器的接触质量。EtherCAT网线接头如果在振动环境下没有锁紧,运行中会出现接触不良导致的偶发断线。这种问题往往表现为重新插拔一下线缆就“恢复正常”,但实际接触仍然处于脆弱状态。排查时不要怕麻烦,把每个接头都重新插拔并检查锁扣,必要时直接更换成品网线。

考虑到断线的危害,我在程序里增加了通讯超时监控和信号纠偏机制:一旦通讯中断,机械手立即进入安全停止状态,并保持当前位置;通讯恢复后必须手动复位才能继续循环,而不是自动接着跑。这样可以避免通讯瞬时中断后数据错乱导致的误动作。

4.4 常见问题速查表

故障现象可能原因排查步骤
高速定位抖动底座松动/加速度过大/减速机磨损紧螺丝 → 回调加速度 → 检查减速机
抓料位置漂移治具位移/来料偏差/零点丢失查定位销 → 查来料一致性 → 重新回零
通讯偶发断线屏蔽接地不良/线缆干扰/接头松动查接地 → 分线槽 → 换接头
插装卡料零件倒角不足/定位偏差/夹爪不对中加导向倒角 → 加浮动接头 → 重标TCP
夹爪夹不紧气压不足/夹爪磨损/磁性开关误判查气源压力 → 查夹爪 → 校传感器
报警后无法复位信号未消除/回零未完成/安全回路锁定查看报警码 → 确认信号状态 → 复位安全回路
某轴偶发过载负载过重/加减速过猛/机械卡滞查负载参数 → 降低加减速 → 盘动检查
装配到位信号时好时坏接近开关安装松动/检测距离过近重新固定 → 调整检测距离

除了这些常见问题,调试过程中务必养成记录的习惯。每次报警的代码、发生的时间、当时的运行速度、当时的信号状态,都记在调试日志里。很多偶发问题单靠脑子记是记不住的,有日志数据才有排查分析的依据。

最后说点实在的

做完整台设备的机械手装配程序,我最大的体会是:动作逻辑写出来并不难,真正常反应的功夫都在“可靠”这两个字上。一个看起来非常简单的插装动作,背后是坐标系标定精度、信号时序设计、工艺参数匹配、机械结构状态、电气抗干扰能力的综合结果。

如果你也是刚开始接触机械手装配项目,我建议先从模仿标准流程开始,不要一上来就搞复杂架构。把每一个动作都拆成“指令—确认信号”,把每一段速度都按“快—中—慢”的原则去设定,把每一类传感器信号都接到程序里并写清楚报警提示,这条基础路线走熟了,很多高级功能自然就水到渠成。

后续这个项目还可以继续扩展,比如加一套2D视觉引导用来适应来料位置的波动,或者增加Z轴力矩闭环实现真正的力控压装,再或者两台机械手同时协作一个工位提升节拍上限。每一步扩展都可以基于现在这套模块化架构来实现,只需要新增对应的子程序模块,不需要推翻重来。

设备稳定运行两个多月之后,我再去现场回访,操作工人说比人工装配轻松多了,良品率也稳定。我觉得这就是自动化装配项目最有价值的回报:不需要人一直盯着,机器自己就能把活干好,而它背后的这套程序逻辑,就是我们工程师价值的体现。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进