☰
S7-200 PLC+组态王构建火灾报警联动系统实战
2026/10/21 10:19:16 网站建设 项目流程

前阵子帮一个客户的厂区做消防改造,接手的是他们厂房扩建后的火灾自动报警项目。项目不大不小,但牵扯到的点位不少,既有老的烟感温感,又有新加的手报和声光警报器,还要联动排烟风机、防火卷帘和切非电源。客户点名要用西门子S7-200 PLC 加组态王,说厂里电工熟这套,以后好维护。这个项目从头到尾做下来,我把要点和踩过的坑梳理了一份,今天拿来讲讲,给正在做或者准备做类似项目的朋友一个参考。

这套方案的核心思路其实很清晰:PLC负责逻辑运算和联动控制,组态王负责画面监控、数据记录和远程操作。两者通过PPI协议串口通信,组成一套完整的火灾报警控制系统。整套系统适合中小型厂房、仓库、沿街商铺、商场局部区域、学校实验室这类消防点位在几十到两百点以内的场景。如果你也在考虑类似的控制方案,这篇文章会把硬件选型、程序框架、画面组态、联调过程以及常见问题都讲透,照着做就能搭起来。

1. 项目概述与整体设计思路

1.1 这套系统到底要解决什么问题

很多人会觉得火灾报警系统不就是接几个烟感、装个控制器嘛,实际上现场远比想象中复杂。消防改造项目最讨厌的点在于:它不是一个纯粹的新建项目,而是要在原有电气系统、通风系统、给排水系统的基础上做联动改造。这就要考虑各种设备的启停逻辑、电源状态、信号反馈,以及和现场原有设备的接口配合。

用继电器搭逻辑也能做,但真做起来你就会发现几个问题:一个是节点太多,接线密密麻麻,改一个逻辑要动一大堆线;另一个是没有记忆功能,火警发生了想查什么时候报的警、哪个点报的警,翻记录能翻到崩溃。可编程控制器加组态软件这套组合,就是用来解决这两个痛点的。PLC把输入信号收集进来,按照预设的火警判定逻辑去联动输出,同时把状态存进寄存器;组态王在电脑上实时读这些状态,火警发生的时候弹窗口、响警报、记录时间点,还能历史回放。对维护人员来说,设备本身不复杂,操作界面直观,学习成本低。

1.2 为什么选S7-200和组态王这套组合

每次聊到消防系统选型,都会有人问:为什么不用专用消防控制器,或者直接用S7-1200配博途加WinCC?理由说穿了也很实在。

S7-200这个型号虽然早停产了,但在国内的存量巨大,很多厂里的电工、维修工以前就摸过这个,梯型图编程的工具STEP 7-Micro/WIN用起来也顺手。而且市面上二手设备、库存设备非常多,价格便宜,CPU头子几百块就能拿到。对一个预算有限、又要求易维护的中小项目来说,这是很现实的优势。

组态王就更不用说了,它大概是国内工控圈普及度最高的组态软件之一。相较于西门子自家的WinCC,组态王的价格要亲民得多,而且它对S7-200的PPI协议支持非常成熟,驱动稳定,做中小型监控画面绰绰有余。再加上组态王的中文资料、教程、论坛帖子一大堆,遇到问题基本都能自己查到解决方案。这套组合有点像开一台老款手动挡轿车,虽然换挡要自己踩离合,但修起来容易,找谁都会修。

1.3 系统架构与报警联动流程

把系统的数据流和控制流梳理一下,整体架构分三层:设备层、控制层、监控层。

设备层就是实际的现场设备,包括感烟探测器、感温探测器、手动报警按钮、消火栓压力开关等输入设备,以及声光报警器、排烟风机接触器、防火卷帘控制箱、切非电源继电器等输出设备。这些设备在厂区里的分布不同,有些在车间内部,有些在走廊,还有些在配电间,每一路信号都要单独拉线回到PLC柜。

控制层是核心,S7-200 PLC负责采集所有输入信号,执行火警确认逻辑,输出联动控制指令。我用的是继电器输出型的CPU,可以直连220V控制回路里的中间继电器,这样做的好处是强弱电隔离,PLC模块自身更安全。

监控层是组态王运行的工控机,通过串口适配器与PLC通信。组态王实时读取PLC的输入输出状态、内部寄存器数据,画面上显示每个探测点的状态色块,接收报警信息后弹窗并记录日志。操作员可以在画面上一键按下复位按钮,也可以通过用户权限控制来限定哪些人能操作、哪些人只能看。

整个火警流程是:探测器或者手报动作,PLC收到输入信号,延时确认后把结果写进内部继电器,同时联动声光报警器和各类消防设备。组态王在通信周期里读到这些变化值,画面上马上高亮报警点位、弹出报警对象、启动声音提示。这样一套流程走下来,从探头报警到画面弹出,实测延迟不到1秒,完全能满足现场要求。

2. 硬件选型与接线准备

2.1 CPU型号和I/O点位的规划

硬件选型的第一步不是急着买设备,而是先把点位表统计清楚。我拿到这个项目的时候,先让客户把图纸拿来,把所有需要接入的探头和设备一一列出。

当时统计出来的数字大概是这样的:感烟探测器16个点、感温探测器8个点、手动报警按钮6个点、压力开关2个点,合计输入点32个;声光报警器4个、排烟风机2台、送风机1台、防火卷帘4樘(两路控制,上升和下降)、切非电源继电器2个,合计输出点大约15个。另外还预留了几个备用输入点用于未来扩展。

按这个点位数量,选择的是S7-200系列里的CPU 226。这个CPU本体带24输入和16输出,正好40点,输入端子和输出端子都够用,再加上还留了20%左右的冗余量。CPU 226有AC/DC/继电器输出型,供电直接用220V交流电,很方便。如果点位少于20个,CPU 224XP也能应付,但如果做消防这种对扩展有需求的项目,还是建议直接上CPU 226,后续增加点位不费劲。

有几点必须提醒:CPU 226继电器输出的触点容量是2A,看起来不小,但千万不能直接用它去控制大功率设备。排烟风机的接触器线圈、防火卷帘的控制电机,全是感性负载,直接接PLC输出会把触点烧到你怀疑人生。正确做法是PLC输出先驱动中间继电器,中间继电器再驱动接触器线圈,这样PLC输出触点只承受中间继电器几十毫安的电流,寿命就完全不一样了。

2.2 I/O地址分配与规划原则

地址分配看起来是个很简单的事,但分配得合不合理,直接关系到后期查线的效率。我按照“同类型信号集中、按功能分区编号”的原则做了这样一个分配表:

地址信号说明地址信号说明
I0.0-I0.71-8号感烟探测器Q0.0声光报警器1控制
I1.0-I1.79-16号感烟探测器Q0.1声光报警器2控制
I2.0-I2.71-8号感温探测器Q0.21号排烟风机控制
I3.0-I3.31-4号手报按钮Q0.32号排烟风机控制
I3.4-I3.51-2号压力开关Q0.4送风机控制
I3.6-I3.7备用Q0.5-Q0.61号卷帘门上升/下降
Q0.7-Q1.02号卷帘门上升/下降
Q1.1-Q1.43、4号卷帘门控制
Q1.5-Q1.6切非消防电源1、2

这样分配的好处是:感烟、感温、手报各占一个连续的输入区间,查线的时候拿万用表顺着编号一路找就行;输出端把声光、风机、卷帘、切电分类排列,柜内端子排也能对应的整齐排列。写程序的时候,看到I区间的起止地址,能直接判断是哪个区域的哪类探测器,程序的可读性好很多。

2.3 接线细节与抗干扰处理

接线是隐蔽工程,也是最容易埋雷的地方。这次项目我在现场盯了两天,总结了几个对消防系统特别重要的细节。

首先是信号线的选型。探测器和手报的信号线,我统一用的屏蔽双绞线,屏蔽层在PLC柜内单端接地。感烟探测器这类设备输出的信号本质上是开关量,但现场环境的电磁干扰一样会影响PLC输入端的判断,屏蔽双绞线加单端接地是性价比最高的抗干扰手段。

其次是强弱电分离。PLC柜内的220V动力线和24V信号线,必须分槽走,至少间隔20厘米以上。这个要求看起来基础,但现场做配电的师傅有时候图省事,把线捆在一起走,结果就是PLC的输入指示灯乱闪,误报不断。这次的柜子我提前把线槽布置好了,强电走左侧、弱电走右侧,中间有隔板,稳妥。

还有一个细节是输入端的公共端处理。S7-200的输入端子使用的是源型接法还是漏型接法,取决于公共端M接正还是接负。火灾报警系统里大多数探测器输出的是无源常开触点,我统一使用漏型接法,即外部信号从24V正极经过触点回到PLC输入端,PLC公共端M接24V负极。这样每个输入点在没有信号时是0V电平,探测器动作后变成24V电平,判断逻辑干净明确。

输出侧的建议是每一路输出都并联一个续流二极管,或者使用带浪涌吸收的中间继电器。感性负载断电的瞬间会产生高反压,如果不做吸收处理,中间继电器和PLC输出触点会很快烧蚀。有些维护人员不在乎这个,但我见过用了三个月触点就黑掉的案例。

3. PLC程序设计与逻辑实现

3.1 程序整体框架与模块划分

有了硬件点位表,就可以写程序了。S7-200的编程软件STEP 7-Micro/WIN操作起来很简单,关键是程序结构要清晰,因为消防控制逻辑一旦写乱,排查问题的时候非常痛苦。

我的程序结构是:主程序OB1、一个初始化子程序、一个信号采集子程序、一个火警判断子程序、一个联动输出子程序、一个故障检测子程序。各子程序之间通过内部继电器M区和数据寄存器V区来传递状态。

主程序里做的是按顺序调用这些子程序。信号采集子程序把现场的输入信号读进来,暂存到M区;火警判断子程序根据M区的状态去执行判定逻辑;联动输出子程序把判定结果转换成具体的输出动作。这样分层处理的好处是,调试的时候可以单独看某一步的结果,是哪一层出了问题一目了然。

中断程序在这个项目里用在了掉电保持上。S7-200配套有掉电保持功能,可以把V区和M区中需要保持的部分设为断电不丢失。我把火警状态、首次报警点位这些关键数据放到掉电保持区域,这样就算现场突然断电,来电之后报警信息依然存在,不会被清零。

3.2 火警判定与联动输出的核心逻辑

火灾报警控制逻辑是整个系统里最核心的部分,它的设计原则一句话概括:既不漏报,也不误报。只看单点报警就启动全套联动,那不是消防系统,那叫自走炸弹。正确的做法是两路确认逻辑。

我用的确认逻辑是这样的:感烟探测器或者感温探测器单点报警时,PLC只把该点状态标记为报警,启动声光报警器提醒值班人员去确认,但并不立即启动排烟风机和切电等强力联动。如果延时15秒内,同一区域或者相邻区域出现了第二个独立的报警信号,或者任意手动报警按钮被按下,则判定为火警确认,这时候才启动风机、切非消防电源、下降防火卷帘。

手动报警按钮在逻辑中的地位不同。这种按钮是人为操作触发的,可靠性非常高,所以只要手报按下,我直接就判定为火警确认,不再等待两路确认。这是很多消防规范里强调的原则,实操中也是这样应用。

来看程序片段,内部继电器M0.0是“1号区域感烟报警”,M1.0是“1号区域感温报警”,M2.0是“任一区手报报警”。火警确认用TON延时指令实现,我管这个叫“确认计时器”。

LD M0.0 // 1号区域感烟报警 A I0.5 // 同一区域有第二个感烟探头?可以换成I区的地址 TON T37, 150 // 延时15秒 LD T37 // 延时到 O M2.0 // 或手报直接确认 S M10.0, 1 // 置位火警确认标志

实际项目中点位多了以后,两路确认的判断条件会更复杂,需要用中间继电器M区来做组合逻辑。比如1号区域的感烟信号和相邻2号区域的感温信号同时有效,也可以认定为确认。这就需要把各路输入先映射到M区,再用M区做“与”“或”运算。这样做的另一个好处是,如果你在组态王上做了一个手动模拟测试按钮,可以直接操作M区变量来模拟探头动作,不用真的去现场短接信号。

联动输出这块我用的是置位和复位指令,而不是输出线圈直接驱动。火警确认后把Q0.2(排烟风机)、Q0.4(送风机)、Q0.5-Q1.4(卷帘门)全部置位,不管之前输出是什么状态。火警复位时统一执行复位指令。

3.3 复位策略、故障识别与细节处理

复位逻辑是很多新人容易忽略的地方。火警解除之后,值班人员要确认现场已经安全,然后在组态王上按下复位按钮,系统才能恢复到正常监视状态。这里的程序设计要点在于:复位按钮按下时,PLC要清除火警确认标志M10.0,复位所有联动输出,同时把“首次报警点位记忆”这个数据区的数值清零。

首火警记忆功能类似于黑匣子,它记录的是最早触发报警的那个点位。这个功能在我这个项目里实现了,做法其实简单:程序里做一个比较指令,当M10.0从0变成1的那一瞬间,把所有报警输入点的状态用传送指令打包存入V区。这样后续不管又报了哪些点,V区里保存的始终是首次报警场景。

故障识别也是消防系统里必须做的一块。线路断线、探测器被人摘掉、探头老化失效,这些问题不及时发现,真到火灾的时候就抓瞎。S7-200输入端外接电阻可以检测断线和短路,但更简单实用的做法是:程序中周期性巡检感烟探测器的线路状态,如果某一路信号长时间处于无变化状态,且该点不在报警中,就在组态王上显示一个故障提示。实际接线上,我建议给每个探测器线路末端并联一个10K欧姆的终端电阻,PLC通过模拟量输入测量该电阻值来判断线路是否开路,这个做法在正规消防系统里很常见,用在PLC方案里效果完全一样。

输入信号的防抖处理也得做。机械触点按下去的一瞬间会有抖动,也就是几个毫秒内电平反复跳变。如果不做处理,可能一次按键会产生多次报警记录。我在所有手报按钮和压力开关的输入逻辑前加了一个10毫秒的TON延时,利用S7-200的定时器避开触点抖动区间,实测效果很好。

4. 组态王画面组态与通信配置

4.1 通信链接配置:PPI协议的关键参数

组态王与S7-200的通信是整个系统里第一个会卡人的地方。很多新手画面做完了,数据读不上来,十有八九是通信参数没对好。

组态王里新建IO设备时,在“设备驱动”里选择PLC,再选西门子,然后选S7-200系列(PPI)。接下来的关键参数有四个:串口COM号、波特率、数据位、停止位和校验方式。S7-200的PPI协议通信参数默认是9600波特率、8位数据位、1位停止位、偶校验,但这里有个大坑:S7-200的通信口参数并不是固定的,它由编程软件中系统块“通信端口”里的设置决定。所以组态王里填的波特率必须和PLC系统块里设置的波特率一致,否则就是一直在“打开设备失败”的循环里打转。正确步骤是先拿STEP 7-Micro/WIN连上PLC,查看系统块里的通信端口设置,照着那个数值去填组态王。

还有一个参数是PLC站地址。S7-200默认站地址是2,组态王作为主站使用COM口,地址通常写0或1。站地址对不上,通信也建立不起来。我习惯把PLC站地址固定为2,组态王设置里填2,两边对齐,不做特殊处理,省心。

这里还特别说一下串口硬件的选择。现在很多工控机没有原生串口,用USB转串口线来连S7-200的编程口,这是最常见的问题源头。必须选带FTDI芯片的USB转串口线,不能用那种十几块钱的劣质线。实测下来,劣质线通信距离超过3米就开始丢包,数据刷新断断续续。更好的选择是使用PC/PPI电缆,但价格高,对预算有限的项目用FTDI方案足够。

4.2 数据词典定义与变量连接

组态王中数据词典是画面和PLC之间的桥梁,这一步配错了,画面上的图形就全是死物。

我需要定义几类变量。开关型I/O变量对应PLC的I区、Q区、M区,比如“I0.0_烟感1号”变量对应PLC地址I0.0;“Q0.2_排烟风机1”对应Q0.2;“M10.0_火警确认”对应M10.0。数值型变量对应V区和模拟量区域,比如我用VW100作为“首次报警点位”的数值存储区,组态王里就定义一个内存变量,然后映射为VW100。

建立变量时要注意数据类型必须匹配。S7-200的I点和Q点是位变量,组态王里要用开关型变量;V区字变量用整数型,保持和PLC侧的数据格式一致。如果PLC侧用的是32位浮点数,组态王里却定义成16位整数,读出来的数值就是乱的。

建立好变量之后,画面上的各个图元就可以做动画连接了。探测点图标用填充属性连接对应输入变量的值,值为1时变红色,0时变绿色。风机图标用旋转属性或者隐藏属性连接输出变量,启动时显示运转动画。按钮用弹起属性连接一个内存变量,操作时把变量置1,PLC程序里识别到这个变量后执行对应的控制动作。

4.3 报警窗口、操作界面与权限管理

组态王的报警功能是这套系统里性价比最高的部分。做报警窗口的时候,我建议别把所有变量都塞进一个报警窗口里,那会搞得非常混乱。正确的做法是分组:第一组是火警报警,包含所有探测器点位;第二组是故障报警,包含线路故障、设备故障;第三组是联动状态信息。每一组设独立的报警窗口和独立的事件记录。

报警发生时,组态王可以做三件事:弹窗显示报警内容、声音提示、历史记录。报警内容里要包含报警时间、报警点位名称、报警类型,这些信息用“报警变量值”连接起来。声音提示建议用一个WAV文件,不要太刺耳的,值班人员全天候盯着屏幕,声音太吵会影响判断。

操作界面分两层。值班人员用的主画面是系统总貌,显示各区域的探测点位状态和风机、卷帘的运行状态。点开某个区域可以进入分区画面,查看该区域内每个具体点位的详细状态。工程师层面还有一个调试画面,这个画面用于测试信号通道,不设操作权限,避免误触。

用户权限管理必须做。组态王里可以设置操作员级别和管理员级别,复位操作、手动启停风机这些关键动作限定在管理员级别。实操中很多项目图省事不设权限,等出了事故发现谁都能乱按,那时候就晚了。给操作员分配的账号只允许查看和消音,复位和联动操作必须输管理员密码,这个规矩不能破。

5. 联调实录与常见问题排查

5.1 系统联调的整体顺序

项目施工完成后,进入联调阶段。我总结了一套顺序,能最大程度减少问题扩散的风险:先单机、后通信、再联动。

单机调试指的是PLC程序在无外部信号的情况下用STEP 7-Micro/WIN的监控表来模拟测试。我直接在监控表里强制置位I0.0,观察M区标志位是否置位,T37计时器是否走字,Q0.2输出是否动作。这一步如果逻辑错了,在办公室就能改掉,绝对不带错到现场。

通信调试是PLC和组态王连上之后,先不做联动,只在组态王数据词典里检查各个变量能不能读到值。我在组态王开发系统里打开变量监控窗口,观察I0.0对应的开关型变量是否能实时跟着PLC端状态变化。如果通信有问题,首先做的是回环测试——把串口线两头短接看能不能自收自发,排除串口线故障;然后逐项核对波特率、站地址、校验位。

最后才是带负载的联动测试。现场把所有探测器、手报、风机、卷帘全部接入。测试方法是让施工人员拿着感烟测试器对着一个探头吹烟,然后观察:PLC输入指示灯是否亮、组态王画面上该点是否变红、声光报警器是否响、排烟风机是否动作、延时时间是否符合设定值。一整套下来,系统每个环节都验证到了才算结束。

5.2 常见问题与处理方法速查

联调和运行阶段的问题,我整理成一张速查表,都是实操中遇到过的:

问题现象可能原因处理方法
组态王始终连不上PLC波特率不一致、站地址不对、USB转串口线芯片不兼容用STEP 7-Micro/WIN查系统块通信端口参数并核对;换FTDI芯片串口线
组态王画面变量刷新慢波特率设置过低、通信超时时间太长将PPI波特率统一提高到187.5Kbps,通信超时设为1秒
个别探头报警但画面不显示该点位地址映射错误、PLC程序里地址写错在PLC监控表里查该输入点,再查组态王变量映射
同一区域内两路都报但没联动两路确认逻辑的地址区间设置错误重点检查火警判断子程序里的“与”逻辑地址范围
按下复位按钮系统不复位复位变量类型不匹配或PLC复位指令没执行组态王复位按钮使用内存变量置位,PLC程序中对M区执行复位指令
声光报警器频繁误报信号线受干扰、输入滤波时间过短检查屏蔽接地、增加10ms以上数字量输入滤波
PLC输出带不动风机接触器线圈电流大、PLC输出触点容量不足增加中间继电器扩展回路
火警信息断电丢失掉电保持区域未配置在系统块中勾选V区掉电保持,保持范围覆盖报警记录地址

5.3 调试阶段血泪经验分享

最后说几个调试阶段总结的经验,这些细节是我实际操作中踩过坑之后记下来的。

第一个是输入接线极性搞反。这个项目里有个感温探头,怎么接都不报警,我查了半天发现是施工人员把常开触点接成了常闭。用万用表量一下探头的通断状态,再接对应的PLC输入逻辑,就完全不一样了。消防现场的设备五花八门,有些探头是常开,有些是常闭,接反了系统正好反过来工作,后果非常严重。

第二个是24V电源容量不足。统计点位时只算了探头的耗电,忽略了联锁继电器和中间继电器的耗电,结果一通电,CPU 226自带的24V传感器电源过载保护了,指示灯全灭。后来单独加了一个24V开关电源给中间继电器供电,PLC自带的传感器电源只接探头,问题才解决。电源容量至少留30%的余量,这个钱不能省。

第三个是备份习惯。整个项目调试完成当天,我把PLC程序、组态王工程、数据词典全部做了一份备份压缩包,存放在两个物理位置。消防系统是涉及到安全的项目,几个月后设备出问题,你肯定希望能在十分钟内找到当时的程序版本去排查问题,而不是对着运行中的PLC干瞪眼。这个项目做到一半的时候客户问我要不要升级成触摸屏显示,被我拦住了。组态王运行的工控机硬盘损坏、系统崩溃,那是早晚的事,但只要备份还在,重装系统加恢复工程,半天就能搞定,不影响使用。

还有一点,组态王画面的历史记录文件默认存在系统盘,长期运行会越来越大。做方案的时候就要把历史数据路径改到专用数据分区,并且设置自动清理周期。消防系统的历史记录固然重要,但也不能让它把那块硬盘塞满,记录保留180天足够覆盖追溯需求了。

这套S7-200加组态王的火灾报警控制系统,技术上不花哨,但胜在成熟、可靠、易维护。设备选型、PLC逻辑、画面组态、联调方法,这条完整的链路走下来,我对现场系统能不能扛得住长期运行是有把握的。给正在做同类项目的朋友一个建议:前期把点位表做细,安装阶段把线理清楚,联调阶段按我的顺序来,这套系统在你的项目里也能顺利落地。

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

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

立即咨询