1. 项目概述:电池生产线自动化控制系统
去年接手的一个锂电池生产线自动化改造项目,让我对欧姆龙NJ系列PLC的EtherCAT总线控制能力有了全新认识。这套系统需要同时控制24个伺服轴、6台扫码枪和近百个远程IO站,在保证生产节拍的前提下,还要实现±0.1mm的定位精度。经过三个月的开发和调试,最终采用NJ-1400控制器配合IS620N伺服系统,构建了一套稳定可靠的控制方案。
这个项目的技术难点主要集中在三个方面:首先是多轴同步控制,24个伺服轴需要协调动作完成电芯的抓取、定位和装配;其次是数据采集的实时性,6台扫码枪需要在200ms内完成电芯二维码的读取和校验;最后是系统的可靠性设计,近百个IO站的信号必须保证稳定传输。通过合理的EtherCAT网络规划和ST语言编程,这些问题都得到了有效解决。
2. 硬件架构设计
2.1 核心控制器选型
选择欧姆龙NJ-1400控制器主要基于以下几点考虑:
- 内置EtherCAT主站功能,支持最多128个从站节点
- 1GHz双核CPU处理能力,满足多轴控制的计算需求
- 自带32GB存储空间,可保存完整的工艺参数和配方数据
- 支持ST语言编程,适合复杂控制逻辑的实现
实际测试中,NJ-1400的EtherCAT主站性能表现优异,在24轴联动时,通信周期可以稳定在2ms,完全满足产线对实时性的要求。
2.2 伺服系统配置
伺服驱动选用IS620N系列,主要优势包括:
- 支持EtherCAT通信,同步精度±1μs
- 内置电子凸轮功能,适合电池生产中的轨迹控制
- 电机额定功率400W-1.5kW,覆盖产线所有运动需求
- 配套17位绝对值编码器,确保定位精度
每个伺服轴都配置了独立的制动电阻(100Ω/300W),防止快速启停时的母线电压过高。伺服电机通过减速机(速比1:10)连接执行机构,最终实现0.01mm的重复定位精度。
2.3 网络拓扑设计
EtherCAT网络采用线型拓扑结构,具体布置如下:
code复制NJ-1400 → 第一个伺服驱动器 → 第二个伺服驱动器 → ... → 第24个伺服驱动器 → 第一个IO站 → 第二个IO站 → ... → 第六个扫码枪
关键设计要点:
- 伺服节点全部前置,确保运动控制实时性
- 每个网段长度不超过50米,使用CAT6屏蔽双绞线
- 网络末端加装120Ω终端电阻
- 重要节点设置冗余路径(如扫码枪单独分支)
3. 软件架构实现
3.1 开发环境配置
使用Sysmac Studio 1.52进行开发,主要配置参数:
- 工程属性中设置EtherCAT周期为2ms
- 启用分布式时钟(DC)同步功能
- 配置PDO映射时,确保每个从站的输入输出数据对齐到字节边界
- 设置看门狗时间为通信周期的3倍(6ms)
3.2 伺服控制功能块设计
标准化的伺服控制FB块包含以下核心功能:
structuredtext复制FUNCTION_BLOCK AxisControl
VAR_INPUT
bEnable: BOOL; // 使能信号
fTargetPos: LREAL; // 目标位置(mm)
fVelocity: LREAL; // 运动速度(mm/s)
fAccel: LREAL; // 加速度(mm/s²)
END_VAR
VAR_OUTPUT
bReady: BOOL; // 就绪状态
fActualPos: LREAL; // 实际位置(mm)
bError: BOOL; // 错误状态
END_VAR
VAR
iState: INT := 0; // 状态机
stPower: MC_Power; // 使能功能块
stMove: MC_MoveAbsolute; // 定位功能块
tTimeout: TON; // 超时定时器
END_VAR
状态机实现逻辑:
- 状态0:初始化,检查硬件连接
- 状态10:伺服使能,等待驱动器准备就绪
- 状态20:位置模式切换,设置控制参数
- 状态30:运动准备,检查原点状态
- 状态40:执行定位,监控运动完成信号
重要提示:MC_Power功能块的Enable信号必须保持至少500ms,否则可能导致伺服异常。我们在每个轴的FB中都加入了延时保护逻辑。
3.3 扫码枪数据处理
6台扫码枪通过RS232转EtherCAT模块接入系统,数据接收采用环形缓冲区设计:
structuredtext复制TYPE ScanDataBuffer :
STRUCT
sData : ARRAY[0..63] OF STRING(32); // 64条数据缓存
wWriteIndex : UINT := 0;
wReadIndex : UINT := 0;
bNewData : BOOL := FALSE;
END_STRUCT
END_TYPE
// 数据接收中断处理
IF bRxComplete THEN
stBuffer.sData[stBuffer.wWriteIndex] := sRxData;
stBuffer.wWriteIndex := (stBuffer.wWriteIndex + 1) MOD 64;
stBuffer.bNewData := TRUE;
// 触发数据处理任务
trgDataProcess(TRUE);
END_IF
实际调试中发现的关键点:
- 每个扫码枪需要设置独立的结束符(通常为CR+LF)
- 接收超时应设置为正常扫码时间的1.5倍(实测约150ms)
- 数据校验需要加入长度检查和字符过滤(如只允许0-9和A-F)
4. 系统调试与优化
4.1 EtherCAT网络调谐
通过以下步骤优化网络性能:
- 使用EtherCAT主站诊断工具检查各从站的DC同步误差,控制在±100ns以内
- 调整从站位置,将高实时性要求的伺服节点靠近主站
- 优化PDO映射,只映射必要的参数,减少通信负载
- 设置合理的看门狗时间(通常为通信周期的3倍)
4.2 伺服参数整定
伺服调试的关键参数:
structuredtext复制// 位置环参数
stServo.stPosCtrl.fPGain := 30.0; // 比例增益
stServo.stPosCtrl.fIGain := 0.5; // 积分增益
stServo.stPosCtrl.fDGain := 0.0; // 微分增益
// 速度环参数
stServo.stVelCtrl.fPGain := 15.0;
stServo.stVelCtrl.fIGain := 0.3;
// 滤波器设置
stServo.stFilter.fLowPassFreq := 50.0; // Hz
调试技巧:
- 先调速度环,再调位置环
- 增益参数从低到高逐步增加,观察响应曲线
- 使用阶跃响应测试,超调量控制在5%以内
- 最终通过圆测试验证动态性能
4.3 IO信号处理
对于远程IO站,采用以下措施保证信号可靠性:
- 每个IO站设置独立的心跳检测(周期2s)
- 数字量输入信号增加10ms软件滤波
- 模拟量信号采用中值滤波(采样5次取中间值)
- 重要信号设置硬件和软件双重冗余
典型IO监控逻辑:
structuredtext复制// IO站状态监控
FOR i:=1 TO 100 DO
IF NOT astIOStatus[i].bActive THEN
tWatchdog[i](IN:=NOT tWatchdog[i].Q);
IF tWatchdog[i].Q THEN
// 触发报警处理
HandleIOFault(i);
END_IF;
ELSE
// 更新最后一次通信时间
astIOStatus[i].tLastActive := CURRENT_TIME;
END_IF;
END_FOR;
5. 人机界面设计
威纶通触摸屏(型号MT8102iE)通过Ethernet与PLC通信,主要界面包括:
5.1 主操作界面
- 设备状态总览(伺服、IO、扫码枪状态)
- 生产计数显示(良品/不良品统计)
- 急停和复位按钮(权限控制)
5.2 参数设置界面
- 伺服参数调整(需工程师权限)
- 工艺配方选择(支持100组配方)
- 扫码枪配置(波特率、结束符设置)
5.3 报警历史界面
- 实时报警显示(按优先级排序)
- 历史报警查询(支持按日期筛选)
- 报警确认和复位功能
界面与PLC的数据交互采用结构体直接映射:
structuredtext复制// HMI连接变量定义
TYPE HMI_Data :
STRUCT
// 生产数据
iGoodCount : INT;
iBadCount : INT;
fSpeed : REAL;
// 报警信息
aAlarm : ARRAY[1..20] OF Alarm_Struct;
// 按钮状态
bStart : BOOL;
bStop : BOOL;
END_STRUCT
END_TYPE
经验分享:触摸屏的刷新周期建议设置为500ms,关键数据(如报警信号)采用事件触发方式更新,避免通信负载过高。
6. 系统可靠性设计
6.1 故障检测机制
- 伺服驱动器:监控状态字(0x6041)的bit6(准备就绪)和bit10(目标到达)
- EtherCAT网络:通过主站状态机检测(0x0130:ECAT Master State)
- 远程IO站:心跳包超时检测(3次重试机制)
- 扫码枪:数据接收超时监控(150ms超时)
6.2 安全保护功能
-
硬件级保护:
- 每个伺服轴配置极限开关和急停回路
- 重要IO信号采用双回路设计
- 电源模块配置过压和欠压保护
-
软件级保护:
- 运动控制中加入软限位检查
- 扫码数据加入格式校验
- 关键工艺参数设置上下限监控
6.3 数据备份方案
-
自动备份:
- 每天凌晨2点自动备份工艺参数到SD卡
- 配方变更时立即触发备份
- 报警历史记录循环存储(保留最近1000条)
-
手动备份:
- 通过Sysmac Studio导出完整工程
- 触摸屏配方数据导出到U盘
- 伺服参数一键保存功能
7. 项目总结与心得
经过这个项目的实战,总结出几点重要经验:
-
EtherCAT网络规划必须在前期的设计阶段就确定好,特别是从站顺序和PDO映射方案,后期修改成本很高。我们曾经因为调整了一个伺服节点的位置,导致所有轴参数需要重新配置。
-
ST编程时一定要注重代码的可读性:
- 变量命名采用"工位_设备_功能"的格式(如"Cell1_RobotZ_Alarm")
- 每个功能块添加详细的注释说明
- 复杂逻辑用状态机实现,避免深层的IF嵌套
-
伺服调试要循序渐进:
- 先单轴调试,再逐步增加联动轴数
- 记录每个轴的优化参数,建立参数库
- 定期检查伺服驱动器的温度和工作电流
-
系统可靠性需要从多个层面保障:
- 硬件级的信号保护和冗余
- 软件级的异常检测和处理
- 完善的数据备份和恢复机制
这个项目最终实现了电池生产线的全自动化运行,生产节拍达到6秒/件,定位精度控制在±0.05mm以内,扫码成功率99.98%。整个系统已经稳定运行超过半年,证明了欧姆龙NJ系列PLC在复杂运动控制场景下的可靠性。
