1. 项目概述与需求分析
在工业自动化控制系统中,交通信号灯控制是一个经典的教学案例,也是PLC入门学习的绝佳实践项目。我最近用西门子S7-200 PLC和组态王软件完成了一个带倒计时显示的交通灯控制系统,这里将完整分享从硬件配置到软件实现的全部细节。
这个项目的核心需求是实现一个标准的十字路口交通灯控制,具体要求包括:
- 东西向和南北向交替通行
- 绿灯亮30秒后切换为黄灯闪烁3秒
- 红灯亮时另一方向绿灯亮
- 每个方向配备倒计时显示
- 可通过按钮启动/停止系统
提示:在实际工程中,交通灯控制还需要考虑夜间模式、紧急车辆优先等特殊场景,但作为基础教学项目,我们先聚焦核心功能实现。
2. 硬件配置与IO分配
2.1 设备选型清单
我选择的硬件配置如下:
- 控制器:西门子S7-200 CPU224(14DI/10DO)
- 编程软件:STEP 7-Micro/WIN
- HMI软件:组态王6.55
- 信号灯:红黄绿三色LED灯(DC24V)
- 按钮:常开触点自复位按钮(启动/停止各1个)
2.2 IO地址分配详解
合理的IO分配是PLC编程的基础。根据项目需求,我的分配方案如下:
| 信号类型 | 设备 | PLC地址 | 备注 |
|---|---|---|---|
| 输入 | 启动按钮 | I0.0 | 常开触点 |
| 输入 | 停止按钮 | I0.1 | 常开触点 |
| 输出 | 东西红灯 | Q0.0 | 东西方向禁止通行 |
| 输出 | 东西黄灯 | Q0.1 | 东西方向过渡警示 |
| 输出 | 东西绿灯 | Q0.2 | 东西方向允许通行 |
| 输出 | 南北红灯 | Q0.3 | 南北方向禁止通行 |
| 输出 | 南北黄灯 | Q0.4 | 南北方向过渡警示 |
| 输出 | 南北绿灯 | Q0.5 | 南北方向允许通行 |
注意:实际接线时,LED灯需要串联适当电阻限流,PLC输出点负载能力需核对技术参数。
3. PLC程序设计
3.1 主控程序设计
系统启停控制是程序的基础框架,我采用以下梯形图逻辑:
code复制Network 1 // 系统启动
LD I0.0 // 检测启动按钮
S M0.0,1 // 置位运行标志位
Network 2 // 系统停止
LD I0.1 // 检测停止按钮
R M0.0,1 // 复位运行标志位
3.2 交通灯时序控制
核心控制逻辑采用定时器级联方式实现,主要分为以下几个阶段:
3.2.1 东西绿灯阶段(30秒)
code复制Network 3
LD M0.0 // 系统运行中
AN T37 // 东西绿灯未超时
= Q0.2 // 东西绿灯亮
TON T37,300 // 启动30秒定时器
3.2.2 东西黄灯闪烁阶段(3秒)
code复制Network 4
LD T37 // 东西绿灯时间到
EU // 上升沿触发
TON T38,30 // 启动3秒定时器
LD T38
LPS
AN T39 // 闪烁控制
= Q0.1 // 东西黄灯
LRD
TON T39,5 // 0.5秒定时器
LPP
3.2.3 方向切换与红灯保持
南北方向的控制逻辑与东西方向类似,但需要错开时序。关键点在于使用前一个方向的定时器作为下一个方向的启动条件:
code复制Network 5 // 南北绿灯启动
LD T38 // 东西黄灯时间到
EU
TON T40,300 // 南北绿灯30秒
= Q0.5
3.3 倒计时功能实现
倒计时显示需要通过计算剩余时间并传送到组态王:
code复制Network 6 // 东西方向倒计时
LD M0.0
MOVW 300, VW0 // 初始30秒
-I T37, VW0 // 计算剩余时间
4. 组态王界面开发
4.1 工程创建与通信配置
- 新建组态王工程
- 添加S7-200 PLC设备驱动
- 设置PPI通信参数(波特率187.5kbps,站地址2)
实测经验:通信不稳定时可尝试添加中继器或检查终端电阻设置。
4.2 画面元素设计
主要界面元素包括:
- 十字路口示意图
- 两组三色信号灯图形
- 两个倒计时数字显示框
- 启动/停止按钮
关键属性设置示例:
javascript复制// 东西绿灯动画连接
if(\\本站点\Q0.2 == 1){
FillColor = RGB(0,255,0);
} else {
FillColor = RGB(64,64,64);
}
// 倒计时显示
Text = ToString(\\本站点\VW0);
4.3 数据绑定与调试
将组态王变量与PLC数据区对应:
- Q0.0 ~ Q0.5 绑定输出状态
- VW0、VW2 绑定倒计时值
调试技巧:
- 先测试单个灯状态是否正确
- 再检查时序逻辑是否符合预期
- 最后验证倒计时同步性
5. 系统调试与优化
5.1 常见问题排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 信号灯不亮 | 接线错误/PLC无输出 | 检查线路/监控PLC输出状态 |
| 时序混乱 | 定时器编号冲突 | 重新分配定时器资源 |
| 组态王显示不同步 | 通信周期设置过长 | 调整采集周期为500ms |
| 黄灯不闪烁 | 闪烁定时器未正确配置 | 检查T39定时器逻辑 |
5.2 性能优化建议
- 增加看门狗定时器防止程序死锁
- 使用S7-200的时钟存储器实现精准定时
- 添加系统运行状态指示灯
- 优化组态王画面刷新策略
6. 项目扩展思路
这个基础项目还可以进一步扩展:
- 添加人行横道按钮控制
- 实现时段控制(高峰/平峰模式)
- 增加故障自检功能
- 开发多路口联动控制
我在实际调试中发现,使用S7-200的顺控指令(SCR)可以更清晰地实现状态转换,这是后续可以尝试的优化方向。另外,组态王的历史数据记录功能可以用来分析交通流量,为智能交通控制打下基础。