停车场车位计数:增减计数器 CTUD
入口地感检测到车进:计数 +1;出口检测到车出:计数 −1。车位数到上限就亮满位灯、入口不再抬闸。 这类"有加有减"的场景不能用普通增计数器,要用增减计数器(CTUD)。 练习时可直接打开 PLC 在线仿真器 边搭边跑,其它示例见 梯形图示例库。
题目
小型停车场共 50 个车位:入口、出口各一个地感线圈;实时统计场内车辆数;车位满时点亮"满位"灯,取卡按钮不再抬闸;另有手动复位清零。
变量表
| 变量名 | 类型 | 习惯地址 | 说明 |
|---|---|---|---|
| 入口地感 | 布尔 | I0.0 | 车辆压过时为 1 |
| 出口地感 | 布尔 | I0.1 | 车辆压过时为 1 |
| 复位按钮 | 布尔 | I0.2 | 手动清零(检修用) |
| 取卡按钮 | 布尔 | I0.3 | 入场取卡/按按钮请求抬闸 |
| 场内车辆 | 数字 | C1 | 增减计数器(CTUD),预设值 50 |
| 满位灯 | 布尔 | Q0.0 | 车位已满指示 |
| 入口道闸 | 布尔 | Q0.1 | 抬闸输出 |
梯形图逻辑
计数器的加、减输入都必须经正脉冲触点;比较用计数器当前值 CV:
C1(CTUD 增减计数器,预设值 50): CU(加计数) ← [ I0.0 正脉冲 ] CD(减计数) ← [ I0.1 正脉冲 ] R(复位) ← [ I0.2 常开 ] 满位灯 Q0.0 = ( C1.CV ≥ 50 ) 用“大于等于”比较 入口道闸 Q0.1 = [ I0.3 常开 ] · ( C1.CV < 50 ) 用“小于”比较
逻辑:
满位 = 场内车辆 ≥ 总车位 入口抬闸 = 取卡按钮 · /满位
搭建步骤
- 变量表建好上表 7 个变量:「场内车辆」类型选数字,其余为布尔
- 拖一个增减计数器(CTUD)到第一个梯级,预设值填 50
- 加计数(CU)端放一个正脉冲触点,绑定「入口地感」
- 减计数(CD)端放一个正脉冲触点,绑定「出口地感」
- 复位(R)端放一个常开触点,绑定「复位按钮」
- 新梯级:放一个大于等于比较,比较对象是计数器当前值
C1.CV与 50,输出接常开线圈「满位灯」 - 再一个梯级:「取卡按钮」常开触点 → 串联一个小于比较(
C1.CV < 50)→ 常开线圈「入口道闸」 - 仿真:拨动入口地感 3 次、出口地感 1 次,观察计数值变化;把计数打到 50 以上,确认满位灯亮且道闸不再动作
要点:
① 地感的电平直接进计数器会重复计数——车压在上面几百毫秒,计数器就加几百次。必须经正脉冲(上升沿)后再进 CU/CD。
② 加减计数器是"有记忆"的元素:CTUD 的 CV 会保持,断电由 PLC 的保持区决定;练习里用复位按钮清零即可。
③ 实际系统还要防"数字为负"(出口误检)与"计满"(数量溢出):常见做法是加下限/上限判断,或者干脆用地磁+摄像头双重校验。教学里用比较指令兜底就够了。
变体与延伸
- 剩余车位显示:用减法功能块算
50 − 场内车辆,把结果送显示屏——这是检查计数是否漏检的好方法 - 多出入口:每个口的地感各接一个正脉冲触点,CU/CD 端并联多个触点即可
- 只统计不控制:不接道闸,只用 CTU(单向加计数)统计当日入场车次
- 去向其它示例:和 传送带计数分拣 对比学,一个是"数够了就动作",一个是"双向计数看状态"
练习完成后,如果你想把这套计数逻辑用到真实的西门子 S7-1500 工程里,可以先用 梯形图转 SCL 得到结构化文本,再用 TiaLink(博途 MCP 网关) 写进博途工程并下载到 PLCSIM 仿真。