
简介本资源为地铁环境监控核心系统——楼宇自动化系统BAS的完整PLC控制程序工程包面向自动化、轨道交通及工业控制领域的工程师、高校师生与系统维护人员解决地铁站内通风、空调、照明、屏蔽门及电梯等设备的逻辑控制与联锁实现问题。压缩包共876个文件23.16MB涵盖STEP7 V5.5工程主体259个DB块数据块存储传感器阈值、设备状态等运行参数、188个MDX索引文件支持快速变量定位、110个PG项目文件含梯形图与SCL结构化文本源码、以及INI配置、LOG调试日志、HOMO类同构化数据文件等体现典型地铁BAS多子系统协同控制的工程组织方式。已有217人学习下载资源可直接用于STEP7 V5.5环境加载、在线诊断与逻辑分析包含完整的硬件组态、FB功能块封装、应急模式切换逻辑及环境参数闭环控制策略是理解轨道交通级BAS底层控制逻辑与西门子经典PLC工程实践的高价值参考样本。1. 项目背景地铁里的“环境管家”——BAS系统如果你坐过地铁可能会注意到站台和车厢里总是冬暖夏凉空气也相对清新。这背后除了空调机组和风机在默默工作更关键的是一个叫做“BAS”的“大脑”在精准指挥。BAS全称Building Automation System中文叫“环境与设备监控系统”是地铁车站里负责通风、空调、给排水、照明、电梯扶梯等所有机电设备监控与管理的核心系统。你可以把它想象成地铁车站的“环境管家”它的核心任务就是确保乘客的舒适度、设备的稳定运行以及整个车站的节能高效。而这个“管家”的大脑通常就是一台或多台PLC可编程逻辑控制器。PLC是一种专为工业环境设计的计算机它皮实耐用、抗干扰能力强能够7x24小时不间断地执行预设的逻辑程序控制各种开关、阀门、电机。在地铁BAS项目中PLC程序就是整个系统的灵魂它定义了所有设备在什么条件下启动、停止、联动以及出现故障时该如何应对。我这次分享的项目就是基于西门子经典的STEP 7 V5.5软件为一套地铁车站BAS系统开发PLC控制程序。STEP 7 V5.5对于很多工控老手来说就像一位熟悉的老朋友它稳定、强大尤其是在处理S7-300/400系列PLC时几乎是行业内的“黄金标准”。虽然西门子后来推出了博途TIA Portal这样的新一代平台但在存量巨大的地铁、楼宇等基础设施领域基于STEP 7 V5.5的系统和维护需求依然非常旺盛。这个项目不仅涉及常规的逻辑控制更包含了复杂的时序调度、多设备联动、节能策略以及至关重要的故障安全处理逻辑。2. 地铁BAS系统的核心控制需求与架构解析开发BAS的PLC程序第一步绝不是打开软件就开始写梯形图而是必须彻底吃透这个系统的控制需求。地铁BAS的控制对象繁杂逻辑交织任何一个疏漏都可能影响运营安全或乘客体验。我们需要从顶层到底层一层层拆解。2.1 系统层级与网络架构一个典型的地铁车站BAS系统通常采用三层架构管理层中央级位于车站控制室通常是一台安装了上位机监控软件如WinCC的工控机。它的职责是“看”和“管”——显示全站设备状态、记录历史数据、设置运行参数、下发模式指令如“早晚运营模式”、“夜间停运模式”。它通过工业以太网与现场控制器通信。控制层现场级这就是我们PLC程序的主战场。由多台PLC如西门子S7-300系列组成分布在车站两端的环控电控室。每台PLC负责管辖一片区域的设备例如一台PLC管站厅东侧的空调机组和风机另一台管站台西侧的。它们通过Profibus-DP或Profinet网络连接下层的远程I/O和智能仪表。设备层终端级包括所有的传感器温湿度、二氧化碳浓度、压差开关和执行器风阀驱动器、水泵变频器、电动二通阀。它们通过I/O模块或现场总线接入控制层的PLC。在STEP7 V5.5中我们需要为每一台物理PLC创建一个独立的“站”Station并在硬件组态Hardware Configuration中精确地“搭建”出这个网络架构配置好CPU型号、通信模块如CP343-1用于以太网、I/O模块的地址这相当于给PLC的“身体”做了全面的体检和身份登记。2.2 核心被控设备与控制逻辑要点地铁BAS的PLC程序本质上是为以下几大类设备编写“行为规范”隧道通风系统TVF/UOF风机这是地铁安全的重中之重。正常运行时负责隧道和车站的换气。在火灾模式下必须能迅速切换到排烟或送风模式。程序逻辑必须优先级最高且与火灾报警系统FAS有硬线直连的联动接口确保即使控制系统部分失效也能强制启动。车站大系统组合式空调机组、回排风机负责站厅、站台公共区的温湿度调节。控制逻辑复杂涉及温湿度控制根据设置在站厅、站台的温湿度传感器反馈采用PID算法调节空调机组冷冻水阀开度和风机频率。这里不能简单地用开关量必须使用模拟量处理。新风比例控制根据二氧化碳传感器浓度动态调节新风阀和回风阀的开度在保证空气品质的前提下实现节能。季节与模式切换夏季制冷、冬季制热、过渡季节全新风运行程序需要能根据室外温湿度或中央下发的指令自动切换运行策略。车站小系统设备用房空调、排风机为通信、信号、变电所等重要设备房间提供恒温恒湿环境。其可靠性要求极高往往配备冗余机组程序需实现主备机自动切换。给排水系统水泵、水箱监控集水坑水位自动启停排水泵。逻辑相对简单但防误动和故障报警必须周全比如防止水泵在低水位时空转或高水位时未启动。照明系统按照运营时间表早、晚、夜间或照度传感器自动控制公共照明回路。这里会大量使用时钟功能和比较指令。2.3 非功能性需求安全、可靠与可维护除了控制功能一个优秀的BAS程序还必须满足故障安全Fail-Safe任何传感器故障、通信中断系统应能检测并自动切换到安全状态如设备停机、阀门回到安全位同时向上位机报告明确故障点。手动优先所有关键设备必须在控制柜和上位机设置“手动/自动”切换开关。在自动模式失效时运营人员可以手动干预。联锁保护例如空调机组的送风机未启动冷冻水阀不应打开水泵前后阀门未开泵不能启动。这些硬性联锁逻辑必须写在程序里。易于调试与维护程序结构要清晰注释要详尽。关键参数如PID参数、时间设定值应放在数据块DB中方便在线修改而不需要修改程序代码。3. STEP7 V5.5项目实战从硬件组态到程序框架理解了需求我们打开STEP7 V5.5开始真正的工程实践。这个过程就像建筑师画蓝图每一步都关系到后续编程和调试的顺畅度。3.1 创建项目与硬件组态HW Config打开SIMATIC Manager创建一个新项目比如命名为“XX地铁站_BAS”。然后右键插入一个SIMATIC 300 Station假设我们使用S7-300系列PLC。双击“Hardware”进入硬件组态界面。我们需要从右侧的硬件目录中像搭积木一样将真实的机架、电源、CPU、I/O模块、通信模块拖放到相应的插槽上。CPU选型与属性设置根据I/O点数和程序容量选择CPU如CPU 315-2 PN/DP。双击CPU进入其属性页面这是关键一步启动Startup设置上电后的启动特性比如“暖启动-断电前的模式”。对于BAS系统通常选择“暖启动”让设备恢复到断电前的自动/手动状态。周期/时钟存储器Cycle/Clock Memory勾选“时钟存储器”Clock Memory并分配一个字节如MB0。这个字节的每个位会提供不同频率的脉冲如M0.5是1Hz方波在程序中用于闪烁报警、周期触发非常方便。保护Protection设置CPU的访问密码防止未授权修改。通常设置三级密码并将“钥匙开关位置”设置为“RUN-P”允许在线修改方便调试。I/O模块地址分配添加数字量输入DI、数字量输出DO、模拟量输入AI、模拟量输出AO模块。系统会自动分配I/O地址如I0.0~I0.7 PQW256等。务必记录下这个地址表这是编程时寻址的依据。一个好的习惯是在模块的“属性-注释”栏里写明这个通道连接的现场设备名称如“站厅东温感1”。通信配置添加以太网模块如CP343-1并为其配置IP地址、子网掩码与上位机规划在同一个子网。同时配置Profibus-DP网络设置DP主站和从站远程I/O站或变频器的站地址和通信速率。注意硬件组态完成后一定要执行“编译并保存”Compile and Save。只有编译无误才能将组态下载到PLC或者生成系统数据块SDB。3.2 规划程序结构与数据块在动手写逻辑之前规划好比写更重要。一个混乱的程序结构是后期调试和维护的噩梦。组织块OB的规划OB是PLC操作系统调用的程序入口就像电脑的“进程”。OB1主循环块。这是程序的心脏所有主要的逻辑调用都在这里。但我们不应在OB1里写满梯形图而是把它当作一个“调度员”在里面调用其他功能块FC/FB。OB35循环中断块。我习惯用它来处理需要精确周期执行的任务比如PID运算。在OB35属性里设置循环时间如100ms那么每隔100msCPU就会中断主循环优先执行OB35里的程序。这对于模拟量控制的稳定性至关重要。OB82诊断中断块。当有模块出现故障如断线时此块被调用。我们可以在这里编写记录故障代码、触发声光报警的逻辑。OB100暖启动块。PLC上电或从STOP切换到RUN时执行一次。用于初始化一些变量比如将设备模式默认为“自动”清零累计运行时间等。功能FC与功能块FB的划分这是实现结构化编程的关键。我的经验是按设备类型划分FB带背景数据块用于有“记忆”的、需要保持状态的对象。例如我为“组合式空调机组”创建一个FB10。空调机组有运行状态、故障状态、模式等需要保持的数据。每次调用FB10时如FB10用于1#空调FB11用于2#空调都会关联一个独立的背景数据块如DB10 DB11用来存储该台设备独有的数据。FC不带背景数据块用于纯功能性的、无状态的操作。例如FC1可以是一个“模拟量工程量转换”函数输入原始值0-27648输出实际的温度值-20~50℃。它被多次调用但不保存任何特定数据。数据块DB的规划设备数据块即FB的背景DB存储每台设备的实时数据和参数。共享数据块创建一些全局共享的DB用于存储系统参数和状态。例如DB1Sys_Para存放系统参数如夏季/冬季切换温度阈值、各模式时间表、全局使能信号。DB2Sys_Status存放系统状态如全站自动/手动模式、火灾模式标志、重要故障汇总。DB3Alarm_Msg规划一个报警消息缓冲区结构体数组包含报警位、时间、确认位、描述等。方便上位机读取和显示。3.3 编写第一个功能块风机控制逻辑示例让我们以一个最简单的“排风机”控制为例看看如何在STEP7中实现。假设我们有一个排风机受一个数字量输出点Q0.0控制有一个手自动切换开关I0.0一个远程启动信号来自上位机M10.0一个故障反馈信号I0.1和一个本地急停按钮I0.2。我们创建一个FC1命名为“Ctrl_Fan”。虽然风机简单用FC足够但为了演示结构化思想我们假设它稍复杂。在FC1的变量声明表中定义输入IN、输出OUT、临时变量TEMP。IN:iAutoManual(Bool, 手自动信号),iRemoteStart(Bool, 远程启动),iFault(Bool, 故障),iEmergencyStop(Bool, 急停)OUT:qFanRun(Bool, 风机运行输出)TEMP:tmp_RunPermissive(Bool, 运行允许条件)然后在代码区编写梯形图LAD或语句表STL逻辑。用梯形图更直观网络1形成运行允许条件 --| iEmergencyStop |---|/|----( tmp_RunPermissive ) //急停未按下 --| iFault |---|/|---- //且无故障网络2自动模式下的启动逻辑 --| iAutoManual |---| iRemoteStart |---| tmp_RunPermissive |---( #qFanRun_Auto )网络3手动模式下的启动逻辑假设手动时直接由上位机点动 --| iAutoManual |---|/|----| iRemoteStart |---| tmp_RunPermissive |---( #qFanRun_Manual )网络4合并输出并自锁如果需要保持 --| #qFanRun_Auto |---| tmp_RunPermissive |----------------------------( qFanRun ) --| #qFanRun_Manual |---| | --| qFanRun |---|------------------------------------------------最后在OB1中调用这个FC1CALL FC1 ( iAutoManual:I0.0, iRemoteStart:M10.0, iFault:I0.1, iEmergencyStop:I0.2, qFanRun:Q0.0 )这个简单的例子包含了手自动切换、联锁保护故障和急停、远程控制等基本要素。对于更复杂的空调机组逻辑网络会多得多但方法论是相同的先定义清晰的接口变量然后分网络实现各个子功能启停、模式切换、阀控、保护最后整合。4. 深入核心模拟量处理、PID调节与模式管理地铁BAS的“智能”很大程度上体现在对模拟量的精确处理和闭环控制上。这是区别于简单启停控制的核心。4.1 模拟量信号的采集与处理现场的温度、湿度、压力传感器通常输出4-20mA或0-10V信号通过模拟量输入模块AI进入PLC被转换为一个0-27648对应4-20mA或0-27648对应0-10V的数字值称为“原始值”或“Raw Value”。在程序中我们不能直接使用这个原始值必须进行“工程量转换”。STEP7提供了标准库函数FC105SCALE和FC106UNSCALE但理解其原理更重要。假设一个温度传感器量程是-20~50℃对应4-20mA。那么在AI通道上4mA对应5530不是020mA对应27648。转换公式为实际温度 (原始值 - 5530) * (50 - (-20)) / (27648 - 5530) (-20)我们可以自己写一个FC来实现这个转换增加滤波功能。例如在FC中采用“一阶滞后滤波”算法来平滑波动本次滤波值 (上次滤波值 * (N-1) 本次采样值) / N其中N是滤波系数越大越平滑但响应越慢。处理后的温度值应存储到对应的设备DB或共享DB中供显示和控制逻辑使用。4.2 闭环PID控制器的实现对于空调水阀、风机变频器的控制需要PID比例-积分-微分算法来达到稳定、精准的效果。STEP7标准库提供了现成的PID控制块FB41CONT_C用于连续量控制FB58TCONT_CP用于温度控制功能非常强大。以控制送风温度为例使用FB41的典型步骤背景数据块为每台需要PID控制的设备如空调机组单独创建一个背景DB用于关联FB41。调用与参数设置在循环中断OB35中调用FB41确保固定的采样周期。COM_RST设置为FALSE除非需要完全复位控制器。MAN_ON手动/自动切换。TRUE时输出LMN等于MAN输入值用于手动调试。PV_IN过程反馈值即我们处理后的实际送风温度。SP_INT内部设定值即我们希望送风温度达到的目标值。GAIN比例增益、TI积分时间、TD微分时间这三个是核心PID参数需要现场整定。LMN控制器输出范围0.0-100.0%对应阀门开度或变频器频率。输出处理将LMN输出0.0-100.0%通过FC106UNSCALE转换为模拟量输出模块需要的整型数如0-27648写入对应的AQ通道。实操心得PID整定是个经验活。在现场我通常先用“经验法”给一组保守参数小增益、大积分时间让系统先动起来。然后观察曲线如果响应太慢就加大GAIN如果超调震荡就减小GAIN或加大TI。微分环节TD在温度控制中一般用得少容易引入噪声。最关键的是一定要将整定好的参数保存在DB中并确保能从上位机修改因为季节变化、负荷变化都可能需要微调参数。4.3 运行模式与时间表管理地铁BAS需要根据运营时间自动切换工作模式。这通常通过一个“模式管理”功能块来实现。模式定义通常有“夜间停运模式”、“早晨预热/预冷模式”、“正常运营模式”、“火灾模式”、“阻塞模式”等。每个模式对应一套设备启停和参数设定。模式切换逻辑最高优先级火灾模式来自FAS系统的硬线信号。一旦触发强制切换到火灾工况启动相关风机。时间表控制在中央DB中定义一天中各个模式切换的时间点如6:00切换到早间模式23:30切换到夜间模式。在OB1或OB35中使用系统时钟通过SFC1读取与预设时间表比较产生模式切换标志。手动干预上位机应能随时强制切换到任一模式并高于时间表优先级火灾模式除外。模式执行在设备控制FB中根据当前激活的系统模式选择不同的控制子程序或参数集。例如在“夜间模式”下空调机组FB读取的设定温度是值班温度如18℃而在“运营模式”下读取的是舒适温度如26℃。5. 调试、诊断与维护中的实战技巧程序写完、下载到PLC只是万里长征第一步。现场调试才是检验程序的真正战场。这里分享几个血泪换来的经验。5.1 系统上电与初步调试逐级上电先弱后强先给PLC和控制柜控制回路送电检查PLC状态、模块指示灯是否正常。确认无误后再给动力回路变频器、电机送电。强制与监控利用STEP7的“变量表”Variable Table或“监控与强制表”功能这是最强大的调试工具。你可以监控变量在线查看任何I、Q、M、DB点的实时值这对于理解程序流程、查找逻辑错误至关重要。修改变量在“修改值”栏输入新值可以模拟现场信号。比如手动给一个温感信号赋值看PID输出是否变化。强制变量这是最高权限直接覆盖PLC的I/O过程映像区。强制要极其谨慎强制一个输出点Q会真实驱动外部设备动作。务必确认设备旁无人且你知道后果。调试时我通常只用强制来测试急停、故障等安全回路是否有效。设备单动测试将设备切换到“手动模式”通过上位机或强制点动每一个电机、开关每一个阀门确认转向、开闭方向正确反馈信号能正确读回。这一步是基础必须百分百正确。5.2 模拟量回路调试与PID整定这是最花时间的部分。信号核对用标准电流源或万用表给AI通道输入4mA、12mA、20mA信号在线监控转换后的工程值是否对应量程下限、中值、上限。如果不准检查硬件组态中的测量类型4-20mA和量程卡设置。执行机构测试手动给定AO输出0%50%100%观察阀门是否从全关走到全开变频器频率是否从0Hz升到50Hz。检查是否有死区、线性度如何。开环测试将PID控制器置于手动MAN_ONTRUE手动改变输出MAN观察被控对象如送风温度的变化方向和速度。这能帮你理解对象的“脾气”。闭环整定切换到自动给一个适中的设定值变化如从26℃调到24℃观察响应曲线。遵循“先P后I再D”的原则微调参数。记录下整定过程这对日后维护非常有价值。5.3 故障诊断与程序维护系统上线后难免会出现问题。一个好的程序应该能帮助维护人员快速定位故障。利用OB82诊断中断在OB82中编程当有模块故障时可以读取OB82_MDL_ADDR故障模块地址和OB82_FLT_ID故障代码并将这些信息连同时间戳一起记录到我们预先规划好的报警消息DBDB3中。上位机读取这个DB就能显示“3号AI模块通道1断线”这样具体的报警而不是笼统的“模拟量故障”。程序注释与符号表这是程序可读性的生命线。每一个FC/FB、每一个网络、每一个关键变量都必须有清晰的中文注释。在符号表Symbol Table里为每一个I/O点、M点、DB变量定义有意义的符号名如“Fan_1_Run_FB”而不是简单的M10.0。三年后当你或同事再看这段程序时会感谢当初的细心。在线程序比较当现场程序被修改过但又没有记录时可以使用STEP7的“比较块”功能将离线项目中的程序与PLC在线程序进行比较快速找出差异。备份备份备份重要的程序文件包括硬件组态、源代码、注释、符号表必须定期备份并注明版本号和修改记录。最稳妥的方式是每次下载到PLC的程序其对应的离线项目文件必须同步存档。地铁BAS的PLC编程是一个融合了工艺理解、控制理论、工程实践和严谨思维的工作。STEP7 V5.5作为经典工具其稳定性和强大的功能足以支撑起这样一套复杂系统的开发。关键在于我们不能只把自己当作写代码的程序员更要成为理解通风空调工艺、懂得设备特性、注重安全可靠的系统工程师。从需求分析到硬件组态从程序架构到调试排故每一步的严谨和深思熟虑最终都会体现在系统数年如一日稳定、高效、节能的运行中。本文还有配套的精品资源点击获取