基于S7-200 PLC的停车场智能监控系统设计与调试
发布时间:2026/10/19 14:45:40 锦皓数字建站

聊这个项目之前先交代一下背景一个地面停车场要做智能化改造总共两百来个车位两进两出要求能自动计数、显示剩余车位、闸机联动还要把实时数据传到值班室电脑上。我拿到需求后直接定了方案基于西门子S7-200的智能停车场监控系统。设备老一点没关系稳定、便宜、好维护这套系统从搭建到调试完成总共用了不到两周。这篇文章把整个搭建过程拆开说一说从系统架构设计、硬件选型接线到梯形图逻辑和上位机通信最后再聊调试时踩过的几个坑。适合正在做类似小型PLC控制项目的同行也适合刚接触S7-200、想找一个完整案例练手的朋友。内容不依赖任何特定组态软件思路可以平移到其他型号的PLC上。1. 系统架构拆解与选型依据1.1 停车场监控系统到底要控什么很多人一听“停车场监控系统”第一反应是装摄像头、看车牌。但真正落到PLC控制层的需求其实是另一套东西主要包括五块车辆进出检测入口和出口各布置检测线圈判断有没有车经过是进还是出。道闸联动根据车辆方向、车位余量、防砸信号自动开闸和关闸。车位计数与剩余车位显示场内当前车辆数、剩余车位实时刷新满位时入口闸机不再抬杆。现场显示入口LED屏显示剩余车位满位时点亮“满位”指示灯。值班室远程监控通过上位机或触摸屏查看实时车位、进出累计数、设备报警信息。这里面最核心、也最容易出问题的就是“车辆检测”和“道闸控制”。摄像头负责的是事后追溯PLC负责的是实时控制。两者定位不同不能互相替代。200个车位、两进两出的规模其实I/O点数和逻辑量都不大真正考验的是现场信号质量和接线习惯。1.2 为什么选S7-200而不是新系列如果放在今天选新设备很多人会直接上S7-1200或者国产PLC。但项目现场是一个已经运行多年的老停车场原控制柜里就是S7-200业主手里的备件、维修电工的经验都是围绕这个平台来的。改造时继续用S7-200有三个很实际的好处一是兼容性好。原来的线路、传感器、按钮盒都能复用不用整个柜子推倒重来改造施工量小。二是维护成本低。S7-200虽然停产多年但二手模块、电源、编程电缆都非常便宜会修的人也多一个小停车场项目根本没必要用高端设备。三是稳定性被验证过。S7-200对工业现场环境不挑剔电源适应性好CPU极少出问题。当然用老平台也有明显短板没有原生以太网口程序存储空间小通信要靠RS485口和自由口协议。但对于一个两进两出的停车场来说这些短板都不致命。项目选型不能只听“新平台更好”的声音要看现场条件、维护能力和预算。如果客户要求全新原装产品那肯定应该选替代型号但如果是改造项目和备件维护场景S7-200依然是很顺手的工具。1.3 I/O分配与系统拓扑以S7-200 CPU224XP为例它自带14个数字量输入、10个数字量输出、2路模拟量输入和1路模拟量输出还有两个RS485口。这个配置做两进两出的停车场刚好够用不需要扩展模块。我常用的I/O分配表如下地址功能说明地址功能说明I0.0入口地感A线圈Q0.0入口道闸开闸I0.1入口地感B线圈Q0.1入口道闸关闸I0.2出口地感C线圈Q0.2出口道闸开闸I0.3出口地感D线圈Q0.3出口道闸关闸I0.4入口道闸上限位Q0.4满位指示灯I0.5入口道闸下限位Q0.5报警蜂鸣器I0.6出口道闸上限位Q0.6入口道闸允许灯I0.7出口道闸下限位I1.0入口防砸雷达/光栅I1.1出口防砸雷达/光栅I1.2手动/自动切换系统拓扑上分三层设备层是地感线圈、防砸雷达、道闸电机、LED屏控制层是S7-200 PLC监控层是值班室电脑或触摸屏。PLC通过RS485口和上位机通信道闸电机通过中间继电器控制LED屏通过自由口或者Modbus通信刷新数据。整个系统没有网络拓扑图那么复杂但每个环节都要提前规划好尤其是通信方式要在写程序之前定下来。2. 硬件选型与电气接线实操2.1 传感器选型地感、红外与超声波的取舍车辆检测是这套系统的眼睛选型直接影响计数准确性。市面上常见三种方案地感线圈、红外对射/光栅、超声波雷达。地感线圈是停车场项目里最经典的方案原理是车辆金属底盘经过埋设的线圈时线圈电感量变化触发检测器输出开关量。它的优点是抗光线干扰、成本低、检测稳定缺点是要路面开槽、施工量大且单线圈无法判断方向。本项目的入口和出口都采用双线圈布局就是为了让PLC能判断车辆方向。红外对射和光栅多用于道闸防砸安装在闸杆两侧。车辆在杆下停留时光路被阻断PLC收到信号后禁止落杆。这种方案安装简单但对灰尘和雨雾比较敏感需要定期清洁探头。超声波雷达的防砸效果更好不受光线和灰尘影响但价格稍贵而且对低矮物体和行人的区分能力有限。选型时的核心判断标准是“检测对象是什么”。计数用双地感防砸用红外光栅或雷达两者各司其职。不要指望单靠一种传感器解决所有问题。2.2 执行部件道闸电机与LED屏怎么接道闸的控制方式有两种常见情况。一种是道闸自带控制盒PLC只需要输出一组干接点给控制盒例如“开闸”和“关闸”信号剩下的事情由控制盒自己处理。另一种是纯粹的道闸电机PLC通过中间继电器控制接触器改变电机接线来实现正反转。施工时大多数道闸都带控制盒所以PLC输出信号到控制盒更省事。输出侧必须经过中间继电器做电气隔离PLC的数字量输出点不要直接驱动交流接触器线圈否则很容易烧点。选择中间继电器时线圈电压要和PLC输出类型匹配。CPU224XP的晶体管输出是直流24V那就选DC24V线圈的继电器如果选的是继电器输出型CPU虽然可以直接带小负载仍建议加中间继电器方便以后检修。LED显示牌是剩余车位的直观出口。简单模式只需要PLC给一个开关量信号显示“满位”但多数客户要求显示具体剩余数量。这种情况可以让LED屏支持Modbus RTU通信PLC把剩余车位数值写到对应的保持寄存器屏幕按轮询周期刷新。注意LED屏的通信参数要提前和厂家确认波特率、数据位、校验位不一致会导致数据乱码。2.3 电源与布线接地、隔离、浪涌保护电源是很多现场故障的源头但也是最容易被忽略的部分。我的习惯是PLC工作电源和外部传感器电源分开都用独立的DC24V开关电源避免传感器短路或者瞬间大电流影响PLC。开关电源容量要预留至少20%余量比如各路负载算下来2A就选3A甚至5A的电源。负载电流可以简单估算地感检测器每个约100mA左右红外光栅对射约200mA中间继电器线圈约50mACPU224XP本机消耗约几百毫安。两进两出配置下总负载通常在1.5A以内。选一个5A开关电源完全够用化价不高但稳定性好很多。接线时注意几个细节PLC输入公共端的接法取决于传感器类型。NPN输出传感器要把公共端接在24V正极PNP输出传感器要把公共端接在0V很多三线制光电传感器是棕色接24V、蓝色接0V、黑色输出采购时要确认输出类型否则PLC输入永远没信号。地感线圈引线必须双绞每米至少绞20圈而且要远离动力线缆。埋地线圈的切割槽深度一般30到50毫米转角要切成45度倒角防止导线应力断裂。线圈匝数根据检测器说明书调整从3到5匝不等。这些细节看着小影响却是项目能不能稳定跑半年的关键。电源侧的浪涌保护也不能省。道闸电机、接触器这类感性负载在断电瞬间会产生反向电动势轻则干扰计数信号重则击穿PLC输出点。中间继电器线圈两端并联续流二极管交流接触器线圈两端并联RC吸收回路这是标准做法。有条件的话在PLC电源输入端加一个浪涌保护器雷雨天气能少很多麻烦。3. 梯形图实现与关键逻辑设计3.1 车辆进出检测双线圈防抖计数停车场计数不准绝大部分原因不是PLC程序写错而是检测信号本身有毛刺。车辆经过地感线圈时先压前轮、再压后轮前轮和后轮的信号是连续的如果只用单个线圈的一个上升沿来计数一辆车就可能触发两次。更麻烦的是出口排队时连续车距很小一个脉冲还没结束下一辆车的脉冲又来了。解决办法是采用双地感方向判断。入口处埋设两个线圈A线圈靠近入口外侧B线圈靠近闸机侧。车辆进入时一定是先压A再压B程序只有在“A已压且B刚变成ON”这个顺序成立时才判定为一次有效的入库计数。反过来先压B再压A就判定为倒车或者出口方向车辆不计数。这个逻辑写成梯形图并不复杂核心是几个辅助继电器加一个计时器Network 1 // A压到且B未压置位方向标志 LD I0.0 AN I0.1 M0.0 Network 2 // 方向标志成立且B上升沿触发入库脉冲 LD M0.0 EU M0.1 Network 3 // 入库脉冲 LD M0.1 AN T37 INC_W VW4这里T37是防抖和防追尾定时器。计数成功后启动一个2到3秒的屏蔽窗口在这个窗口内即使B信号再次抖动也不会重复计数。屏蔽时间不能太长否则排队车辆跟车太近时会漏计2秒是经验值实际调试时根据现场车流速度微调。方向标志的复位也很关键。当B线圈有信号、A无信号或者A、B都无信号时要把M0.0复位否则下一辆车来的时候方向判断会错。出口方向用同样的结构只是线圈顺序反过来C线圈在外、D线圈在闸机侧。3.2 道闸升降状态机限位加防砸道闸控制不能简单地“有车就开、没车就关”。实际项目里必须考虑限位、防砸和手动干预。开闸条件一般有三个入口检测到来车且剩余车位大于0或者值班室手动开启或者手动模式。开闸输出置位后闸杆上升碰到上限位开关时复位开闸输出。这个过程中必须保证开闸和关闸不会同时输出否则会损坏道闸电机。关闸的条件稍微复杂车辆已经通过闸机下方的地感或者防砸雷达并且司机离开道闸区域延时3到5秒后开始落杆。落杆过程中如果防砸雷达检测到有人或者有车要立即停止关闸并重新抬杆。这就是“防砸优先”逻辑一定要用置位优先的S/R指令来实现不能简单用互锁。我用置位复位指令比较多一段简化的逻辑思路是这样Q0.0开闸用S置位用上限位或急停复位Q0.1关闸用S置位用下限位或防砸信号复位。当防砸信号有效时强制复位Q0.1再置位Q0.0。只要S/R的顺序写对逻辑上天然自带互锁性质。手动模式用于系统调试或者设备故障时。手动/自动切换开关I1.2接到PLC输入自动模式走上述逻辑手动模式由值班室按钮直接控制道闸PLC只做状态监测不干预输出。这个功能看上去简单但现场调试时特别重要没有它你一个人根本调不了闸机。3.3 车位计算、满位输出与LED显示剩余车位数值是全场业务的核心。总车位数存放在VW10可以通过触摸屏修改。上电初始化时用SM0.1把总车位数搬运到剩余车位VW0当前车辆数VW2清零。入库计数加1出库计数减1同时更新当前车辆数和剩余车位数。程序里还要防止当前车辆数变成负数。比如系统刚上电时场内实际有车计数初始值却是0出口车辆经过会把VW2减成负数显示就会乱套。常见做法是上电时由值班员手动设定一个当前车辆数初值或者用触摸屏把“当前车数”调成和现场一致。这个初始化步骤看着不重要实际使用中非常关键。满位逻辑很简单VW0小于等于0时置位无车位的标志位M2.0。这个标志位有三个作用点亮Q0.4满位指示灯禁止入口道闸在自动模式下抬杆让LED屏显示“满位”或者“0”。出口道闸不受满位影响场内车辆任何时候都要能出去。LED屏刷新可以通过Modbus通信直接读VW0值普通文本屏或者大屏都支持。把VW0映射到保持寄存器40001设置好从站地址和波特率屏幕轮询刷新即可。如果LED屏比较老、只支持ASCII协议那要用S7-200的自由口指令想办法那是另一个话题这里不展开。3.4 故障告警与时间标签的处理监控系统除了正常逻辑还要能发现问题。最常见的是道闸限位超时告警PLC输出开闸或者关闸指令后正常应该在5到10秒内碰到限位开关如果超过时间还没有到位说明闸杆被卡住或者限位开关损坏需要报警提醒值班员。实现超时检测一般用一个TON定时器在输出置位的同时启动定时。定时时间到但限位输入还没有到达就置位故障标志M3.0触发Q0.5蜂鸣器并把故障代码写入VW20。上位机读到VW20非零时在监控画面上弹出报警框。S7-200本身带硬件时钟可以在每次事件发生时把时间戳写到V区方便上位机生成进出记录。调用读取实时时钟的指令把年、月、日、时、分、秒分别存到VB30开始的区域再和进出事件一起通过Modbus传给上位机。注意S7-200的老型号需要保持电池有电否则断电后时钟会丢失。4. 上位机监控与通信配置4.1 PPI与Modbus RTU怎么选S7-200的两个RS485口支持多种通信方式选择哪种取决于你的上位机环境。如果只是接西门子触摸屏用PPI协议最方便触摸屏组态时直接选择S7-200驱动地址填站号和VW地址就行。如果值班室电脑要用组态软件可选的路线有三条一是购买USB-PPI编程电缆连接电脑组态软件通过PPI驱动读写S7-200二是加装CP243-1以太网模块走TCP/IP三是让PLC当Modbus从站电脑用RS485转USB模块做Modbus RTU主站轮询。我的习惯是能走Modbus就尽量走Modbus。原因很简单PPI协议是西门子私有协议第三方组态软件支持得好不好要看厂家的驱动质量而Modbus RTU是通用协议几乎所有的组态软件、LED屏、触摸屏、串口服务器都原生支持后期扩展自由度大得多。使用Modbus库需要注意的一个大坑是PLC的某个串口一旦配置成Modbus从站PPI在线监控就失效了。所以调试阶段一般先用PPI把程序下载好再激活Modbus从站指令或者让Port1保持PPI、Port0做Modbus两个口分工就不会互相打架。CPU224XP正好有两个串口这也就是我前面说选CPU224XP而不是CPU221的原因之一。4.2 V区变量映射与组态配置Modbus从站通信的核心是把PLC的V区变量映射到保持寄存器地址。S7-200的Modbus从站库在Micro/WIN指令向导里配置需要指定保持寄存器起始地址比如从VB0开始。最常见的映射关系是40001对应VW0、40002对应VW2依次类推。不同库版本的支持范围不一样具体起始偏移量以向导生成时的设定为准组态软件里变量地址要与之严格一致。我这套项目里的映射表大概是这样的Modbus地址PLC变量说明40001VW0剩余车位数40002VW2当前场内车辆数40003VW4累计入库数40004VW6累计出库数40005VW8手动设定的当前车数40006VW10总车位数40007VW20故障代码40008VW30实时年份时间戳首字节组态软件里新建变量时注意寄存器类型要选“保持寄存器”或“4区寄存器”数据类型一般是16位无符号整数。有些组态软件存在字节顺序问题读出来数值断崖式跳变多半是高低字节顺序不对在组态软件的字节序设置里交换一下即可。通信参数统一设置为9600波特率、8数据位、无校验、1停止位或者19200波特率。S7-200的RS485口引脚定义和普通RS485转换器不一样DB9针口的3脚是B8脚是A。如果你的USB转485模块标的是A、B接上去不通把A和B对调一下再试不要怀疑是模块坏了。4.3 报警联动与数据记录上位机监控不只是看数字还要处理报警。当PLC的M3.0故障标志或者VW20故障代码变化时组态画面可以做一个动画连接故障时道闸图标变红、报警文字闪烁、联动蜂鸣器音频文件。值班员确认后可以写一个复位命令到某个保持寄存器PLC检测到复位字后清除故障标志。数据记录可以在组态软件里做历史曲线和报表记录每个小时的进出车辆数、高峰时段、满位时长。这些数据不占PLC程序空间全在电脑端完成。如果需要无人值守在电脑上做一个报警提示窗或者通过短信模块把故障信息发到负责人手机上都属于上位机范畴的扩展。有一点提醒一下不要把PLC程序里的告警和上位机告警混为一谈。PLC告警负责现场声光报警和硬件保护上位机告警负责值班员远程感知。两层都要做但逻辑职责要分清。5. 现场调试问题与排查实录5.1 地感线圈频繁误触发现场调试第一天就遇到这类问题没有车经过入口计数却隔几分钟跳一个数。排查思路按顺序来先看地感检测器的指示灯确认是不是检测器本身在闪把灵敏度旋钮逐级调低再观察是不是旁边车道的大货车经过时导致误触发然后用兆欧表检查线圈引线绝缘埋地的线圈一旦进水或者绝缘破损整个检测器都会变得极不稳定。实际项目里最常见的原因是两个一是线圈埋得离护栏或者钢筋网太近金属体靠近线圈改变了初始电感量检测器工作在临界状态二是相邻线圈间距不够两个入口的线圈之间互相串扰。解决办法是把灵敏度适当降低两个地感线圈中心距离保持在1.5米以上入口双侧相邻车道的线圈尽量错开位置。线圈引线没有双绞也会导致误触发。地感检测器要求引线密集双绞目的就是抵消外部电磁干扰。现场如果引线和动力电缆走同一个线槽感应出来的噪声足够让检测器误动作。这个问题的排查在图纸上看不出来必须到现场跟着线走一遍才能发现。5.2 道闸无反应或输出点损坏排查道闸不动先看PLC输出指示灯亮不亮。如果Q0.0指示灯亮了但闸机没反应问题在输出回路中间继电器线圈有没有得电、继电器触点有没有闭合、道闸控制盒的接线端子有没有松。如果Q0.0指示灯根本不亮问题在程序逻辑手动/自动切换是不是在自动位限位开关是不是处于故障状态满位标志有没有置位。调试时可以用强制功能直接测试输出点但注意强制输出前一定要切断道闸电机的动力电源否则闸杆突然抬起落下容易伤到设备或者人。强制测试的目的是确认PLC输出点到负载之间的线路没有问题确认完再恢复自动逻辑。输出点烧毁是另一个常踩的坑。很多新手直接拿PLC输出点接AC220V接触器线圈导致触点烧掉或者晶体管击穿。我的经验是PLC到执行机构之间一定要有中间继电器。继电器线圈选DC24V触点容量选5A以上现场更换也方便。感性负载两端加吸收回路输出点寿命能延长很多。5.3 S7-200下载通信失败的兼容性问题S7-200停产多年带来的最大问题是配套软件Micro/WIN在新系统上的兼容性。安装时经常遇到授权异常或者无法启动解决办法是右键安装文件在兼容性疑难解答里选择Windows XP SP3模式重新安装多数情况下都能解决。下载程序时通信失败的排查顺序先检查USB-PPI电缆的驱动是否正常设备管理器里能不能看到COM口再检查Micro/WIN里的PC/PPI cable设置通信地址要和PLC一致默认站号2波特率9.6k最后检查电缆有没有连到CPU的Port1口。很多S7-200用户习惯把程序下载线插在Port0如果程序里Port0已经被配置成Modbus从站那在线连接必然失败这时候换Port1口或者临时修改程序。另一个经常被忽略的问题是PLC处于RUN状态时直接下载。如果钥匙开关在RUN位置Micro/WIN会提示无法上传或下载需要把钥匙拨到STOP位置或者通过调试菜单让PLC进入STOP模式。现场调试时最好养成习惯下载前看一眼钥匙开关位置。6. 写在最后的一些经验这套系统做完之后我最大的感触是S7-200做停车场监控难点从来不在程序而在现场。传感器信号质量、接线工艺、通信方式的选择才是决定项目能不能稳定跑下去的关键。PLC梯形图只是把现场的物理信号和需求逻辑串起来而已。如果你准备接手同类型的项目我建议先把I/O分配表画清楚、把地感线圈的现场条件摸清楚、把通信协议定下来然后再动手写梯形图。程序量本身很小真正花时间的是施工阶段的布线和调试阶段的信号排查。别嫌老平台落后S7-200的好处是资料全、配件便宜、会维护的人多。只要避开通信和接线的几个坑这个方案完全可以用很低的成本做得很稳也方便后续维护的人接手。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。