1. 项目概述
这个基于西门子S7-1200 PLC和TIA Portal V15.1的十字路口交通灯控制系统,是我在实际工程项目中多次优化后的成熟方案。不同于教科书上的简单示例,这套系统包含了四种实用工作模式,能够应对真实路况的各种需求。
核心控制逻辑采用时间比较法而非传统的步进指令,这样做最大的好处是参数调整时不需要重新搭建程序结构。系统支持通过HMI进行所有参数的在线修改,包括各阶段持续时间、夜间模式时段等,维护人员可以直接在现场根据实际情况调整。
提示:所有定时器都使用了S5TIME格式,输入时注意格式为"T#30s"而非简单的"30",否则编译时会报错。
2. 硬件配置与IO分配
2.1 基本硬件需求
- PLC主机:西门子S7-1214C DC/DC/DC
- 数字量输出模块:SM1223 16DO × 1
- HMI设备:KTP700 Basic
- 车辆检测:激光传感器(推荐Banner Q45系列) × 4
- 紧急按钮:带LED指示的自锁按钮 × 1
2.2 IO地址分配表
| 信号类型 | 设备名称 | 地址 | 备注 |
|---|---|---|---|
| DI | 启动按钮 | I0.0 | 瞬动按钮 |
| DI | 紧急开关 | I0.1 | 自锁开关 |
| DI | 东西向车检 | I0.2 | 常开型 |
| DI | 南北向车检 | I0.3 | 常开型 |
| DO | 东西红灯 | Q0.0 | 220V AC |
| DO | 东西黄灯 | Q0.1 | 220V AC |
| DO | 东西绿灯 | Q0.2 | 220V AC |
| DO | 南北红灯 | Q0.3 | 220V AC |
| DO | 南北黄灯 | Q0.4 | 220V AC |
| DO | 南北绿灯 | Q0.5 | 220V AC |
3. 程序设计详解
3.1 主循环控制逻辑
pascal复制// 主定时器
"Cycle_Timer"(TON,
IN := "Start_Button" OR "Auto_Restart",
PT := "Cycle_Time");
// 状态判断
"Green_Phase" := "Cycle_Timer".ET <= "Green_Time";
"Flash_Phase" := "Cycle_Timer".ET > "Green_Time" AND
"Cycle_Timer".ET <= ("Green_Time" + "Flash_Time");
"Yellow_Phase" := "Cycle_Timer".ET > ("Green_Time" + "Flash_Time") AND
"Cycle_Timer".ET <= ("Green_Time" + "Flash_Time" + "Yellow_Time");
这里使用了三个关键变量:
- Cycle_Time:设为T#30s,完整周期时间
- Green_Time:设为T#25s,绿灯常亮时间
- Flash_Time:设为T#3s,绿灯闪烁时间
3.2 夜间模式实现
pascal复制// 时间范围判断
"Night_Mode" := ("System_Time" >= T#1:00:00) AND
("System_Time" <= T#6:00:00);
// 黄灯闪烁控制
"Flash_Timer"(TP,
IN := "Night_Mode" AND NOT "Vehicle_Detected",
PT := T#500ms);
"Yellow_Lights" := "Flash_Timer".Q;
关键点说明:
- 使用500ms定时器实现1Hz闪烁,比依赖系统时钟更可靠
- Vehicle_Detected信号来自四个方向传感器的或逻辑
- 实际项目中建议增加环境光传感器作为双重判断
3.3 车流量自适应算法
pascal复制// 车流计数
"Counter_WE"(CTU,
CU := "Sensor_WE",
PV := 32767,
R := "Counter_Reset");
"Counter_NS"(CTU,
CU := "Sensor_NS",
PV := 32767,
R := "Counter_Reset");
// 绿灯延长判断
IF "Counter_WE".CV > ("Counter_NS".CV * 2) THEN
"Extend_WE" := 1;
ELSIF "Counter_NS".CV > ("Counter_WE".CV * 2) THEN
"Extend_NS" := 1;
END_IF;
// 延长处理
IF "Extend_WE" THEN
"Green_Time" := T#35s; // 默认25s + 10s
"Extend_Timer"(TON,
IN := 1,
PT := T#10s);
END_IF;
经验参数:
- 车流比例阈值设为2:1经过实测验证
- 最大延长10秒避免交通瘫痪
- 建议在HMI上显示当前车流计数和延长状态
4. HMI界面设计要点
4.1 主控制画面
-
模式选择区:
- 自动/夜间/手动模式切换开关
- 紧急模式带密码保护
-
状态显示区:
- 四方向信号灯状态模拟
- 当前模式文字提示
- 周期剩余时间进度条
-
参数设置区:
- 各时段时间设置(带输入限制)
- 车流敏感度调整滑块
4.2 报警与日志
- 信号灯故障检测(电流监测)
- 传感器异常报警
- 模式切换记录带时间戳
重要:所有设置参数必须添加写入保护,避免误操作。建议采用三级权限管理:
1级(操作员):仅模式切换
2级(技术员):参数调整
3级(工程师):系统配置
5. 调试与故障排查
5.1 常见问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 黄灯不闪烁 | 1. 定时器地址冲突 2. 输出点硬件故障 |
1. 检查定时器复用情况 2. 用万用表测量输出 |
| 夜间模式不切换 | 1. 系统时钟未同步 2. 逻辑条件错误 |
1. 连接NTP服务器 2. 监控时间变量值 |
| 车流统计不准 | 1. 传感器灵敏度不足 2. 计数器未复位 |
1. 调整传感器位置 2. 检查复位逻辑 |
5.2 仿真测试技巧
-
强制表使用:
- 模拟车辆传感器信号
- 测试紧急模式切换
-
PLCSIM Advanced技巧:
- 保存多个测试场景
- 使用序列功能模拟车流变化
-
联调建议:
- 先测试单模式再组合
- 记录各模式切换时的输出状态
6. 工程优化建议
- 增加信号灯电流检测功能,实时监测灯泡状态
- 集成天气接口,雨天自动延长黄灯时间
- 添加校时功能,定期同步NTP服务器
- 预留V2X通信接口,为智能网联做准备
实际部署时要注意:
- 所有输出回路加装浪涌保护器
- 传感器电源与信号线分开走线
- PLC柜内预留20%备用点位
这套系统在多个实际路口运行稳定,最大的优势是参数调整灵活。曾经有个路口在早高峰时需要将东西向绿灯延长到40秒,我们只需要在HMI上修改参数即可,不需要重新下载程序。对于新手来说,建议先从基本定时功能开始测试,逐步增加车流检测等高级功能,这样更容易理解整个控制逻辑。