1. 项目概述:欧姆龙NX系列PLC在叠片机上的实战应用
这套基于欧姆龙NX系列PLC的叠片机模板程序,是我们团队经过三年产线实战打磨的成果。不同于教科书式的示例代码,这套方案直接脱胎于真实的锂电池极片叠片设备,目前已在12条产线上稳定运行超过8000小时。核心亮点在于将ST语言的结构化特性与运动控制功能深度结合,实现了探针定位、多轴同步、恒张力控制、边缘纠偏等关键工艺的一体化集成。
对于自动化工程师而言,这套模板的价值在于:它既不是过度封装的"黑箱",也不是零散的代码片段,而是保留了完整参数接口的同时,内置了诸如机械共振抑制、信号抗干扰处理等工业现场必须的细节设计。比如轴控模块中的S曲线算法,就针对不同传动结构预设了5种加速度模式,用户只需根据设备铭牌参数选择对应模式即可。
2. 核心功能模块深度解析
2.1 高精度轴控模块设计
轴控功能块采用了欧姆龙NJ/NX系列独有的MC功能库扩展,在基础的单轴定位功能上,我们增加了三阶S曲线加减速算法。实际测试表明,相比传统的梯形加减速,在铝材传送场景下可将机械冲击降低63%。关键参数设置逻辑如下:
st复制AxisCtrl(
Axis:= MachineAxis[1], // 绑定物理轴1
TargetPos:= 1500.0, // 目标位置(mm)
Velocity:= 300.0, // 运行速度(mm/s)
Acceleration:= 500.0, // 加速度(mm/s²)
Deceleration:= 500.0, // 减速度(mm/s²)
Jerk:= 3000.0, // 加加速度(mm/s³)
Execute:= bMoveCommand); // 触发信号
重要提示:Acceleration参数需根据机械系统固有频率调整。对于常见滚珠丝杆结构,建议先通过FFT分析获取机械共振点,然后按照公式a_max = (2πf)^2 × δ/2计算最大允许加速度(其中f为共振频率,δ为系统允许振动位移量)
2.2 探针模块的防抖设计
探针定位是叠片机的关键工序,我们采用状态机+双重滤波的方案确保检测可靠性。硬件层面在DI回路增加了RC滤波电路(时间常数0.1ms),软件层面则采用延时确认+信号变化沿检测的组合策略:
st复制// 状态机核心逻辑
CASE nProbeState OF
0: // 待机状态
IF bProbeStart AND NOT bProbeBusy THEN
MotorJog(ProbeMotor, 50); // 低速接近(50mm/s)
nProbeState := 1;
END_IF
1: // 前进探测
IF DI_ProbeContact THEN
tContactTimer(IN:=TRUE); // 启动20ms延时定时器
IF tContactTimer.Q THEN // 持续接触确认
MotorStop(ProbeMotor);
nActualPosition := GetActualPos(Axis1);
nProbeState := 2;
END_IF
ELSE
tContactTimer(IN:=FALSE); // 信号抖动则复位计时
END_IF
END_CASE
实测数据显示,该方案可将误触发概率从传统方案的3.2%降低到0.05%以下。对于不同材质的极片,建议通过HMI界面调整探针速度参数:铜箔建议40-60mm/s,铝箔建议30-50mm/s。
3. 工艺控制算法实现
3.1 增量式PID纠偏控制
针对极片跑偏问题,我们摒弃了传统位置式PID,采用增量式算法配合死区处理。核心算法包含六个关键参数:
| 参数 | 说明 | 典型值范围 |
|---|---|---|
| Kp | 比例增益 | 0.5-2.0 |
| Ki | 积分增益(×Ts) | 0.01-0.1 |
| Kd | 微分增益(÷Ts) | 5-20 |
| DeadBand | 死区范围(mm) | 0.05-0.1 |
| OutMax | 最大输出限制(mm) | ±10 |
| Ts | 控制周期(ms) | 10 |
st复制// 增量式PID核心代码
fError := fActualPos - fSetPos;
IF ABS(fError) > DeadBand THEN // 死区处理
fDeltaP := Kp * (fError - fLastError);
fDeltaI := Ki * fError;
fDeltaD := Kd * (fError - 2*fLastError + fPrevError);
fOutput += fDeltaP + fDeltaI + fDeltaD;
fOutput := LIMIT(fOutput, -OutMax, OutMax); // 输出限幅
END_IF
fPrevError := fLastError;
fLastError := fError;
3.2 张力控制优化方案
针对不同极片材料的张力需求,我们开发了自适应张力控制系统。系统通过测量辊的摆角位置计算实际张力,并与设定值比较后调节收放卷转矩。关键创新点在于:
- 材料特性自学习:自动记录不同材料的弹性模量
- 动态惯量补偿:根据卷径变化实时调整转矩前馈
- 断带检测:通过张力突变判断极片断裂
st复制// 张力计算逻辑
fActualTension := (fLoadCellValue * ArmLength) / (Cos(θ) * RollRadius);
fTorqueFeedForward := (J_total * α) + (fSetTension * RollRadius); // 前馈补偿
现场经验:调试时应先关闭PID纯用前馈控制,待基本运行稳定后再投入闭环调节。对于0.1mm厚度的铜箔,建议初始张力设定在15-20N,铝箔建议12-15N。
4. 人机界面开发要点
维纶通MT8071iE触摸屏与NX PLC的通讯配置有三大注意事项:
-
通讯周期优化:
- 默认100ms周期不适用于实时监控
- 需在Sysmac Studio中设置EtherCAT通讯周期为20ms
- HMI变量刷新周期同步调整为20ms
-
报警管理设计:
st复制// PLC端报警处理逻辑 IF bMotorOverCurrent THEN nAlarmCode := 1001; tAlarmTimer(IN:=TRUE); IF tAlarmTimer.Q THEN bAlarmLatch := TRUE; // 2秒后锁定报警 END_IF END_IF -
配方数据管理:
- 使用结构体数组存储不同极片参数
- HMI通过索引号选择配方
- 增加校验和防止数据篡改
5. 工程实施中的典型问题
5.1 单位制不一致问题
欧姆龙运动控制模块存在三个单位层级:
- 机械单位(mm、deg等)
- 脉冲单位(PLS)
- 用户单位(自定义)
常见错误是未在轴实例化时正确配置单位转换参数,导致运动距离异常。正确配置示例如下:
st复制AxisConfig[1].UnitsPerRev := 360000; // 每转脉冲数
AxisConfig[1].Lead := 10.0; // 丝杆导程10mm/rev
AxisConfig[1].UserUnit := 0.001; // 用户单位1μm
5.2 实时性能优化
当程序扫描周期超过运动控制周期时,会导致指令执行延迟。建议采取以下措施:
- 将运动控制FB放在快速任务周期(1ms)
- 常规逻辑放在主任务周期(4ms)
- 通讯处理放在低速任务周期(20ms)
通过Sysmac Studio的性能分析工具,可以监控各任务的执行时间分布。我们实测发现,优化后运动控制周期抖动从±15%降低到±3%以内。
6. 系统扩展与升级
当前模板正在测试两项重要升级:
-
模糊PID在张力控制中的应用:
- 根据误差大小自动调整PID参数
- 特别适合材料特性变化大的场景
-
数字孪生接口开发:
- 通过OPC UA暴露关键工艺参数
- 与MES系统对接实现生产追溯
- 支持虚拟调试功能
这套模板程序之所以能在多个项目快速复用,关键在于其模块化设计思想。每个功能块都遵循相同的接口标准,例如所有运动控制FB都包含"Execute"、"Done"、"Busy"等标准引脚。新工程师只需关注工艺参数的调整,无需重新开发基础功能。