1. 项目概述
在工业自动化领域,电池生产线因其高精度、高效率的要求,对控制系统的稳定性和实时性提出了严峻挑战。最近我参与了一个大型锂电池生产线的自动化控制系统设计,采用欧姆龙NJ系列PLC作为主控制器,通过EtherCAT总线实现了24个伺服轴、6个扫描枪和近百个远程IO终端的集成控制。这个项目最让我自豪的是,我们不仅实现了复杂的运动控制,还建立了完整的标准化功能块库,大幅提升了开发效率和系统可靠性。
2. 系统架构设计
2.1 硬件选型与配置
核心控制器选用欧姆龙NJ-1400 PLC,这款控制器具备:
- 双核CPU(1GHz+1GHz)处理能力
- 最大支持128轴EtherCAT运动控制
- 内置EtherCAT主站功能
- 支持ST、LD、FBD等多种编程语言
伺服系统采用IS620N系列伺服驱动器,主要考虑因素包括:
- 全系列支持EtherCAT通讯
- 20位高分辨率编码器
- 位置控制精度±1脉冲
- 支持电子凸轮、电子齿轮等高级功能
远程IO系统采用欧姆龙GX系列IO终端,通过EtherCAT连接,实现了:
- 数字量输入/输出:各512点
- 模拟量输入/输出:各64通道
- 温度采集:32通道
2.2 网络拓扑设计
系统采用三级网络架构:
- 控制层:EtherCAT实时总线(100Mbps)
- 主站:NJ-1400 PLC
- 从站:伺服驱动器、远程IO、扫描枪
- 监控层:Ethernet/IP网络
- 连接HMI(威纶通MT8071iE)
- 连接上位MES系统
- 设备层:DeviceNet网络
- 连接传统设备(气动元件、传感器等)
关键设计要点:EtherCAT采用菊花链拓扑,所有从站设备串联连接,末端需加120Ω终端电阻。
3. 软件设计与实现
3.1 编程环境配置
使用欧姆龙Sysmac Studio开发环境(版本1.52),主要配置包括:
- 工程类型:NJ系列多轴控制项目
- 编程语言:结构化文本(ST)为主
- 运动控制库:Sysmac Library 1.15
- 通讯协议:EtherCAT DS402协议
3.2 功能块开发
3.2.1 伺服控制功能块
开发了标准化的伺服控制FB块,主要功能包括:
st复制FUNCTION_BLOCK FB_ServoControl
VAR_INPUT
bEnable: BOOL; // 伺服使能
fTargetPos: REAL; // 目标位置(mm)
fVelocity: REAL; // 运行速度(mm/s)
fAccel: REAL := 1000.0; // 加速度(mm/s²)
fDecel: REAL := 1000.0; // 减速度(mm/s²)
END_VAR
VAR_OUTPUT
bInPosition: BOOL; // 到位信号
fActualPos: REAL; // 实际位置
iErrorCode: INT; // 错误代码
END_VAR
VAR
Axis: MC_AxisRef; // 轴对象
END_VAR
// 伺服使能控制
IF bEnable THEN
MC_Power(Axis:=Axis, Enable:=TRUE);
// 位置模式运动
MC_MoveAbsolute(
Axis:=Axis,
Position:=fTargetPos,
Velocity:=fVelocity,
Acceleration:=fAccel,
Deceleration:=fDecel,
BufferMode:=MC_BUFFER_MODE_ABORTING);
END_IF
// 更新输出参数
bInPosition := MC_ReadStatus(Axis:=Axis).InPosition;
fActualPos := MC_ReadActualPosition(Axis:=Axis);
iErrorCode := MC_ReadAxisError(Axis:=Axis);
3.2.2 扫码枪通讯功能块
扫码枪通讯FB块关键实现:
st复制FUNCTION_BLOCK FB_BarcodeReader
VAR_INPUT
bTrigger: BOOL; // 触发信号
tTimeout: TIME := T#2S; // 超时时间
END_VAR
VAR_OUTPUT
sBarcode: STRING(50); // 条码内容
bDone: BOOL; // 读取完成
bError: BOOL; // 读取错误
END_VAR
VAR
// EtherCAT PDO映射变量
stInput: ST_ScannerIn;
stOutput: ST_ScannerOut;
tonTimeout: TON;
END_VAR
// 触发扫码
stOutput.bTrigger := bTrigger;
// 超时处理
tonTimeout(IN:=bTrigger AND NOT bDone, PT:=tTimeout);
// 结果处理
IF stInput.bDataValid THEN
sBarcode := stInput.sBarcode;
bDone := TRUE;
bError := FALSE;
ELSIF tonTimeout.Q THEN
bDone := TRUE;
bError := TRUE;
END_IF
3.3 工艺程序设计
电池生产线主要工艺流程:
- 上料工位
- 伺服轴1:料盘升降
- 伺服轴2:推料机构
- 极片焊接工位
- 伺服轴3-6:四轴联动焊接
- 封装工位
- 伺服轴7-10:热封控制
- 检测工位
- 扫码枪1-3:电池ID读取
- 伺服轴11-12:分拣机构
每个工位都实现了标准化的状态机控制:
st复制CASE iStep OF
0: // 待机状态
IF bStart THEN
iStep := 10;
END_IF
10: // 上料准备
fbServo1(fTargetPos:=100.0, fVelocity:=50.0);
IF fbServo1.bInPosition THEN
iStep := 20;
END_IF
20: // 极片定位
fbServo3(fTargetPos:=200.0, fVelocity:=100.0);
fbServo4(fTargetPos:=150.0, fVelocity:=80.0);
IF fbServo3.bInPosition AND fbServo4.bInPosition THEN
iStep := 30;
END_IF
// ...其他工艺步骤
100: // 完成状态
bComplete := TRUE;
iStep := 0;
END_CASE
4. 关键问题与解决方案
4.1 EtherCAT同步问题
初期遇到的主要问题是伺服轴运动不同步,表现为:
- 多轴联动时位置偏差大
- 周期性地出现跟随误差
解决方案:
-
优化EtherCAT网络配置:
- 将通讯周期从2ms调整为1ms
- 启用分布式时钟(DC)同步
st复制// 分布式时钟配置 EC_WriteDCSync0( MasterRef:=MASTER_REF, Enable:=TRUE, CycleTime:=1000000, // 1ms ShiftTime:=500000); // 0.5ms -
调整伺服参数:
- 位置环增益:从30提高到50
- 速度环增益:从100提高到150
- 加入前馈控制
4.2 扫描枪通讯异常
扫码枪偶尔出现数据丢失问题,通过以下措施解决:
- 增加硬件滤波:
- 在EtherCAT从站配置中设置输入滤波时间50μs
- 软件容错处理:
- 实现三次重试机制
- 增加超时监控
- 优化接线:
- 使用屏蔽双绞线
- 缩短通讯线长度(<15m)
4.3 多轴协调运动
电池封装需要4个伺服轴同步运动,采用电子凸轮实现:
st复制// 凸轮表定义
CAM_TABLE[0].MasterPos := 0;
CAM_TABLE[0].SlavePos := 0;
CAM_TABLE[1].MasterPos := 100;
CAM_TABLE[1].SlavePos := 50;
// ...更多凸轮点
// 凸轮运动启动
MC_CamIn(
Master:=Axis1,
Slave:=Axis2,
CamTable:=CAM_TABLE,
MasterOffset:=0,
SlaveOffset:=0,
MasterScaling:=1,
SlaveScaling:=1);
5. 人机界面设计
威纶通触摸屏(MT8071iE)主要界面设计:
5.1 主监控画面
- 设备状态总览
- 生产计数显示
- 报警信息区
- 关键参数实时趋势图
5.2 伺服调试画面
- 各轴位置显示
- 手动控制按钮
- 参数设置界面
- 错误历史记录
5.3 生产数据画面
- 批次信息查询
- 产品追溯数据
- 合格率统计
- OEE指标显示
界面设计技巧:将操作频率高的按钮放在屏幕下半部分,符合人机工程学。
6. 项目总结与建议
经过三个月的调试优化,该系统已稳定运行半年,主要性能指标:
- 生产节拍:6秒/件
- 定位精度:±0.1mm
- 设备综合效率(OEE):92%
关键成功因素:
- 标准化的功能块设计,使程序可维护性大幅提升
- EtherCAT总线的高实时性保证了多轴同步精度
- 完善的异常处理机制提高了系统可靠性
给类似项目的建议:
- 提前做好EtherCAT网络规划,留足余量
- 伺服参数调试要结合实际负载特性
- 建立完善的版本管理机制(如SVN)
- 重视注释和文档的完整性
