☰
基于西门子S7-1200与博图V15的溢流水循环控制系统全流程解析
2026/10/2 10:06:14 网站建设 项目流程

做水处理项目的同行都知道,溢流水的收集和循环是个看着不起眼、做起来全是细节的活儿。我刚交付完一套系统:西门子S7-1200做控制核心,配TP1200触摸屏,软件是博图V15,从电气设计到程序调试全部独立完成。这套系统在客户现场稳定运行了几个月,中间踩了不少坑,也积累了一些值得记录的经验。这篇就把项目从需求拆解、硬件选型、程序编写到触摸屏组态的过程完整梳理一遍,给准备做类似水循环、液位控制项目的朋友一个参考。

1. 溢流水循环系统到底在控什么:需求拆解是第一课

1.1 工艺对象与现场条件

这个项目的工艺对象是厂区生产设备的溢流水收集系统。车间里多台设备产生的溢流水、清洗水统一汇入一个地下集水井,集水井里的水通过提升泵加压,送到厂区回用水管网,供冷却塔补水、地面冲洗等环节使用。整个系统的核心矛盾很简单:来水是不均匀的,各工位排水时间完全随机,而用水端对压力和连续性的要求又相对固定。所以控制系统真正要做的事情,就是在“集水井水位过低会抽空”和“水位过高会溢出”这两个极端之间,找到一个可靠的自动平衡点。

现场条件也需要先说清楚:集水井深度大约3.5米,安装了一台超声波液位计,量程0~3米,输出4~20mA;两台循环泵,一用一备,通过接触器直接启停,单泵功率7.5kW,启动方式是星三角还是直启取决于现场变压器容量,这里因为泵功率不算大,用的是直启;主管道出口还有一个压力变送器,用于监测管网压力。整套系统的核心控制对象就是液位、泵态和报警联动。

1.2 控制需求分三层:手动、自动、远程

接手项目后第一件事不是写程序,而是跟现场负责人确认操作习惯和需求边界。我把需求梳理成三个层级,这直接决定了我后面怎么写程序、怎么组触摸屏画面。

第一层是手动模式,主要用于调试和应急。设备故障时,操作员需要能在触摸屏上强制开停某台泵,完全不理会液位逻辑。第二层是自动模式,也是日常运行的主要模式,要求系统根据集水井液位自动启停泵,并且要考虑两台泵的轮循问题,避免备用泵长期不用锈死。第三层是远程监视,客户后期打算把这套系统接入厂区中控室,所以PLC这边需要预留出远程IO信息的接口和变量,虽然本次不做上位机,但数据结构必须提前留好。

这三层需求分别对应了触摸屏上的手动画面、自动运行画面和系统参数画面。需求拆解这一步多花半天时间,后面编程和调试能少加一个星期的班。

1.3 为什么选S7-1200而不是200 SMART或1500

项目立项时客户表格里写的是“PLC一套”,具体型号没有定。我最初对比过三个方案:S7-200 SMART、S7-1200、S7-1500。

S7-200 SMART价格确实有优势,但考虑到这个项目需要挂触摸屏做动画、后期要数据记录和远程通信,200 SMART的通信能力和数据块管理明显吃力。S7-1500性能过剩,用在两个泵、一个液位计的项目里纯属浪费预算。最终选了S7-1200系列的中端型号CPU 1214C,自带的14点输入10点输出够用,Profinet通信可以直接连TP1200触摸屏,后期扩展Modbus TCP、OPC UA都没有问题,性价比和扩展性正好卡在合适的位置。另外,博图V15对S7-1200固件4.0以上的支持非常成熟,调试工具也比200 SMART的Micro/WIN顺手得多。

2. 硬件选型与电气设计:这些细节决定了现场会不会哭

2.1 PLC与模块选型:注意CPU自带AI的坑

CPU选择的是西门子S7-1200 CPU 1214C DC/DC/DC(6ES7214-1AG40-0XB0),供电24V DC,晶体管输出,14DI/10DO。这里有个特别容易踩的坑:1214C CPU本体的性能数据里写着集成2路模拟量输入,但那2路AI是0~10V电压型的。现场的液位计和压力变送器全是4~20mA电流信号,直接接CPU自带AI要么烧通道要么测不准,必须加电流转电压的电阻,这种做法抗干扰能力又很差。

所以我又加了一块SM1231模拟量输入模块(6ES7231-4HD32-0XB0),8路AI,每个通道可以组态成4~20mA模式。液位计接AI0,压力变送器接AI1,剩下6路备用。多花一块模块的钱,换来了后期接线和调试的极大省心。如果每次换仪表都要去考虑量程和信号类型,那项目周期会拖得很长。

2.2 TP1200触摸屏:为什么不用精简面板

触摸屏选的是TP1200 Comfort(6AV2124-0MC01-0AX0),12寸宽屏,1280x800分辨率,带Profinet接口。这个系列的屏在博图V15里组态非常方便,而且我最看重它三点:

一是画面动画能力强。TP1200支持矢量图形、多边形、透明度调整,做工艺流程图时可以把水箱、管道、泵画得接近真实效果。精简面板的图形库和动画支持弱很多,画出来的画面像工程草图,客户验收时不好看。二是数据记录功能完整。TP1200可以把液位历史数据和报警记录存到外部存储卡或者通过存储介质导出,精简面板只能存很短时间的数据。三是触摸屏本身带两个Profinet接口,可以做网络级联,后期加中控系统时不用额外加交换机。

2.3 仪表、泵与阀门的选型搭配

液位计用的是超声波液位计,量程0~3米,4~20mA输出,盲区0.3米。选超声波是因为集水井里可能含有杂质和油污,静压式液位计在这种工况下容易被沉淀物覆盖导致读数漂移。安装时要注意超声波液位计的探头必须避开进水管的正上方,否则来水冲击产生的泡沫会严重影响回波信号,这一条是厂家不会主动告诉你但现场极容易出问题的细节。

循环泵两台,一用一备,配施耐德接触器和热继电器,热继电器的常闭触点串入PLC的DI输入用于泵故障检测。主管道出口的压力变送器量程0~1.6MPa,4~20mA输出,接到SM1231的AI1通道。

这里我刻意没有用变频器,而是用接触器直启。原因很简单:系统对压力精度没有闭环要求,泵是连续运行的,液位控制靠启停泵实现,用变频器徒增成本和干扰源。但电气设计时我还是把进线断路器、接触器、热继电器的额定电流都按7.5kW电机的参数核算过,控制回路单独用了2A的微型断路器,信号线做了单独的端子排分区。

2.4 电气柜布线与接地的几条规矩

电气柜是自己配的,装配过程里总结了几条原则,这些都是吃过亏换来的:

模拟量线路必须用屏蔽双绞线,而且屏蔽层只能单端接地,接在柜内接地排上。我第一次做类似项目时屏蔽层两端都接,结果现场出现50Hz工频干扰,液位数值满量程跳动,后来改成单端接地才恢复正常。

动力线和信号线在柜内要分槽走,不能扎在一起。泵启停时接触器吸合瞬间会有很大的电流冲击,如果信号线跟动力线并行,感应出来的干扰会直接影响模拟量通道。

PLC的24V电源不要直接跟接触器线圈共用一个开关电源,我加了独立的24V电源给传感器和模拟量模块供电。虽然成本多一点,但液位计的稳定性提升非常明显。

接地系统一定做好:柜体接地、PLC的M端接地、屏蔽层接地排三者之间保持合理的接地关系。现场如果接地混乱,PLC的模拟量通道损坏率会大幅上升。

3. 博图V15里的程序实现:从硬件组态到联锁逻辑

3.1 项目创建与硬件组态特别说明

博图V15创建新项目,先在“添加新设备”里选择控制器,CPU 1214C DC/DC/DC,固件版本选择V4.2。然后添加HMI设备,选择TP1200 Comfort,固件版本保持默认。

组态时IP地址分配要提前规划好。我给PLC分配的是192.168.0.1,触摸屏192.168.0.2,子网掩码255.255.255.0。必须在同一个网段内,否则Profinet通讯会自动失败。在博图里把PLC和触摸屏都拖进同一个Profinet子网,系统会自动建立通信连接,后面在触摸屏组态时就能直接引用PLC变量。

硬件组态完成后,重点检查一下SM1231模块的通道设置。每个通道右边有个“测量类型”下拉框,要把集成AI0到AI1通道都选成“4~20mA”,以及积分时间选成可设置的执行时长,不能保持默认的电压模式。这一步漏了,现场接上液位计后读数会是错误的。

编译比对后硬件部分就完成了。特别提醒,V15的软件编译常常会报一些“信任中心”的安全性提示,比如访问PLC时要求授权,直接确认即可,不影响实际使用。

3.2 模拟量采集与工程量换算:NORM_X和SCALE_X的正确用法

模拟量处理是整个程序的基础,液位转换不对,后面所有逻辑都是空中楼阁。S7-1200的模拟量原始值范围是0~27648,对应4~20mA。必须明确,4mA对应0,而不是5530之类的偏移值。我在初学时就因为搞错了这个对应关系,出现过液位始终显示2.3米左右的怪事。

标准做法是在OB1里调用NORM_X和SCALE_X两个指令:

// 液位原始值来自IW64,量程0~3米 #RawValue := "HMI液位原始值".IW64; "NORM_X" (MIN := 0, MAX := 27648, VALUE := #RawValue); // 输出归一化结果 0.0~1.0 "SCALE_X" (MIN := 0.0, MAX := 3.0, VALUE := #NormValue); // 缩放到 0.0~3.0 米

这里说句掏心窝的话:很多人习惯用除法公式自己写换算,但博图的原生指令做归一化缩放要严谨得多,尤其是处理限幅和溢出边界时。用NORM_X/SCALE_X,MIN和MAX填模拟量模块的量程参数,VALUE填IW地址,输出直接就是工程量浮点数,后来读程序维护的人也更习惯这种写法。

同样的处理也用在压力变送器上,只是量程上限改成1.6MPa。

3.3 泵的自动启停与死区控制

自动模式下,泵的启停规则我用梯形图实现,逻辑节点如下:

当液位大于等于1.5米时,自动启动一台泵开始排水;当液位继续上升到2.0米时,启动第二台泵,两台泵同时工作加大排水量;当液位降到0.8米时,先停第二台泵;降到0.5米时,停最后一台泵,全系统进入待机状态。

这套逻辑看起来简单,但有个致命的工程问题:液位在启动值附近上下波动时,泵会频繁启停。集水井来水是断续的,液位在1.5米附近来回晃动时,1号泵每分钟启停好几次,电机和接触器都受不了。

解决办法就是死区控制,我使用了比较指令配合中间变量,设置启动值1.5米,停止值0.8米,两者之间0.7米的区间就是滞回死区。液位从低到高,越过1.5米才启动;液位从高到低,降到0.8米才停止。瞬时波动被完全过滤掉,实际运行中泵的每天启停次数从二十多次降到五六次,效果立竿见影。

3.4 两台泵的轮循切换与累计运行时间

一用一备的泵如果不做轮循,就会出现1号泵常年运行、2号泵几乎不动的现象。故障高发泵永远是那台常转的,备用泵锈死了也不知道。我这里是做了轮循逻辑的:

在数据块DB1中建立两台泵的累计运行时间变量,类型为TIME。每次泵的运行状态从0变为1时,用TON指令累计运行时间,TON的PT端按固定周期累加到累计变量中。当系统需要新启动一台泵时,程序会比较两台泵的累计运行时间,优先启动累计时间较短的那台。

用TIA的SCL写会非常直观:

IF #StartRequest AND NOT #Pump1_Running AND NOT #Pump2_Running THEN IF #Pump1_AccTime <= #Pump2_AccTime THEN #Pump1_Start := TRUE; ELSE #Pump2_Start := TRUE; END_IF; END_IF;

停机侧的逻辑是另一套判断,哪台泵是先启动的,停机时就先停哪台,始终保持两台的运行时间趋于均衡。同时我在触摸屏上设置了“轮循允许”的开关,客户维护时可以强制指定只用某台泵,这个灵活性在后期运维中是加分项。

3.5 联锁与保护逻辑:宁可停机,不能出事

保护逻辑是程序的底线,这部分我做得比较保守,所有保护信号触发后必须在触摸屏上手动复位才能重新启动。

低液位保护:液位低于0.5米时,不允许任何泵启动,防止泵抽空损坏机械密封。已经运行的泵如果液位跌到0.5米,10秒内自动停止。

高液位报警:液位超过2.5米时触发高液位报警,触摸屏报警画面闪烁,同时打开集水井紧急排水电磁阀,加大排水通道能力(也就是把直排阀打开,但这是按客户环保要求设置的一个允许动作开关)。

高高液位联锁:液位超过3.0米时,意味着所有自动排水手段都失效,立即停止向回用水管网供水,防止溢流水大量溢出地面。这个联锁信号同时在PLC面板上点亮红色指示灯。

泵故障联锁:热继电器动作后,PLC通过DI输入收到信号,自动停止当前泵。如果另一台泵没有在运行,10秒后自动启动备用泵。这个切换逻辑必须要有延时,避免热继电器动作瞬间马上启动另一台泵造成机械冲击。

所有这些联锁动作都有对应的M变量,再传输到触摸屏报警组态中,确保每一类故障都可视化、可追溯。

4. TP1200触摸屏组态:画面好看和好用同样重要

4.1 建立HMI连接与变量映射

触摸屏组态的第一步是在博图左侧项目树中选中TP1200,双击“连接”,新建一个Profinet连接,连接对象指向PLC。连接建立后,在面对画面编辑时可以直接把PLC变量拖拽到画面上,博图会自动在HMI变量表里生成关联变量。

这里有个关键点:HMI变量的采集周期一定要主动设置。默认的采集周期有时是很慢的,液位模拟量变量建议设置采集周期为1秒或者100毫秒,泵状态等开关量设置成100毫秒。如果全部使用默认周期,画面上液位数据会明显滞后,操作手感迟钝。

4.2 主画面工艺流程图的制作思路

TP1200的画面尺寸为1280x800,我做了四张主画面:运行监视画面、手动操作画面、参数设定画面、报警记录画面。

运行监视画面是整个触摸屏的门面,我做成了工艺流程图。具体画法是用TP1200图形编辑器里的“矩形”和“圆”工具画集水井、两台水泵和管道干线,水泵运行状态用颜色变化体现——运行中为绿色,停止为灰色,故障为红色。液位用矩形填充动画表示,填充程度绑定液位工程量变量。管道中增加箭头符号,泵运行后箭头变色并做流动效果。这些动画配置都在对象属性面板中绑定变量和取值范围,非常成熟,不需要脚本。

4.3 手动操作画面与防误触设计

手动操作画面是给现场操作员用的,按钮布局必须清晰。每台泵设置“启动”“停止”按钮,对应PLC程序里的手动启动/停止M变量。设备状态用运行指示灯和故障指示灯表示。

这里必须设计互锁逻辑:手动操作画面只在手动模式下有效。如果系统处于自动模式,即使操作员误触启动按钮,PLC程序侧也做了逻辑互锁,手动启动M变量只有在“手动模式”这个公共条件为真时才可能动作。触摸屏上我也做了安全性设置,把按钮对象的“允许操作”属性绑定到模式变量,自动模式下按钮置灰不可点。双重保险,杜绝了模式切换后误触发的风险。

4.4 报警组态与数据记录:把故障留痕

报警功能用了TP1200的离散报警系统。在HMI报警管理中新建报警类别,把PLC程序中的各个报警M变量拖过来,设置报警文本,比如“集水井高液位报警”、“1号泵热继电器动作”。报警画面里再插入报警视图控件,操作员可以按时间顺序查看故障记录、确认报警。

数据记录部分我用了TP1200的“数据日志”功能。新建一个数据日志,把液位、压力、两台泵的运行状态按10秒的周期写入日志文件,存储到触摸屏的USB存储介质或存储卡上。要注意TP1200的缓冲区默认只存最后一份文件,必须把归档路径指向外部存储卡,否则断电后数据就会清空。这个坑我在验收前几天才暴露出来,差点没赶上交付。

5. 现场调试:四个最典型的坑和排查办法

5.1 液位信号跳动的治理

第一次通电调试时,触摸屏上的液位数值在1.2米到2.8米之间来回跳动,完全没有稳定趋势。我拿着万用表从传感器端子一直量到SM1231模块端子,信号电流稳定在12mA左右,说明传感器和线路本身没问题。

问题出在接地和线缆走线。现场的超声波液位计信号线是从地下集水井直接穿管进柜的,穿线管是金属管,但和柜体接地排没有可靠连接,相当于屏蔽层没有真正接地。我把穿线管和柜体之间用接地编织线做了可靠连接,同时在传感器处把屏蔽层悬空、PLC侧单端接地,重新上电后液位数值稳定在1.35米,纹丝不动。

5.2 泵频繁启停的解决方法

自动跑了一个小时,1号泵的接触器响了十几次,我在旁边听得心惊胆战。前面说过,这就是死区没做够。我把启动值从1.5米往下调了0.7米作为停止值,一开始甚至想用0.5米的死区,但集水井的来水波动幅度偶尔能达到0.6米左右,保守起见给了0.7米死区,实际效果非常理想。

另外泵启动后我加了一个“最小运行时间”逻辑,泵一旦启动至少要运行120秒才能被液位降低逻辑停止,这样即使用边沿信号触发了停机条件,也不会造成电机反复热启停。

5.3 Profinet通信掉线排查

调试过程中触摸屏上出现过一次“连接中断”的红色提示横幅。排查过程从网线、交换机、IP地址三个方向进行。先看PLC和触摸屏的以太网口指示灯,发现触摸屏的Link灯不亮,判断是物理链路问题。检查发现,触摸屏后面的网线接头在某次整理线束时被拽松了一点点,插紧后重上电恢复正常。

以后每次通电前我都会先看一眼屏右上角的连接状态图标,比等到报警弹出来再处理省心得多。

5.4 触摸屏数据归档丢失的坑

前面提到过,TP1200默认的数据日志缓冲区很小,只能存最近一份。有一次客户反映历史液位曲线只有当天数据,往前翻全是空的。追查发现数据日志的存储位置指的是“内部缓冲区”,断电后内容丢失。

解决方法是在触摸屏的“运行系统设置”里的“存储介质”中,把数据日志存储路径改为“存储卡/USB”,也就是插一张标准SD卡或U盘在触摸屏上。改完后再写数据日志,断电重启历史数据仍然完好。这个配置必须在项目下载前就设置好,不然后期改需要重新传项目,影响不大但费时间。

6. 项目收尾的几点个人体会

这套系统从设计到投运,前后用了一个月时间。回忆整个过程,最深的体会是所有看似细小的疏忽最后都会在调试和试运行阶段加倍偿还。模拟量滤镜、触点脉冲滤波、死区设置这种事前看起来都是“差不多就行”的参数,现场却往往成了决定成败的关键。因此项目执行时,建议至少预留10%以上的程序调试时间,不要总把节点压满,给自己留出处理突发情况的余量。

另外想分享一个小技巧:在博图V15里写完所有程序块和画面后,做一次完整的“离线/在线比对”和全项目编译。编译日志里的警告信息逐条看一遍,很多隐患在编译阶段就能发现,比现场硬件报警要好受得多。我这次还把项目文件放在版本管理工具里,每完成一个阶段就提交一次记录,后期排查问题时能快速定位程序变化点,强烈推荐。

最后说下扩展可能性。客户后来问过能不能把数据接到中控室,我在设计时特意在DB里把所有报警和运行数据都预留成了结构体变量,后续启用S7-1200的OPC UA服务器功能,或者通过Modbus TCP把数据透传出去,都是几分钟就能完成的事。一开始多留一步,后面就少折腾一轮,这就是做自动化项目最划算的投资。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询