搞自动化项目的人都有个共同痛点:程序写完了,不敢直接往设备上跑。玻璃冲洗线这种带水泵、风机、传送带的产线,逻辑一旦写错,轻则工件卡滞,重则烧接触器。我自己的习惯是,任何新写的PLC程序,先过一遍仿真,再用组态把过程可视化,确认无误才允许动现场。
这套“PLC + 仿真 + 组态”的组合,其实完全可以在一个模型里跑通。这次要拆解的模型,是把“玻璃冲洗”和“十字路口交通灯”两个控制对象放到同一个PLC程序里,外加仿真调试和MCGS组态画面。适合正在学PLC编程的初学者、准备课程设计和毕业设计的学生,以及想给客户做方案演示的电气工程师。别看这两个对象一个偏产线、一个偏市政,放到PLC里它们的控制逻辑高度同构:顺序步进、定时循环、多输出互锁,一个模型全练到了。
1. 这个组合模型为什么值得做:从产线到路口的控制逻辑共性
1.1 两个控制对象,一套控制逻辑内核
玻璃冲洗,完整的工步是:启动传送带 → 玻璃到位 → 传送带停止 → 喷淋加刷洗 → 停止喷淋 → 风机吹干 → 再次启动传送带送出。这是一个典型的顺序控制,每一步都要等上一步的完成条件成立才能切换,否则产品流程就会乱套。
十字路口交通灯,则是典型的时序循环控制:东西绿30秒、东西黄3秒、南北绿30秒、南北黄3秒,然后循环。判断一个交通灯程序写得好不好,第一个指标就是红绿是否互锁——绝对不允许出现东西方向和南北方向同时亮绿灯。第二个指标是相位切换是否严格按时间走,黄灯作为过渡灯绝对不能省。
把这两个对象放在一个PLC程序里,不是猎奇,而是因为它们恰好覆盖了PLC编程的三项底层技能:启保停逻辑(自锁)、多输出互锁、定时器循环。三者是任何一本PLC教材都会讲的东西,但能在一道题里同时用上,并且用到“组态可视化”来验证,并不多见。对初学者来说,玻璃冲洗帮你理解“步进顺序”怎么搭,交通灯帮你理解“时间循环”怎么转,两者合在一起,就是一个完整的控制思维训练。
1.2 为什么选择仿真而不是直接上硬件
我一直跟身边的人说,仿真不是为了偷懒,是为了保命。这里说的保命有两层意思:一是保设备,二是保调试工期。
从成本角度看,一套实物PLC加触摸屏加模型流水线,少说几千块,如果还要做交通灯沙盘,又得加LED灯组和路面模型。而GX Works2加GX Simulator这套仿真环境,软件本身学习用途免费可用,MCGS组态软件也有学习版,整条链路几乎零成本就能跑起来。从安全角度看,仿真的电气回路不会因为接线错误烧PLC输出点,更不会因为程序里把正反转同时接通而崩掉。从可重复性角度看,仿真环境里可以反复修改程序、强制信号、加速时间,想怎么折腾都行,实物设备可经不起这样反复测试。
还有一个容易被忽略的价值:演示效果。组态画面比实物模型更容易被非专业人员看懂。你做个投标方案或者课程答辩,评委和客户更愿意看到的是屏幕上一个路口红绿灯在自动切换、一条流水线上玻璃片在往前运送,而不是一块只有指示灯在闪的PLC控制柜。这个模型做出来,就是一套可以直接拿去讲方案的演示系统。
1.3 模型的整体构成
整个模型分三层:
- PLC程序层:用三菱FX3U-32MR作为目标机型编写控制程序。FX系列是三菱经典系列,指令系统教学资源多,GX Works2对它的支持非常成熟。
- 仿真验证层:用GX Simulator V2把写好的程序加载进虚拟PLC,通过软元件监视、强制信号、时序图等功能验证逻辑正确性。
- 组态呈现层:用MCGS嵌入版组态软件建立两个画面,一个玻璃冲洗监控画面、一个十字路口交通灯画面,把PLC里的Y输出和M中间变量映射成动画、指示灯和倒计时数字。
这三层可以独立工作,也可以串联联调。独立工作时,GX Simulator负责验证程序逻辑,MCGS可以用内部变量先做界面动画;串联联调时,MCGS通过设备驱动读取虚拟PLC的软元件状态,做到“屏幕上的画面跟着PLC程序走”。
2. 控制需求拆解与I/O资源规划:先把动作流程翻译成PLC信号
2.1 玻璃冲洗工艺的完整动作链
玻璃冲洗线在不同工厂里细节会有差异,但核心工艺基本一致:玻璃基板从上料区放到传送带上,进入冲洗段,先用喷淋水加上滚刷把表面污渍刷掉,然后用风机或者热风把水渍吹干,最后输送到下料区。
在这个模型里,我把它简化成六个动作,每一步都对应明确的输入输出:
| 步骤 | 动作描述 | 执行元件 | 反馈信号 | 持续时间 |
|---|---|---|---|---|
| 1 | 按下启动按钮 | 按钮SB1 | X0 | 保持 |
| 2 | 传送带启动,玻璃向冲洗区移动 | 传送带电机 | 无 | 到位置为止 |
| 3 | 玻璃到位,传送带停止 | 光电传感器SQ1 | X2 | 瞬时 |
| 4 | 喷淋电磁阀打开,同时刷洗电机启动 | 电磁阀YV1、刷洗电机M3 | 无 | 5秒 |
| 5 | 喷淋停止,风机启动吹干 | 风机M4 | 无 | 3秒 |
| 6 | 吹干完成,传送带再次启动送出 | 传送带电机 | 无 | 直到下一次复位 |
按下停止按钮时,系统需要在当前步骤执行完后停下来,而不是立即切断所有输出。这个需求很容易被忽略,如果直接用X1常闭触点串在总电源上,就会导致程序跑到一半设备急停,这在真实产线上很容易造成工件卡在冲洗段里泡水。
2.2 交通灯的四相位时序
交通灯部分采用经典的双向四相位模型,不考虑左转箭头灯,保持和大多数教材一致的复杂度:
| 相位 | 东西方向 | 南北方向 | 持续时间 |
|---|---|---|---|
| 相位1 | 绿灯 | 红灯 | 30秒 |
| 相位2 | 黄灯 | 红灯 | 3秒 |
| 相位3 | 红灯 | 绿灯 | 30秒 |
| 相位4 | 红灯 | 黄灯 | 3秒 |
相位1到相位4循环执行。注意一点:南北方向的绿灯亮的时候,南北方向的红灯必须熄灭,但因为南北红灯和东西红灯分别由不同逻辑段驱动,很容易出现一个红灯线圈在多个输出行中被重复控制的情况。这是后面程序设计的重点。
2.3 I/O分配表:三菱FX的八进制陷阱
I/O分配是初学者最容易出问题的地方,主要原因是三菱FX系列的输入输出编号是八进制,不是十进制。也就是说,X0到X7之后不是X8、X9,而是X10、X11;Y0到Y7之后是Y10、Y11。很多人第一次写程序,编到X8就变红了,以为是软件出错,其实就是编号规则没搞清。
本模型的I/O分配如下:
| 输入信号 | 地址 | 用途 | 输出信号 | 地址 | 用途 |
|---|---|---|---|---|---|
| SB1 | X0 | 系统启动 | 传送带电机 | Y0 | 玻璃输送 |
| SB2 | X1 | 系统停止 | 喷淋电磁阀 | Y1 | 冲洗喷淋 |
| SQ1 | X2 | 玻璃到位检测 | 刷洗电机 | Y2 | 滚刷刷洗 |
| SB3 | X3 | 急停 | 风机 | Y3 | 吹干 |
| — | — | — | 东西绿灯 | Y4 | 交通灯 |
| — | — | — | 东西黄灯 | Y5 | 交通灯 |
| — | — | — | 东西红灯 | Y6 | 交通灯 |
| — | — | — | 南北绿灯 | Y7 | 交通灯 |
| — | — | — | 南北黄灯 | Y10 | 交通灯 |
| — | — | — | 南北红灯 | Y11 | 交通灯 |
输出部分特意把玻璃冲洗的Y0到Y3放在一组,交通灯的Y4到Y11放在另一组,这样写程序时思路清晰,后面做组态变量映射也方便。
2.4 为什么这样分配I/O
有人会问,玻璃冲洗三个执行元件,为什么把刷洗电机单独占一个输出点,而不是和喷淋电磁阀共用一个?从工艺上讲,喷淋和刷洗应该同时启动,但它们属于不同负载类型,电磁阀是交流220V线圈,刷洗电机是三相电机走接触器,电气回路上必须分开,程序上也占两个独立输出点,方便单独检修和组态显示。
输入X3急停则是一个安全冗余。急停用常闭触点接入,程序里用常开指令ANI读取,这样一旦急停线断了,PLC读到的是断开状态,系统会立刻进入停止逻辑,符合安全回路设计原则。
3. 梯形图核心逻辑:玻璃冲洗步进控制与交通灯时序循环怎么写
3.1 玻璃冲洗:用SET/RST搭步进,而不是在一行里堆定时器
玻璃冲洗的顺序逻辑,新手最容易写成“一行一个定时器全部串联”的接力式结构。这种写法在只有两三个步骤时勉强能跑,但一旦步骤多了,程序读起来就像一团浆糊,而且后面想插入一个暂停条件非常痛苦。
我的做法是引入中间继电器M作为步进标志,用SET和RST指令实现步进切换:
| 步进标志 | 对应状态 |
|---|---|
| M10 | 待机(等待玻璃到位) |
| M11 | 输送中 |
| M12 | 冲洗中 |
| M13 | 吹干中 |
| M14 | 送出中 |
核心逻辑用指令表表述大概是:
// 启动:X0常开触发M0自锁,X1常闭停止 LD X0 OR M0 ANI X1 OUT M0 // 输送步:按下启动后进入输送中 LD M0 ANI X2 SET M11 RST M10 // 到位后停止输送,进入冲洗步 LD X2 SET M12 RST M11 // 冲洗步:输出Y1、Y2,T0计时5秒 LD M12 AND M0 OUT Y1 OUT Y2 OUT T0 K50 // 冲洗结束进入吹干步 LD T0 SET M13 RST M12 // 吹干步:输出Y3,T1计时3秒 LD M13 AND M0 OUT Y3 OUT T1 K30 // 吹干结束进入送出步 LD T1 SET M14 RST M13注意一个细节:我在M12和M13的线圈条件里串了M0运行标志。这样做是为了实现前面说的“停止按钮不立即断输出,而是当前步骤完成后停下”。当X1按下后M0断开,虽然此时还在冲洗步,但Y1、Y2不会继续输出,T0也不会继续计时,程序就被“冻结”在当前步骤。再次按下启动时,M0重新闭合,当前步骤继续执行。
3.2 交通灯:用相位标志法替代定时器串联
交通灯的程序,最常见的错误写法是把四个定时器首尾串联:
LD M0 OUT T2 K300 LD T2 OUT T3 K30 LD T3 OUT T4 K300 LD T4 OUT T5 K30 LD T5 RST T2这种写法在仿真器里能跑,但存在一个隐患:T5动作后RST T2,T2从0开始重新计时,而T3、T4、T5的状态切换可能因为扫描周期的原因出现一两个扫描周期的瞬间状态混乱。特别是当你后面想加“倒计时显示”时,这种结构很难取出“当前相位剩余时间”。
我改用相位标志法,和玻璃冲洗同一个套路:
| 相位标志 | 对应相位 | 对应定时器 |
|---|---|---|
| M20 | 东西绿,南北红 | T2,30秒 |
| M21 | 东西黄,南北红 | T3,3秒 |
| M22 | 东西红,南北绿 | T4,30秒 |
| M23 | 东西红,南北黄 | T5,3秒 |
程序核心逻辑:
// M20置位后,T2开始计时 LD M20 OUT T2 K300 // T2计时到,切换到M21 LD T2 SET M21 RST M20 // M21置位后,T3开始计时 LD M21 OUT T3 K30 // T3计时到,切换到M22 LD T3 SET M22 RST M21 // M22置位后,T4开始计时 LD M22 OUT T4 K300 // T4计时到,切换到M23 LD T4 SET M23 RST M22 // M23置位后,T5开始计时 LD M23 OUT T5 K30 // T5计时到,回到M20 LD T5 SET M20 RST M23输出部分用相位标志组合:
LD M20 OUT Y4 // 东西绿 LD M21 OUT Y5 // 东西黄 LD M22 OR M23 OUT Y6 // 东西红 LD M22 OUT Y7 // 南北绿 LD M23 OUT Y10 // 南北黄 LD M20 OR M21 OUT Y11 // 南北红这套写法的好处是:任何时候只有一个相位标志为ON,红绿灯输出天然互锁,因为东西绿只在M20时输出,南北绿只在M22时输出,M20和M22在SET/RST的严格互斥下不可能同时为ON。
3.3 为什么不用“步进指令STL”来实现
三菱FX系列有专门的步进指令STL和状态继电器S,很多教材里交通灯就是用STL写的。但我在这个模型中刻意用中间继电器M加SET/RST实现,优先保证两个控制对象用同一种编程思路,方便初学者对照学习。实际工程里,如果程序步骤超过10步,我会建议改用STL或者转移到子程序结构,因为S继电器的状态继承和自动复位机制能减少代码量。
3.4 定时器资源分配与仿真提速技巧
玻璃冲洗用了T0、T1,交通灯用了T2到T5,两者互不干扰。三菱FX3U的定时器默认是100ms单位,所以K50代表5秒,K30代表3秒,K300代表30秒。仿真调试时,如果不想盯着红灯等30秒,可以把K300改成K30,把K50改成K5,逻辑不变,只是时间缩短。正式演示前再改回来。
还有一个小技巧:用M8013(1秒脉冲)可以给交通灯加“黄灯闪烁”或者“绿灯闪烁提醒”功能,只要把某个Y输出的条件从相位标志改成“相位标志 AND M8013”,就会变成1秒亮1秒灭的闪烁效果,后面扩展夜间模式时直接套用。
4. 仿真运行与在线调试:让虚拟PLC先替你在仿真环境里跑
4.1 GX Simulator V2的环境准备
GX Works2安装完成后,GX Simulator V2是独立安装的。装好之后,在GX Works2里写完程序,执行“变换”编译,然后点击工具栏上的“模拟开始”按钮,写好的程序就会加载进虚拟PLC并自动进入运行状态。
很多人第一次用会找不到这个按钮。GX Works2的界面里,“调试”菜单下有一个“开始/停止模拟”的选项,快捷键是Ctrl+F2。点击后,梯形图编辑器下方会多出一个小窗口,显示虚拟PLC的运行状态。此时X、Y、M、T、C、D这些软元件就全部进入仿真状态了。
4.2 用软元件监视和强制信号排查逻辑
仿真启动后,在梯形图编辑器里右键选择“软元件监视”,或者直接打开“监视模式”,就能看到每个触点和线圈的实时通断。此时程序的逻辑执行情况一目了然。
强制信号是调试神器。比如玻璃冲洗程序,真实设备上你需要用手去挡一下光电传感器才能产生X2信号,仿真里直接右键X2,选“强制ON”,程序就会认为玻璃到位了。交通灯调试也一样,你可以强制X0为ON让系统启动,然后观察Y4到Y11的切换顺序是否符合预期。
这里要提醒一句:强制信号用完一定要全部解除,否则后续联调时,某几个X点一直被强制在ON状态,会造成程序行为完全混乱。GX Works2里“调试”菜单有“软元件强制清除”的功能,一键复位。
4.3 仿真中最容易暴露的三类程序问题
第一类是双线圈问题。同一个Y输出在程序里出现两次,仿真时因为扫描周期的原因,输出状态会取决于最后一条指令的执行结果,看起来就是“时亮时灭”或者“一直不亮”。这种情况在实物PLC上更难查,仿真时用软元件监视就能直接看到继电器状态在跳动。
第二类是定时器误复位问题。玻璃冲洗程序里,如果T0的线圈条件里有一个瞬间断开的触点,比如直接用X2常开去驱动T0,而X2在玻璃离开后马上变OFF,T0的当前值立刻清零,冲洗时间永远走不完。正确做法是用M12步进标志去驱动T0,M12一旦置位就会保持,T0能完整计时。
第三类是互锁缺失。交通灯部分如果你忘了把东西红和南北红分别用对方相位的组合来输出,而是直接用一个独立的Y6、Y11去接,就可能出现逻辑混乱。仿真跑起来后,组态画面上红绿同亮的瞬间会非常显眼。
4.4 用时序图功能验证相位时长
GX Works2的“时序图”功能我真的建议每个人都用起来。它能把Y0到Y11、M20到M23、T2到T5这些软元件的状态变化按照扫描周期记录成波形曲线,配合时间轴看,比肉眼盯监视窗口高效得多。
交通灯调试时,我会把T2到T5的当前值也加进时序图,这样能直接看到四个定时器的当前值变化曲线,确认相位切换的时间点是否准确。比如T2的当前值到300后,M20从ON变OFF、M21从OFF变ON,同时T3当前值从0开始增加,这一连串动作必须严格同步。
4.5 仿真通过后还需要做什么
仿真通过不代表联调就能顺利。我的习惯是,在仿真确认逻辑正确之后,先把所有时间参数从提速状态恢复到设计值,再把所有强制信号清除,然后做一轮连续运行测试。玻璃冲洗程序连续跑10个循环,交通灯程序连续跑两个完整周期(大约66秒),确保步进不会卡在某个中间状态。
这一步看起来费时间,但能避免后面接上组态后,还在一遍遍改程序重新编译的麻烦。组态联调时你希望程序是稳定的,把调试精力集中在通讯和画面上。
5. MCGS组态画面构建:把软元件状态变成看得见的动效
5.1 MCGS工程结构的理解
MCGS嵌入版组态软件,初次打开会觉得界面有点老,但它的工程结构其实很清晰:设备窗口负责和PLC通讯,用户窗口负责画面绘制,实时数据库负责变量管理,运行策略负责脚本和联动逻辑。
有一个概念必须提前弄清楚:MCGS里不能直接用Y0、M10这种PLC地址去绑画面,你必须先在实时数据库里建立变量,然后在设备窗口里把变量和PLC的软元件地址关联起来,最后在用户窗口里把图元的动画属性绑定到这些变量上。整个链路就是“PLC软元件 → 设备通道 → 实时数据库变量 → 图元动画”。
5.2 设备组态:让MCGS认识你的PLC
在设备窗口里,双击“设备0”打开设备组态,添加设备驱动。MCGS自带三菱FX系列编程口驱动,如果你的PLC是FX3U实物,通过编程口线连接,选好COM口号和通讯参数就行。
这里要特别说一个很多人卡住的地方:MCGS的“连接方式”下拉框是灰色的,无法选择。这个问题的根因通常是当前选中的设备驱动不支持你选择的通讯方式,或者驱动类型没选对。你先在设备工具箱里确认添加的是“三菱FX系列编程口”而不是“三菱Q系列”或者其他型号,然后在设备属性里把“通讯方式”选成“RS-232”,连接方式才能激活。
如果是纯仿真环境联调,也就是PLC那边是GX Simulator虚拟PLC,MCGS是不能直接通过真实COM口读到数据的。我有三种方案可以绕过去:
- 方案一:用虚拟串口工具(比如VSPD)创建一对互联的COM口,GX Simulator的通讯设置指向其中一个,MCGS设备驱动指向另一个。这个方案在部分驱动版本下能用,但配置步骤繁琐,通讯稳定性一般。
- 方案二:MCGS不连虚拟PLC,直接改用“模拟运行”方式,在MCGS内部用脚本模拟PLC状态变化,把画面先做出来。这个方案适合先开发界面、验证显示逻辑。
- 方案三:最简单也最推荐——程序逻辑验证用GX Simulator完成,组态联调时如果有实物PLC更好,没有实物PLC就用MCGS的模拟运行方式。毕竟这篇文章的核心是“模型和组态”,而不是纠结通讯协议。
5.3 玻璃冲洗画面的组态对象与动画连接
新建一个用户窗口,命名为“玻璃冲洗画面”。用MCGS图元工具箱里的矩形、椭圆、线条把传送带、玻璃片、喷淋头、风机画出来。
动画连接的关键点:
- 传送带电机Y0为ON时,传送带上的玻璃片图形沿水平方向移动。选中玻璃片图元,在“动画连接”属性里选择“水平移动”,连接变量设为Y0对应的实时数据库变量,移动距离按画面像素设置。
- 喷淋电磁阀Y1为ON时,喷淋头喷出的水柱颜色变蓝。这里我用“颜色变化”属性,把水柱图元的填充颜色绑定到Y1变量,ON时显示蓝色,OFF时显示灰色。
- 风机Y3为ON时,风扇叶片图元做“旋转”动画。MCGS的旋转动画不支持变速,只能做匀速,不过演示足够。
按钮控件方面,在画面上放一个“启动”按钮和一个“停止”按钮。按钮的“按下动作”脚本可以写:
!WriteToDevice("X0", 1)这个脚本的作用是把X0强制写入为1,模拟按钮被按下。松手动作里再写:
!WriteToDevice("X0", 0)如果你用的是模拟运行方式,这串脚本同样有效,因为变量最终还是映射到PLC软元件地址上。
5.4 交通灯画面的组态对象与动画连接
新建另一个用户窗口,命名为“交通灯画面”。画一个十字路口,两条道路交叉,四个方向各放一组红黄绿圆灯。
每个圆灯的动画连接用“可见度”属性,比“颜色变化”更可靠。可见度的意思就是变量为ON时图元可见,OFF时图元隐藏。具体映射:
| 图元 | 连接变量 | 可见条件 |
|---|---|---|
| 东西绿灯 | Y4 | 1可见 |
| 东西黄灯 | Y5 | 1可见 |
| 东西红灯 | Y6 | 1可见 |
| 南北绿灯 | Y7 | 1可见 |
| 南北黄灯 | Y10 | 1可见 |
| 南北红灯 | Y11 | 1可见 |
这样,当PLC里M20相位标志为ON时,Y4输出为ON,画面上的东西绿灯就会亮起;Y6为OFF时,东西红灯图元隐藏。模拟出来的效果和真实路口红绿灯切换完全一致。
如果还要加倒计时显示,就在PLC程序里把T2到T5的当前值换算成剩余秒数,存入D0到D3寄存器。MCGS里放一个“标签显示”控件,连接D0变量,设置整数输出格式,就能在路口旁边显示东西方向剩余秒数。
5.5 组态画面的运行与常见显示问题
MCGS组态环境里点击“进入运行”按钮,画面就会全屏运行。此时如果硬件链路没问题,画面上的动画会跟着PLC输出变化。
我遇到过最常见的显示问题是:变量刷新太慢,画面动作看着很卡。MCGS实时数据库里每个变量都有刷新周期设置,默认可能几百毫秒,把关键变量比如Y0到Y11的刷新周期改成50毫秒,画面动作就会流畅很多。
另一个问题是按钮写了脚本但点了没反应。先检查设备是否处于运行状态,再检查脚本语法,最后看实时数据库变量有没有正确连到设备通道。很多时候问题出在变量名拼写错误,MCGS对大小写不敏感,但变量名必须和设备通道名完全一致。
6. 联调踩坑记录与后续扩展方向
6.1 联调最常见的三个“假故障”
把GX Simulator和MCGS真正联起来的时候,我踩过的坑大概能列出一页纸,但最典型的是这三个。
第一个,通讯方式不一致。GX Simulator是一个软件PLC,它没有物理串口,MCGS却默认去读COM1,两边自然对不上。如果你确实要做纯虚拟联调,就得用虚拟串口工具先创建一对COM口,然后GX Simulator的“通讯设置”指向一个,MCGS设备驱动指向另一个,两边参数都设成一致,才能通。
第二个,PLC没在RUN状态。GX Simulator写入程序后默认是运行状态,但如果你在调试过程中点过“停止模拟”或者触发了程序的停止条件,MCGS读到的就全是OFF状态,画面一动不动。这时候先回GX Works2里确认虚拟PLC的运行指示灯是亮的。
第三个,寄存器类型选错。MCGS设备通道里,X和Y是位变量,D是字变量,M是位变量。如果你在设备通道里把三菱FX的X0通道类型选成了字寄存器,读取回来的值就是乱码,画面显示根本不正常。设备通道的寄存器类型必须和PLC软元件一一对应。
6.2 程序结构上的优化建议
目前这个模型是单主程序结构,玻璃冲洗和交通灯的逻辑平铺在同一个主程序里。实际工程项目里,建议把它们拆成两个子程序,主程序里用CJ条件跳转或者CALL调用分别执行。这样做的好处是:修改交通灯逻辑时不会误碰玻璃冲洗的程序段,而且可以单独把某个子程序禁用,调试更方便。
初始化也值得专门做一步。用M8002初始脉冲把M10到M14、M20到M23全部复位,确保上电后系统处于待机状态而不是卡在某个中间步进。我见过不少学生的程序,上电后交通灯直接跳到南北绿,就是因为少了初始化复位。
6.3 时间参数的调整技巧
仿真和演示场景下,时间参数要有两套方案。调试方案:所有时间缩短10倍,K300改成K30,K50改成K5,两分钟内就能看完交通灯完整周期。演示方案:恢复K300、K50、K30,让观众看到真实的红绿灯节奏。
组态画面里最好加一个“周期显示”标签,把当前相位剩余秒数显示出来。这不仅是演示效果好,调试时也能直接看出来时间参数是不是按预期走的。
6.4 扩展方向
这个模型做完,再往上加功能的空间非常大。交通灯可以加夜间模式:用一个定时范围判断,比如晚上10点到早上6点,所有方向只显示黄灯闪烁,闪烁可以用M8013实现。玻璃冲洗线可以加产品计数:玻璃离开冲洗区时,X2下降沿触发计数器C0,组态画面显示累计产量。十字路口可以加左转箭头灯相位,变成四相位乃至六相位控制,这才是工程现场真实需要的逻辑复杂度。
如果你想把模型做得更完整,还可以用MCGS的报警功能,把玻璃冲洗的水泵过载、风机故障做成报警窗口,PLC里用特殊辅助继电器M8000之类的状态去触发。这些扩展方向都不需要改动模型骨架,程序上增加条件,组态上增加画面,就能不断深化。
我自己的习惯是,每次做完这样一个组合模型,都会把梯形图程序、组态工程、I/O分配表、操作说明打包成一个完整文件夹存档。下次再遇到类似的任务,改改工艺参数就能复用。这套“PLC加仿真加组态”的套路,从学习到工程演示都够用,而且它逼着你在写每一段逻辑时都去想“画面上要怎么显示”,这恰恰是很多PLC教材不会教你的东西。