1. 项目概述:新能源物料精准输送系统
在新能源电池材料生产线上,物料的精准配比和输送直接关系到最终产品的性能一致性。最近完成的这个项目,核心目标是通过西门子PLC系统实现锂电前驱体材料的动态称重与闭环控制。系统采用S7-1200 PLC作为主控制器,配合昆仑通态TP7062Ti触摸屏作为人机界面,托利多IND560称重仪表负责实时采集输送带上的物料重量。
这个系统的技术难点在于同时处理RS485数字通讯和模拟量信号控制。RS485用于与称重仪表进行Modbus协议通讯,获取高精度的重量数据;模拟量输出则用于控制变频器驱动输送带电机。两种信号类型在工业现场容易相互干扰,特别是当大功率设备启停时,电磁干扰会导致通讯异常或信号失真。
2. 硬件架构与关键配置
2.1 硬件选型与拓扑结构
主控单元选用西门子S7-1214C DC/DC/DC PLC,具备:
- 集成式14点数字量输入/10点输出
- 2路模拟量输入(0-10V)和2路模拟量输出(0-20mA)
- 内置RS485通讯端口(支持Modbus RTU主站)
称重系统采用托利多IND560仪表,主要特性:
- 最大称重300kg,分辨率0.01kg
- 支持Modbus RTU从站协议
- 提供4-20mA模拟量输出(可选)
通讯网络采用屏蔽双绞线,终端电阻配置至关重要:
- PLC端:在端口A+/B-之间并联120Ω电阻
- 仪表端:同样配置120Ω终端电阻
- 屏蔽层单端接地(PLC侧)
注意:终端电阻配置不当会导致信号反射,表现为通讯时断时续。曾有个案例因漏接终端电阻,导致通讯成功率从99.9%骤降至70%。
2.2 信号隔离与抗干扰设计
由于现场有大功率变频器运行,采取了以下防护措施:
- 通讯线路:使用双层屏蔽电缆,外层屏蔽层接地,内层屏蔽层浮空
- 模拟量线路:采用信号隔离器(迈确MT-IL-01)将PLC输出与变频器输入隔离
- 电源系统:PLC与仪表使用不同相位的电源供电,避免共模干扰
3. 软件设计与核心逻辑实现
3.1 Modbus通讯配置
在TIA Portal中配置Modbus RTU主站:
pascal复制// 硬件组态参数
MB_MASTER_DB := "Modbus_Comm_DB";
PORT := HMI连接_1; // 使用CM1241 RS485模块
BAUD := 19200;
PARITY := 'EVEN';
DATA_BITS := 8;
STOP_BITS := 1;
数据读取逻辑采用自触发方式,避免使用定时器资源:
pascal复制// OB1循环执行块
IF "HMI".AutoMode THEN
"MB_MASTER".REQ := NOT "MB_MASTER".DONE; // 自动触发下一次读取
"MB_MASTER".MB_ADDR := 16#01; // 仪表站地址
"MB_MASTER".MODE := 0; // 读模式
"MB_MASTER".DATA_ADDR := 40005; // 净重值寄存器
END_IF;
3.2 称重数据处理
托利多仪表返回32位浮点数,需要特殊处理:
pascal复制// 将两个16位寄存器合并为32位浮点数
"DB_Scale".ActualWeight :=
REAL_TO_DWORD(
DWORD_TO_REAL(
SHL(IN := "MB_MASTER".DATA_WORD[0], N := 16) OR
"MB_MASTER".DATA_WORD[1]
)
);
动态速度控制算法:
pascal复制// 根据重量偏差调整输送带速度
#Weight_Error := "DB_Scale".ActualWeight - "HMI".TargetWeight;
"FeedConveyor".Speed :=
LIMIT(
MIN := 30.0, // 最低速度30%
MAX := 100.0, // 最高速度100%
VALUE := "HMI".BaseSpeed + (#Weight_Error * "HMI".Kp)
);
4. 模拟量信号处理技巧
4.1 信号标准化与死区处理
模拟量输入处理函数:
pascal复制#RawValue := "AI_Channel".RAW; // 读取原始值(0-27648)
#Normalized := #RawValue / 27648.0; // 标准化到0.0-1.0
IF #Normalized < 0.05 THEN // 5%死区处理
#ProcessValue := 0.0;
ELSE
// 将5-20%信号映射到0-100%
#ProcessValue := (#Normalized - 0.05) * (100.0 / 0.15);
END_IF;
4.2 输出信号补偿
针对模拟量输出的非线性问题:
pascal复制// 输出补偿曲线(实测数据拟合)
#OutputCurrent :=
IF #Setpoint <= 20.0 THEN
#Setpoint * 0.98 // 低区补偿
ELSE IF #Setpoint <= 60.0 THEN
#Setpoint * 1.02 - 0.8 // 中区补偿
ELSE
#Setpoint * 1.05 - 2.5 // 高区补偿
END_IF;
"AQ_Channel".RAW := REAL_TO_INT(#OutputCurrent * 27648.0 / 20.0);
5. HMI界面优化策略
5.1 动态数据采样
昆仑通态触摸屏脚本实现智能采样:
lua复制-- 重量数据动态采样控制
local raw = GetTagValue("ActualWeight")
local filter = GetTagValue("FilterBuffer")
if math.abs(raw - filter) > 50 then -- 波动大时
SetTagCycle("WeightSampling", 200) -- 高速采样(200ms)
else -- 稳定状态
SetTagCycle("WeightSampling", 1000) -- 低速采样(1000ms)
end
-- 一阶滞后滤波
FilterBuffer = filter * 0.6 + raw * 0.4
5.2 报警与状态监控
设计了三层报警系统:
- 初级报警:重量偏差>5% - 黄色提示
- 中级报警:通讯中断或偏差>10% - 橙色警告
- 高级报警:设备故障或偏差>20% - 红色急停
6. 系统保护与故障处理
6.1 通讯冗余设计
当RS485通讯故障时的处理逻辑:
pascal复制// 通讯故障计数器
IF "MB_MASTER".ERROR <> 0 THEN
"CommFaultCounter" := "CommFaultCounter" + 1;
IF "CommFaultCounter" >= 3 THEN
"AnalogBackupMode" := TRUE; // 切换至模拟量备用模式
"MB_MASTER".REQ := FALSE; // 停止通讯尝试
"HMI".Alarm := 16#02; // 触发通讯丢失报警
END_IF;
ELSE
"CommFaultCounter" := 0; // 通讯正常时清零计数器
END_IF;
6.2 平滑过渡算法
针对模式切换时的抖动问题:
pascal复制// 模糊过渡算法
IF "AnalogBackupMode" THEN
// 模拟量模式下的速度渐变
"FeedConveyor".Speed :=
"FeedConveyor".Speed * 0.9 +
"HMI".BaseSpeed * 0.1;
ELSE
// 正常控制模式
"FeedConveyor".Speed :=
"FeedConveyor".Speed * 0.7 +
(#CalculatedSpeed * 0.3);
END_IF;
7. 现场调试经验总结
- 接地问题:曾因PLC与仪表接地电位差导致通讯异常,最终采用等电位连接解决
- 信号干扰:大功率设备启动时导致模拟量跳变,增加磁环滤波器后改善
- 机械振动:输送带振动影响称重精度,加装减震垫后波动减少60%
- 环境温度:高温导致仪表漂移,增加通风散热后稳定性提升
实测系统性能指标:
- 称重精度:±0.25% FS
- 通讯稳定性:99.98% (连续72小时)
- 输送量控制精度:±1.5%
- 模式切换时间:<1.2秒(含稳定时间)
这套系统在江西某锂电材料厂运行半年后,产品批次一致性提高了15%,原料浪费减少了8%。最大的收获是验证了数字通讯与模拟控制混合系统的可行性,为类似项目积累了宝贵经验。
