简介:这是一份基于可编程逻辑控制器(PLC)的霓虹灯控制系统毕业设计说明书,以Word文档形式呈现,适合自动化、电气工程类专业学生以及从事工业控制、景观亮化工程的技术人员阅读。文档以西门子S7-200为控制核心,采用梯形图语言编写程序,介绍霓虹灯亮灭、闪烁与顺序控制的设计思路,涵盖PLC基本概念、控制需求分析、硬件选型、程序编写、系统调试、优缺点以及应用前景等完整内容。资源共包含1个doc文件,压缩包大小1.36MB,结构紧凑便于下载。目前已有106人学习下载。该说明书从绪论、硬件设计到具体实现均有详细论述,既可作为毕业设计参考模板,也可作为PLC课程项目的入门资料,帮助读者掌握霓虹灯控制系统的整体设计流程、梯形图编程方法,并快速理解西门子S7-200的实际应用。
1. 用PLC做霓虹灯控制,真不是"把灯点亮"这么简单
拿PLC去控制霓虹灯,乍看像杀鸡用牛刀,实际做一次就明白:霓虹灯是高压气体放电灯,靠变压器升到千伏级才能点亮,PLC能管的只是低压逻辑和时序,中间隔着继电器、接触器、变压器一大串。这个课题真正要解决的不是"灯亮不亮",而是"什么时候亮、按什么花样亮、负载端出问题后控制端怎么断"。无论你是做PLC毕业设计,还是接个小景观亮化工程,只要把PLC选型、I/O分配、梯形图逻辑和现场抗干扰这四件事想透,这套系统就能稳定跑。下面按一条完整落地的路径讲,从选硬件一直讲到调参排错。
2. PLC选型与I/O分配:先把负载侧和控制侧的"脾气"摸清楚
2.1 选型怎么定:三菱、西门子还是国产一体机
霓虹灯控制对PLC的运算能力要求很低,本质就是定时器、计数器、输出点的组合,所以选型核心看三件事:输出类型、扩展能力、你手头会哪种编程环境。三菱FX3U/FX5U是毕业设计最常见的选项,GX Works2/GX Works3里梯形图、ST都能写,资料好找,网上现成的案例多;西门子S7-200 SMART在国内小工程里渗透率高,博图和S7-PLCSIM方便做仿真,但它的通信口设置稍微绕一点;汇川、信捷这类国产PLC性价比高,H5U系列直接走CODESYS生态,相比传统梯形图,用ST写复杂花样逻辑会顺手很多。
我一般建议按"你周围人用啥你用啥"来定,因为这类小项目真正花时间的不是PLC本身,是现场调试。课题或小工程里常见的是三菱FX3U-32MT或S7-200 SMART SR20,点数够用,驱动霓虹灯负载时输出点直接接中间继电器,不建议用晶体管输出直驱,后面避坑章细说。
选型还有一个隐藏考量:是否要接触摸屏。如果甲方要求显示当前运行模式和倒计时时间,选型时就要留出通信口和寄存器空间。三菱FX系列用RS485或者直接用CC-Link都可以,国产一体机往往自带以太网口,反而省事。
2.2 霓虹灯负载驱动:输出点别直接碰高压侧
霓虹灯本身是高压气体放电灯,常见结构是220V进线经过霓虹灯变压器升压,二次侧达到几千伏,直接接在玻璃管两端。PLC输出点能承受的电压通常只有24V直流或220V交流,但电流和浪涌能力有限,尤其霓虹灯变压器启动瞬间会有较大的励磁浪涌,直接用PLC输出点去接变压器一次侧,触点寿命会大幅缩短,严重时触点粘连,灯就一直在亮。
所以标准做法是中间加继电器。常见做法是PLC输出点接24V中间继电器线圈,继电器触点去控制霓虹灯变压器的一次侧220V回路。继电器选型要留余量,触点电流按变压器一次侧实际电流的1.5到2倍选,别图便宜选触点容量刚够的,频繁通断时触点打火、粘连是这类课题的高发故障。追求通断频率和寿命的话,也可以用固态继电器(SSR),但要注意SSR的漏电流在部分霓虹灯变压器上会引起灯具微亮,需要并在负载端处理。
三菱、西门子、汇川的PLC输出点公共端组法不同,接线前一定看对应的接线端子图。三菱FX系列输出公共端COM1、COM2分组,西门子200 SMART的晶体管输出M/L+接法不一样,接错一根线就可能烧输出点。课题板上如果已经把接线端子画好了,先拿万用表量一遍公共端分组再往下接。
2.3 I/O分配表:先写地址,再写程序
程序设计的第一步是I/O分配,不要打开编程软件就拖触点。霓虹灯控制最常用的输入是启动按钮、停止按钮、急停,输出是若干路霓虹灯段。以六路霓虹灯为例,我常用的分配方式如下:
| 地址 | 信号 | 说明 |
|---|---|---|
| X0 | 启动按钮 SB1 | 常开,按下启动整个花样流程 |
| X1 | 停止按钮 SB2 | 常开,按下停止所有输出并复位 |
| X2 | 急停按钮 SB3 | 常闭,硬回路切断控制电源 |
| Y0 | 霓虹灯段1 | 接中间继电器KA1,控制变压器1 |
| Y1 | 霓虹灯段2 | 接中间继电器KA2 |
| Y2 | 霓虹灯段3 | 接中间继电器KA3 |
| Y3 | 霓虹灯段4 | 接中间继电器KA4 |
| Y4 | 霓虹灯段5 | 接中间继电器KA5 |
| Y5 | 霓虹灯段6 | 接中间继电器KA6 |
输入输出地址表一定要先定下来,后面写梯形图时才不用反复改。特别注意,急停不要只做成PLC输入点,更稳妥的做法是让急停直接串在继电器控制回路的电源线上,硬件上断电。PLC程序里再做一层软件互锁,双重保护。
关于输出点数量,六路是比较舒适的规模,够做出流水、交替、扩散等花样。如果实际灯管只有四路或者八路,逻辑同理,只是输出译码部分做增删。I/O分配表定好后,硬件接线图和程序里的软元件注释就用同一套命名,现场排查能省一半时间。
3. 花样逻辑与程序实现:从"灯常亮"到"六段花样"的最小可运行方案
3.1 花样控制的核心是状态机,不是流水灯
很多人第一次写霓虹灯程序就想着用移位寄存器一路串下去,其实霓虹灯花样要的是"段与段之间的切换"和"段内节拍"两层结构。整个运行过程可以拆成六段:全亮、流水追逐、奇偶交替、中间扩散、全灭停顿、整体快闪。每一段有自己的持续时间,段内还要按节拍刷新输出,比如流水段每0.5秒移动一盏灯。
这就是一个典型的两层状态机:外层是"段号",内层是"节拍号"。段号决定当前整体效果,节拍号决定段内输出怎么变。这样做的好处是,任何一段的效果要调整,只改对应的节拍时间和输出译码,不影响其他段。如果只用定时器一个个串联,段数一多,梯形图就变成一团定时器嵌套,改一个时间要翻半天。
3.2 用结构化文本(ST)写六段花样的完整逻辑
以下代码以CODESYS风格的结构化文本(ST)写出,在汇川H5U、三菱FX5U的GX Works3、西门子S7-1200/1500的SCL中都能按相近语法运行。老款三菱FX3U只支持梯形图,逻辑等价翻译我会在后面单独给。
PROGRAM NeonCtrl VAR seg : INT := 0; // 段号 0~5 cycle : INT := 0; // 段内节拍号 0~5 tSeg : TON; // 段保持定时器 tCyc : TON; // 节拍定时器 segTime : TIME := T#3s; // 当前段保持时间 cycTime : TIME := T#1s; // 当前段节拍时间 firstRun : BOOL := TRUE; // 首次扫描标志 END_VAR // 首次运行初始化 IF firstRun THEN firstRun := FALSE; seg := 0; cycle := 0; END_IF // 按当前段号取段保持时间和节拍时间 CASE seg OF 0 : segTime := T#3s; cycTime := T#1s; // 全亮 1 : segTime := T#3s; cycTime := T#500ms; // 流水 2 : segTime := T#4s; cycTime := T#500ms; // 奇偶交替 3 : segTime := T#3s; cycTime := T#500ms; // 中间扩散 4 : segTime := T#2s; cycTime := T#1s; // 全灭停顿 5 : segTime := T#4s; cycTime := T#200ms; // 整体快闪 END_CASE // 节拍定时器:节拍时间到,cycle 加 1,并限制在 0~5 循环 tCyc(IN := NOT tCyc.Q, PT := cycTime); IF tCyc.Q THEN cycle := (cycle + 1) MOD 6; END_IF // 段定时器:段保持时间到,切到下一段并清零节拍 tSeg(IN := NOT tSeg.Q, PT := segTime); IF tSeg.Q THEN seg := (seg + 1) MOD 6; cycle := 0; END_IF这段代码里,tCyc和tSeg都是自复位定时器,IN取自身的Q取反,这样定时时间到后Q会保持一个扫描周期为TRUE,然后自动复位,不需要额外写复位线圈。MOD 6是为了让段号和节拍号都限制在0到5之间循环,不会越界。这种方式避免了用一大堆M继电器去搭状态切换,程序结构清楚很多。
定时器的时间参数我用TIME类型,可读性好。实际写到三菱FX5U时,TIME要换算成毫秒数,例如T#500ms就对应500;写到三菱FX3U的梯形图时,T0的K值按0.1秒为单位,K5代表0.5秒,这是老式PLC常见的换算坑。
输出译码部分要独立写在后面:
// 根据段号和节拍号点亮六个输出点 Y0 := FALSE; Y1 := FALSE; Y2 := FALSE; Y3 := FALSE; Y4 := FALSE; Y5 := FALSE; CASE seg OF 0 : // 全亮 Y0 := TRUE; Y1 := TRUE; Y2 := TRUE; Y3 := TRUE; Y4 := TRUE; Y5 := TRUE; 1 : // 流水追逐,依次点亮一盏 CASE cycle OF 0 : Y0 := TRUE; 1 : Y1 := TRUE; 2 : Y2 := TRUE; 3 : Y3 := TRUE; 4 : Y4 := TRUE; 5 : Y5 := TRUE; END_CASE 2 : // 奇偶交替 IF (cycle MOD 2) = 0 THEN Y1 := TRUE; Y3 := TRUE; Y5 := TRUE; ELSE Y0 := TRUE; Y2 := TRUE; Y4 := TRUE; END_IF 3 : // 从中间向两边扩散 CASE cycle OF 0 : Y2 := TRUE; Y3 := TRUE; 1 : Y1 := TRUE; Y2 := TRUE; Y3 := TRUE; Y4 := TRUE; 2 : Y0 := TRUE; Y1 := TRUE; Y2 := TRUE; Y3 := TRUE; Y4 := TRUE; Y5 := TRUE; 3 : Y2 := TRUE; Y3 := TRUE; 4 : Y1 := TRUE; Y2 := TRUE; Y3 := TRUE; Y4 := TRUE; 5 : Y0 := TRUE; Y1 := TRUE; Y2 := TRUE; Y3 := TRUE; Y4 := TRUE; Y5 := TRUE; END_CASE 4 : // 全灭停顿,无输出 5 : // 整体快闪 IF (cycle MOD 2) = 0 THEN Y0 := TRUE; Y1 := TRUE; Y2 := TRUE; Y3 := TRUE; Y4 := TRUE; Y5 := TRUE; END_IF END_CASE输出译码里的每个CASE分支都先批量复位再按需置位,避免因为段切换残留旧的输出状态。这里有一个细节:段3中间扩散在cycle 2和cycle 5都是全亮,视觉上就是"从中间散开再向中间收拢再散开"的效果,节拍0到5循环播放,直到段时间到才切走。
3.3 三菱FX3U梯形图等价写法:老平台怎么翻译
如果你手里是老三菱FX3U,GX Works2不支持上面这种ST结构,那就用梯形图加指令表。核心是两条控制链:T0做段切换,T1做节拍切换,D0存段号,D1存节拍号。指令表如下:
LD M8002 // 首次扫描初始化 MOV K0 D0 // D0=段号 MOV K0 D1 // D1=节拍号 LD T1 // 节拍定时器T1计时到 INC D1 // 节拍号加1 RST T1 // 复位T1,重新计时 LD T0 // 段定时器T0计时到 MOV K0 D1 // 节拍清零 INC D0 // 段号加1 RST T0 // 复位T0 LD M8000 // M8000为运行常ON ANI T0 // 段定时器未到时保持 OUT T0 K300 // 段定时器0.1s为单位,K300=30s需要注意,上面的30s是一个兜底值,真实项目中段保持时间应当按每个段分别设定,一般做法是用六组比较指令判断当前D0的值,再把对应的K值传入T0。梯形图方式比较啰嗦,却也是国内多数毕业设计用的平台,逻辑对应上面ST代码逐条翻译即可。
指令表中的INC指令是32位加1,只对D0、D1低位操作就够了,不会溢出。RST T1要放在T1触点之后,顺序错了会导致定时器刚计时到又被复位,循环无法继续。梯形图里定时器线圈千万不能写重复,一个T0线圈只能出现在一个位置,否则会报"软元件重复使用"错误。
3.4 仿真验证:先跑通再上电
程序写完先别急着接实物。三菱的GX Works2自带仿真,西门子的S7-PLCSIM可以用来模拟输入输出,汇川和CODESYS生态也有在线仿真。仿真时主要看两点:第一,输出点状态是否按预期顺序变化;第二,段与段之间有没有跳变异常。我习惯把启动按钮X0置ON后,打开软元件监控,盯着D0(段号)和D1(节拍号)变化,再配合Y0到Y5的状态看花样的完整流程。
仿真跑通后再接实物,可以省下大量现场排查时间。有些程序问题在仿真里看不出来,比如输出点公共端接错、继电器线圈极性反了,这些属于硬件问题,不属于程序仿真范畴,放到下章讲。
4. 现场布线与抗干扰:霓虹灯高压串进PLC是最大的翻车点
4.1 强弱电分区走线,别让一次侧动力线贴着信号线走
霓虹灯变压器一次侧是220V交流,二次侧是几千伏高压,虽然高电压那一侧通常不会直接进PLC,但一次侧动力线和PLC的24V信号线如果走同一个线槽,动力线通断瞬间的电磁干扰很容易耦合到信号线上,导致PLC误动作、输出点乱跳。正确的布线要求是强电和弱电分开走两个线槽,间距至少20厘米,实在空间不够,中间用金属隔板隔开,或者信号线改用屏蔽线单端接地。
我在现场遇到过一次很典型的翻车:霓虹灯全部接好后,因为柜子小,把220V继电器线和24V输出线捆在了一起,上电后Y0到Y5每隔几分钟就集体闪一下,监视程序却一切正常。后来把两种线缆分开才稳定。这种问题用示波器才能看到干扰波形,但布线规范从一开始就能避开。
4.2 中间继电器线圈要反向并联续流二极管
PLC驱动中间继电器的线圈是感性负载,断开瞬间会产生反向感应电动势,电压尖峰可以达到几百伏,虽然PLC输出点在设计上留有余量,但频繁地通断会加速触点老化,严重时尖峰串到PLC内部电源,造成莫名其妙的死机或程序跑飞。解决方法是每个中间继电器线圈两端反向并联一个续流二极管(1N4007即可),注意极性,二极管的阴极接电源正极。这一步看起来不起眼,却是霓虹灯这类频繁通断负载的保护关键。
有些继电器底座自带指示灯和续流回路,接线前先确认型号,如果内置了续流就不需要额外接,避免重复。
4.3 接地要单点,柜体和PLC地分开处理
霓虹灯变压器会有漏磁和高频分量,良好的接地能泄放一部分干扰。常见的错误是把PLC的24V负极直接接到柜体钢板上,又或者让霓虹灯变压器的外壳接地和PLC接地共用一根线,这样干扰会通过地线耦合进PLC。更合理的做法是:控制柜柜体接保护地,PLC的接地端子单独用一根线接到汇流排,霓虹灯变压器外壳也接到汇流排,形成单点接地。如果是小课题板,至少保证PLC的接地端子和继电器回路的地不要共用同一条细线。
4.4 急停回路要硬接线,不能只靠程序
程序里的停止逻辑再完善,一旦PLC跑飞或者输出点损坏,停不下来就是事故。急停按钮必须直接串在中间继电器控制回路的电源线里,按下去,整个继电器线圈断电,所有霓虹灯变压器一次侧无论PLC输出什么状态都不会得电。PLC程序里再做一层软停止,X2常闭输入作为程序急停。这种"硬回路兜底,软逻辑控制"的双层结构,是做这类控制柜的基本原则。
5. PLC霓虹灯控制常见问题排查:五个典型踩坑记录
5.1 现象:一启动系统,总闸就跳漏电保护
原因:霓虹灯变压器一次侧和二次侧之间本身存在分布电容,高频漏电流本来就比普通灯具大。再加上控制柜里的PLC开关电源滤波器也会产生少量漏电流,两者叠加,超过了漏电保护开关的动作阈值,就会跳闸。
解决:把普通漏电保护开关换成对高频漏电流不敏感的型号,或者调整控制柜供电回路,把PLC开关电源和霓虹灯变压器分开两个回路供电。最稳妥的做法是把霓虹灯变压器原边单独用一个不带漏保的空开,控制回路用带漏保的空开,两路分开,互不牵连。
5.2 现象:PLC输出点指示灯亮了,但霓虹灯不亮
原因:这是最容易被误判为PLC故障的情况。输出指示灯亮说明PLC内部逻辑没问题,但输出到负载的通路断开了。常见原因是中间继电器线圈电压不对,或者PLC输出公共端没有接对。三菱FX系列输出点的外部负载电源必须从COM端接入,COM端没接,输出指示灯照样亮,但回路里没有电流。
解决:先量PLC输出点与COM之间的电压,再量中间继电器线圈两端电压。没有电压就查输出公共端接线;有电压还不动,查继电器线圈额定电压是直流24V还是交流220V,接错会烧线圈或完全不动作。
5.3 现象:花样整体错乱,段切换时间明显不对
原因:定时器K值单位搞混。三菱FX3U的定时器T0是100ms单位,K300是30秒,但FX5U的ST里写TIME类型直接是毫秒,如果把K300当30毫秒来写,整个花样流程会在几秒内全部跑完,看不出任何节奏。
解决:做一张单位对照表贴在现场柜门内侧,三菱老PLC定时器K1=0.1s,西门子S7-200 SMART定时器时基是10ms或100ms,可按定时器编号区分。换平台时务必先查时基,再折算时间参数。另外,段保持时间和节拍时间相差太小时会出现"每段只跑一两个节拍就切走"的现象,现场调参时把段时间至少设为节拍时间的4倍以上。
5.4 现象:博途或CODESYS连接PLC时提示需要目标AMS Net ID和端口号
原因:西门子S7-1200/1500走的是以太网,博途在线连接时需要设置PC/PG接口,200 SMART也有类似机制,报错里提示的AMS Net ID是6字节网络标识,需要和PLC实际设备一致。很多人用USB线连接时也会被这个提示卡住,实际上是以太网连接参数没配对。
解决:先在博途的在线访问里扫描出设备,确认PLC的IP地址和AMS Net ID,再在接口参数里选择对应网卡。CODESYS生态的话,需要读取PLC网口的MAC地址或设备信息来确认ID。我曾经卡在这个环节半小时,最后发现只是电脑网卡选错,选成了WiFi网卡,改成有线网卡后秒连。
5.5 现象:灯能亮,但亮度偏低,灯管发红
原因:霓虹灯光亮度偏低的直接原因通常是供电电压不足或者变压器容量不够。但这套系统里还有一个隐蔽原因:中间继电器触点接触电阻过大,触点用久了发黑,导致变压器一次侧压降增大。
解决:检查继电器触点颜色,发黑就换新。霓虹灯变压器一次侧电压应接近220V,实测低于200V就要查供电回路。另外,快闪段如果频率太快,气体放电灯存在电离恢复时间,200ms的周期已经是不少霓虹灯变压器的极限,闪太快会感觉亮度明显降低,这是灯具物理特性,不是程序问题。
6. 把花样做成"可调参"和"可观测"的小技巧
如果想让这套设计更有扩展性,我推荐把段时间和节拍时间从固定常量改成数据寄存器,这样不用改程序就能调整流水快慢和每段停留时间。在ST里可以将TIME类型的参数改为从D寄存器读取,三菱GX Works里写一条MOV指令把设定值传到定时器K值即可。配合触摸屏的话,可以在画面里加几个数值输入框,直接写D100到D110,现场调花样的时间不用动PLC程序,这在实际项目里很受用。
程序里同时加上运行状态提示,把当前段号映射到M继电器或触摸屏指示灯,调试时一眼就看出系统跑到哪段了。我第一次做这个课题时,把所有时间参数写死在梯形图里,甲方改一次花样我改一次程序,连改了五次,后来全部改成D寄存器读写才解脱。上电前养成先查一遍接线、再跑一次仿真、最后才合闸的习惯,这个顺序能帮你避开九成以上的低级翻车。希望帮到你。
本文还有配套的精品资源,点击获取