1. 项目概述:基于S7-1200的交通灯控制系统
这个项目实现了一个典型的十字路口交通灯控制方案,采用西门子S7-1200 PLC作为主控制器,配合博途V15开发环境和HMI触摸屏完成整套系统的设计与调试。系统核心在于使用比较指令实现交通灯状态的时序控制,并通过触摸屏提供人机交互界面,方便参数调整和状态监控。
在实际工业应用中,这类控制系统常见于城市道路交叉口、厂区内部交通管理、停车场出入口等场景。相比传统继电器控制方案,PLC方案具有编程灵活、维护方便、可扩展性强等优势。特别是通过触摸屏的引入,使得现场调试人员无需修改PLC程序即可调整红绿灯时长等关键参数。
2. 硬件配置与博途V15环境搭建
2.1 硬件选型与连接
本系统采用西门子S7-1200系列PLC(建议型号:1214C DC/DC/DC)作为主控制器,该型号具备:
- 14点数字量输入(I0.0-I0.7,I1.0-I1.5)
- 10点数字量输出(Q0.0-Q0.7,Q1.0-Q1.1)
- 2路模拟量输入
- 集成PROFINET接口用于触摸屏通讯
交通灯信号输出建议分配:
- 东西方向红灯:Q0.0
- 东西方向黄灯:Q0.1
- 东西方向绿灯:Q0.2
- 南北方向红灯:Q0.3
- 南北方向黄灯:Q0.4
- 南北方向绿灯:Q0.5
注意:实际输出点分配应根据具体PLC型号和现场接线情况调整,务必在硬件配置中确认无误。
2.2 博途V15软件环境配置
- 安装TIA Portal V15(建议安装Update5及以上版本)
- 新建项目,选择"Create new project"
- 在项目树中添加新设备:
- 控制器选择"S7-1200"系列对应CPU型号
- HMI选择适合的触摸屏型号(如KTP700 Basic)
- 配置PLC与HMI的PROFINET连接:
- 为PLC分配IP地址(如192.168.0.1)
- 为HMI分配同网段IP(如192.168.0.2)
- 在PLC变量表中创建所有需要的变量(后续编程使用)
3. PLC程序设计:比较指令实现交通灯控制
3.1 定时器与比较指令的应用原理
交通灯控制的核心是时序逻辑,本方案采用以下设计思路:
- 使用TON定时器累积系统运行时间
- 通过比较指令判断当前所处时段
- 根据时段控制相应信号灯输出
关键变量定义:
- "SystemTimer"(INT):系统运行总秒数
- "EW_RedTime"(INT):东西方向红灯时间
- "EW_GreenTime"(INT):东西方向绿灯时间
- "YellowTime"(INT):黄灯时间(通常固定)
3.2 梯形图程序实现
在OB1主循环块中编写以下逻辑:
code复制Network 1: 系统计时
TON_SystemTimer(IN:=TRUE, PT:=T#1S);
MOVE(EN:=TON_SystemTimer.Q, IN:=SystemTimer+1, OUT=>SystemTimer);
RESET_TIMER(TON_SystemTimer);
Network 2: 东西方向绿灯控制
CMP>=SystemTimer, 0;
CMP<=SystemTimer, EW_GreenTime;
AND
= Q0.2 // 东西绿灯
Network 3: 东西方向黄灯控制
CMP>SystemTimer, EW_GreenTime;
CMP<=SystemTimer, EW_GreenTime+YellowTime;
AND
= Q0.1 // 东西黄灯
Network 4: 东西方向红灯控制
CMP>SystemTimer, EW_GreenTime+YellowTime;
CMP<=SystemTimer, EW_GreenTime+YellowTime+EW_RedTime;
AND
= Q0.0 // 东西红灯
Network 5: 南北方向控制(与东西方向相反)
// 类似逻辑,输出到Q0.3-Q0.5
3.3 周期复位处理
在系统计时达到一个完整周期时(东西红灯+南北绿灯+黄灯时间),需要复位计时器:
code复制Network 6: 周期复位
CMP>SystemTimer, TotalCycleTime;
MOVE(EN:=RESET_CYCLE, IN:=0, OUT=>SystemTimer);
4. 触摸屏界面设计与调试
4.1 HMI画面组态
在博途V15中为触摸屏创建以下元素:
-
主监控画面:
- 交通灯状态模拟(圆形指示灯)
- 当前计时显示(数值显示框)
- 手动控制按钮(测试模式)
-
参数设置画面:
- 东西绿灯时间设置(数值输入框,关联变量"EW_GreenTime")
- 东西红灯时间设置(数值输入框,关联变量"EW_RedTime")
- 黄灯时间设置(数值输入框,关联变量"YellowTime")
- 保存按钮(写入PLC数据块)
4.2 触摸屏与PLC数据交互
- 在PLC中创建数据块(如DB1)存储所有HMI可访问参数
- 配置HMI连接变量指向PLC数据块中的对应地址
- 设置合理的变量范围限制(如绿灯时间30-90秒)
实际调试中发现:触摸屏数值输入控件应设置"写入模式"为"释放时",避免连续写入导致PLC处理负担过重。
5. 系统调试与问题排查
5.1 常见调试问题及解决方案
-
信号灯状态不正确:
- 检查PLC输出点分配与实际接线是否一致
- 使用博途的"Monitor"功能观察程序执行情况
- 确认比较指令中的阈值设置正确
-
触摸屏无法连接PLC:
- 确认IP地址配置正确
- 检查PROFINET电缆连接
- 在PLC属性中启用"允许来自远程对象的PUT/GET通信访问"
-
参数修改不生效:
- 确认数据块属性设置为"非优化"(否则需要符号寻址)
- 检查HMI控件关联的变量地址是否正确
- 确认没有其他程序在修改同一变量
5.2 现场调试技巧
-
先单独测试PLC程序:
- 使用强制表(Force Table)手动设置输入信号
- 观察输出点状态是否符合预期
-
再测试触摸屏功能:
- 从简单元素开始,逐步增加复杂度
- 使用HMI模拟器进行初步验证
-
最后进行联合调试:
- 观察系统一个完整周期(建议先用较短时间参数)
- 检查各状态转换是否平滑
6. 系统优化与扩展思路
6.1 功能优化建议
-
增加夜间模式:
- 添加时间判断逻辑
- 夜间可切换为黄灯闪烁模式
-
紧急车辆优先:
- 添加紧急输入信号(如I0.0)
- 触发时强制当前方向绿灯
-
车流量自适应:
- 添加车辆检测传感器输入
- 动态调整绿灯时间
6.2 程序结构优化
-
使用FB功能块封装交通灯控制逻辑:
- 提高代码复用性
- 方便管理多个方向的信号灯
-
添加注释和文档:
- 为每个网络添加功能说明
- 创建交叉引用列表
-
异常处理:
- 添加看门狗定时器
- 关键参数范围检查
在实际项目中,这套系统已经稳定运行超过6个月。最大的收获是:比较指令虽然简单,但通过合理的程序设计,完全可以胜任这类周期性控制任务。特别是在触摸屏配合下,现场调整参数变得非常便捷,大大减少了后期维护的工作量。
