PLC霓虹灯广告屏控制方案:从花型设计到梯形图时序编程实战 一块霓虹灯广告屏好看不好看七分在花型设计九分在控制方案。很多人以为把灯管接上电、再用一个时控开关让它闪起来就完事了结果做出来的效果要么呆板得像故障灯要么程序一团乱、改一次花型要重新接线改半天。我自己的经验是真正值得花心思的是用PLC来做霓虹灯广告屏的控制设计。PLC在这个场景里的价值不是“能亮”而是让“跑马灯”“追逐灯”“流水花型”这些效果变成一段可以随时修改、随时切换、稳定跑几个月的逻辑程序。这篇文章适合正在做自动化项目的学生、刚接触PLC的电气工程师以及想把手动闪烁控制改造成自动花型控制的广告行业工程人员。我会从需求拆解、硬件选型、程序设计到调试排坑完整讲一遍把我踩过的坑和用到的思路都摊开来说。1. 先把广告效果“翻译”成PLC能执行的控制需求1.1 霓虹灯花型的本质一串按时序开关的布尔量霓虹灯广告屏的花型再多拆到最底层就一句话某个时间点上哪几段灯管亮、哪几段灯管灭。常亮是“一直ON”闪烁是“周期性的ON/OFF”流水追逐是“相邻几段灯管按顺序接力点亮”交替变换是“两组灯管互为反相”。这些效果在PLC眼里没有任何艺术成分就是若干个输出点Y0、Y1、Y2……在时间轴上的ON/OFF组合。想清楚这一点很重要。很多人一上来就盯着PLC型号、梯形图指令急着写代码其实这是把顺序搞反了。正确顺序是先做“花型设计”把你要的效果用一张表写清楚再翻译成程序。那张表就是整个项目的需求规格说明书后边的程序、接线、调试全都要围着它转。我接这种项目时第一步永远是拿张白纸把广告屏的分段画出来。假设一个矩形广告牌边框分成8段灯管逆时针编号Y0到Y7。你脑子里预想的效果是第一段全亮2秒把整块招牌点亮第二段从Y0开始每0.3秒依次点亮一段视觉上是光线沿边框“流动”展开第三段等8段全部亮起来之后从Y7开始每0.3秒依次熄灭一段形成“收缩”效果第四段全部灭掉停顿0.8秒最后再来一组交替闪烁然后回到第一步循环。这个设计看起来不算复杂但一旦落到PLC上你会发现需要的“拍数”远比你想象的多。每一段亮灭变换、每一档持续时间都是一个独立的控制状态。1.2 从花型到I/O状态表把“拍”变成设计文档把上面那段话说成表格就是花型状态表。每一行代表一个“拍”也就是一个稳定的输出状态。拍与拍之间靠定时器跳转。我做的示例表大概是这个样子这里先列前几拍和最后几拍示意完整表格的写法拍号动作描述持续时间Y0Y1Y2Y3Y4Y5Y6Y7拍1全亮2.0sONONONONONONONON拍2Y0点亮0.3sONOFFOFFOFFOFFOFFOFFOFF拍3Y1点亮0.3sOFFONOFFOFFOFFOFFOFFOFF拍4Y2点亮0.3sOFFOFFONOFFOFFOFFOFFOFF…依次传递………………………拍10逆序熄灭0.3sONONONOFFOFFOFFOFFOFF…依次熄灭………………………拍18全灭停顿0.8sOFFOFFOFFOFFOFFOFFOFFOFF拍19奇数段闪烁0.2sONOFFONOFFONOFFONOFF拍20偶数段闪烁0.2sOFFONOFFONOFFONOFFON这张表写完你的设计任务其实已经完成了一大半。剩下的工作是让PLC严格按这张表去执行。每增加一种花型就增加一列“花型编号”或者单独再画一张表。我在项目里经常同时维护三四种花型靠拨码开关切换表格化管理比在程序里翻梯形图要直观得多。提示花型表和拍数不要拍脑袋定先数清楚一共几拍再去选PLC的点数。很多初学者就栽在这里——输出点不够了才想起要加扩展模块工期已经过了一半。1.3 为什么这套需求非要用PLC别的方案不行吗有人会问霓虹灯控制用传统的继电器电路行不行以前确实行用一个多回路时间继电器加一堆中间继电器也能拼出闪烁和交替效果。但代价是想换一种花型就要重新接线继电器触点数量翻倍故障点指数上升。广告公司接的客户今天要一款新花型明天要调速度继电器电路根本应付不来。用单片机也可以但我个人在广告屏这种现场环境下不推荐。霓虹灯变压器通断瞬间的电磁干扰很大单片机系统一旦被干扰程序跑飞、输出误动作排查起来非常痛苦。PLC从硬件层面就考虑了工业现场的可靠性梯形图语言对电气工人友好现场改参数也不需要懂芯片编程。这个选择本质上是“可靠性”和“可维护性”的权衡而不是谁更先进的问题。2. 硬件选型与I/O分配霓虹灯负载特点决定方案走向2.1 先搞清楚一个关键问题PLC输出点能不能直接带灯管这个坑很多人第一次都会踩。霓虹灯本体是高压气体放电灯传统漏磁变压器次级输出电压能到几千伏甚至上万伏而PLC的继电器输出触点参数通常是AC 250V/2A左右直接串进高压回路里是绝对不行的。正确的做法是PLC输出点只控制变压器初级线圈所在的220V回路高压侧保持物理隔离。所以整个控制链条是PLC输出点Y→ 中间继电器或固态继电器线圈中间继电器/固态继电器触点 → 霓虹灯变压器初级220V霓虹灯变压器次级 → 灯管这里还有个经常被忽略的细节霓虹灯变压器不是纯阻性负载。传统漏磁变压器是感性负载触点切换瞬间会产生电弧和较大的浪涌电流如果用电子变压器高频逆变负载特性更复杂过零触发型的固态继电器反而可能启动不良。选型的时候必须留意这一点不能只看标称电流。2.2 I/O点数估算用表格把账算清楚以我前面的8段边框方案为例信号类型用途数量数字量输入启动按钮1数字量输入停止按钮1数字量输入花型选择开关2数字量输入自动/手动切换1数字量输出灯管分段控制Y0~Y78数字量输出运行指示灯1数字量输出故障报警可选1输入侧4点输出侧10点一台14点的小型PLC勉强够用但完全没有余量。我把这个表贴出来是想说一个选型实操原则I/O点数至少留百分之二十到三十的余量。加个触摸屏要占用通讯口扩个传感器可能又要加DI点当初省钱的PLC最后往往成为改动的瓶颈。所以这个项目里我建议直接选一台24点的国产小型PLC价格没差多少但调试阶段会从容得多。2.3 输出方式选继电器还是晶体管负载性质说了算小型PLC的输出类型通常分继电器输出和晶体管输出两种这是选型时最容易犹豫的地方。继电器输出点内部就是物理触点能直接切换AC 220V接线最简单但机械触点通断感性负载时有寿命问题动作频率也受限。晶体管输出点是电子开关寿命长、响应快但只能是DC负载必须外接中间继电器或者固态继电器才能控制AC回路。这个项目里我倾向于“晶体管输出 外部固态继电器SSR”的组合。理由很实际霓虹灯广告屏一天要通断几千次继电器输出点的机械触点在这种频率下老化很快而晶体管的电子开关没有这个问题。至于外部SSR过零触发型可以减少感性负载的冲击电流选型时按实际负载电流的3到5倍留裕量就够了。提示很多PLC型号是混合型的比如一部分继电器输出、一部分晶体管输出。如果你既要驱动AC接触器又想输出高速脉冲可以选混合型布局把高速信号放在晶体管输出组上。2.4 接线细节和强电弱电分槽走线硬件接线部分看起来简单实际返工率很高。我整理过几条每次必查的规范输入侧的公共端大多数小型PLC输入COM接0V按钮一端接DC 24V正极另一端接输入点。接之前先翻手册分清漏型/源型输入别想当然。输出侧的公共端输出COM接AC 220V火线输出点接外部SSR输入端DC侧SSR输出端再串到220V回路里。注意SSR的DC控制端有正负极接反了指示灯都不亮。强电和弱电分开走线槽PLC的DI/DO信号线不要和220V动力线绑在同一个线槽里尤其不要平行长距离走线。霓虹灯变压器一动作干扰能从线间耦合直接灌进PLC。灯管接线考虑检修安全变压器高压侧的接线端子要做好明显标识和防护罩调试时断电操作这个没有商量余地。3. 程序设计的核心用“置位复位步进法”把花型时序跑起来3.1 为什么我不推荐初学者最容易想到的“定时器直接级联”说到时序控制很多人第一反应是上一拍定时器到点触点接通下一拍定时器一路串下去。这个思路看起来很直接实际写出来会有一个隐蔽的问题。PLC里的TON定时器只要使能条件一直为ON计时到点后输出就一直保持ON。于是第二拍定时器的使能条件第一拍定时器的常开触点持续为ON第二拍到点也不会自动复位接着又去驱动第三拍结果所有定时器同时处于计时完成状态逻辑完全乱掉。要解决这个问题传统梯形图里需要靠“自断开”技巧让每一拍定时器到点后切断自己的使能条件。但多个定时器首尾相连时这个技巧容易留下一个扫描周期的状态毛刺在线监控时能看到输出闪了一下现场的霓虹灯也会跟着闪一下。所以我自己的做法是换一种思路每一拍用一个中间继电器M代表“当前正在执行的拍”拍与拍之间用“置位复位”来转移定时器只负责单拍计时。这种方式逻辑非常干净每个时刻只有一个M为ON定时器不会互相干扰程序在线监控时一眼就能看出当前跑到哪一拍。3.2 程序骨架拍号状态与拍转移逻辑我用语义化的伪代码先把骨架写出来实际用的PLC品牌指令名称会略有差异但逻辑完全可以照搬// 启动/停止 X0 上升沿: SET M0 // 运行标志 SET M1 // 从拍1开始 X1 上升沿: RST M0 ZRST M1~M20 // 清零所有拍状态 ZRST Y0~Y7 // 清零所有输出 // 拍与拍之间的转移每拍定时器到点后复位当前拍置位下一拍 拍1: T0 定时2.0s到点后 RST M1, SET M2 拍2: T1 定时0.3s到点后 RST M2, SET M3 拍3: T2 定时0.3s到点后 RST M3, SET M4 // ... 逐拍类推 拍18: T17 定时0.8s到点后 RST M18, SET M19 拍19: T18 定时0.2s到点后 RST M19, SET M20 拍20: T19 定时0.2s到点后 RST M20, SET M1 // 回到第1拍形成循环 // 输出逻辑把每拍的亮灭需求翻译成Y线圈的并联条件 Y0 (拍1) OR (拍2) OR (拍10) OR (拍20) Y1 (拍1) OR (拍3) OR (拍10) OR (拍19) Y2 (拍1) OR (拍4) OR (拍11) OR (拍20) // ... 每一路输出都按花型表展开这个结构最大的优点是“拍转移”和“输出驱动”完全分离。改花型的时候你只需要改输出逻辑里Y线圈的并联条件或者直接改每个拍对应的定时器设定值改节奏的时候改定时器时间加花型的时候把拍序列往后面续就行完全不用动主线逻辑。我看到很多初学者喜欢把输出线圈直接写在某个拍下面比如“M1接通Y0”看着直观但同一个Y0在多拍里都要亮就会面临“双线圈”问题。PLC扫描时同一个线圈出现多次后面赋值的会覆盖前面的表现就是明明该亮的一拍灯灭了。所以一律采用“拍状态并联驱动输出每个Y线圈只出现一次”的写法。3.3 用数据寄存器把“拍时间”参数化项目做多了你就会发现客户改得最频繁的东西不是花型而是速度——今天觉得追逐灯跑太快了明天又觉得全亮时间太短。如果每次改时间都要改程序重新下载那就太被动了。我的做法是定时器的设定值不写死全部用数据寄存器D作为参数。比如T0的设定值写D0T1的设定值写D1一直到T19对应D19。这样程序在线状态直接修改D0到D19的数值就能调整每一拍的持续时间连PLC都不用停机。配合触摸屏以后客户想调速度自己就能调彻底解放你的时间。这个“逻辑与参数分离”的思路是从这个小项目延伸到所有PLC项目的一个通用原则。哪怕现在只有一个花型我也建议你一上来就按这个习惯写后面扩展会顺手非常多。3.4 输出驱动逻辑的完整展开方式回到花型表Y0一路的并联条件核心是把“拍”翻译成布尔组合。比如我前面的花型设计里Y0在拍10逆序熄灭的第一拍也是亮的在拍20偶数段闪烁也是亮的所以Y0线圈的驱动条件是这些拍的OR。这种写法看起来冗余但有几个实打实的好处第一在线监控时通过Y点的状态能立刻反推PLC在执行第几拍方便调试第二拍号和输出组合之间是纯粹的“查表”关系即使不懂梯形图的人对着花型表也能读懂程序第三PLC品牌换了也能快速移植因为核心只是布尔逻辑。4. 调试环节程序写好了上电才是真正的开始4.1 下载运行前的静态自检清单每台PLC第一次上电调试前我都会按下面这份清单过一遍这几分钟能省下半天现场排障的时间PLC电源端子电压确认直流供电注意正负极交流供电注意相线和零线别接反输入公共端COM和输出公共端COM是否各自对应最怕两个COM一个看错就烧了输入口急停和停止按钮反馈的是常开还是常闭程序里逻辑极性是否匹配输出点与外部SSR控制端的接线是否有一一对应关系有没有串位外部继电器线圈如果是DC负载看是否并联续流二极管AC线圈则不需要程序里首扫描周期是否有初始化操作复位所有拍状态、清除输出。4.2 现场三类典型故障的完整排查链路第一类上电后按启动整个系统毫无反应。我在网易上看到过一堆类似问题帖其实排查链路很简单PLC的RUN指示灯是否点亮编程软件在线监视看到X0有没有被按亮如果X0不亮查按钮回路如果X0亮了看M0和M1有没有置位再看Y0那一排输出有没有得电如果Y0亮了灯管还不亮问题在外围回路——SSR输入得电了没有、SSR输出端导通没有、变压器初级有没有220V。逐级向外查不要跳级。第二类花型顺序不对比如该逐段点亮的变成了好几段同时亮。这个大概率是双线圈问题或者拍转移逻辑里同一个M被重复置位。处理方法是打开软件里的“输出线圈重复使用检查”把每个Y点都全局搜索一遍确保每个线圈只出现一次。第三类停止按钮失灵。这个很经典原因是停止信号写进了自保持回路的线圈网络里但实际启动后系统根本没走那个网络。正确做法是用成对的置位/复位指令启动上升沿SET运行标志停止上升沿RST运行标志。运行标志作为所有拍逻辑的总开关停止后才能一票否决。注意调试霓虹灯设备一定要养成“先断高压侧、再改程序”的习惯。我见过不止一次程序下载失败或者强制输出的时候变压器次级放电把人吓得跳起来。所有对灯管的操作都等PLC逻辑完全确认无误了再说。4.3 干扰和触点寿命纯硬件措施能解决大半如果现场出现PLC无故死机、输出的灯偶尔乱跳一下九成是电磁干扰问题。霓虹灯变压器高压侧频繁通断就是这个项目的干扰源。解决思路按优先级排序把PLC供电加一个EMC滤波器信号线使用屏蔽双绞线并做单端接地PLC尽量远离变压器本体所有接地采用星形接法避免形成地环流。触点寿命问题前面选型选了晶体管输出加SSR这一步基本就挡掉了。但如果你手头只有继电器输出的PLC至少要做到SSR的额定电流留足裕量并且选用带过零检测的型号减少浪涌对触点的烧蚀。长期运行之后如果发现某一路输出频闪优先怀疑这部分而不是PLC程序。5. 从这台广告屏延伸出去时序控制还能这样迁移5.1 多花型切换让拨码开关变成“节目选择器”花型表维护好的基础上多花型切换只是加一层“选择器”。用两个输入点X2、X3作为四位拨码里的两位可以有四种组合对应四套拍逻辑。程序里只要在拍转移的时候加一个分支判断X2和X3的状态决定每一拍跳转的目标编号。参数化做得彻底一点把每种花型的时间参数表存在不同数据寄存器的区间里切换时统一装载。这个思路在广告屏项目里极其实用。白天跑淡雅缓慢的花型夜间切换跳跃鲜艳的花型节假日再切一套庆祝模式全程不需要改程序也不需要在电柜里换接线。5.2 加入传感器从“定时控制”升级为“事件驱动”花型单纯用时间来驱动效果相对机械。加一个环境光传感器程序就能判断天黑到一定程度自动启动夜间模式加一个人体红外传感器就能在无人的深夜降低灯管亮度甚至只保留常亮Logo。传感器信号进入PLC以后本质还是输入点的事件级逻辑条件满足置位某一套花型的启动标志。这个不用多讲重点是你设计程序的时候要留出输入切换的接口也就是之前说的输入点数必须留余量。很多人做项目没有余量后面想加这个功能就得换PLC非常憋屈。5.3 上触摸屏连“改参数”都交给客户自己完成广告屏项目里很多客户根本不懂PLC但他们能看懂触摸屏上的中文按钮。给PLC配一个几十块钱的串口触摸屏把花型选择、每拍时间设置、手动单步调试、累计运行时间显示做成画面整套系统立刻从“工程师专属”变成“客户可操作”。程序侧需要做的就是前面已经铺垫好的所有定时器设定值都用D寄存器所有启动停止都由M线圈作为软按钮触摸屏组件绑定这些软元件即可。无需增加任何I/O点成本也低但项目验收时观感完全不一样。5.4 同一套骨架能搬到哪些场景霓虹灯广告屏“按拍号控制输出点”的程序骨架几乎是所有时序控制项目的通用模板。LED灯带流水追逐、喷泉电磁阀顺序喷放、展厅灯光轮流切换、交通灯模拟、车间工位指示灯的节拍联动本质都是同一件事一组输出按时序工作。迁移的时候你只需要改花型表和输出组合PLC型号、程序结构、调试方法几乎原封不动。这就是为什么我强烈建议新手把第一个PLC设计项目选成霓虹灯广告屏而不是一上来就搞复杂的PID或者通讯时序控制能把PLC最基本的输入输出、定时器、中间继电器、置位复位、循环逻辑全部过一遍把这些基础打牢后面学什么都快。最后分享一个我在这类项目中一直用的调试习惯程序第一次下载之后不要急着把所有花型全跑起来先用“手动上升沿置位、单步点动”的方式一拍一拍地验证输出对应是否正确。确认每一拍灯管的亮灭状态和花型表完全一致再把它切回自动循环。你多花二十分钟做单步验证可能省掉的是现场反复全流程跑两小时也找不出毛病的烦躁。等霓虹灯广告屏稳稳跑过三天系统没有无故闪动、没有误动作你再回头看看初版那张花型状态表——这个项目的价值其实从你老老实实画那张表的时候就已经注定了。