在动力电池生产线中,焊接质量直接决定电池包的安全性能。我们基于欧姆龙NX1P2-1040DT控制器开发的这套系统,通过EtherCAT总线整合了12个思勤远程IO模块,实现了32轴伺服系统的毫秒级同步控制。系统最突出的特点是采用纯ST(结构化文本)编程,充分利用NX系列PLC的结构体特性,将焊接精度控制在±0.02mm范围内。
关键指标:设备综合效率(OEE)98.6%、焊接不良率0.15%、故障平均修复时间8分钟
这套系统之所以能实现如此高的稳定性,核心在于三个创新设计:
选用NX1P2-1040DT主要基于以下考量:
实际测试中,控制器在同时处理32轴伺服控制+视觉定位+IO监测时,循环周期仍能稳定在2ms以内。
总线配置采用典型的线型拓扑:
code复制[PLC主站]--[IO模块1]--[IO模块2]--[...]--[伺服驱动器]
每个从站设备的分布时钟(DC)同步精度达到±100ns,这是实现高精度同步控制的基础。我们特别在配置中启用了"电缆冗余"功能,确保单点故障不影响整体运行。
系统整合了三种品牌伺服驱动器:
通过EtherCAT的CoE(CANopen over EtherCAT)协议,所有驱动器参数均可在线修改。例如SV6600的刚性参数配置:
st复制SV6600_Para[1].Stiffness := 45; // 配方1的刚性系数
SV6600_Para[1].Damping := 30; // 阻尼系数
定义轴控制结构体是项目的核心创新点:
st复制TYPE Axis_Status :
STRUCT
CurrentPos : LREAL; // 单位:mm
TargetPos : LREAL;
ErrorCode : UINT; // 错误代码标准遵循PLCopen规范
HomingDone : BOOL; // 回零状态
FollowingError : REAL; // 跟随误差监控
END_STRUCT
END_TYPE
这种封装方式带来三大优势:
一键换型功能的实现流程:
关键代码段:
st复制IF g_RecipeChangeReq THEN
// 从HMI读取配方号
g_SelectedRecipe := HMI_RecipeSelect;
// 参数验证
IF (g_SelectedRecipe < 1) OR (g_SelectedRecipe > 50) THEN
AlarmLog(1001); // 无效配方编号
RETURN;
END_IF;
// 应用运动参数
FOR i := 1 TO 32 DO
Axis[i].Accel := RecipeDB[g_SelectedRecipe].Accel;
Axis[i].Decel := RecipeDB[g_SelectedRecipe].Decel;
END_FOR;
// 视觉参数更新
Vision_SetTCP(RecipeDB[g_SelectedRecipe].TCP_X,
RecipeDB[g_SelectedRecipe].TCP_Y);
END_IF;
报警记录采用循环队列结构:
st复制// 报警记录结构体
TYPE Alarm_Record :
STRUCT
Code : UINT; // 报警代码
Timestamp : DT; // 时间戳
AxisNo : USINT; // 关联轴号
Description : STRING[50]; // 报警描述
END_STRUCT
END_TYPE
// 队列操作
IF AlarmCount >= 50 THEN
AlarmPtr := 0; // 循环覆盖
END_IF;
AlarmLog[AlarmPtr].Code := NewAlarmCode;
AlarmLog[AlarmPtr].Timestamp := NOW();
AlarmLog[AlarmPtr].AxisNo := CurrentAxis;
AlarmPtr := AlarmPtr + 1;
AlarmCount := AlarmCount + 1;
伺服过载报警(代码E-03)的处理步骤:
st复制SV6600_SetParam(AxisNo,
PARAM_Stiffness,
CurrentStiffness * 0.8);
与康耐视相机通信的关键参数:
st复制Vision_Comm.IP := '192.168.1.100';
Vision_Comm.Port := 2000;
Vision_Comm.Timeout := 3000; // 3秒超时
Vision_Comm.TriggerDelay := 50; // 50ms触发延迟
工件坐标系转换实现:
st复制FUNCTION TransformCoordinates : BOOL
VAR_INPUT
RobotBase : Position3D; // 机器人基坐标
CameraOffset : Position3D; // 相机偏移
Workpiece : Position3D; // 工件位置
END_VAR
// 齐次坐标变换计算
TransformCoordinates.X := RobotBase.X + CameraOffset.X * COS(Workpiece.Rz) + Workpiece.X;
TransformCoordinates.Y := RobotBase.Y + CameraOffset.Y * SIN(Workpiece.Rz) + Workpiece.Y;
TransformCoordinates.Rz := RobotBase.Rz + Workpiece.Rz;
设备综合效率的计算要素:
st复制OEE := Availability * Performance * Quality;
// 时间利用率
Availability := (ShiftTime - Downtime) / ShiftTime;
// 性能效率
Performance := (IdealCycleTime * TotalOutput) / OperatingTime;
// 合格率
Quality := GoodParts / TotalOutput;
实际项目中,我们通过以下措施提升OEE:
遇到过的典型问题及解决方案:
从站响应超时:
同步抖动过大:
st复制EcSetDCSync0(MASTER, TRUE); // 启用分布式时钟同步
EcSetDCSyncOffset(MASTER, 100); // 设置100ns偏移补偿
不同品牌伺服的调试要点:
| 品牌 | 关键参数 | 推荐值范围 |
|---|---|---|
| 松下A6 | 位置环增益(PG) | 35-50 rad/s |
| 汇川SV6600 | 速度前馈(VFF) | 85-95% |
| 雷赛DM3E | 抗共振滤波器频率 | 根据机械特性调整 |
多品牌伺服统一接口:
通过结构体封装不同驱动器的控制参数,实现"一套程序控制多种驱动器"的目标。例如伺服使能操作:
st复制CASE DriveType OF
PANASONIC_A6: A6_ServoOn(AxisNo, TRUE);
SV6600: SV6600_Enable(AxisNo);
DM3E: DM3E_PowerOn(AxisNo);
END_CASE
智能报警系统:
除常规报警记录外,系统还能关联历史数据进行分析。当某轴频繁报跟随误差时,会自动建议检查联轴器或调整刚性参数。
可视化调试工具:
在HMI中集成了伺服示波器功能,可实时显示位置、速度、电流波形,大幅缩短调试时间。
这套系统经过半年实际运行验证,其稳定性和灵活性得到客户高度认可。特别是在应对多品种小批量生产时,一键换型功能使产品切换时间缩短了78%,为客户创造了显著的经济效益。