1. 项目背景与系统概述
在工业自动化控制领域,溢流水循环系统是许多生产流程中不可或缺的环节。这类系统常见于化工、食品加工、水处理等行业,主要用于控制液体介质的循环流动、液位调节和温度控制。西门子S7-1200系列PLC因其出色的可靠性和灵活的扩展能力,成为这类控制系统的主流选择。
本次实践项目构建了一套完整的溢流水循环控制系统,核心硬件采用:
- 西门子S7-1214C DC/DC/DC PLC(6ES7 214-1AG40-0XB0)
- TP1200 Comfort触摸屏(6AV2 124-0GC01-0AX0)
- SM1231模拟量输入模块(6ES7 231-4HD32-0XB0)
- SM1232模拟量输出模块(6ES7 232-4HD32-0XB0)
软件环境使用TIA Portal V15.1(博图)进行组态编程,这个版本在稳定性与功能完整性之间取得了良好平衡,特别适合中小型自动化项目开发。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件配置与网络组态
2.1 PLC硬件选型考量
选择S7-1214C CPU主要基于以下实际需求:
- 需要处理4路模拟量输入(液位、温度、流量、压力)
- 2路模拟量输出(调节阀、变频器控制)
- 14点数字量输入(包括急停、手动/自动切换等)
- 10点数字量输出(泵控制、报警指示灯等)
- 未来可能的Modbus RTU从站扩展需求
在博图V15.1中新建项目时,需要注意:
必须正确选择CPU的具体型号后缀(DC/DC/DC或AC/DC/RLY),否则可能导致后续硬件配置错误。我们使用的6ES7 214-1AG40-0XB0支持24V DC电源、晶体管输出,适合快速开关的阀门控制。
2.2 TP1200触摸屏参数设置
TP1200 Comfort触摸屏与PLC采用Profinet通信,在博图中组态时需要特别注意:
- 在"网络视图"中添加新设备,选择"HMI"→"SIMATIC HMI Comfort Panel"→"TP1200 Comfort"
- 设置IP地址(如192.168.0.2)与PLC(192.168.0.1)在同一网段
- 配置HMI连接属性时,务必勾选"允许来自远程伙伴的PUT/GET通信"
实际项目中遇到的典型问题:
- 触摸屏上某些按钮无响应:检查HMI连接中是否启用了"优化块访问",需要取消勾选
- 数值显示####:通常是因为变量连接的数据类型(如Real)与HMI画面元素设置的类型(如Int)不匹配
2.3 模拟量模块的接线与配置
对于SM1231模拟量输入模块(6ES7 231-4HD32-0XB0):
- 液位变送器(4-20mA)接线:正极接M+,负极接M-
- 在硬件配置中设置测量类型为"电流(4-20mA)"
- 启用通道的"开路检测"功能,便于故障诊断
SM1232模拟量输出模块(6ES7 232-4HD32-0XB0)配置要点:
- 输出类型选择"电流输出"更适合控制调节阀
- 在"输出参数"中设置0-27648对应4-20mA输出
- 建议启用"输出替代值",当CPU进入STOP模式时输出安全值
3. PLC程序设计详解
3.1 主程序OB1的结构设计
采用模块化编程思想,将不同功能分配到多个FC/FB中:
pascal复制// OB1主循环程序示例
NETWORK 1: 系统初始化
CALL "初始化系统" (FC1)
NETWORK 2: 模拟量处理
CALL "模拟量采集处理" (FC2)
NETWORK 3: PID控制
CALL "PID_液位控制" (FB1)
NETWORK 4: 报警处理
CALL "报警管理" (FC3)
NETWORK 5: HMI通信
CALL "HMI数据交换" (FC4)
3.2 关键功能块实现
3.2.1 液位PID控制(FB1)
使用西门子标准PID控制指令"PID_Compact",关键参数设置:
- Input/Output参数映射到实际的模拟量通道
- Input_PER:液位变送器的模拟量输入地址(如IW64)
- Output_PER:调节阀的模拟量输出地址(如QW80)
- Cycle时间设置为100ms(与OB35循环中断一致)
调试技巧:
先设置Manual模式,通过HMI手动输出20%→40%→60%→80%的阀门开度,观察液位响应曲线,据此调整P、I、D参数。一般先调P使系统有快速响应但不振荡,再加I消除静差,最后加D抑制超调。
3.2.2 模拟量滤波处理(FC2)
针对可能存在的信号干扰,在程序中进行软件滤波:
pascal复制// 模拟量滤波算法(移动平均)
#TempValue := "液位原始值"; // IW64
#FilterBuffer[#Pointer] := #TempValue;
#Pointer := (#Pointer + 1) MOD 8; // 8次移动平均
#FilteredValue := 0;
FOR #i := 0 TO 7 DO
#FilteredValue := #FilteredValue + #FilterBuffer[#i];
END_FOR;
"液位滤波后" := #FilteredValue / 8; // DB1.DBD20
3.3 报警功能实现
采用西门子ALARM_8P指令实现多路报警:
- 在PLC数据类型中定义报警结构:
pascal复制TYPE "AlarmType" : STRUCT AlarmID : WORD; // 报警编号 Message : STRING[50]; // 报警文本 Priority : BYTE; // 优先级1-16 END_STRUCT - 在DB中创建报警数组:
pascal复制"AlarmDB".Alarms : ARRAY[1..20] OF "AlarmType" - HMI画面上添加报警视图控件,绑定到该报警DB
4. HMI界面设计与功能实现
4.1 主画面布局设计
TP1200 Comfort触摸屏采用800x480分辨率,主画面应包含:
- 顶部状态栏:显示当前时间、系统模式、用户权限
- 中央工艺流程图:动态显示液位、流量等关键参数
- 底部导航区:切换到操作、参数、报警等子画面
关键设计技巧:
- 使用矢量图形而非位图,确保缩放不变形
- 重要操作按钮(如急停)使用红色并放置在固定位置
- 数值显示带单位(如"液位:2.5 m")
4.2 画面元素动态连接
示例:液位指示条的属性设置:
- 添加"矩形"图形,设置其"高度"动画属性
- 变量连接至"液位滤波后"(DB1.DBD20)
- 设置线性标定:0-100%对应0.0-5.0米量程
- 添加颜色梯度:绿色(0-70%)、黄色(70-90%)、红色(>90%)
4.3 配方功能实现
针对不同产品规格,使用配方管理:
- 在HMI变量表中创建配方数据块
- 添加配方视图控件,设置:
- 数据源:选择配方DB
- 列配置:映射到各工艺参数
- PLC端通过"RecipeExport"/"RecipeImport"指令读写配方
5. 系统调试与故障排查
5.1 通信故障诊断
常见Profinet通信问题及解决方法:
-
PLC与HMI无法通信:
- 检查物理连接:网线是否插好,交换机指示灯状态
- 验证IP设置:ping测试两端IP是否可达
- 查看PLC诊断缓冲区:是否有通信错误记录
-
通信时断时续:
- 检查网络负载:使用Wireshark抓包分析
- 调整Profinet设备的"看门狗时间"参数
- 考虑添加网络拓扑中的终端电阻
5.2 模拟量信号异常处理
典型问题排查流程:
-
信号值为0:
- 检查变送器供电(24V)
- 测量端子电压/电流是否正常
- 确认模块通道是否激活
-
信号波动大:
- 检查屏蔽层是否单端接地
- 添加信号隔离器
- 在程序中增加滤波算法(如前述移动平均)
5.3 PID控制优化技巧
现场调试经验:
-
先手动测试被控对象特性:
- 给阶跃输入(如阀门开度20%→30%)
- 记录液位变化曲线,估算滞后时间和增益
-
使用Ziegler-Nichols方法初步整定:
- 先设Ti=∞,Td=0,逐渐增大Kp至临界振荡
- 记录临界增益Kc和振荡周期Pc
- 按公式计算PID参数:Kp=0.6Kc, Ti=0.5Pc, Td=0.125Pc
-
精细调整:
- 超调量大:适当减小Kp或增大Td
- 响应慢:增大Kp或减小Ti
- 考虑添加前馈补偿(如流量变化时提前调节阀门)
6. 项目总结与进阶建议
经过两周的现场调试,这套溢流水循环系统已稳定运行三个月,主要技术指标:
- 液位控制精度:±0.05米(设定值2.5米时)
- 系统响应时间:<30秒(从设定值变化到稳定)
- 平均无故障时间:>1500小时
值得分享的几点经验:
- 在硬件配置阶段,务必确认所有模块的订货号与实际设备一致,我们曾因错选AC/DC/RLY型号导致输出点烧毁
- 模拟量信号建议采用独立的屏蔽双绞线,并与动力电缆保持至少30cm距离
- PID参数整定时,建议保存多组参数到HMI配方,便于不同工况下切换使用
对于更复杂的应用场景,可考虑以下扩展:
- 添加Web服务器功能,通过PC浏览器远程监控
- 集成OPC UA接口,与上位MES系统对接
- 使用SCL语言实现高级算法(如模糊PID控制)
