1. 项目背景与问题诊断
上周我去郊区一家饲料厂拜访时,正巧碰上他们的老师傅在调试皮带秤配料系统。现场情况相当棘手——几种原料的配比严重不准,秤体晃动得像筛糠一样。作为有十多年工控经验的工程师,我当即决定用随身携带的S7-200 PLC进行系统改造。
这个配料系统的核心需求其实很简单:将玉米粉、豆粕等原料按精确比例混合。但问题在于,传统PID控制在长期运行后会出现严重偏差。主要原因有三:
- 机械磨损:皮带使用2-3周后会变薄变松,导致计量误差
- 物料特性:不同批次的原料含水量不同,容易粘附在料仓内壁
- 环境干扰:车间温度变化影响传感器精度
这些因素导致老师傅需要频繁调整变频器参数,平均每周要花费4-5个小时进行校准,严重影响了生产效率。
2. 系统架构设计
2.1 硬件配置方案
我保留了原有的机械结构,主要对控制系统进行升级:
- 主控单元:西门子S7-200 CPU224XP
- 称重传感器:梅特勒-托利多SB系列,量程500kg
- 测速编码器:欧姆龙E6B2-CWZ6C,2000脉冲/转
- 人机界面:西门子KTP700 Basic触摸屏
这个配置既保证了系统稳定性,又控制了改造成本。特别选择了CPU224XP型号,因为它自带模拟量输入输出,省去了扩展模块。
2.2 IO分配优化
现场IO配置遵循"够用就好"原则:
| 地址 | 功能描述 | 设备连接 |
|---|---|---|
| I0.0 | 系统启动按钮 | 操作台绿色按钮 |
| I0.1 | 紧急停车 | 操作台红色蘑菇头 |
| I0.3-5 | 料仓料位低报警 | 料位开关 |
| I0.7 | 编码器脉冲输入 | 测速编码器A相 |
| AIW0 | 称重信号输入 | 称重传感器4-20mA |
| Q0.0 | 主皮带电机控制 | 变频器启停端子 |
| Q0.1-3 | 料仓卸料电机控制 | 接触器线圈 |
| AQW0 | 皮带速度调节 | 变频器模拟量输入 |
这样的分配逻辑清晰,便于后期维护。特别将关键点如急停按钮接到固定地址,避免程序修改时误操作。
3. 核心控制算法实现
3.1 基础PID控制框架
先建立基本的PID控制模型:
code复制流量偏差 = 设定流量 - 实际流量
PID输出 = Kp×偏差 + Ki×∫偏差dt + Kd×d(偏差)/dt
其中关键参数初始值:
- 比例系数Kp=0.8
- 积分时间Ti=30s
- 微分时间Td=5s
这些参数通过现场试凑法确定,先给一个保守值,再逐步优化。
3.2 模糊自适应改进
传统PID的痛点在于参数固定,无法适应工况变化。我设计的模糊修正策略包含两个维度:
- 偏差等级:根据|偏差|大小分为5档(微小/小/中/大/超大)
- 变化趋势:根据d(偏差)/dt分为3种(改善/稳定/恶化)
通过实验确定的修正规则表:
| 偏差等级 | 变化趋势 | Kp调整 | Ki调整 | Kd调整 |
|---|---|---|---|---|
| 微小 | 改善 | -5% | +10% | 0 |
| 小 | 稳定 | 0 | 0 | 0 |
| 中 | 恶化 | +15% | -20% | +30% |
| ... | ... | ... | ... | ... |
这种简化的模糊控制既保证了响应速度,又不会过度消耗PLC资源。
4. 关键程序实现细节
4.1 速度测量处理
皮带速度测量使用高速计数器,核心代码:
stl复制Network 1: 速度测量初始化
LD SM0.1 // 首次扫描周期
MOVB 16#F8, SMB47 // 允许计数+复位+启动
MOVW 16#0000, SMD48 // 当前值清零
HDEF 1, 9 // 模式9:AB相4倍频
HSC 1 // 启动HSC1
Network 2: 速度计算
LD SM0.0
MOVD HC1, AC0 // 读取计数值
MOVW AC0, VW100 // 存储本次读数
SUBW VW102, VW100, VW104 // 计算脉冲增量
MOVW VW100, VW102 // 更新上次读数
MOVR VW104, LD0 // 转实数计算
*R 0.0018, LD0 // 脉冲转速度(m/s)
实际应用中增加了滑动平均滤波,避免瞬时干扰:
stl复制MOVR LD0, LD2 // 新采样值 *R 0.2, LD2 // 加权系数0.2 *R 0.8, LD4 // 上次值权重0.8 +R LD2, LD4 // 更新滤波值
4.2 重量信号处理
称重信号处理的关键在于动态校准:
stl复制Network 3: 重量计算
LD SM0.0
MOVW AIW0, AC0 // 读取模拟量
ITD AC0, AC0 // 转双整数
DTR AC0, LD10 // 转实数
/R VW200, LD10 // 校准系数(可在线修改)
MOVR LD10, VD100 // 存储当前重量
现场校准技巧:
- 空载时记录AIW0值作为零点
- 放置已知重量(如200kg砝码)记录AIW0值
- 计算校准系数 = (砝码值)/(砝码读数-零点)
4.3 模糊PID实现
核心控制算法分段实现:
stl复制Network 4: 偏差计算
MOVR VD200, LD0 // 设定流量(kg/s)
MOVR VD100, LD2 // 实际重量(kg)
MOVR VD104, LD4 // 上次重量(kg)
-R LD2, LD0 // 当前偏差
MOVR LD0, VD108 // 存储偏差
-R VD112, LD0 // 偏差变化=当前-上次
MOVR VD108, VD112 // 更新上次偏差
Network 5: 模糊规则应用
// 偏差等级判断
LDW>= VD108, 50.0 // 偏差>50kg?
JMP BigError // 跳转大偏差处理
...
Network 6: PID计算
// 比例项
MOVR VD108, LD0
*R VD300, LD0 // VD300存储Kp
MOVR LD0, VD320 // 比例输出
// 积分项
+R VD108, VD304 // 累计偏差
MOVR VD304, LD0
*R VD308, LD0 // VD308存储Ki
+R LD0, VD320 // 累加到输出
// 微分项
MOVR VD108, LD0
-R VD112, LD0 // 偏差变化
*R VD316, LD0 // VD316存储Kd
+R LD0, VD320 // 累加到输出
5. 人机界面设计要点
5.1 操作界面布局原则
根据车间环境特点,界面设计遵循:
- 高对比度:黑底黄字,确保昏暗环境下可读
- 关键参数突出:流量设定值使用大号字体
- 状态可视化:用颜色变化反映设备状态
5.2 主要画面功能
-
主监控画面:
- 实时流量曲线(10分钟历史)
- 三个料仓的料位指示灯
- 皮带运行状态指示
-
参数设置画面:
- PID参数调整界面
- 校准功能入口
- 配方选择下拉菜单
-
报警历史画面:
- 按时间排序的报警记录
- 报警确认按钮
6. 现场调试经验
6.1 常见问题排查
-
流量波动大:
- 检查皮带张力(用手按压应有2-3cm变形)
- 确认编码器联轴器无松动
- 观察称重传感器安装螺栓是否过紧
-
校准后仍有偏差:
- 进行空皮带运行校准(补偿皮带自重)
- 检查传感器供电电压(确保24V±5%)
- 测试模拟量线路压降(全程应<0.1V)
6.2 参数整定技巧
- 先调Kp至系统开始振荡,然后减半
- 再调Ti,观察消除静差的速度
- 最后加少量Kd改善动态性能
- 保存多组参数应对不同原料特性
7. 系统改进建议
-
机械方面:
- 增加皮带自动张紧装置
- 料仓加装振动器防粘壁
- 称重段改用悬浮式结构
-
控制方面:
- 增加原料水分补偿算法
- 实现配方自动切换功能
- 添加远程监控接口
这次改造最大的体会是:好的自动化系统不是算法越复杂越好,而是要深入理解工艺需求,用最简单的方案解决最实际的问题。现在老师傅们已经能独立操作这个系统,生产效率提升了30%,这就是最好的验收标准。