做自动化这些年,用PLC点亮一盏灯大概是门槛最低、见效最快的入门项目。但别小看一套基于西门子S7-200 PLC的智能照明控制系统——从电路图、IO分配表、源程序到单机调试,每一步都藏着不少坑。这篇文章就围绕一套已经在厂区跑起来的照明控制系统,把整个设计和实现过程完整拆一遍,重点讲清楚“IO怎么分配、继电器输出怎么接线、定时与手动怎么互不打架”这些实际问题。适合刚接触PLC的电气工程师、设备维护人员,也适合想用PLC替代传统时控开关做节能改造的同行。
这套系统最终实现了三种控制模式:按时间自动开灯、手动按钮分别控制各回路、应急状态下全开全关。灯具回路为四个独立的照明区域,通过接触器扩展负载容量,PLC本体只负责“大脑”部分。文章不绕弯子,直接按项目推进顺序走:先讲需求,再讲电路与选型,再拆源程序,最后记录单机调试和现场问题。所有图表信息都用文字和表格说明,方便你直接照搬到自己项目里。
1. 项目背景与需求拆解
1.1 传统照明控制的问题到底出在哪
很多厂区和办公楼的照明控制,至今还在用传统的定时钟控器加一堆手动开关。这种方案最大的问题不是“不够自动”,而是“不够聪明”。定时钟控器只能按固定时间通断,遇到阴天、加班、临时会议这些场景完全跟不上;手动开关又过于依赖人,走廊、卫生间这种公共区域经常出现下班后长明灯的情况,一个月下来电费多出不少。
我之前接的一个项目,是一栋四层的综合办公楼,走廊照明、楼梯间照明和部分会议室照明加起来有十几个回路。原先是每层一个空气开关,保安每天下班后逐层手动关灯,开灯也是整层一起开,浪费非常严重。业主提的需求很明确:能不能做到“该亮的时候亮,不该亮的时候不亮,特殊时候一键全亮”。这就是典型的PLC照明控制系统应用场景。
1.2 为什么选择西门子S7-200 PLC作为控制核心
有人会问:照明控制用单片机、用智能继电器、甚至用智能家居网关不行吗?当然可以,但放在工业环境和设备维护背景下,PLC的优势非常明显。
首先是可靠性。单片机系统怕干扰、怕浪涌、怕重启丢程序,而PLC从硬件到软件都是面向工业环境设计的,电源波动、接触器吸合引起的干扰、高温粉尘这些都能扛住。S7-200虽然是西门子家族里比较老的一款小型PLC,但在中小规模项目中,成本低、市场存量大、配件好找,很多设备维护人员对它非常熟悉,出了问题能立刻上手排查。
其次是编程方式友好。S7-200用STEP 7-Micro/WIN编程,梯形图和语句表都支持,电气工程师基本不用额外学高级语言。后期维护、改定时、加回路都很快。相比S7-200 SMART,老款S7-200的指令集略有区别,但对这种IO点数二十来个、逻辑以定时和开关量为主的小项目来说,两者的处理方式几乎一样,选择哪款更多取决于你手上现有的设备和备件。
1.3 控制需求梳理与功能分级
项目不能一上来就写程序,先把需求写清楚比什么都重要。这套系统的控制需求整理下来,大致分三级:
基础功能:手动模式,每个照明回路能单独开、单独关。自动模式,按设定的时间区间自动开灯、关灯。应急模式,一键全开或全关。
进阶功能:光照联动,室外光线不足时自动补光。分组分批启动,避免多路接触器同时吸合造成电流冲击。运行指示和故障报警,让维护人员一眼知道系统和设备状态。
扩展预留:IO点留出至少20%的余量,方便后期增加传感器或回路。通讯接口预留,方便后续接上位机或状态监控。
需求必须写到“可验收”的程度。比如自动模式具体几点开、几点关,手动按钮和自动逻辑冲突时谁优先,应急全开后怎么恢复——这些问题如果开工前不想清楚,调试阶段会非常痛苦。
2. 系统总体设计与硬件电路
2.1 系统架构与三种工作模式
整套系统分成三层来设计:照明负载层、中间控制层、逻辑决策层。
照明负载层很好理解,就是分布在楼内的几十盏灯具,按区域划分为四个回路,每个回路由一台交流接触器的触点来控制通断。之所以让接触器来直接带灯具,是因为PLC继电器输出触点容量有限,直接控制大功率照明负载不安全,通过接触器扩展之后,PLC的触点只控制接触器线圈,负载电流走接触器主回路,安全系数高得多。
中间控制层就是接触器线圈、指示灯、报警器这些执行元件,以及按钮、模式开关、传感器这些采集元件,全部连接到PLC的输入输出端子上。
逻辑决策层是核心,CPU224型处理器负责运行控制程序。系统设计了三种工作模式,优先级从高到低排列:应急模式、手动模式、自动模式。应急模式由应急按钮触发,手动模式和自动模式通过一个两位选择开关切换。这样设计的好处是,即使自动程序某个部分出问题,操作人员仍然可以通过模式开关切到手动,保证照明的基本功能不丢。
2.2 PLC选型与IO扩展方案
本系统选用的是CPU224,带14个数字量输入和10个数字量输出。型号选择继电器输出型,而不是晶体管输出型,这是个关键决策点。继电器输出型的触点本身就是干接点,直接接AC220V负载没问题,适合驱动交流接触器线圈;晶体管输出型只能接DC24V负载,用在交流接触器控制上需要额外加中间继电器,徒增成本和节点。
IO使用情况如下:输入用了7个点,输出用了6个点,剩余不少余量。如果以后要增加回路,S7-200系列支持扩展模块,比如EM223输入输出混合模块,最多可以挂到7个扩展模块。扩展以后的地址排布会自动往后延续,程序还是按新地址分配就行。早期项目里如果IO点预留不够,后期在现场加模块会非常麻烦,因此我一般建议IO点按实际需求的1.5倍来规划,宁可多不要少。
2.3 主电路与供电回路设计
主电路使用的是标准电机控制线路的简化版。照明总电源经过一个塑壳断路器作为总开关,再分别引到四台交流接触器的上口,接触器下口接到对应的照明灯具回路。接触器线圈是AC220V供电的,线圈一端接零线,另一端接PLC对应输出点。
PLC本身的供电需要单独走一个小断路器。CPU224如果是AC供电型号,电源端子直接接AC220V即可,不需要外置开关电源。如果是DC供电型号,则需要一个DC24V开关电源。我在这个项目里用的是AC供电型CPU224,省事、少一个故障点。要注意的地方是,PLC供电与接触器供电最好分别用断路器控制,这样调试程序时可以单独给PLC送电,不用把照明强电全送上。
照明主回路导线截面积根据负载功率计算,这个环节不能拍脑袋。四个回路加起来大约有40多盏灯,单回路最大功率3千瓦左右,使用2.5平方毫米铜导线,断路器选用C型脱扣曲线的10A规格,接触器选用额定电流16A的型号,留足余量。接触器主触点容量选大了没问题,但线圈电压必须与PLC输出端子所在电源系统完全一致。
2.4 输入回路接线要点与注意事项
输入部分包括模式选择开关、手动按钮、应急按钮、光照传感器信号。S7-200的输入端子是DC24V的,外部信号通过干接点接入即可。这里我用的是源型接法:输入公共端M接开关电源0V,按钮一端接对应输入点(比如I0.3),另一端接DC24V正极。按钮按下时,输入点收到高电平,程序里检测到的就是“TRUE”状态。
接线的核心是公共端不能接错。S7-200的输入公共端在端子图上标得很清楚,如果M端和电源正负极接反,输入指示灯会异常,严重时可能烧毁PLC输入电路。所以第一天上电时,我先用万用表测量端子之间的电压,确认无误后再把按钮线接上去。
光照传感器选用的是带继电器输出的照度控制器,输出是干接点信号,光线不足时内部继电器吸合,相当于给PLC一个“信号接通”。选型时要注意别买两线制的电流输出型传感器,那种信号是4-20mA,S7-200不带模拟量模块没有办法直接读取。项目里没有配置模拟量扩展模块,因此所有外部信号都统一处理成干接点,简单、可靠、好排查。
2.5 输出回路与驱动电路设计
输出回路的接线是这套系统里最容易出错的地方。CPU224继电器输出型一共有两组输出公共端,分别是1L和2L。1L或2L接电源相线后,对应组的输出点导通时,该输出点会输出1L上的电压。因此设计如下:Q0.0、Q0.1、Q0.2、Q0.3这四个点接交流接触器线圈,它们使用同一组公共端1L,1L接AC220V火线;Q0.4接工作指示灯,Q0.5接报警器,使用另一组公共端2L,2L接DC24V电源正极。
这里有两个细节必须注意。第一,接触器线圈是典型的感性负载,切断电源瞬间会产生很高的反向电动势,如果不做保护,很容易打坏PLC输出触点甚至干扰程序运行。解决方式是每个接触器线圈两端并联一个RC吸收器,选型可以用常规的阻容吸收器,也可以自制一个120欧姆电阻串0.1微法电容再并联到线圈两端,实测效果很好。第二,接触器线圈回路必须串一个熔断器或小空气开关,防止线圈短路时烧毁PLC内部线路。
2.6 IO分配表
IO分配是整个设计的地基,必须一开始就固定下来。本系统的IO分配表如下:
| 地址 | 类型 | 功能说明 | 接线/备注 |
|---|---|---|---|
| I0.0 | 输入 | 手动/自动模式开关 | 手动ON,自动OFF |
| I0.1 | 输入 | 光照不足信号 | 干接点,光线不足时闭合 |
| I0.2 | 输入 | 应急全开按钮 | 常开,按下全开 |
| I0.3 | 输入 | 回路1手动按钮 | 交替按钮:按一次开,再按一次关 |
| I0.4 | 输入 | 回路2手动按钮 | 同上 |
| I0.5 | 输入 | 回路3手动按钮 | 同上 |
| I0.6 | 输入 | 回路4手动按钮 | 同上 |
| I0.7 | 输入 | 备用输入 | 可接热保护/门禁信号 |
| Q0.0 | 输出 | 回路1照明接触器 | 1L接AC220V |
| Q0.1 | 输出 | 回路2照明接触器 | 同上 |
| Q0.2 | 输出 | 回路3照明接触器 | 同上 |
| Q0.3 | 输出 | 回路4照明接触器 | 同上 |
| Q0.4 | 输出 | 系统运行指示灯 | 2L接DC24V |
| Q0.5 | 输出 | 故障报警输出 | 可接电铃或报警灯 |
| Q0.6 | 输出 | 备用输出 | 预留 |
IO表一旦确定,程序里的地址就不应该再随意改动。我习惯把IO表打印出来贴在控制柜门内侧,调试和后期维护都靠这张表,比任何图纸都管用。
3. 核心源程序设计与实现
3.1 程序结构规划与模块划分
S7-200的程序在STEP 7-Micro/WIN里编写,主程序是OB1。程序结构我用了模块化的思路:主程序只负责模式判断和子程序调度;初始化逻辑放在一个子程序里;自动控制逻辑单独放一个子程序;手动按钮逻辑单独放一个子程序。
这样划分的直接好处是调试的时候定位问题非常快。比如自动定时不生效,只需要检查自动控制子程序,不用翻遍整个梯形图。项目里各功能代码量不大,但模块化之后,后期扩展一个循环定时功能,只要新加一个子程序,在主程序里调用一下,完全不影响已有逻辑。
需要注意的一点:子程序不能同时被多重调用,比如中断程序里调用了同一个子程序,可能会造成数据冲突。这个项目里没有用到中断,只按扫描周期执行,逻辑上很安全。
3.2 系统时钟读取与时间设定
自动定时功能依赖于PLC内部的实时时钟。S7-200的RTC数据读取之后存放在连续8个字节里,地址起始可以自己指定。我用VB100开始存放:VB100是年,VB101是月,VB102是日,VB103是时,VB104是分,VB105是秒,VB106保留,VB107是星期。注意这些字节是BCD码格式,也就是说8点存的值是16#08,18点存的值是16#18。
读时钟的语句表长这样:
// 读实时时钟到VB100起始的8个字节 LD SM0.0 TODR VB100SM0.0在S7-200里是常ON的特殊存储器位,SM0.0始终为TRUE,用它给TODR指令提供能流,程序每个扫描周期都会刷新一次时钟数据。如果你是第一次用S7-200的PLC,上电之后先要在编程软件里给PLC设置一次时钟:菜单“PLC -> 实时时钟 -> 读取/写入”,不然后续定时逻辑全靠一个错误的时间,怎么调都白搭。
3.3 自动定时控制逻辑
自动模式的目标很直接:在工作时间且光照不足时,点亮对应照明回路。这里我先把开灯时间设定值存到V区:VB130存开灯小时,VB131存关灯小时。初始化子程序里写入8点开、18点关:
LD SM0.0 MOVB 16#8, VB130 // 开灯时间 08:00 MOVB 16#18, VB131 // 关灯时间 18:00自动控制子程序里,先从VB100区域读取当前时间,再把当前小时VB103和设定值比较。判断逻辑是:当前时间落在开灯时间与关灯时间之间,并且日光不足信号满足,就认为需要开灯。
// 当前小时 >= 开灯时间 LDB>= VB103, VB130 = M0.0 // 当前小时 < 关灯时间 LDB< VB103, VB131 = M0.1 // 自动开灯条件 = 在时间窗口内且光照不足 LD M0.0 A M0.1 A I0.1 = M0.2这里有个细节:直接用BCD码比较时间值是可行的。因为小时范围是0到23,BCD编码从00H到23H,数值大小关系和实际时间先后顺序完全一致;分钟范围也是同理。所以LDB>=这种字节比较指令可以直接用,不需要额外做BCD转整数的处理。这是S7-200编程里一个特别实用的小技巧。
如果控制需求变成开灯时间大于关灯时间,比如晚上22点开灯、第二天6点关灯,那属于跨天定时,逻辑改成:当前小时大于等于开灯时间,或当前小时小于关灯时间,两者满足其一即可。把上面程序里的“与”改成“或”,再单独加一个跨天标志判断,就能覆盖这种场景。我一般不把跨天逻辑写死,而是预留好VB130、VB131两个参数,现场用状态表改数值就能适配。
3.4 分组分批延时启动的实现
四个照明回路同时由自动模式驱动输出时,如果四台接触器在同一扫描周期同时吸合,启动电流叠加很可观,不仅对接触器寿命有影响,还容易干扰PLC自身。所以这里加了一个分批启动的功能:时间窗口条件满足时,回路1立刻启动,回路2延时2秒,回路3延时4秒,回路4延时6秒。
S7-200的定时器类型里,T37是100毫秒分辨率的定时器,20个时基就是2秒,因此延时2秒就写PT值为+20。程序片段如下:
// 自动模式下分批启动:Q0.0立即,Q0.1延时2秒,Q0.2延时4秒,Q0.3延时6秒 LD M0.2 A T38 TON T37, +20 // 2秒定时 LD T37 S Q0.0, 1 // 回路1立即启动 LD T37 TON T38, +20 // 再过2秒 LD T38 S Q0.1, 1 // 回路2启动 LD T38 TON T39, +20 LD T39 S Q0.2, 1 LD T39 TON T40, +20 LD T40 S Q0.3, 1这个写法用的是级联定时器,T37导通之后T38才开始计时,实现的效果就是依次延时启动。关灯的时候不需要延时,直接全部复位。实际运行中,四路接触器吸合时能明显听到声音是依次响起的,冲击明显小很多。
3.5 手动模式与交替输出逻辑
手动模式要求每个按钮按一次开、再按一次关,也就是通常说的“交替输出”。PLC没有现成的翻转指令,我用计数器来实现,逻辑非常稳定。
以回路1为例,手动按钮I0.3每按下一次,C10的计数值加1。当计数值为1时,置位照明回路;当计数值为2时,复位照明回路,同时把计数器清零,准备下一次循环。程序如下:
LD I0.3 EU CTU C10, +2 // 计数到2 // 第一次按钮按下:计数值等于1,置位 LDW= C10, +1 S M0.3, 1 // M0.3作为回路1的手动开灯标志 // 第二次按钮按下:计数值等于2,复位并清零 LDW= C10, +2 R M0.3, 1 R C10, 1 // 计数器复位为什么用中间变量M0.3而不是直接操作Q0.0?因为后面有一个输出合并环节,手动、自动、应急三种来源都在合并网络里统一控制Q0.0。直接操作Q点会让不同模式之间互相踩踏,用了中间标志之后,控制来源一目了然,排查问题的时候也能顺着M位追溯。
3.6 应急全开与控制合并网络
应急按钮I0.2也做成交替式:按一次,应急标志M0.7置位,所有照明回路无条件开启;再按一次,M0.7复位,退出应急模式。程序结构类似手动交替,这里不重复写。
最终所有控制逻辑统一汇合到输出网络。以Q0.0为例,Q0.0的线圈由以下条件并联驱动:应急标志为TRUE,或自动模式开灯条件M0.2成立且对应回路已经分批启动置位,或手动开灯标志M0.3成立。经过这样合并,无论哪种模式下,输出状态都不会互相覆盖。
主程序里还必须处理一件事:模式切换瞬间要把输出状态清掉。我用了模式开关I0.0的上升沿和下降沿,分别调用一个复位子程序,把Q0.0到Q0.3全部复位。这样切模式后不会出现灯还保持着上一个模式状态的怪异现象。这个细节如果没做好,客户试用时切来切去,灯老是“不听话”,体验非常差。
4. 单机调试与运行实录
4.1 硬件检查与接线核对清单
程序写好了,不能直接上电,先做硬件检查。我的习惯是断电状态下,用万用表逐项核对,顺序如下:
确认PLC供电端L/N之间没有短路,输入公共端M和24V正负极没有接反。测量输出公共端1L、2L与对应的输出点之间在断开状态下电阻正常。检查接触器线圈两端是否并联了RC吸收器,检查主回路断路器规格和导线截面积。最后对照IO分配表,把每一根实际接线和表里的功能确认一遍。
这套检查看起来简单,但能避免大量返工。之前有一次把回路3的输出点误接到Q0.1上,上电调试时回路1和回路3一起动作,查了半天才发现是接线错位。所以IO表贴在柜门上,接线的时候一人读数一人核对,效率高出不少。
4.2 程序下载与在线监控
硬件无误后开始软件联调。S7-200用PC/PPI编程电缆连接PLC的编程口,在STEP 7-Micro/WIN里设置通信参数。通信波特率默认通常是9600或19200,必须和编程电缆拨码设置一致,否则会一直提示“无法连接到PLC”。
下载程序的常规步骤是先让PLC切换到STOP模式,再点“下载”按钮,下载完成后切回RUN。写完第一个版本后,不要直接切RUN,先用Micro/WIN的状态表监控几个关键变量,比如I0.0、M0.2、VB103这些。状态表是我用的最多的调试工具,输入什么地址、选择数据类型,就能实时看到变化。定时逻辑是否触发、按钮按下有没有脉冲,一目了然。
4.3 功能测试用例与结果
调试阶段不能光靠眼睛看灯亮没亮,我习惯按测试用例逐项验收。下面是几个典型用例的实际记录:
手动按钮测试:把模式开关拨到手动静态,逐个按I0.3到I0.6,四路输出依次交替通断,接触器线圈吸合释放声音清脆,无卡滞。
自动时间测试:把PLC时钟临时设置到7:59,再观察下一分钟8:00的响应。结果是定时条件满足后,Q0.0立即导通,Q0.1到Q0.3每2秒依次导通,分批启动正常。
光照联动测试:用手按住光照传感器的透镜模拟光线不足,I0.1变为闭合状态,在自动模式下照明正常补光;用强光照射传感器后,I0.1断开,自动开灯条件消失,照明回路在下一个扫描周期复位。
应急全开测试:按下I0.2,四个回路全部吸合;再按一次,全部复位。输出合并网络里应急优先级最高,手动自动模式下都能抢控。
测试中单独发现一个问题:接触器断开瞬间,工作指示灯会微微闪烁一下。原因是接触器线圈并联的RC吸收器接在了线圈两端,而PLC输出点导通状态下,接触器断开时RC放电回路经过Q0.4指示灯回路产生了瞬间电流,影响轻微但不规范。后来把指示灯回路和接触器回路分到两组输出公共端,也就是前面提到的1L接AC220V、2L接DC24V,这个问题彻底消除。
4.4 现场运行参数优化与后续扩展
单机调试全部通过以后,再回到真实照明场景里观察一周。重点优化两个参数:开灯时间和关灯时间。办公楼的作息是早上8点半上班,实际开灯时间设成8点比较合适,因为入室后需要整理和启动设备;关灯时间设成18点,但考虑到加班情况,现场把18点之后的自动模式改为手动兜底,避免下班前突然全灭影响加班人员。
光照传感器的安装位置也是调试出来的经验。最初装在靠窗顶棚,结果晴天被直射光干扰,阴天又迟迟不动作。后来移到走廊中段、避开直射的位置,灵敏度才正常。传感器输出动作阈值照度计标定,现场调在150勒克斯左右,既不会大白天误开,也不会傍晚迟迟不亮。
这套系统目前只做了单机运行,PLC本体没有接上位机或组态屏。如果后续需要加远程监视,可以通过S7-200的通讯口做Modbus从站,用组态软件读取Q点状态和时钟数据。也可以直接用触摸屏做一套简单的操作页面,把模式切换、状态显示、时间设定放上去,单机就地控制就已经完整了。
5. 常见问题与排查技巧
5.1 通信连接不上、无法下载程序
用PC/PPI电缆连不上PLC,是新手遇到最多的拦路虎,其实九成出在这几个原因上:编程电缆驱动没装好,设备管理器里看不到对应COM口;PLC通信口波特率与软件设置不一致;PLC在RUN模式下某些操作被限制;USB转串口线质量差导致信号丢失。
排查方向:先确认设备管理器里的COM口号正确,然后用Micro/WIN的“通信”对话框双击“双击刷新”,多数情况能自动识别。如果还是不行,把PLC拨到STOP模式再刷新。实在不行就把编程电缆拨码调速到187.5k或9600,和软件里手动指定的通信参数保持一致。我一个项目里遇到连不上,最后发现是兼容电缆的拨码在9600档位,软件里用的是187.5k,拨码拨回去立即恢复通信。
5.2 程序运行正常但接触器不吸合
程序监控面板上Q0.0已经亮了,但接触器纹丝不动。这种“有信号没动作”的问题,先别急着怀疑PLC坏了,按顺序查。
第一查输出公共端,1L有没有接AC220V火线。继电器输出型的触点本质上是一个开关,公共端没电,输出点即使闭合也不会有电压输出。第二查接触器线圈回路,线圈一端接输出点,另一端是否接零线。第三查熔断器,线圈回路里的保险丝是不是已经烧断。第四查输出继电器触点本身,用万用表测量Q0.0与公共端之间的导通电阻,正常情况下触点闭合时接近0欧。
还有一个不太容易被注意的点:程序里如果对Q0.0做了强制赋值,状态显示会是亮的,但输出状态被强制成“不导通”,在线监控里Q点会有一个特殊标记。排查时务必检查输出强制状态,平时不要随意用强制功能做试验,强制后忘记取消,是这类故障的高发原因。
5.3 RTC时钟丢失或走时不准
S7-200的实时时钟靠内部电容在断电后短时间保持,如果断电时间太长或电容老化,时钟就会复位到默认值。现象就是程序运行正常、但自动定时功能总在错误的时间动作。处理办法很简单:在STEP 7-Micro/WIN里重新设置PLC时钟,检查PLC电池或更换内部存储元件。现场配置一个不间断电源给PLC供电,也能延长时钟保持时间。
实时时钟每天会积累几秒误差,温度高的环境误差更大。如果定时精度要求高,建议每个月手工校时一次,或者在程序里用上位机对时,定时校正。单纯靠PLC内部RTC做长期精确走时是不现实的。
5.4 现场干扰导致误动作
这个坑我印象深刻。厂区里有一台变频器,离控制柜不远。系统运行了大概两周,开始出现接触器在无指令的情况下偶发抖动。排查过程很典型:先怀疑程序跑飞,但强制复位后仍然偶发;再怀疑按钮线太长感应干扰,把输入接线短接试验后依然存在。
最后找到真正原因是接触器线圈本身没有加阻容吸收,接触器释放时产生的反向电压沿着电缆传播,干扰了PLC的输出控制信号。处理方法:所有接触器线圈两端加装RC吸收器,同时把PLC控制线改为屏蔽线,屏蔽层单端接地,动力线和控制线分开走线。处理后整个现场再也没有出现过误动作。这个经验建议在项目初始就落实,不要等出了问题再补。
5.5 常见问题速查表
| 故障现象 | 可能原因 | 排查顺序 |
|---|---|---|
| PLC通信不上 | 驱动缺失、波特率不一致、电缆故障 | 设备管理器→通信参数→换线测试 |
| 程序可以下载但无输出 | 输出强制、公共端没接、熔断器断 | 查强制→查1L/2L→查外部回路 |
| 自动模式不动作 | 时钟错误、比较参数写错、光照信号不良 | 查RTC→查VB130/VB131→查I0.1 |
| 接触器频繁弹跳 | 干扰、线圈电压偏低、触点氧化 | 消除干扰源→测线圈电压→更换接触器 |
| 定时误差越来越大 | 时钟不准、电容老化 | 重新校时→检查电池/电容→加UPS |
写在后面:两个实用心得
这套系统从需求梳理到单机调试,前后大约花了两周。整个过程下来,我最深的体会是:PLC做照明控制,难点从来不在“写几十行程序”,而在于把控制需求抽象成一张清晰的IO表,再把每个输出的硬件回路设计扎实。程序里的定时比较、交替翻转、分批启动,都是很基础的指令组合,难的是意识到“接触器线圈必须加阻容吸收”“模式切换要把输出复位”“手动和自动要用中间标志隔离”。这些细节才是真正决定一套系统能不能长期稳定运行的关键。
最后再分享一个做类似项目的小技巧:新系统第一次试运行,我从来不会把所有照明回路全部投入。先把最不重要的一个回路接到手动模式上,其余回路全部断电,只让PLC跑程序。这样即使逻辑里有隐患,最多影响一个回路,有充足时间观察程序行为和接触器动作情况。确认没有异常后,再把其他回路逐一并入,整个调试过程会从容很多。希望这套方案的思路能帮你少踩几个坑,早日点亮自己的第一套PLC智能照明系统。