ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

基于S7-200 PLC的停车场智能监控系统设计与调试

基于S7-200 PLC的停车场智能监控系统设计与调试

聊这个项目之前,先交代一下背景:一个地面停车场要做智能化改造,总共两百来个车位,两进两出,要求能自动计数、显示剩余车位、闸机联动,还要把实时数据传到值班室电脑上。我拿到需求后直接定了方案:基于西门子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,中间继电器线圈约50mA,CPU224XP本机消耗约几百毫安。两进两出配置下,总负载通常在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脚是B,8脚是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的好处是资料全、配件便宜、会维护的人多。只要避开通信和接线的几个坑,这个方案完全可以用很低的成本做得很稳,也方便后续维护的人接手。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进