焊接机器人工作站 — PLC + Robot + 焊接工艺同机
一句话: 6 轴埃斯顿机器人 + 2 轴变位机 + 麦格米特焊接电源 + 电弧传感器 + 腕部视觉。Darra 用 一台工控机 同时跑 PLC + Robot Runtime + HMI + AI, 通过 FB_WeldPath / FB_ArcTracker / FB_VisionLocate 三件套把焊缝路径规划 / 电弧跟踪 / 视觉定位封装成开箱即用的工艺对象。
1. 设备简介
焊接机器人工作站 = "6 轴机器人 + 变位机 + 焊机 + 传感器 + 夹具 + 安全围栏", 是汽车零部件、工程机械、钣金结构件行业最大批量的自动化单元。关键组成:
- 6 轴关节臂机器人: 本体 + 6 个伺服 + 减速机, 臂展 1400 mm, 负载 6 kg;
- 2 轴变位机: 工件旋转 + 翻转, 通过
MC_GearIn与机器人协同; - 焊接电源: MIG / MAG / TIG, 本案例用 MIG/MAG 350 A 国产电源(麦格米特 Artsen Plus 350);
- 送丝机 + 焊枪: 水冷焊枪, 送丝速度 0~18 m/min;
- 电弧传感器: 测电流电压偏差反推横向 / 高度偏差, 响应 < 5 ms;
- 腕部相机(选配): 海康 GigE Vision, 首件视觉定位补偿工件夹具偏差。
本案例江苏某汽车零部件厂一条 6 站焊接线, 产品覆盖:
1.1 产品矩阵
| 工件 | 材质 | 厚度 | 焊缝 | 年产量 |
|---|---|---|---|---|
| 排气管三通 | 304 不锈钢 | 2 mm | 环缝 × 2 | 50 万件 |
| 车架后桥 | Q345 | 4~6 mm | 角焊 × 8 | 30 万件 |
| 副车架 | Q235 | 3 mm | 对接 + 角焊 | 25 万件 |
| 消音器 | 409 不锈钢 | 1.5 mm | 长焊缝 | 40 万件 |
| 后悬支架 | Q345 | 5 mm | T 形焊 | 20 万件 |
1.2 关键工艺指标
| 指标 | 要求 |
|---|---|
| EtherCAT 周期 | 1 ms |
| 机器人位置精度 | ±0.05 mm |
| 焊缝跟踪精度 | ±0.3 mm |
| 焊接速度 | 100~1500 mm/min |
| 焊接电流 | 50~350 A |
| 焊接电压 | 15~35 V |
| 变位机定位精度 | ±0.05° |
| 焊接采样 | 20 ms / 条 |
| 质量判定 | 电流电压偏差 ±10% |
| 单件节拍(三通) | ≤ 45 s |
| 换产时间 | ≤ 10 min |
2. 项目模块组成
| 层 | 模块 | 功能 | Darra 组件 |
|---|---|---|---|
| 工艺对象 | 焊缝路径规划 | 直线/圆弧/样条 + 摆焊 + 跟踪叠加 | FB_WeldPath |
| 工艺对象 | 电弧传感跟踪 | 电流电压 → 横向/高度偏差 | FB_ArcTracker |
| 工艺对象 | 视觉定位 | 首件拍照 → 工件位姿偏移 | FB_VisionLocate |
| 工艺对象 | 变位机协同 | MC_GearIn(机器人↔变位机) | MC_GearIn |
| 工艺对象 | AI 首件优化 | 按材料/厚度/焊缝图像推荐参数 | FB_AI_Predict |
| 工艺对象 | AI 质量评分 | 电流电压曲线 → 0~100 分 | FB_AI_Predict |
| 功能模块 | 主状态机 | 9 步时序(待机→到位→送气→起弧→焊接→收弧→抬枪→下一缝→回 Home) | PRG_WeldStation |
| 功能模块 | 焊接参数管理 | 工件 × 焊缝二级索引 | 配方管理器 |
| 功能模块 | 质量追溯 | 每焊缝电流电压曲线 + 签名 | Darra Service |
| 数据模块 | 焊接配方 UDT | 电流/电压/速度/摆焊/气体 | TYPE_WELD_RECIPE |
| 数据模块 | 焊缝定义 UDT | 起点/终点/过渡点/路径类型/跟踪 | TYPE_WELD_SEAM |
| 数据模块 | 工件批次 UDT | 批号/序列/结果 | TYPE_WORKPART |
2.1 扫描周期
| 程序 | 周期 | 说明 |
|---|---|---|
| PRG_Main | 10 ms | 安全 / HMI / 状态汇总 |
| PRG_WeldStation | 1 ms | 主状态机 + 焊接时序 |
| PRG_WeldPath | 1 ms | FB_WeldPath 轨迹插值 |
| PRG_ArcTracker | 1 ms | FB_ArcTracker |
| PRG_Sampler | 20 ms | 电流电压曲线采样 |
| PRG_VisionLocate | 事件 | 首件视觉定位 |
| PRG_AI_QA | 条后触发 | 焊缝完成后评分 |
| PRG_Alarm | 20 ms | 三级报警 |
3. 机械装配架构
┌────────────────────┐
│ 安全围栏(围一圈) │
│ + 安全门磁开关 │
│ + 安全光栅 │
└───────────┬────────┘
│
┌───────────────────────┼────────────────────────┐
│ │ │
┌──────▼──────┐ ┌────────▼────────┐ ┌──────▼──────┐
│ 操作台 HMI │ │ 6 轴机器人本体 │ │ 变位机 2 轴 │
│ cMT 3152 │ │ 埃斯顿 ER6-1400 │ │ 500 kg 负载 │
└─────────────┘ │ + 腕部焊枪 │ │ A 旋转 │
│ + 腕部相机 │ │ B 翻转 │
└────────┬────────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────┐
│ 麦格米特焊机 │ │ 工件夹具 │
│ Artsen Plus 350 │ │ (气动) │
└────────┬────────┘ └─────────────┘
│
┌──────▼──────┐
│ 送丝机 + 气瓶 │
│ + 水冷循环 │
│ + 烟尘净化 │
└─────────────┘
3.1 机械关键部件
- 机器人本体: 埃斯顿 ER6-1400, 重复精度 ±0.03 mm, 标称 ±0.05 mm;
- 焊枪: 宾采尔 Abicor 水冷型, 送丝管内径 1.2 mm, 导电嘴可快换;
- 变位机: A 轴(水平旋转) + B 轴(翻转 ±120°), 500 kg 负载;
- 夹具: 3 组气动夹紧 + 2 组顶杆, 单工件定位误差 < 2 mm;
- 安全: 3 面围栏 + 1 面安全门磁开关(SIL3) + 前侧光栅(PL d);
- 烟尘净化: 旭日 2 kW 烟尘净化器, HEPA 过滤, 焊接时必须运行。
4. 程序架构
PRG_Main (10 ms)
├── 安全: ESTOP / DOOR / LIGHT / GAS / WATER / WIRE / EXHAUST
└── 全局状态汇总, 触发 state=99 FAULT
PRG_WeldStation (1 ms) —— 9 步状态机
├── 0 待机: START & PART_CLAMP & safetyOK → state=1
├── 1 空跑到起点上方: MoveRobotJ(Approach, v=50)
├── 2 下降到起点: MoveRobotL(StartPose, v=20)
├── 3 提前送气: PreGas ms
├── 4 起弧: WELD_START=1, 检测 ActCurrent>30 A 建立
├── 5 焊接运动 + 跟踪 + 采样: FB_WeldPath
├── 6 收弧 + 滞后送气: PostGas
├── 7 抬枪到过渡位, 判断 currentSeam+1 或 state=8
├── 8 回 Home + 生成报告
└── 99 故障: 关焊机 + 回安全位
PRG_WeldPath (1 ms)
└── FB_WeldPath(StartPose, EndPose, ViaPose, Speed, Swing, Track)
├── 路径插值 (线 / 圆弧 / 样条)
├── S 曲线加减速
├── 摆焊叠加 (sin)
└── MC_MoveLinearAbsolute / MC_MoveCircularAbsolute
PRG_ArcTracker (1 ms)
└── FB_ArcTracker(CurrentFb, VoltageFb, Nominal...) → TrackOffsetY/Z
PRG_Sampler (20 ms)
└── RecordSample(currentSeam, ActCurrent, ActVoltage)
PRG_VisionLocate (事件)
└── FB_VisionLocate → offsetPose → Robot.SetUserFrame
PRG_AI_QA (条后触发)
└── FB_AI_Predict('WeldQualityScore') → Pass/Fail + 评分
5. 硬件 BOM
| 设备 | 型号 | 数量 | 单价(¥) | 小计(¥) |
|---|---|---|---|---|
| 工控机 | 研华 IPC-610 + i7-12700 / 32 GB / 1 TB | 1 | 12 000 | 12 000 |
| 6 轴机器人本体 | 埃斯顿 ER6-1400(6 kg / 1400 mm) | 1 | 90 000 | 90 000 |
| 机器人伺服驱动器 | 汇川 SV660N-0.75~1.5 kW | 6 | 4 500 | 27 000 |
| 变位机伺服驱动器 | 汇川 SV660N-3.7 kW | 2 | 5 500 | 11 000 |
| 变位机本体 | 埃斯顿 2 轴 500 kg 负载 | 1 | 30 000 | 30 000 |
| 焊接电源 | 麦格米特 Artsen Plus 350 MIG/MAG | 1 | 25 000 | 25 000 |
| 送丝机 | 麦格米特自动送丝机 | 1 | 5 000 | 5 000 |
| 焊枪 | 宾采尔 Abicor 水冷焊枪 | 1 | 3 500 | 3 500 |
| 电弧传感器 | 麦格米特内置电弧跟踪 + 模拟量 | 1 | 8 000 | 8 000 |
| 焊接夹具 | 定制气动夹具 | 1 | 12 000 | 12 000 |
| EtherCAT IO | 汇川 AM600 + 32DI/32DO/8AI/4AO | 1 组 | 4 500 | 4 500 |
| 安全模块 | 欧姆龙 G9SX-GS SIL3 | 1 | 3 500 | 3 500 |
| 安全光栅 | Banner EZ-SCREEN | 1 | 4 500 | 4 500 |
| 安全围栏 | 定制 + 双开门磁 | 1 | 6 000 | 6 000 |
| 烟尘净化 | 旭日烟尘净化器 | 1 | 8 000 | 8 000 |
| HMI | 威纶通 cMT3152 15" | 1 | 6 000 | 6 000 |
| 工业交换机 | 汇川 EtherCAT 8 口 | 1 | 1 200 | 1 200 |
| 机器人腕部相机(选) | 海康威视 MV-CS050-10GC | 1 | 6 500 | 6 500 |
| UPS | APC SUA1500 | 1 | 3 200 | 3 200 |
| 硬件合计 | 266 900 | |||
| Darra 授权(4 核永久) | PLC + Motion + Robot + HMI | 1 | 30 000 | 30 000 |
| 总计 | 296 900 |
6. IO 模块配置
6.1 选模块
汇川 AM600-ECAT 单柜:
| 槽位 | 型号 | 通道 | 用途 |
|---|---|---|---|
| 0 | AM600-ECAT | — | 耦合器 |
| 1 | AM600-32DX | 32 DI | 主令 / 夹紧反馈 / 联锁 |
| 2 | AM600-32DYT | 32 DO | 气阀 / 送电 / 报警 |
| 3 | AM600-8AI-V | 8 路 0~10 V | 电流/电压/跟踪 Y/Z |
| 4 | AM600-4AO-V | 4 路 0~10 V | 电流设定 / 电压设定 |
6.2 地址映射
| 地址 | 名称 | 说明 |
|---|---|---|
| I0.0 | START | 启动 |
| I0.1 | STOP | 停止 |
| I0.2 | ESTOP | 急停(双回路) |
| I0.3 | DOOR_OK | 安全门 |
| I0.4 | LIGHT_OK | 光栅通畅 |
| I0.5 | PART_CLAMP | 工件夹紧到位 |
| I0.6 | PART_PRESENT | 工件光电 |
| I0.7 | GAS_OK | 气体压力 OK |
| I1.0 | WIRE_OK | 焊丝到位 |
| I1.1 | WATER_OK | 冷却水 OK |
| I1.2 | EXHAUST_OK | 烟尘净化 OK |
| Q0.0 | GAS_VALVE | 气体电磁阀 |
| Q0.1 | WELD_START | 送电 |
| Q0.2 | CLAMP_ACT | 夹具 |
| Q0.3 | EXHAUST_ON | 烟尘启用 |
| Q0.4 | ALARM_LAMP | 声光报警 |
| Q0.5 | DONE_LAMP | 单件完成 |
| AI0 | CURR_FB | 焊接电流 0~500 A |
| AI1 | VOLT_FB | 焊接电压 0~50 V |
| AI2 | TRACK_Y | 电弧跟踪 Y ±5 mm |
| AI3 | TRACK_Z | 电弧跟踪 Z ±5 mm |
| AQ0 | CURR_SP | 电流设定 |
| AQ1 | VOLT_SP | 电压设定 |
6.3 分工与绑定
- 机器人 6 轴 + 变位机 2 轴 + 送丝机 全部走 EtherCAT, 不占 AI/AO;
- 焊机通讯: 推荐 EtherCAT CoE(有支持的机型), 本项目用 RS485 Modbus RTU 1 ms 刷新 设定值与反馈值, AI 通道仅作冗余监测;
- 电弧跟踪 AI: 电流偏差 → Y / 电压偏差 → Z 两路 ±10 V, IO 向导配 ±5 mm 工程量, SCL 里直接读毫米;
- 焊机设定值 AQ: 配 0
500 A / 050 V 工程量, SCL 直接写目标值, 不再手算 27648; - 腕部相机: GigE Vision 走机器人腕部以太网电缆, 不走 EtherCAT, 触发时再拍。
7. 核心数据结构
(* 焊接配方 *)
TYPE TYPE_WELD_RECIPE :
STRUCT
Id : INT;
Name : STRING[32];
Material : STRING[16];
Thickness_mm : REAL;
WeldType : INT; (* 1=平 2=角 3=立 4=环 *)
Current_A : REAL;
Voltage_V : REAL;
Speed_mmmin : REAL;
GasFlow_Lmin : REAL;
WireSpeed_mmin : REAL;
PreGas_ms : DINT;
PostGas_ms : DINT;
ArcTimeout_ms : DINT;
DeviationLim_pct: REAL;
SwingAmp_mm : REAL;
SwingFreq_Hz : REAL;
TrackGain : REAL;
END_STRUCT
END_TYPE
(* 焊缝定义 *)
TYPE TYPE_POSE :
STRUCT
X, Y, Z : REAL;
A, B, C : REAL; (* 欧拉角 / RPY *)
END_STRUCT
END_TYPE
TYPE TYPE_WELD_SEAM :
STRUCT
Id : INT;
RecipeId : INT;
StartPose : TYPE_POSE;
EndPose : TYPE_POSE;
ViaPose : ARRAY[1..8] OF TYPE_POSE;
ViaCount : INT;
PathType : INT; (* 1=直 2=弧 3=样条 *)
TrackEnable : BOOL;
Length_mm : REAL;
EstDuration_s : REAL;
END_STRUCT
END_TYPE
(* 工件批次 *)
TYPE TYPE_SEAM_RESULT :
STRUCT
SeamId : INT;
AvgCurrent : REAL;
AvgVoltage : REAL;
MaxDeviation : REAL;
AiScore : REAL;
Pass : BOOL;
END_STRUCT
END_TYPE
TYPE TYPE_WORKPART :
STRUCT
BatchId : STRING[32];
Serial : DINT;
ProductType : INT;
SeamCount : INT;
Seams : ARRAY[1..16] OF TYPE_WELD_SEAM;
StartTime : DT;
EndTime : DT;
SeamResults : ARRAY[1..16] OF TYPE_SEAM_RESULT;
OverallPass : BOOL;
END_STRUCT
END_TYPE
VAR_GLOBAL
Product : TYPE_WORKPART;
Recipes : ARRAY[1..32] OF TYPE_WELD_RECIPE;
HomePose : TYPE_POSE;
SafePose : TYPE_POSE;
Approach : TYPE_POSE;
END_VAR
8. 核心程序代码
8.1 主状态机(9 步)
PROGRAM PRG_WeldStation
VAR
state : INT := 0;
preGas, postGas : TON;
arcTimeout : TON;
recipe : TYPE_WELD_RECIPE;
currentSeam : INT;
seamCount : INT;
arcEstab : BOOL;
safetyOK : BOOL;
ActCurrent : REAL;
ActVoltage : REAL;
TrackY, TrackZ : REAL;
weldPath : FB_WeldPath;
CurrentDev : INT;
END_VAR
(* 读入模拟量(IO 向导已换算到工程量) *)
ActCurrent := AI_CURR_FB;
ActVoltage := AI_VOLT_FB;
TrackY := AI_TRACK_Y;
TrackZ := AI_TRACK_Z;
(* 安全联锁 *)
safetyOK := ESTOP AND DOOR_OK AND LIGHT_OK AND WATER_OK;
IF NOT safetyOK THEN state := 99; END_IF;
CASE state OF
0: (* 待机 *)
IF START AND PART_PRESENT AND PART_CLAMP AND safetyOK THEN
recipe := LoadRecipe(Product.Seams[1].RecipeId);
currentSeam := 1;
seamCount := Product.SeamCount;
Product.StartTime := NOW();
state := 1;
END_IF;
1: (* 空跑到起点上方 *)
MoveRobotJ(Product.Seams[currentSeam].StartPose + Approach, v := 50);
IF RobotDone THEN state := 2; END_IF;
2: (* 下降到起点 *)
MoveRobotL(Product.Seams[currentSeam].StartPose, v := 20);
IF RobotDone THEN state := 3; END_IF;
3: (* 提前送气 *)
GAS_VALVE := TRUE;
preGas(IN := TRUE, PT := T#ms * recipe.PreGas_ms);
IF preGas.Q THEN preGas(IN := FALSE); state := 4; END_IF;
4: (* 起弧 *)
WELD_START := TRUE;
AQ_CURR_SP := recipe.Current_A;
AQ_VOLT_SP := recipe.Voltage_V;
arcTimeout(IN := TRUE, PT := T#ms * recipe.ArcTimeout_ms);
arcEstab := ActCurrent > 30.0;
IF arcEstab THEN arcTimeout(IN := FALSE); state := 5;
ELSIF arcTimeout.Q THEN
WELD_START := FALSE; RaiseAlarm(A_ARC_FAIL); state := 99;
END_IF;
5: (* 焊接 + 跟踪 + 采样 *)
weldPath(
StartPose := Product.Seams[currentSeam].StartPose,
EndPose := Product.Seams[currentSeam].EndPose,
ViaPoses := Product.Seams[currentSeam].ViaPose,
ViaCount := Product.Seams[currentSeam].ViaCount,
PathType := Product.Seams[currentSeam].PathType,
Speed_mmmin := recipe.Speed_mmmin,
SwingAmp := recipe.SwingAmp_mm,
SwingFreq := recipe.SwingFreq_Hz,
TrackEnable := Product.Seams[currentSeam].TrackEnable,
TrackOffsetY := TrackY * recipe.TrackGain,
TrackOffsetZ := TrackZ * recipe.TrackGain
);
RecordSample(currentSeam, ActCurrent, ActVoltage);
IF ABS(ActCurrent - recipe.Current_A) >
recipe.Current_A * recipe.DeviationLim_pct / 100.0 THEN
CurrentDev := CurrentDev + 1;
END_IF;
IF weldPath.Done THEN state := 6; END_IF;
6: (* 收弧 + 滞后送气 *)
WELD_START := FALSE;
postGas(IN := TRUE, PT := T#ms * recipe.PostGas_ms);
IF postGas.Q THEN
GAS_VALVE := FALSE; postGas(IN := FALSE);
CalcSeamResult(currentSeam);
state := 7;
END_IF;
7: (* 抬枪 + 下一条或完成 *)
MoveRobotL(Product.Seams[currentSeam].EndPose + Approach, v := 30);
IF RobotDone THEN
IF currentSeam < seamCount THEN
currentSeam := currentSeam + 1;
recipe := LoadRecipe(Product.Seams[currentSeam].RecipeId);
state := 1;
ELSE
state := 8;
END_IF;
END_IF;
8: (* 回 Home + 生成批次报告 *)
MoveRobotJ(HomePose, v := 100);
IF RobotDone THEN
Product.EndTime := NOW();
Product.OverallPass := CheckAllSeams();
SaveProductRecord(Product);
DONE_LAMP := TRUE;
state := 0;
END_IF;
99: (* 故障 *)
WELD_START := FALSE; GAS_VALVE := FALSE; ALARM_LAMP := TRUE;
MoveRobotJ(SafePose, v := 50);
END_CASE;
8.2 焊缝路径规划(FB_WeldPath)
(* Darra 内置 FB_WeldPath 封装:
1. 路径插值: 直线 / 圆弧 / 样条
2. 速度规划: S 曲线加减速, 起终点降速
3. 摆焊: sin 摆动, 垂直于焊缝方向
4. 跟踪叠加: TrackY / TrackZ 平移整条轨迹
5. 下发 PLCopen MC MC_MoveLinearAbsolute / MC_MoveCircularAbsolute *)
(* 见 8.1 状态 5 调用 *)
8.3 电弧传感跟踪(FB_ArcTracker)
PROGRAM PRG_ArcTracker
VAR
arcTracker : FB_ArcTracker;
TrackOffsetY_arc : REAL;
TrackOffsetZ_arc : REAL;
END_VAR
arcTracker(
CurrentFb_A := ActCurrent,
VoltageFb_V := ActVoltage,
NominalCurr_A := recipe.Current_A,
NominalVolt_V := recipe.Voltage_V,
MaxOffset_mm := 3.0,
ResponseTime_ms := 5,
OffsetY => TrackOffsetY_arc,
OffsetZ => TrackOffsetZ_arc
);
(* 模拟量传感器 + 电弧跟踪融合 *)
TrackY := 0.6 * TrackY + 0.4 * TrackOffsetY_arc;
TrackZ := 0.6 * TrackZ + 0.4 * TrackOffsetZ_arc;
8.4 AI 质量评分
PROGRAM PRG_AI_QA
VAR
aiQA : FB_AI_Predict;
curveBuf : ARRAY[1..500] OF REAL;
END_VAR
(* 每焊缝完成后调用 *)
aiQA(
Model := 'WeldQualityScore',
InputArr := curveBuf, (* 最近 500 个 20 ms 采样 *)
Params := recipe
);
Product.SeamResults[currentSeam].AiScore := aiQA.Output[0];
Product.SeamResults[currentSeam].Pass := aiQA.Output[0] >= 60.0;
8.5 首件视觉定位(FB_VisionLocate)
PROGRAM PRG_VisionLocate
VAR
visionLoc : FB_VisionLocate;
offsetPose : TYPE_POSE;
visionOK : BOOL;
END_VAR
IF FirstPart THEN
visionLoc(
CameraIP := '192.168.1.100',
TemplateId := Product.ProductType,
MaxOffset_mm := 5.0,
MaxRot_deg := 3.0,
OffsetPose => offsetPose,
Valid => visionOK
);
IF visionOK THEN
Robot.SetUserFrame(BaseFrame + offsetPose);
FirstPart := FALSE;
ELSE
RaiseAlarm(A_VISION_FAIL);
END_IF;
END_IF;
8.6 AI 首件参数优化
VAR
aiOpt : FB_AI_Predict;
END_VAR
IF HMI.OptimizeRequest THEN
aiOpt(
Model := 'WeldParamFirst',
Inputs[0] := recipe.Material_id,
Inputs[1] := recipe.Thickness_mm,
Inputs[2] := recipe.WeldType,
ImageData := CaptureWeldImage()
);
recipe.Current_A := aiOpt.Output[0];
recipe.Voltage_V := aiOpt.Output[1];
recipe.Speed_mmmin := aiOpt.Output[2];
recipe.GasFlow_Lmin := aiOpt.Output[3];
HMI.OptimizeRequest := FALSE;
END_IF;
8.7 变位机协同
(* 环缝焊接时, 变位机 A 轴旋转 → 机器人枪头保持相对位置不变 *)
VAR
posCoop : MC_GearIn;
END_VAR
IF Product.Seams[currentSeam].PathType = 4 (* 环 *) THEN
posCoop(
Master := Axis_Positioner_A,
Slave := Axis_Robot_J1, (* 根据焊缝位置选耦合轴 *)
RatioNumerator := -1,
RatioDenominator := 1,
Execute := TRUE
);
END_IF;
9. 运行与调试
9.1 上电流程
- UPS + 工控机开机, Darra Service 启动;
- EtherCAT 主站扫描 8 伺服(6 机器人 + 2 变位机) + 1 IO 耦合器;
- 机器人全部
MC_Power使能, 读绝对值编码器; - HMI 提示回零(如有必要, 6 轴可选择
MC_Home走指定零位); - 焊机 RS485 通讯建立, 读状态字 OK, 无故障;
- 安全回路自检: ESTOP / DOOR / LIGHT 均绿;
- 公用介质自检: 气体 / 水 / 焊丝 / 烟尘;
- 进入 IDLE, HMI 显示绿色就绪。
9.2 示教与首件
- 离线编程: 在 Darra IDE 的 3D 仿真视图 拖拽 TCP 点, 生成 StartPose / EndPose / ViaPose, 保存到焊缝库;
- 在线示教: HMI 手动 Jog 模式, 把机器人移动到目标点, 按 Teach 保存当前位姿;
- 首件视觉定位: 开启
FirstPart, 机器人自动走到预设拍照位, 相机拍照识别工件位姿, 自动补偿偏移; - 首件 AI 优化: 在 HMI 按 Optimize, 输入母材 / 厚度 / 焊缝类型, AI 推荐 Current/Voltage/Speed, 操作员确认后下发;
- 首件试焊: 状态机完整跑一次, 观察每条焊缝
AvgCurrent / AvgVoltage曲线与目标偏差 < 5%; - X 光抽检 5 件, 与 AI 评分对比, 确认 AI Pass 与 X 光 Pass 一致率 ≥ 90%。
9.3 常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
| 起弧超时 | 焊丝伸出过长 / 导电嘴堵 | HMI 提示清理导电嘴 |
| 电流波动大 | 地线松 / 焊丝盘缺 | 紧地线 + 检查送丝阻力 |
| 焊缝偏 | 工件定位误差 | 开启视觉定位自动补偿 |
| 跟踪失灵 | 电弧传感器零点漂 | HMI 空载标零 |
| 变位机与机器人干涉 | 协同轴比例错 | HMI 调 RatioNumerator |
| 烟尘报警 | HEPA 滤芯满 | 更换滤芯 |
9.4 三级报警
| 报警 | 级别 | 动作 |
|---|---|---|
| A_ESTOP | 红 | 全部 MC_Stop + 焊机断电 + 气阀关 |
| A_ARC_FAIL | 红 | 焊机断电, 回 SafePose, 报工 |
| A_GAS_LOW | 红 | 停焊, 蜂鸣, 等气体恢复 |
| A_WATER_LOW | 红 | 降电流 50%, 连续 5 s 停焊 |
| A_CURRENT_DEV | 黄 | 累计 >3 次 / 条 → 该件标 NG |
| A_VISION_FAIL | 黄 | 提示人工确认 / 退出首件视觉 |
| A_WIRE_LOW | 蓝 | AI 预测剩余 < 30 件, HMI 提示 |
| A_KNIFE_LIFE | 蓝 | 导电嘴累计提示, 不停机 |
10. Darra 功能对照表
| 业务需求 | Darra 对应功能 | 所在模块 |
|---|---|---|
| 6 轴机器人控制 | Darra Robot Runtime(PLCopen MC) | IDE → 运动 |
| 变位机协同 | MC_GearIn | PLCopen MC |
| 焊缝路径规划 | FB_WeldPath 工艺对象 | IDE → 焊接工艺 |
| 电弧传感跟踪 | FB_ArcTracker 工艺对象 | IDE → 焊接工艺 |
| 摆焊 | FB_WeldPath 的 SwingAmp / SwingFreq | 内置 |
| 视觉定位 | FB_VisionLocate 工艺对象 | IDE → 视觉 |
| 焊接配方 | 内置配方管理器 | IDE → 配方 |
| 质量追溯 | 每焊缝曲线 + 电子签名 | Darra Service |
| AI 首件优化 | FB_AI_Predict(WeldParamFirst) | IDE → AI 助手 |
| AI 质量评分 | FB_AI_Predict(WeldQualityScore) | IDE → AI 助手 |
| HMI | HMI Designer(批次追溯 / 曲线) | IDE → HMI |
| 三级报警 | 内置报警系统 | IDE → 报警 |
| 远程示教 | Darra Cloud 加密隧道 | Cloud |
| 授权 | 按 CPU 核数, 8 轴不按轴收费 | 授权管理 |
11. 项目总结
11.1 实施周期(单站)
| 阶段 | 工时 |
|---|---|
| 方案设计 | 2 周 |
| 硬件采购 | 4 周 |
| 机器人本体 + 夹具安装 | 2 周 |
| 程序开发(PLC + Robot + HMI) | 2 周 |
| 首件调试 + AI 训练 | 2 周 |
| 验收 + 批量试产 | 1 周 |
| 合计 | 13 周 |
6 站整线(并行): 16~18 周。
11.2 投产效果
| 指标 | 设计 | 实测 |
|---|---|---|
| 单件节拍(三通) | ≤ 45 s | 38 s |
| 焊缝跟踪精度 | ±0.3 mm | ±0.22 mm |
| 质量合格率 | ≥ 99.5% | 99.85% |
| 换产切换时间 | ≤ 10 min | 6 min |
| AI 首件优化命中率 | — | 92% |
| AI 评分对比 X 光 | — | 94% |
| 连续运行 | > 1000 h | 1500 h 无故障 |
11.3 推广价值
- 汽车零部件焊接国内年需求 10 万+ 工作站, 可大规模复制;
- 本方案可直接扩展到 激光焊 / 点焊 / 等离子切割 / 搅拌摩擦焊 等机器人工艺;
- 埃斯顿 / 新时达 / 汇川机器人 + Darra PLC 已成为国产机器人工作站的事实标准;
- 工艺对象库持续更新(厚板 MAG / 铝合金 TIG / 激光焊), 客户免费升级;
- AI 模型随数据量增长持续优化, 形成工艺护城河: 数据越多, 首件命中率越高, 评分越准。
FB_WeldPath + FB_ArcTracker + FB_VisionLocate 三件套 + PLCopen MC + AI 质量评分, 把高端焊接机器人工作站的核心工艺打包成开箱即用的对象, 这是 Darra 在汽车零部件焊接领域的核心竞争力。