基于PLC的交通灯毕设:从零搭建控制逻辑与硬件接线实战指南
摘要:许多自动化专业学生在完成“基于PLC的交通灯毕设”时,常因缺乏工程经验而陷入逻辑混乱、硬件接线错误或仿真调试困难等困境。本文面向PLC新手,系统讲解交通灯控制的状态机设计、I/O分配策略、梯形图编程规范,并提供可复用的 S7-1200 PLC 代码示例。读者将掌握从需求分析到实物部署的完整流程,避免常见逻辑死锁与信号干扰问题,高效完成课程设计。
1. 背景痛点:毕设里最容易踩的四个坑
逻辑设计缺陷
把“绿灯→黄灯→红灯”想成一条直线,结果主干道和支路同时出现绿灯,直接“撞车”。根本原因是没把“互锁”写进状态机,脑子里缺一张“状态转换图”。硬件选型误区
看到淘宝“继电器模块”便宜就下单,结果 8 路继电器只有 4 路常开触点,黄灯和红灯共地后鬼火乱闪。PLC 方案虽然单价高,但自带隔离+诊断,毕设答辩现场少翻车。I/O 分配拍脑袋
先画梯形图再数点数,发现 DI 口不够,临时把“紧急按钮”并到“手动/自动”旋钮上,逻辑全乱。正确顺序:先列信号表→再选 CPU→最后画图。调试盲区
只在 TIA Portal 仿真里点“在线”,现场一上电发现按钮抖动 20 ms,PLC 扫描周期 10 ms,结果按钮按一次被采样两次,状态机乱跳。仿真≠实物,必须加硬件滤波。
2. 技术选型对比:继电器、单片机还是 PLC?
| 维度 | 继电器硬接线 | 单片机(51/STM32) | PLC(S7-1200) |
|---|---|---|---|
| 可靠性 | 触点寿命 10⁵ 次,易氧化 | 看 PCB 工艺与看门狗 | 工业级 MTBF 10⁵ h,自带诊断 |
| 开发效率 | 接线 2 h,改逻辑 2 天 | 代码+PCB+调试 1 周 | 梯形图 2 h,在线监控 10 min |
| 维护性 | 图纸=天书,查线查到哭 | 需要源码+烧录器 | 模块化,替换 CPU 即可 |
| 扩展性 | 加一盏灯=加一排继电器 | 改 PCBA,重新打样 | 加模块,拖一根网线 |
结论:毕设场景下,PLC 在“答辩稳定性”上碾压其余方案;老师一句“现场改时序”就能秒改,继电器和单片机当场抓瞎。
3. 核心实现:用状态机把时序讲清楚
3.1 需求拆解
- 主干道(G1) 绿 30 s→黄 3 s→红 27 s
- 支路(G2) 红 30 s→绿 27 s→黄 3 s
- 黄灯过渡必须 3 s,不可压缩
- 紧急按钮(常闭)按下全红,松开后恢复
- 夜间模式开关:仅黄灯闪 1 Hz
3.2 五状态转换图
+---------+ | INIT | +----+----+ | v +---------------------------+ | STATE_MAIN_GREEN |<--+ | TON_30s.Q = 1 → 下一状态 | | +---------------------------+ | | | v | +---------------------------+ | | STATE_MAIN_YELLOW | | | TON_3s.Q = 1 → 下一状态 | | +---------------------------+ | | | v | +---------------------------+ | | STATE_SIDE_GREEN | | | TON_27s.Q = 1 → 下一状态 | | +---------------------------+ | | | v | +---------------------------+ | | STATE_SIDE_YELLOW | | | TON_3s.Q = 1 → 回到MAIN_G | | +---------------------------+ | +-----------------+紧急模式:任意状态→STATE_EMERGENCY_ALLRED,松开按钮→回到原状态(用记忆变量保存上一状态)。
3.3 I/O 分配表(S7-1200 CPU 1212C AC/DC/Rly)
| 符号 | 地址 | 类型 | 注释 |
|---|---|---|---|
| EMRG_BTN | %I0.0 | DI | 紧急按钮,常闭=1 |
| NIGHT_SW | %I0.1 | DI | 夜间模式,1=闪黄 |
| G1 | %Q0.0 | DO | 主干道绿灯 |
| Y1 | %Q0.1 | DO | 主干道黄灯 |
| R1 | %Q0.2 | DO | 主干道红灯 |
| G2 | %Q0.3 | DO | 支路绿灯 |
| Y2 | %Q0.4 | DO | 支路黄灯 |
| R2 | %Q0.5 | DO | 支路红灯 |
4. 梯形图(LAD)关键片段
以下代码符合 IEC 61131-3,可直接粘贴到 TIA Portal V17+,注释已内嵌。
4.1 状态机骨架(Network 1)
Network 1:状态切换主逻辑 // 用整数变量 STATE 保存当前状态 // 0=INIT 1=MAIN_G 2=MAIN_Y 3=SIDE_G 4=SIDE_Y 5=EMERGENCY LD EMRG_BTN JN EMRG_ON // 正常时序 LD STATE == 1 A TON_30s.Q JCN NEXT1 MOV 2, STATE // MAIN_G→MAIN_Y NEXT1: NOP 0 LD STATE == 2 A TON_3s.Q JCN NEXT2 MOV 3, STATE // MAIN_Y→SIDE_G NEXT2: NOP 0 // …… 其余状态类似,篇幅省略4.2 互锁输出(Network 2)
Network 2:绿灯/红灯互锁,防止同亮 LD STATE == 1 = G1 AN R1 // 硬件已共地,软件再互锁 = R2 LD STATE == 3 = G2 AN R2 = R14.3 紧急全红(Network 3)
LD EMRG_BTN FP M_BIT MOV STATE, LAST_STATE // 保存现场 MOV 5, STATE LD STATE == 5 = R1 = R24.4 夜间闪黄(Network 4)
LD NIGHT_SW A CLK_1Hz = Y1 = Y25. 性能与安全考量
扫描周期与响应延迟
CPU 1212C 典型扫描 2 ms,紧急按钮硬件去抖 15 ms,软件再采 1 次稳态,总延迟 <20 ms,远低于城市道路 200 ms 要求。输入滤波
在“设备组态”→DI 属性→输入滤波 4 ms,把机械按钮 5 ms 抖动吃掉,避免状态机误触发。输出互锁
软件互锁见 4.2;硬件侧用继电器模块常闭触点串联,即使 PLC 失控也不会让 G1 与 G2 同时得电。看门狗与诊断
启用循环监视时间 50 ms,超期直接停输出;模块自带 SF 灯,红灯亮=接线短路,答辩现场秒定位。
6. 生产环境避坑指南
电源噪声抑制
24 V 开关电源与 220 V 交流接触器分开两路空开;PLC 供电加 EMI 滤波器,现场 50 m 平行布线无复位。端子松动排查
上电前“一压二拉三回弹”,螺丝刀 0.5 N·m 扭矩;带弹簧的端子排用指甲勾一下线,松的会掉。程序下载失败
把 PG/PC 接口设成“PLCSIM”后忘记切回“Realtek”,导致 IP 冲突;养成习惯:下载前 Ping 192.168.0.1,通再下。接地环流
信号灯灯杆与 PLC 机壳两地,实测 3 V 压差;加隔离继电器,把 DO 口与灯杆电源完全断开,SF 灯不再误亮。
7. 拓展思考:行人按钮与车流量检测
状态机已预留 STATE_PED 和 STATE_DETOUR,只需把 %I0.2(行人按钮)或 %IW64(地感模拟量)作为转换条件,把 30 s 固定绿灯改成“最大 30 s、最小 10 s、无车提前截断”的弹性时序。下次升级,不妨把 S7-1200 换成 1500,加 WebServer,手机扫码就能看路口拥堵度——毕业设计直接变创业原型。
把上面的图纸、代码和接线表按顺序做一遍,交通灯就会按部就班地亮起来;剩下的时间,你可以安心写论文,而不是在实验室熬夜查线。祝你答辩顺利,老师问“同亮怎么办”时,你能淡定回答:“软件互锁+硬件互锁+诊断字节,三保险。”