ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

三菱FX系列PLC交通灯程序实战:60秒固定周期与流量控制详解

三菱FX系列PLC交通灯程序实战:60秒固定周期与流量控制详解 做交通灯程序在工控圈里属于典型的“入门进阶”分水岭。三菱FX系列PLC的交通灯程序看起来只是几个定时器来回倒腾但一旦要加流量控制、固定60秒工作周期、还要配上IO分配表和PLC原理图就涉及顺序控制、定时器复用、传感器信号处理、负载互锁这些平时容易踩坑的东西。这篇我就拿自己做过的FX3U路口方案当例子把从IO规划、原理图绘制到梯形图逻辑、流量补偿思路和调试经验一次性拆开讲。1. 项目目标拆解60秒固定周期和流量控制怎么共存1.1 这不是一个简单“跑马灯”程序很多人第一眼看到“交通灯”三个字就觉得是Y0、Y1、Y2轮流亮一下就完事。但实际做一个路口项目时你会发现真正的难点从来不在“灯会亮”而在状态切换是否安全、时间分配是否合理、外部信号变化时程序能不能稳定跑完整个周期。这个项目的核心约束有两条一个是工作周期固定60秒也就是说从东西向绿灯亮起到下一个周期东西向再次绿灯亮起整个过程必须是严格的60秒另一个是带流量控制即要根据路口某个方向的车辆多少在60秒总周期不变的前提下合理分配东西向和南北向的绿灯时间。这两件事放一起容易让人犯迷糊周期都固定死了还怎么控制流量实际上交通工程里这叫绿信比调整。举个生活化例子一个60分钟的考试总分不变但你可以根据不同题型的难度分配时间。交通灯的60秒也一样总周期是锚点绿灯占比可以根据车流动态调整。1.2 固定周期下做流量调控的三种常见做法我在实际项目里见过三种实现方式按复杂程度从低到高排拨码开关/开关量选择模式人为设定“平峰模式”和“高峰模式”平峰时东西向25秒、南北向25秒高峰时东西向延长到28秒、南北向缩短到22秒。简单、可靠、现场维护方便。传感器计数比较在停车线前装光电开关或地磁检测器统计一个周期内某个方向到达的车辆数超过阈值就自动延长绿灯同时从对向绿灯里扣回相同时间保证60秒不变。动态配时算法通过多个检测断面计算排队长度实时修改多个相位时间。这种做法通常用在多相位、多进口道的复杂路口单台FX系列PLC做起来成本高一般得上位机或智能信号机。我这次讲的主要是前两种结合。用光电开关做流量检测用D寄存器动态调整定时器的目标值既体现了“流量控制”又不会把程序复杂度推到不可维护的程度。2. IO分配表和PLC原理图动手写梯形图之前必须想清楚的事2.1 输入输出点分配表做PLC项目IO分配是第一步也是最容易返工的一步。我建议在画原理图之前先用表格把软元件地址、信号来源、负载类型全部敲定。下面这份IO表是我在FX3U-32MR/ES平台上实测用的输入输出总共12个点属于很常见的配置。软元件地址信号类型功能说明X0启动按钮常开输入按下后系统进入自动运行X1停止按钮常开输入手动停止所有方向切红灯X2东西方向检测传感器NPN常开检测东西向进口道车辆到达X3南北方向检测传感器NPN常开检测南北向进口道车辆到达X4流量控制投入开关拨动开关ON投入流量补偿OFF固定25秒Y0东西向绿灯继电器输出驱动东西绿灯信号灯Y1东西向黄灯继电器输出驱动东西黄灯信号灯Y2东西向红灯继电器输出驱动东西红灯信号灯Y3南北向绿灯继电器输出驱动南北绿灯信号灯Y4南北向黄灯继电器输出驱动南北黄灯信号灯Y5南北向红灯继电器输出驱动南北红灯信号灯这里要注意一个常见误区三菱FX3U输入有漏型和源型两种接法NPN传感器配漏型输入是默认套路。具体接法是传感器正极接24V传感器负极接PLC输入公共端COM信号线接X端子。当传感器检测到车辆时内部晶体管导通X端子被拉到低电平PLC读取为ON。如果你用的是PNP传感器公共端S/S就得接24V信号线输出高电平有效接法完全不同买元件之前一定先确认。2.2 PLC原理图设计中的几个关键连线细节我不能在这里贴整张CAD图但可以把图上最容易出错的地方逐个说清楚按这个思路去画原理图基本不会漏东西。首先是电源部分。PLC的L/N接现场220V交流电源建议前面加一个2A熔断器和总开关。很多现场为了省事直接把PLC电源和信号灯电源共用一个空开结果信号灯启动冲击把PLC打复位。我的习惯是PLC控制电源和负载电源分开至少各自加熔断保护。其次是输入回路。FX3U-32MR的输入公共端要接0V这要求开关电源的0V端子、传感器负极、PLC COM端形成回路。常见错误是传感器正负极接反或者COM端悬空导致X点永远不动作。硬件接线完成后逐点强制X0到X3确认每个输入点都能稳定翻转再往下写程序。第三是输出回路。如果选用继电器输出型PLCY端子是干接点输出回路要自己接电源。以直流24V信号灯为例Y0端子接信号灯正极信号灯负极接0VY0公共端COM接24V。如果现场用的是220V LED信号灯一定要看清灯的路数有的信号灯是共阳极、有的共阴极接错就烧灯。我建议小路口统一用DC24V信号灯安全性和调试便利性都好得多。最后是程序互锁和硬件互锁的双重保险。梯形图里必须保证东西向绿灯Y0和南北向绿灯Y3不能同时导通即使状态切换逻辑已经保证了我仍然会在每个输出驱动回路里加互锁触点。条件允许的话输出端再加一组继电器硬互锁这是交通设备安全的底线不要省。2.3 硬件选型的小建议FX2N和FX3U都能跑这个程序但我更推荐FX3U。一个是定时器功能更灵活支持把定时器目标值写到数据寄存器里动态修改这对流量控制很重要另一个是程序容量和调试工具链更现代用GX Works2监控起来舒服很多。至于输入点数如果后续要扩展夜间模式、紧急车辆优先建议输入点留2到3个裕量输出点按路口相位数再预留一组箭头灯。3. 梯形图逻辑设计用三菱STL步进指令把60秒拆成6个阶段3.1 相位划分和时间轴计算整个60秒周期我用6个状态段来跑分别是状态阶段名称持续时间输出组合S20东西向绿灯25秒可调至28秒Y0亮、Y5亮S21东西向黄灯3秒Y1亮、Y5亮S22全红过渡12秒Y2亮、Y5亮S23南北向绿灯25秒可调至22秒Y3亮、Y2亮S24南北向黄灯3秒Y4亮、Y2亮S25全红过渡22秒Y2亮、Y5亮算一下固定时间段323210秒剩下50秒分给两个绿灯方向。平峰时各25秒流量补偿投入后东西向可以拿28秒南北向就剩22秒总周期依然是60秒。这里有个细节很多初学者会把南北向绿灯结束直接切到东西向绿灯省略全红状态。这个习惯非常危险。全红的意义是清空路口内部还没来得及通过的车辆特别是非机动车和行人。2秒时间不长但对安全性的提升非常明显实际路口调试时千万别嫌麻烦把它删了。3.2 STL步进梯形图程序骨架三菱FX系列做这种顺序控制最合适的是STL指令。比起一长串辅助继电器M加定时器的写法STL的最大优点是“每个时刻只有一个状态激活”状态之间的切换用SET指令不会出现多个阶段粘连的情况。程序结构也直观后期改时间参数时不用在一堆M触点里翻来翻去。我用指令表的形式给出核心骨架在GX Works2里可以原样输入元件地址以FX3U为准。LD M8002 SET S0 STL S0 LD X0 SET S20 STL S20 OUT Y0 OUT Y5 ANI X4 MOV K250 D0 LD X4 AND X2 MOV K280 D0 OUT T0 D0 LD T0 SET S21 STL S21 OUT Y1 OUT Y5 OUT T1 K30 LD T1 SET S22 STL S22 OUT Y2 OUT Y5 OUT T2 K20 LD T2 SET S23 STL S23 OUT Y3 OUT Y2 ANI X4 MOV K250 D1 LD X4 AND X3 MOV K220 D1 OUT T3 D1 LD T3 SET S24 STL S24 OUT Y4 OUT Y2 OUT T4 K30 LD T4 SET S25 STL S25 OUT Y2 OUT Y5 OUT T5 K20 LD T5 OUT S20 RET END拆开解释几个关键点。T0到T5都是100ms定时器所以K250就是25秒、K30就是3秒、K20就是2秒。T0和T3的目标值没有直接写常数而是写D0和D1。这正对流量控制的需求定时器还在运行前把D0或D1的值改掉下一次绿灯阶段就按新时间执行。S20和S23这两个状态里我做了流量判断。以S20为例当X4流量控制开关断开时执行ANI X4 MOV K250 D0意思是用固定25秒当X4闭合并且X2检测到东西向有车时MOV K280 D0绿灯延长到28秒。对应地S23状态里如果X4闭合且X3检测到南北向有车就把D1设为K220南北向绿灯只有22秒。这样总周期仍然是60秒。3.3 关于定时器目标值修改的机制解释很多第一次接触这个程序的人会问一句在STL状态里梯形图每个扫描周期都在扫描MOV指令岂不是每扫一次就重置一次定时器这里要说清楚三菱FX3U的OUT T0 D0指令在定时器激活之后D0的变化不会影响当前正在计时的这一轮。定时器的当前值是按扫描累加的只有定时器复位后重新启动才会读取D0的新值。所以我在S20状态被置位后的第一个扫描周期写入D0定时器按写入值计时整个S20期间D0即使被反复刷新也不会出现计时被打断的问题。这一点如果换成OUT T0 K250这种常数写法流量控制就没法做。动态定时器是FX3U相对FX2N的一个实用特性FX2N虽然也能用MOV改寄存器但某些型号对运行中切换设定值的支持没有FX3U干脆。项目选型时我会优先选FX3U原因就在这。3.4 停止逻辑和手动模式要不要加IO表里有X1停止按钮但上面的程序骨架没有体现。正常做法是在STL S0状态前加一段总停逻辑X1按下时ZRST S20 S25强制让所有状态复位然后驱动Y2和Y5全红。这属于安全回路的一部分现场调试、检修、夜间封路时都离不开。完整代码里我还会加M8002上电初始化和Y2、Y5全红保持的辅助网络。为了文章结构不跑偏这里只点出思路真正落项目时不要省。4. 实测中的两个典型问题定时器复位漏闪和传感器误触发4.1 定时器串联写法导致的“漏亮一拍”我第一次做这个项目时没用STL而是用传统思路用一个总定时器T0走60秒然后用比较触点驱动各段输出。比如T0在K0到K250之间亮Y0在K250到K280之间亮Y1以此类推。听起来逻辑没问题但实测时发现一个很隐蔽的现象周期切换瞬间黄灯该亮的没亮或者红色和黄色同时闪了一拍。排查过程是这样的先在GX Works2里开软元件监控盯住T0当前值和Y0、Y1的ON/OFF状态。发现每到T0复位那个扫描周期所有比较触点都会瞬间翻转一次输出状态像“断层”一样跳变。原因在于PLC是周期扫描机制定时器从K280复位到K0的那一刻前面的K0到K250区间还没生效后面的K250到K280区间已经失效造成一个扫描周期的真空期。用STL后状态切换是SET指令驱动的不依赖定时器数值的比较窗口这个问题彻底消失。这个案例给我的教训是顺序控制场景状态之间的切换要基于“事件”不要基于“时间窗口比较”。定时器负责产生切换事件状态继电器负责保持当前输出组合各司其职。4.2 光电开关误检导致绿灯时间随机延长流量控制的代价是引入了外部传感器。调试时遇到一个很现实的问题雨天傍晚东西向的绿灯时间经常莫名其妙从25秒跳到28秒但路口明明没多少车。一开始怀疑程序里的X4和X2逻辑写错了监控一看X2信号抖动非常频繁直流24V供电的漫反射光电开关被地面反光干扰把路边金属护栏当成了车辆。定位手段很简单把X2用短线短接到0V模拟触发程序一切正常恢复传感器接线后故障复现基本锁定是传感器误触发。处理办法有两个层面。硬件上传感器安装角度稍微向路面倾斜别正对远方反光面并适当降低灵敏度。软件上我给X2信号加了持续时间判断用辅助继电器M2做防抖窗口X2信号必须持续保持50ms以上才认定为有效车辆到达否则忽略。三菱FX3U虽然可以通过特殊数据寄存器调整输入滤波时间但改变的是全局输入特性影响面太大不如局部做防抖灵活。这里也顺带说明流量控制并不追求精确数出每一辆车。路口级的流量判断本来就是趋势判断传感器信号有少量丢帧不影响整体效果但误触发导致的异常延长会让司机明显感觉到“这个绿灯怎么老不走”所以处理误检比提升灵敏度更重要。4.3 用监控窗口快速定位故障的实操方法调这种带时序的程序不要把眼睛只盯在Y输出上。正确的观察顺序应该是先看状态继电器S20到S25当前激活的是哪一个再看对应定时器T的当前值最后看输出Y的组合。如果S已经切过去了但Y没变化说明是输出驱动或接线问题如果S一直卡在S20不动说明是T0没到时间或者T0被复位信号干扰如果Y组合与S阶段不匹配基本是程序互锁写错。我一般会把GX Works2的软元件监控窗口同时拉出S、T、Y、M四组刷新周期设为最小。这样整个60秒周期从头到尾跑一遍肉眼就能看出状态切换节奏是否均匀。遇到偶发性故障再配合时序图监控记录一段长时间波形比反复试车高效太多。5. 从单个路口到实战扩展还能往上加什么5.1 夜间黄闪和紧急车辆优先交通灯程序上线后最常遇到的改动需求是夜间模式。半夜车流极少继续跑60秒周期会让人等得很烦躁很多路口会切换到“黄灯闪烁”模式主路黄灯闪、支路红灯或者直接关闭信号灯。做这个功能只需要增加一个X5时控开关输入当X5动作时把所有状态强制切换到S21或S24让黄灯以固定频率闪烁即可。三菱FX里可以用特殊继电器M8013输出1秒脉冲配合Y1和Y4实现闪烁。紧急车辆优先则是另一种思路消防车、救护车到达时通过路口优先设备给PLC一个短暂输入PLC立刻把当前所有正常状态复位切换到全红再快速放行指定方向。这个过程要保证不造成路口锁死一般需要设置最长优先时间比如15秒后强制回到正常运行周期。因为优先逻辑会打破60秒周期我在实际项目里是单独做成了一个子程序并加了时间锁定避免一个周期内反复被触发。5.2 多路口联动时的周期对齐问题如果项目从单路口扩展到一条路上的三个连续路口就要考虑“绿波带”。绿波带的基础是各个路口的周期一致且相位差固定。最简单的方式是用一台PLC做主站其余PLC通过通信线接收同步脉冲保证每个周期的起点对齐。三菱FX系列之间可以用N:N网络也可以直接用一台PLC的输出点发同步信号从站用X点接收。注意从站的周期必须和主站完全一致我从站里仍然保留60秒周期逻辑只是把启动沿同步到主站发来的脉冲上。流量控制这时候要更克制因为如果每个路口都自行调整绿灯时间绿波带会被破坏。现实中的折中方案是只对中间路口的特定时段启用流量补偿首尾路口尽量保持固定周期。5.3 数据记录和远程监控最后提一个加分项。只用三菱FX3U的编程口就能把每个周期的车流量统计值、绿灯时间、传感器动作次数记录到断电保持寄存器D512以后然后用触摸屏或上位机组态软件读取显示。这个数据对后续优化配时很有用尤其能证明流量控制不是摆设。我做过最简单的做法是在S20状态下用一个上升沿计数器统计T0的启动次数再用一个累加寄存器记录D0被写入K280的次数两个数一除就能算出延长绿灯的比例。现场交接时拿这个数据给甲方看比任何口头解释都有说服力。我自己做完这个项目最大的体会是交通灯程序真的不难但要做得像一个能实际运行在路口的设备状态划分、互锁安全、传感器防抖、定时器机制这些细节一个都不能糊弄。尤其是60秒固定周期加流量控制这个需求最考验的就是对“总时间池不变内部分配可变”这个思路的理解。上面的程序和排查经验都是踩过坑之后沉淀下来的如果你也在调类似的三菱FX系列交通灯项目不妨从IO分配表开始逐项对照一遍。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进