
做楼宇消防电气控制设计这些年我经手的项目里西门子S7-200 PLC和组态王的组合仍然占了相当大的比例。很多朋友一听S7-200就觉得“过时了”但实际在存量楼宇改造、旧设备维保、高校课程设计和竞标方案中这套组合的生命力超乎想象。这篇文章想把我做过的一套基于西门子S7-200 PLC和组态王的楼宇消防系统电气控制设计完整拆开讲从系统架构、电气回路、PLC逻辑到组态画面、现场调试一条线走完。正在做毕设的自动化专业学生、刚入行做消防弱电的年轻工程师以及准备改造老旧楼宇消防系统的项目负责人都能在里边找到拿去就能用的思路。内容不绕弯子讲的是工程现场用得上的东西踩过的坑也会一并交代。1. 系统整体设计思路与方案选型1.1 为什么是S7-200 PLCS7-200停产好几年了新项目选型时更多人会考虑S7-1200、S7-200 SMART之类的后续产品。但做楼宇消防控制有个现实情况很多楼宇的消防控制柜已经用了七八年甚至十几年柜子里装的就是S7-200。控制柜运行可靠、现场缆线布好、监控室上位机早就做成了组态王业主不会轻易推倒重来。更常见的做法是保留PLC和组态王平台把老化的I/O模块换掉或者把以前纯靠继电器搭的控制逻辑升级为PLC加组态监控。这种场景下S7-200依然是最稳妥的选择因为换控制器意味着控制柜重新接线、上位机重新开发、消防系统重新调试周期和成本都会翻倍。与其盲目上新不如在存量框架里做增量优化这是工程思维和现实约束的问题不是单纯的技术参数比拼。S7-200放在消防控制领域还有不少先天优势指令简单、对电源要求宽松CPU224本身带14个数字量输入和10个数字量输出加上扩展模块就能覆盖中小型楼宇的泵组和风机控制。更重要的是它支持PPI协议编程和上位机通讯用同一个集成RS-485口就能完成组态王通过串口直接读写整套系统结构非常简单。这决定了整套技术路线的走向PLC做底层逻辑组态王做画面监控中间用串口通讯连接不需要额外加网关或者协议转换器。1.2 组态王为什么依然是上位机好搭档有些工程师偏爱给消防系统配工业触摸屏比如MCGS触摸屏、西门子Smart屏触屏确实好看但楼宇消防和工厂设备不一样监控室通常有专人值守习惯看整个墙面或大屏上的系统总览而不是趴在一个小屏上操作。组态王在这种场景里有天然优势画面可以装进普通工控机分辨率随意调窗口布局灵活历史报表和报警记录也更容易做。组态王和S7-200的连通性非常成熟。选择驱动时直接选“PLC—西门子—S7-200系列PPI”配置好站号和串口参数就能把PLC的输入、输出和M区变量读到画面里。国产组态软件的学习门槛不高就算以前没做过组态花一个下午把图库、变量、动画连接三个概念搞明白就能上手做画面。对改造项目来说维保人员对组态王普遍不陌生后续换人接手也容易这属于选型时容易被忽略、但实际特别重要的隐性优势。还有一点组态王的授权和运行环境要求很轻量老工控机跑起来也不会卡顿对预算有限的改造项目很友好。1.3 消防系统要解决的三个核心需求做这套系统前要把楼宇消防控制在干什么理解清楚。消防控制不是简单“按下启动按钮电机转起来”的事。从电气控制设计角度看核心需求可以拆成三个层次。第一层是设备状态采集。消防泵、喷淋泵、排烟风机、防火卷帘这些设备到底有没有电、有没有转、有没有故障控制柜里必须看得见。PLC的输入点就是干这件事的运行反馈由接触器辅助触头引入故障信号由热继电器辅助触点引入。第二层是逻辑联动控制。火灾自动报警主机发出联动信号之后PLC要根据预设逻辑自动启动对应消防设备。该起泵的起泵、该开风机的开风机还要考虑备用泵自动投入、设备轮换这些扩展逻辑。第三层是监控与管理。设备状态、启动时间、报警事件都要能在监控室看到。组态王承担的就是这一层它把PLC采集到的数据转化成一张张可读的监控画面并留下报警记录供事后分析。这三个需求决定了整套系统架构并不复杂底层是带I/O扩展的S7-200 PLC中间是接触器、热继电器、中间继电器构成的电气控制回路上层是组态王监控画面三者通过控制柜内部接线和串口通讯串联起来。在消防系统里越简单的架构越可靠每多一个中间环节就多一个故障点这个原则贯穿整个设计。2. 硬件配置与电气控制回路设计2.1 关键硬件选型要点硬件选型按控制对象来定。一个小型楼宇消防系统控制对象通常包括消火栓泵、喷淋泵、排烟风机以及防火卷帘再加上管网压力变送器一类的模拟量采集。我习惯用CPU224作为核心。CPU224本身带24个数字量点14输入10输出如果现场点数多再加一块EM223数字量混合模块8DI/8DO或者EM231模拟量输入模块就够了。选型逻辑很简单CPU221太小只有6个输入和4个输出稍微加个水泵控制就不够用CPU226虽然点数多但对消防柜这种机架空间紧张的环境偏大价格也高CPU224是性能和规模最均衡的选择。扩展模块数量不要贪多消防控制柜要求结构紧凑多一个模块就多一排端子多一排接线就多一批潜在故障点这个账要算清楚。模拟量部分不是必须的但很多项目要求在组态王上显示管网压力这时可以用压力变送器把4-20mA信号送到EM231在PLC里用浮点运算转成实际压力值。注意EM231的输入通道类型要通过模块上的DIP开关配置电流还是电压必须和变送器输出类型一致接错会把模块烧掉新手在这里翻车的案例不少。电气元件方面每台泵配一个断路器QF、一个接触器KM、一个热继电器FR。交流接触器选型按电机额定电流的1.2倍左右热继电器整定电流按电机额定电流的0.95到1.05倍之间调。这些数值不是随便拍的选大了保护形同虚设电机过载时该跳不跳选小了正常运行时就频繁跳闸调试阶段会让你非常头疼。整定值最后还要根据泵的铭牌电流微调现场实测为准。2.2 主回路与控制回路设计电气回路是消防工程项目里最容易出问题的地方。主回路由断路器、接触器主触头、热继电器热元件和电机组成负责把动力电送到电动机。控制回路由起动按钮、停止按钮、接触器线圈、中间继电器常开常闭触点组成负责控制接触器吸合和释放它的逻辑关系决定了整个设备能不能按预期运行这部分图纸要画得细致再细致。PLC的输出点不能直接驱动接触器线圈。S7-200的输出点设计上只能带很小的电流直接接接触器线圈不仅触点寿命短还会因为线圈断开时的反电动势干扰PLC内部电路。正确做法是让PLC输出点先驱动中间继电器KA再由中间继电器的触点去控制接触器线圈。中间继电器相当于一个缓冲层把PLC和动力回路隔离。这么做还有检修上的好处中间继电器烧了可以单换拆装都方便成本也低要是直接把接触器线圈接在PLC端子上出问题就要动PLC输出模块麻烦得多。每台消防泵的控制回路中必须加入热保护。电机过载时热继电器动作它的常闭触点串在控制回路里切断接触器线圈电源同时把常开触点信号接入PLC故障输入点。这样既能在物理层面让电机停下来又能在组态王画面上显示故障报警等于上了双保险。虽然很多时候PLC程序里也会做软件过载判断但硬保护的可靠性远高于软件判断消防设备的保护必须以硬回路为主这是底线性质的设计习惯。消防泵的启动方式也要提前确定。7.5kW以下可以直接启动容量大一些的泵一般做星三角降压启动。星三角回路的控制逻辑要谨慎切换时间一般设定在5到8秒时间太短电机没有平稳过渡就在星接和角接之间切换会冲击电网太长则电机长期低压运行发热。这个时间可以在PLC程序里用定时器实现也可以用在控制回路里加时间继电器实现看设计习惯两种都常见。2.3 I/O点表规划消防系统设计之初就要把I/O点表拉出来越细越好。我做过一个典型配置列出来参考地址信号含义来源/去向I0.0消火栓泵自动/手动选择控制柜SA开关I0.1消火栓泵远程启动信号火灾报警主机联动I0.2消火栓泵运行反馈接触器辅助触点I0.3消火栓泵故障信号热继电器辅助触点I0.4喷淋泵自动/手动选择控制柜SA开关I0.5喷淋泵远程启动信号火灾报警主机联动I0.6喷淋泵运行反馈接触器辅助触点I0.7喷淋泵故障信号热继电器辅助触点I1.0排烟风机运行反馈接触器辅助触点I1.1排烟风机故障信号热继电器辅助触点Q0.0消火栓泵启动输出中间继电器KA1Q0.1喷淋泵启动输出中间继电器KA2Q0.2排烟风机启动输出中间继电器KA3Q0.3声光报警器输出报警回路Q0.4运行状态指示灯输出指示灯箱输入点里最容易被忽略的是“运行反馈”。很多设计只画了输出不画反馈结果组态王画面上的泵“不知道”转没转。运行反馈必须来自主接触器辅助触点不是PLC的输出量这样才能真实反映电机的实际状态。点位规划时还要留20%的备用点。消防系统后期经常要加设备、加信号或者配合现场改造增加新的采集点紧急情况下没有点可用是非常尴尬的。留备用点在初始阶段看起来浪费实际运行一两年后就会庆幸当初的决定。3. PLC核心逻辑与程序实现3.1 程序框架与开发环境S7-200的编程软件是STEP 7-MicroWIN我用的是V4.0版本配合SP9补丁包使用目前多数教程和资料也基于这个版本。程序逻辑本身不复杂但强烈建议按功能拆成子程序主程序OB1里只做调用。我的习惯是建四个子程序HMI通信区、消防泵控制、风机控制、报警处理。每个子程序只负责自己的事后边调试时可以在程序状态里单独观察定位问题的速度会快很多。程序编写时有个重要问题要注意就是地址规划。输出点和输入点对应物理I/O中间逻辑变量用M区。组态王要控制的启动指令、停止指令也放到M区地址里例如M0.0是消火栓泵远程启动指令M0.1是远程停止指令。这样做的好处是清晰I区是“现场告诉PLC发生了什么”Q区是“PLC让现场做什么”M区是“组态王和程序内部沟通的便签纸”。如果上位机变量直接绑定到I区和Q区一方面会造成IO点被反复读写另一方面程序里调整逻辑时容易牵一发动全身后期维护非常难受。3.2 消防泵控制逻辑拆解以消火栓泵为例控制逻辑的核心是“自动优先、手动可靠”六个字。手动模式时现场控制柜按钮直接通过电气硬回路控制接触器PLC不参与。自动模式时PLC根据联动信号和上位机指令启动。这里我用STL语句表写一段示意逻辑LD I0.0 // 自动模式 A I0.1 // 火灾报警主机联动信号 O M0.0 // 组态王远程启动指令 AN I0.3 // 无故障信号 AN M0.1 // 无远程停止指令 S Q0.0, 1 // 置位启动输出 TON T37, 100 // 启动延时10秒等待反馈 LDN I0.2 // 运行反馈未到位 A T37 // 延时到 S M10.0, 1 // 启动超时报警这类逻辑看着简单现场真正起作用的是几个细节。第一启动输出一定要用置位指令不能用普通的线圈输出否则联动信号一消失泵就停了消防泵不能在现场信号有抖动时停机。第二停止必须走复位指令由停止按钮、手动模式切换或上位机停止指令触发也就是要显式地用R指令不能用复位线圈覆盖。第三启动后10秒内运行反馈必须到位否则判定启动失败这样可以尽早发现电机没转或者接触器没吸合的问题值班人员能在第一时间得到报警提示而不是等火情发展。备用泵自动投入是消防泵控制里常见的扩展需求。一用一备的两台泵主泵启动后反馈不到位PLC延时5秒自动启动备泵同时把主泵故障信息上报到组态王。这个逻辑不复杂但现场价值很大。消防泵长期不用电机锈死、轴承卡住、叶轮堵转的情况很常见如果主泵起不来、备泵又不会自动顶上后果不难想象。备泵投入后还要在画面上醒目提示“主泵故障备泵运行”防止维护人员误以为是主泵在工作。3.3 排烟风机与防火卷帘联动逻辑排烟风机控制逻辑和消防泵类似但联动条件不同。排烟风机通常是在火灾确认后由火灾报警主机通过联动模块输出干接点信号给PLCPLC接到信号启动风机。这里要注意反馈信号的处理排烟风机运行状态下如果风机的热继电器动作PLC要把故障状态锁存即使热继电器复位风机运行信号也要由人工在监控室确认后才能恢复不能自动复位。消防设备最忌讳“自己好了就自己动”任何故障和恢复过程都要留痕。防火卷帘控制相对独立。收到火灾报警主机的防火分区联动信号时PLC输出卷帘下降指令卷帘下降到低位后限位开关把到位信号送到PLC输入点PLC复位下降输出。卷帘控制要设置一定的下降延时这个延时的意义是让卷帘下方的人有时间撤离同时和消防广播、声光报警器配合使用。声光报警器按钮也放在PLC输出逻辑里与联动信号连锁方便在监控室手动触发全楼报警组态王画面上加上这个手动的声光报警按钮会非常实用。3.4 程序设计中容易踩的坑程序写好之后我每次都会检查几个隐蔽问题。M区断电保持要小心S7-200的M区默认分为保持区域和非保持区域在系统块里可以配置断电保持范围。消防泵故障锁存信号建议设置成断电保持断电恢复后故障状态不丢失防止维护人员不知道设备之前发生过什么。这个细节看着小真出问题时价值很大尤其是事后分析火灾联动过程现场设备断电重启后故障记录还在不在直接影响判断。输出点驱动的中间继电器线圈动作频繁时会有触点抖动程序里要做防抖处理。我习惯在反馈信号输入上做简单的延时确认比如反馈消失持续2秒以上才认为是真的消失避免接触器切换瞬间反馈触点抖动造成误报警。这个处理非常有效现场很多“幽灵报警”都是这么解决的。原理是机械触点在吸合和释放过程中都有弹簧回弹瞬间多次通断程序扫描周期太快会把这些抖动当作真实变化加个延时就全过滤了。输入点公共端的接法也要留意。S7-200的数字量输入是源型输入每组输入点的1M公共端接0V外部所有干接点信号一端接输入端子另一端接24V正极。如果公共端接反了输入指示灯不亮检查半天往往就是这个原因。输出点接线同理必须搞清楚每组输出点接的是DC24V还是AC220V驱动继电器输出型PLC的各个公共端是相互隔离的组可以接不同电源但同一组的公共端必须统一混接会造成短路。4. 组态王画面与通讯配置4.1 新建设备与PPI通讯配置组态王工程的第一步是在设备配置里把S7-200建立好。打开组态王6.60及以上版本我常用6.60SP4通过设备配置向导选择“PLC—西门子—S7-200系列PPI”然后设置串口参数。这里藏着几个新手最容易碰壁的坑下面几项必须完全对齐。串口号要和工控机上实际使用的COM口一致。组态王的IO设备配置界面里选COM2但工控机上PC/PPI电缆实际插在COM3转出来的串口上这种不一致是最常见的通讯失败原因。设备地址要填PLC的站号S7-200的默认站号是2如果之前改过站号必须在PLC程序里确认。波特率、数据位、校验位、停止位这些参数也必须和PLC通讯参数一致PPI协议常用9600波特率、8数据位、偶校验、1停止位。如果工控机没有原生串口只能用USB转串口线还要多注意一点USB转出的COM口号会变插在不同USB口上可能变成COM5、COM6甚至COM10组态王里选错又白折腾。这种情况下建议在设备管理器中把USB转串口固定到一个不常用的COM号比如COM11避免被其他USB设备占用。通讯配置完成后可以做一个小测试。新建一个I/O变量指向PLC的某个输入点比如I0.3泵故障信号然后画一个指示灯连接这个变量看灯有没有反应。这个方法比一次性配完所有变量再测试高效得多能在前期快速确认通讯链路是否打通如果这一步都通不过后面画面做得再漂亮也是白搭。4.2 消防监控画面怎么做组态王图库里有现成的电机、风机、阀门、指示灯图元直接用就可以。但消防监控画面不能只是把图元拖上去布局要贴合值班人员的操作习惯。泵房画面一般放在最前面消火栓泵、喷淋泵、稳压泵上下排列每台泵旁边紧挨着运行、停止、故障三个指示灯和启停按钮。每台泵下面画管网压力、流量等参数。风机画面单独一页排烟风机和正压送风机按楼层或防火分区排列。动画连接是画面的核心。运行指示灯绑定Q0.0置位状态或者I0.2运行反馈变量显示绿色表示运行故障指示灯绑定故障变量红色闪烁按钮用“按下时”动画连接动作类型选“置位/复位变量”变量绑定M区的启动或停止指令。这里要特别注意组态王画面的按钮动作写在M区不要直接写Q区否则会造成PLC输出点的逻辑被外部反复强制程序逻辑和上位机操作互相打架混乱不堪。为了画面不单调我会在监控画面顶部加一行系统状态栏显示PLC通讯状态、消防泵控制模式、当前时间。通讯状态这个细节很值钱值班人员一眼就能判断系统是不是在正常工作而不是对着一个不更新的画面干瞪眼。控制模式显示在防误操作上也有帮助如果在手动模式下画面上的远程按钮点了没反应值班人员看到模式显示就知道不是系统坏了而是被切换到了手动挡。4.3 报警与历史记录配置组态王的报警窗口是消防系统重要的管理工具。数据词典里定义变量时可以给开关量变量配置报警属性。比如I0.3为1时触发“消火栓泵故障报警”M10.0为1时触发“消火栓泵启动超时报警”。报警级别分成一般报警和紧急报警显示颜色跟着区分红色紧急黄色一般。报警确认机制也要打开值班人员需要手动确认报警这样能避免一次报警被反复弹出骚扰同时也留下了确认记录。历史记录方面组态王可以记录关键变量的变化趋势。消防泵运行状态、管网压力、故障信号都值得记录时间间隔设1秒普通模式下一天的记录量不大但能回答事后“当时泵到底有没有转”这种核心问题。我建议把报警记录单独存储或定期导出归档消防系统事后分析往往就靠这些记录设备是否及时联动、报警到现场确认隔了多长时间都是可以回查的。5. 联调测试与常见问题排查5.1 离线调试程序先自己跑一遍整个系统送电前PLC程序先做离线调试。STEP 7-MicroWIN提供程序状态监视功能电脑连上PLC后可以逐行观察梯形图中每个触点的通断状态也可以直接强制M0.0为1看Q0.0是否跟着动作。这一步能发现大部分编程逻辑问题比如置位复位顺序颠倒、定时器时间单位搞错、地址引用冲突。组态王画面在PLC没到场时也可以提前开发。变量先指向M区或I区组态画面在通讯不上时给出的值是“通讯失败”画面布局和动画连接可以先调好。等PLC到场后把通讯配置里的设备地址改到实际站号重新启动组态王运行系统画面就能正常带数据了。这样安排可以压缩工期PLC一到现场就直接进入联调阶段不用干等组态画面。5.2 通讯不通的典型排查路径通讯问题是这套系统里最常见也最消耗时间的故障。我把排查顺序固定成五步按这个顺序来基本能快速定位。第一步查组态王设备状态。运行系统右下角有设备状态图标点击可以看到“正常”还是“故障”。故障状态说明通讯没建立先别管画面变量直接解决设备层。如果显示通讯正常但数据不对那就去查变量地址类型这个问题经常是因为I区变量填了Q区的地址。第二步查串口号和驱动。确认工控机管理器中这个串口存在且没有被鼠标、读卡器或其他软件占用。搭配USB转串口设备时要把设备管理器里COM口的波特率同步设置好软件层和驱动层的波特率不一致也会导致通讯失败。第三步查参数匹配。PLC的波特率、校验位在MicroWIN的系统块里能看到组态王设备参数必须完全一致。常见错误是组态王选了9600、8、E、1PLC却设的是19200、8、N、1两边参数对不上握手都握不了。还要注意有的老版本组态王默认校验位是无效验必须手动改过来。第四步查站号。S7-200的设备地址在MicroWIN的通信对话框里能看到默认为2。组态王设备地址填的数字必须和PLC站号一致填1或0都会导致通讯失败。多台PLC连在一条总线上时还要确认各个站号没有重复。第五步换线测试。串口通讯线看起来简单实际上次品和老化线非常多。有条件时用一根确认正常的PC/PPI线替换测试能快速排除线缆故障。这根线平时也要注意保管很多现场通讯问题最后都栽在“随便找了一根串口线”上。5.3 现场电气问题与联调心得现场调试时最怕的不是程序而是电气干扰和接线错误。PLC输出点驱动接触器线圈的瞬间线圈断开时会产生很高的反向电压这个干扰脉冲轻则让PLC输出指示闪烁重则导致PLC瞬时复位甚至损坏。中间继电器回路里并接RC吸收元件或者压敏电阻同时PLC开关电源加隔离这类问题能消掉一大半。不要嫌加元件麻烦现场出现过的问题远比图纸上多。还有一次调试中遇到泵“一会转一会停”的情况检查程序逻辑完全正确最后发现是启动按钮的常开触点引线过长接触器吸合后震动导致触点抖动信号PLC误以为是停止信号。后来在按钮输入回路中增加消抖延时才让现场动作正常。这类问题在继电器逻辑时代不常见但PLC控制时代反而暴露出来——程序对信号的捕捉太快机械触点的物理特性跟不上。反馈信号接线也要说一句。PLC输入点接运行反馈时必须是接触器辅助触点的干接点严禁把PLC输入直接接到接触器线圈电源上。辅助触点容量小但它只接PLC内部高阻抗输入完全没有问题。如果为了省一路输入点把运行反馈和故障信号并在一起接故障时虽然能看到故障但无法区分是运行中故障还是未运行故障调试和事后分析都会很痛苦所以这两个信号必须分开接。最后提一个容易被忽视的设计理念也是我做消防项目多年最想强调的一点PLC控制系统的故障安全原则。消防系统不允许因为上位机组态王死机或者通讯中断导致现场消防设备失去控制。正确做法是现场手动控制回路通过硬线独立于PLC存在PLC和组态王失效时现场仍然可以手动启停消防泵。我在设计控制柜时手动模式不经过PLC直接由SA开关把启动按钮、停止按钮、接触器连成一个传统电气回路PLC只有在自动模式下才接管输出。这样即使哪天组态王黑屏、PLC故障消防系统的底层控制能力依然在。这个原则在我做过的每个消防项目里都坚持执行因为它才是楼宇消防电气控制设计里真正保底的东西。