
1. 这个项目到底在做什么别把红绿灯当成简单的顺序控制拿到这个标题很多刚入门的朋友第一反应是交通灯嘛红灯亮几秒、绿灯亮几秒、黄灯亮几秒拿定时器一路排下去不就完了吗。说实话我在实训课上见过太多这种思路的学员能跑通最简单的模拟演示但只要一接入实际的十字路口模型问题马上冒出来——两边同时亮绿灯、黄灯跳变时乱闪、按下停止按钮后设备完全失控。先说清楚这个项目的边界。我们要做的是一个标准的十字路口交通灯控制系统核心器件是三菱FX系列PLC常见的是FX3U或者FX3GA配合GT系列触摸屏做上位监控输出完整的电气原理图和IO分配表。这套东西做出来不是给实验室看热闹的而是直接对标实际工程里面主干道加次干道的典型场景。为什么我说它不是简单的顺序控制因为十字路口交通灯天然存在两套互相约束的时序南北方向和东西方向的放行是互斥的但不同方向的黄灯过渡又是同时发生的。你如果只用一条定时器链条往下走到头来会发现程序根本无法处理绿灯闪烁进入倒计时这种中间态更别说应对手动强制切换、夜间黄闪模式这类工程上必须考虑的功能。我习惯把交通灯项目的本质归纳成两句话状态之间的切换由时间驱动状态之间的约束由互锁逻辑保证。时间驱动决定了程序的骨架互锁逻辑决定了系统的安全。这套思维方式放到任何工控项目里都通用——步进电机的多段速控制、分拣线的工位流转、电梯的楼层调度全都是这个套路。接下来的内容我会按照一个完整的交付物来组织先讲硬件侧怎么选型、IO怎么分再讲程序怎么写、触摸屏画面怎么做最后给出接线图和调试检查清单。整个项目会附上我个人的实现方式和踩坑记录不是那种泛泛而谈的教程而是照着做就能跑通的方案。2. 硬件选型与IO分配为什么三菱FX3U配GT27是这套方案里的稳妥组合2.1 IO分配表的隐藏细节9个输出还是12个输出很多第一次接触这个项目的朋友拿到十字路口交通灯模型第一件事就是数灯——南北方向有红黄绿三盏东西方向有红黄绿三盏加起来6盏再多算上人行道的零碎好像也没多少点。但实际上工程上真正的IO分配远没有这么环保。我给出的IO分配方案是这样的地址功能方向说明X0启动按钮输入自复位常开X1停止按钮输入自复位常闭X2手动/自动切换输入旋钮开关X3夜间黄闪模式输入旋钮开关Y0南北方向红灯输出接继电器/灯组Y1南北方向黄灯输出同上Y2南北方向绿灯输出同上Y3东西方向红灯输出同上Y4东西方向黄灯输出同上Y5东西方向绿灯输出同上Y6蜂鸣器/语音提示输出可选Y7绿灯闪烁驱动输出做闪烁节拍注意我这里只给了6个主输出加2个扩展输出但市面上能买到的十字路口模型很多是做成12路的。什么情况会用到12路答案是当你的控制策略需要把南北直行南北左转东西直行东西左转四个相位完全独立出来的时候。标准十字路口如果有左转专用相位每个方向需要独立的红黄绿三组灯那一下就变成12个输出点了。标题里写的这个项目我按最典型的两相位控制来做也就是没有专用左转相位直行和左转同步放行。这个方案最省硬件成本也最适合入门和教学演示。如果你手里正好是12路的模型无非是把南北左转、直行的灯分别接到不同输出上控制逻辑多加一组步进状态而已整体的程序框架不需要推倒重来。2.2 为什么是三菱FX3U加GT27选型的底层逻辑三菱FX系列在工控圈子的普及率高到什么程度你随便打开一个招聘网站的PLC工程师岗位描述十个里面有八个写着熟悉三菱FX系列或者有三菱PLC项目经验。它的大多数编程概念——软元件、步进梯形图、特殊继电器——恰恰是入门最好的教材。FX3U这个型号IO点数可以扩展到256点内置两路高速计数脉冲输出支持3轴对于交通灯这种纯开关量控制的场景完全是杀鸡用牛刀但也正因为如此它的资源冗余让初学者有足够在程序里折腾的空间。触摸屏选GT27理由也很直接三菱自家的GOT系列和FX系列走的是同一套通信协议FX3U的编程口直接一根USB线或者RS232连接线就能和GT27建立连接不需要额外配置通信模块。GT27的分辨率是800乘480的宽屏用来摆十字路口动态画面比早期的GT10系列好看了不止一个档次。而且GT Designer3的组态软件对这类做灯亮灯灭的动画支持非常成熟后面我会讲到具体怎么做。如果你手头预算紧张GT21系列其实也能胜任。区别在于GT27支持以太网口调试的时候可以走网线高速下载程序也能和上位机SCADA系统对接GT21只有串行通信。考虑到触摸屏和PLC下载程序这一块很多入门者会在自制下载电缆这件事上卡住GT27的以太网口能省掉不少麻烦。2.3 负载驱动细节别把LED灯组直接往PLC输出端子上怼这个坑我必须专门拿出来说。市面上的十字路口模型灯板大多是LED灯珠并联组成的工作电压有5V的也有24V的工作电流倒是不大几十毫安级别。但麻烦在于LED灯板往往是共阳或者共阴结构接线方式和平常接触的继电器负载完全不同。三菱FX3U的晶体管输出MT型号是漏型输出也就是输出端子导通时电流从公共端流入负载、再从输出点流出。如果你的灯板是共阳结构也就是公共端接正极那刚好能匹配如果灯板是共阴结构你得在中间加一个中间继电器或者固态继电器做极性转换。另外要强调的是示教模型上用的LED灯组虽然是直流负载但实际工程中的交通信号灯往往是用交流220V供电的PLC绝对不能直接驱动。正确做法是PLC输出点接小型中间继电器常见的MY2NJ系列或者欧姆龙LY2N再由继电器的触点去控制接触器或者直接控制信号灯。中间的隔离环节既保护了PLC输出点又方便系统维护时单独断开负载回路。我见过不止一次有人为了省一个继电器直接拿PLC输出点去带220V的信号灯结果烧了输出点的惨案——这类事故在实操中如果真的发生维修成本远高于一个中间继电器的价格。3. 程序主体框架用四步状态法拆解十字路口的时序问题3.1 我们把交通灯的运行拆成哪四步有了IO分配表接下来就要动手写程序。很多初学者拿到这个项目就一头扎进梯形图里一边拖定时器一边改程序最后弄出来的逻辑自己都看不懂。我的建议是先画一张时序图把每个方向红黄绿三种灯在一个完整周期里的亮灭时间全部列出来然后再动手。以一个标准两相位周期为例我常用的配置是南北方向绿灯25秒其中最后3秒为绿灯闪烁南北方向黄灯2秒南北方向红灯东西方向放行总时长绿灯25秒加黄灯2秒东西方向绿灯25秒其中最后3秒为绿灯闪烁东西方向黄灯2秒整周期算下来大约是54秒。南北绿灯加闪烁25秒、黄灯2秒、东西绿灯加闪烁25秒、黄灯2秒正好54秒。这个参数可以按实际路口配时方案调整程序结构完全不用变。我习惯把程序拆成四个功能块启停控制块——处理启动、停止、复位等系统级状态脉冲生成块——产生秒脉冲信号作为整个时序的基础节拍步进逻辑块——用步进指令STL或者计数器来驱动状态切换输出映射块——将内部状态换算成具体的输出点动作这四个功能块的划分思路说白了就是逻辑和输出分离。内部状态只关心现在该哪个方向放行、放行了多久至于哪个灯亮那只是状态到物理输出的一张映射表。这样做的好处是如果你想把南北直行与左转分相位控制只要改动状态定义和映射表就够了完全不用重写整个程序。3.2 秒脉冲到底怎么生成特殊继电器还是自编定时器三菱FX3U内部有一个特殊继电器M8013它是一秒通断交替的时钟脉冲输出50%占空比每秒翻转一次。直接用M8013做计时基准是最省事的做法但要注意一点M8013的精度足够用于交通灯这种秒级的时序控制如果你需要毫秒级的准确定时那就得改用定时器或者中断了。我自己在写交通灯程序时偶尔也会故意避开M8013改用自编的秒脉冲生成器。原因是有些仿三菱的国产PLC比如部分汇川、禾川的低端型号特殊软元件的功能未必和三菱完全一致用自编逻辑生成秒脉冲会更有保障。而且自编脉冲生成器本身就是一个很经典的入门练习——一个定时器加一个计数器配合你写一遍之后对定时器工作原理会透彻很多。自编秒脉冲的逻辑很直白T0定时1秒时间到后复位T0同时翻转一个辅助继电器M0。程序写起来就是两行LD T0 OUT T0 K10 LD T0 ANI M0 OUT M0但这里有个隐藏的知识点FX3U里定时器的计时基准分为100毫秒、10毫秒、1毫秒三档K10配100毫秒规格的定时器才是1秒。如果你在梯形图里写OUT T0 K10而T0恰好是10毫秒规格的定时器那实际定时就变成了100毫秒整个时序周期会瞬间缩短十倍。这个错误特别隐蔽初学者极容易踩中。我的建议是拿到PLC之后第一件事就是认真看编程手册里定时器的编号分配表搞清楚哪些编号对应什么时基。如果你用的是GX Works2软件在PLC参数里甚至可以自定义定时器时基但对入门项目来说保持默认就行。写程序时养成习惯在梯形图注释里标明每个定时器的时基规格和设定时间这份注释在后期的调试和交接中能省下大把时间。3.3 状态切换的两种写法STL步进梯形图和计数器轮询三菱PLC最拿手的编程方式之一就是步进梯形图STL。它把整个程序流程切成若干个独立的状态步每个状态可以有自己的输出和转移条件。状态和状态之间通过所谓的转移条件连接整个程序就像一个带着节点的流程图。STL的好处是逻辑清晰到爆炸哪怕是一个完全没写过PLC程序的新手只要看懂了流程图就能在梯形图里找到对应的那一步。交通灯项目用STL来写状态机是再自然不过的了。我把南北放行设为S0南北黄灯过渡设为S1东西放行设为S2东西黄灯过渡设为S3。程序一开始用ZRST指令把所有状态复位到初始然后置位S0从S0开始一路往下走LD M0 // 秒脉冲 AND T0 OUT T0 K250 // 25秒计时 LD T0 SET S1 // 转移到黄灯状态在S1状态里黄灯亮2秒后自动SET S2S2里东西方向放行25秒后SET S3S3里东西黄灯2秒后SET S0如此往复循环。这套状态机写法有几个明显的优势编程思路和时序图一一对应改状态顺序就是改时序互锁逻辑天然成立STL中同一时刻只有一个状态是激活的程序执行效率高不会出现定时器打架的问题用STL的时候有一个致命细节STL指令必须在公共程序段之后编写而且不能在STL程序段内使用END指令。有些新手在调试时发现程序里莫名其妙多了一个END就报错最后排查半天发现是自己把END放到了STL程序的中间。STL状态块之间要用STEP指令也就是SET Sx这种来跳转转移到了另一个状态PLC会自动把原状态复位不需要手动RST。除了STL我见过不少老工程师用计数器加比较指令来实现交通灯时序。他们的思路是用C0对秒脉冲计数每周期54秒就自动复位然后用比较指令判断C0的当前值落在哪个区间比如C0在0到24之间就是南北绿灯放行25到26之间是南北黄灯27到51是东西放行52到53是东西黄灯。LD M8013 OUT C0 K54 LD C0 OUT T10 K1 // 到54秒后复位T10做个瞬时脉冲 RST C0 LD C0 ANI C0 K25 OUT Y2 // 南北绿灯 LD C0 K25 ANI C0 K27 OUT Y1 // 南北黄灯这种方法几乎不使用定时器整体程序更紧凑而且你可以仅通过修改比较指令的上下限来调整各颜色灯的持续时间不需要翻遍定时器设置。比较法的缺点是不如STL直观状态复杂后程序会变得很绕。两个方案对这个小项目来说都算合理具体选哪种取决于你后续会不会往项目里扩展更多功能——如果只是交通灯两者皆可如果想在交通灯的基础上做复杂的多相位控制STL状态机更适合。3.4 绿灯闪烁的困局用M8013叠加秒脉冲实现这个功能是很多初学朋友在调试时最容易卡住的地方。需求的描述很简单绿灯在最后3秒要开始闪烁。闪烁频率通常是1赫兹正好对应秒脉冲。但问题在于绿灯本身是持续输出信号你要怎么让它断断续续地输出思路很简单绿灯输出的通路串接一个秒脉冲互锁条件即可。我把南北绿灯闪烁期间的判断条件改成一个串联了M8013常开触点的支路在C0计数到21到24这个区间时绿色灯的输出和M8013做与运算。秒脉冲为ON时绿灯亮为OFF时绿灯灭视觉上就是规律的闪烁效果。如果用的是STL写法那在S0状态里把绿灯输出指令从OUT改成AND M8013再OUT即仅在脉冲为高电平时输出。这里要注意STL状态里的定时器T0不能因为秒脉冲的断开而暂停计时因为T0的驱动条件不能受到M8013影响。也就是说绿灯闪烁的电路和状态转移的定时电路必须分开两行写否则时间节拍会彻底乱掉。3.5 启停逻辑停止不等于断电再讲一个工程细节里的隐藏考点。项目要求里有启动按钮和停止按钮很多初学者的思路就是启动就运行停止就输出全部复位。但工程现场更合理的做法是停止按钮按下后系统应该进入一个安全复位的过渡状态而不是粗暴地切断所有输出。具体到我这个项目的实现停止按钮X1按下后程序不会立刻复位所有输出而是先置位一个内部辅助继电器M100停止标志。M100一旦置位步进状态机走完当前完整的黄灯过渡周期后才停止在初始状态。这样做的实际意义是如果停止指令恰好在南北绿灯关键时段的最后一秒到达系统至少要保证黄灯的过渡亮完不会出现在绿灯正放行途中突然所有灯都熄灭的情况。这在真实路口中就是一个安全设计。启动按钮的复位逻辑更简单X0常开触点闭合时复位M100然后执行ZRST复位状态接着SET S0从南北方向绿灯重新开始整个周期。这个设计保证了每次启动都是从完整周期起点开始而不是从某个随机状态继续。4. GT触摸屏画面怎么做动画、按钮和运行监控4.1 灯光动态效果怎么在GT Designer3里实现GT Designer3是三菱GOT系列触摸屏的组态软件界面逻辑和市面上大多数HMI组态软件大差不差但也有些自己的独到之处。做交通灯监控画面最核心的需求是把PLC里Y0到Y5的输出状态实时反映在屏幕上用图形画面模拟路口的灯色变化。GT Designer3的动画功能不是靠拖拽一个显示控件然后设定关联地址就能搞定的它需要你先做好的位——用两个不同颜色的组来拼装出灯亮和灯灭的两种状态。我的做法是在画面上画两个重叠的圆形一个代表灯灭状态用深灰色填充另一个代表灯亮状态用对应的红色、黄色或绿色填充。然后把灯亮状态那个圆的可见属性关联到位软元件上比如Y0为ON时可见为OFF时不可见这样触摸屏上就有灯熄灯亮的动态感觉了。具体操作路径是选中代表灯光亮起状态的圆形图形右键选择扩展功能里的显示/隐藏动画在弹出的对话框里选择位软元件填入Y0条件设为当软元件为ON时显示。GT Designer3里同一图形可以叠加多个动画效果比如同时添加颜色变化动画让图形在ON/OFF两个状态下呈现不同的填充色。这里有个我踩过的坑GT Designer3默认的动画扫描时间可能比PLC的扫描周期慢得多。如果你在画面上同时做了十几个灯光动画实际刷新频率会显得卡顿尤其是在绿灯闪烁阶段可能只看到绿灯抖一下而不是清晰地闪烁。解决办法是在触摸屏的系统环境设置里把画面刷新周期调短或者用GT27的扩展功能里的快速响应刷新模式。这个参数位于GOT的环境设置-运行设置-画面切换方式附近不同GT Designer3版本的位置略有差异但原理都是提高画面刷新率。4.2 触摸屏按钮怎么关联PLC的启动和停止触摸屏上放两个按钮触发的不是PLC程序里的X0和X1输入点而是内部的M辅助继电器这又是一个常见误区。原因很简单X点是物理接线端子对应的输入映射触摸屏没法直接驱动PLC的物理输入点触摸屏只能改变PLC内部的软元件状态。正确的做法是在触摸屏上放置两个位按钮写入地址分别设为M200和M201然后在PLC程序里把M200和X0做并联等效把M201和X1做串联等效。我在程序里加了一段触摸屏操作整合的逻辑LD X0 OR M200 OUT M0 // 启动信号X0和触摸屏按钮都有效 LD X1 OR M201 ANI M0 OUT M1这样一来操作员在触摸屏上按启动PLC程序的执行效果和按下物理按钮X0完全一致。停止按钮同理。这种软硬双控的设计在实际工程里非常常见——紧急停车用物理按钮常规操作在触摸屏上完成既满足了安全要求又不牺牲操作便利性。4.3 画面布局除了动画还应该显示什么一个合格的交通灯监控画面不能只有红黄绿三个圆圈在亮。我把GT27的屏幕划分成四个区域左半部分放十字路口示意图四个方向各画一组灯中间用交叉线条模拟路口右上方放当前运行模式指示比如自动模式夜间黄闪模式手动模式右中部分放当前周期剩余时间显示用数值显示元件关联到定时器的当前值右下方放启动、停止、复位三个触摸按钮关于时间显示这里有个小技巧。定时器T0的当前值可以通过MOV指令传送到数据寄存器里触摸屏上用数值显示元件关联这个数据寄存器就能实时看到倒计时。我在程序里写了一段LD M0 MOV T0 D100 // 把当前状态的剩余时间传到D100注意T0的当前值单位是0.1秒所以触摸屏上显示出来的数字要除以10才是秒。你可以在GT Designer3的数值显示元件里设置显示倍率也可以直接乘以0.1。这个细节虽然不起眼但显示出来的时间如果差了十倍操作员看着肯定一头雾水。4.4 模拟运行和实机连接GT Simulator2的妙用GT Designer3自带一个离线模拟工具GT Simulator2不需要连接真实的触摸屏就能在电脑上预览画面效果。这个工具对调试画面布局来说非常方便但它只能模拟触摸屏端的行为不能模拟PLC的运算。换句话说你可以在模拟器里看画面是否美观、按钮位置是否顺手但画面上的Y0状态是固定为OFF的因为背后没有真实的PLC在驱动它。如果要完整地联调还是得让触摸屏和PLC真实连接。FX3U和GT27的连接方式很灵活GT27背后自带一个连接PLC的接口通过一根三菱原装的通信电缆或者按官方图纸自制的下载线就能连起来。连接之前要确认触摸屏侧的通信参数设置比如站号、波特率、数据格式等必须和PLC侧的设置完全一致。这一点在初学阶段特别容易忽略——物理线缆接好了通信参数对不上屏幕上就报连接错误很多同学卡在这一环节好几天。5. 电气接线图与自制下载线的常见坑照着做能省一晚上的排查时间5.1 主回路和控制回路分开画才是合格的电气图纸完整的十字路口交通灯电气接线图至少包含两个部分主回路和控制回路。主回路是从电源到负载的功率通路控制回路是PLC接入传感器和接触器的信号通路。对这套教学模型来说主回路很简单DC24V开关电源给PLC和触摸屏供电再给LED灯板供电。如果按我前面说的方案加中间继电器那控制回路就要包含PLC输出点到继电器线圈的连线以及继电器触点到信号灯组之间的连线。电源的正负极、公共端的连接方式全都要在图纸上标注得明明白白。三菱FX3U晶体管输出型PLC的接线有一个和继电器输出型截然不同的细节晶体管输出必须接外部负载电源输出公共端COM1接到电源的正极或负极取决于你的负载是漏型还是源型接法。我在2.3节提过MT型号是漏型输出也就是输出点导通时电流从公共端流入输出点再从负载回到电源负极。这决定了COM端通常接电源正极。如果你拿继电器输出型MR型号的习惯来接MT型号结果就是输出点上的继电器根本不会动作而且这个故障现象非常迷惑人——程序明明运行正常输出点指示灯也亮了但负载就是不工作。图纸上还应该把触摸屏的24V电源、PLC的电源端子标注清楚。FX3U的供电端子是L、N、接地输入侧是24V直流输出端子给传感器供电用和输入公共端COM。GT27触摸屏则通常需要一个独立DC24V电源不建议和PLC共用同一个开关电源的输出端子因为触摸屏背光启动瞬间的电流冲击可能造成PLC供电跌落。条件允许的话用两个小功率开关电源分开供电是更稳妥的做法。5.2 自制三菱PLC下载线能省就省的两条路三菱plc下载线制作这个关键词的热度高得离谱可见被这个问题卡住的人不在少数。市面上的三菱FX编程电缆价格高企让不少初学者望而却步。如果你用的是FX3U或者FX3GA情况会好很多——因为FX3U自带USB编程口直接用一根普通的USB方口打印机线就能下载程序。没错就是那种打印机上常见的数据线线序和通信协议都不用操心。如果你的PLC是老款的FX1S/FX1N/FX2N那就只能走串口或者专用编程线了。自制编程线最经典的方案是用USB转RS422芯片如FT232RL加SP485EE搭一个转换器按官方文档的引脚定义焊几根线出来。这个方案需要一定的电子焊接基础对纯粹想快速入门PLC编程的同学来说门槛并不低。我的实际建议是如果手头有一台FX3U老老实实用USB线简单省心如果只能用老款PLC可以直接买一根兼容的国产编程线几十块钱比自己焊一根靠谱得多。自己焊线最大的风险是线序接错导致PLC通信口损坏这个维修成本远超省下的几十块钱。当然如果你本身对电路焊接有兴趣做一个编程线当作小项目练手那又是一回事。5.3 IO分配表不是抄完就完事的还要核对负载特性IO分配表这个交付物不是简单地把X0到X7、Y0到Y7列一个表格就交差了。我设计IO分配表时除了每个点位的功能定义还会额外加入负载类型驱动方式线缆颜色标识三列。这样做的好处是现场接线工人拿到图纸后不需要在看程序时反复比对地址直接按表格里的说明就能完成接线和校线。针对交通灯项目我再额外标注了灯板的极性。比如南北红灯接Y0如果灯板是24V共阳结构那么Y0输出的低电平动作方向正好对应灯亮如果是共阴结构则要在输出端加继电器做极性反转。类似的细节在真正接线时直接影响灯能不能亮提前标注在IO分配表里调试的时候能少走很多弯路。6. 调试检查清单与常见故障九个坑一个一个踩过来6.1 上电前和上电后的静态检查写完程序、接好线之后不要急着通电。我先列一份静态检查清单按这个顺序过一遍能排除掉一大半低级问题PLC供电端L、N接线是否正确AC220V和DC24V有没有搞混24V开关电源的输出电压是否在23到25V之间PLC的输入公共端和输出公共端接线是否正确所有输入按钮的接线是否遵循一端接X点、一端接公共端的规则输出端子的负载是否有短路风险特别是LED灯板的极性有没有接反触摸屏的电源线是否独立通信电缆的插头是否拧紧上电后的第一件事也不是急着按启动而是看PLC的POWER指示灯是否点亮RUN/STOP开关是否已经拨到RUN位置触摸屏是否有报警弹窗。如果在触摸屏上出现PLC连接异常的报错先查通信参数再查线缆连接这个排查顺序不要反。6.2 最常见的两个动态调试故障第一个高频故障是程序下载进去后一运行两边的黄灯同时亮了。这个现象的根因通常是编程时把两个方向的黄灯输出写在了互锁逻辑之外比如S1状态南北黄灯转移条件和S3状态东西黄灯转移条件同时满足导致两个状态同时被激活。排查方法是进入GX Works2的在线监控模式逐个查看S0到S3的当前激活状态。如果发现两个S状态同时为ON就是步进程序的状态转移条件写得不严谨需要回到程序里加互锁判断。第二个高频故障是按下停止按钮后绿灯继续闪烁要过好几秒才停下来。这个现象通常不是硬件问题而是我前面3.5节讲的安全过渡逻辑在起作用——程序会在当前黄灯周期结束后才停下。如果你的项目需求里停止按钮需要立刻切断所有输出那就简化逻辑直接输出复位。但从工程安全的角度我仍然建议保留过渡机制。6.3 实测数据与参数调整交通灯色灯时间调到多少合适做项目调试时我一般会用秒表掐着实际运行时间和程序设定值做对比。54秒一个完整周期南北绿灯25秒、南北黄灯2秒、东西绿灯25秒、东西黄灯2秒。实测中如果发现绿灯只亮了24秒就跳黄灯多半是定时器的时基选错了或者秒脉冲生成器和定时器之间存在累积误差。如果你调试时发现黄灯2秒太短、视觉上几乎看不出来可以把黄灯时间改成3秒。调整方法有两种一是修改STL状态下定时器的设定值K值二是如果用的计数器比较法修改比较指令的上下限区间。我个人更推荐后者因为改区间数字比翻STL程序里每一个定时器的K值更直观也更不容易改错。不过三种方法都要记住实际场景中两种写法都会遇到。6.4 扩展思路从两相位到四相位程序改动在哪里标题里这个项目做完之后如果你还想继续深入最自然的扩展方向就是把两相位改成四相位控制也就是加入左转专用相位。硬件上需要增加12个输出点软件上就是把状态机的步数从4步扩展成8步南北直行、南北左转、东西直行、东西左转每个相位中间还各插一个黄灯过渡状态。四相位控制里最头大的问题是绿冲突检测——南北直行和东西左转同时放行时很多路口的实际通行路线是有冲突点的必须在程序层面用互锁逻辑禁止同时放行。这个检查逻辑放到STL状态机里其实就是避免让这两个状态出现在同一条激活链路上。做项目时可以手动构建这种情况来验证互锁逻辑是否挡住也可以在程序里加上报警输出一旦检测到冲突就触发蜂鸣器并回到安全状态。这算是交通灯项目进阶到工业应用的一个小门槛值得有兴趣的同学在这个模型上继续折腾。7. 实操心得为什么建议你一定亲手把这套流程走一遍做交通灯这个项目我个人的感受是它技术难度不算高但覆盖的知识面特别全——电气接线、PLC编程、触摸屏组态、通信调试、故障排查一个不少。你把这一整套流程从头到尾走一遍等于把工控入门阶段最核心的那条链路完整打通了。等到你动手写程序的时候我强烈建议先把状态转移图画在纸上哪怕只是粗略的方框加箭头也比直接开软件写梯形图来得踏实。PLC程序最忌讳的就是想到哪里写到哪里一套交通灯程序看着不长但改来改去之后连你自己都会被绕晕。我每次做项目第一步永远是画时序图和状态图这个习惯从玩FX3U一直保持到了后来做几十个IO的中型设备。还有一个心得想分享给自学入门的同学网上关于三菱交通灯的程序版本五花八门有用的参考但也有不少是拿仿真软件糊弄出来的根本没有在实机上跑通过。遇到这种资源别急着复制粘贴先看它的状态转移条件和输出映射表是否合理再自己动手改一遍。真正有价值的从来不是那几行梯形图而是你动手排错时积累起来的判断力。等到哪一天你拿到一个没见过的设备、一张空白的IO表也能照着流程硬啃下来那你就算真正进门了。