PLC与触摸屏实战:S7-200教学楼照明控制系统设计调试全解 教学楼灯照明控制这个题目看似只是开关灯实际上串起了PLC编程、触摸屏组态、电气接线、现场调试一整条链路是特别典型的工程入门综合项目。这篇文章是系列里的 No.922我用一台 S7-200 PLC 加 MCGS 触摸屏做了一套三层教学楼照明控制系统从需求分析到梯形图程序再到接线图和组态画面全部理了一遍也踩了不少坑。文章会给出带解释的梯形图、I/O分配表、接线思路和MCGS调试方法适合理工科学生、自动化设备人员、带竞赛的老师以及手里正好有类似楼宇照明项目想快速上手的同行参考。1. 方案整体设计为什么选S7-200 MCGS教学楼照明需要哪些逻辑1.1 教学楼照明的实际控制需求教学楼照明不能简单按“开灯/关灯”来处理到现场看一圈就会发现痛点非常具体。以一座普通三层教学楼为例教室靠近走廊一侧在阴天的时候光线明显不够傍晚天黑时间随季节能差两个多小时固定时刻开关灯不是费电就是摸黑。晚自习结束后如果没人巡楼走廊灯经常整夜亮着周末和寒暑假长时间无人时更是长明灯重灾区。这些现象说明一套照明控制系统至少要解决三件事分区域控制、两种模式切换、应急兜底。我把项目拆成三个层次来落地。第一层是负荷划分三个楼层做三条独立照明回路分别由三台接触器控制好处是单层故障不会影响整栋楼检修也能分层断电。第二层是控制模式日常用自动特殊情况用手动手动和自动逻辑互斥不允许同时抢输出。第三层是应急照明走廊灯只要天黑就自动点亮不再依赖手动或者自动这套上层逻辑避免程序异常时人被困在黑走廊里。这三层需求搞清楚了后面的梯形图和接线才不会走样。1.2 为什么选S7-200和MCGS来搭选这套组合不是说它有多新而是它足够经典、足够稳。S7-200虽然在产品线里已经属于老一代但自动化教学、存量设备、实训竞赛里数量太大二手实验箱和技能训练设备几乎都以它为主学习资源和故障案例都极其丰富。它的定时器、计数器、自锁互锁、比较指令全是PLC最核心的知识点用一套照明程序能把这些点完整串起来对入门者来说比一上来就碰复杂运动控制友好得多。MCGS组态软件的上手门槛也很低不需要写复杂的上位机代码画面构件拖拽出来填上变量地址和动画属性就能用特别适合建立“PLC触摸屏”整套系统的直观认知。再说通信S7-200的PPI协议在工业现场久经考验跟MCGS触摸屏的通信参数也就是串口号、波特率、校验位、站号这几个调试过一次后面全是熟练工。等以后换新款PLC、换其他组态软件这套思路完全可以平移解决问题的框架是一样的。1.3 系统结构设计和I/O分配系统按三级结构设计。最底层是现场设备层包括启动/停止按钮、自动模式选择开关、光线传感器、接触器和照明灯具中间是控制层S7-200 PLC负责所有逻辑运算和输出驱动最上层是监控层MCGS触摸屏通过PPI协议和PLC交换数据显示状态并下发命令。I/O分配表必须在写梯形图之前敲死我按最常见的CPU型号规划如下PLC地址元件/标签功能说明I0.0SA-自动模式选择ON自动OFF手动I0.1SB1启动按钮手动模式开灯I0.2SB2停止按钮手动模式关灯I0.3SL-光线传感器光线不足输出1Q0.0KM1接触器一楼照明Q0.1KM2接触器二楼照明Q0.2KM3接触器三楼/走廊照明Q0.3HL-运行指示灯任一路输出时点亮这张表的地址从设计之初就不应该在程序里来回改对应到接线图就是端子号。项目调试时我把这张表直接贴在电控柜门内侧排查问题时按表量电压一分钟就能锁定回路比翻图纸快得多。2. 梯形图程序详解手/自动切换、定时控制与自锁回路2.1 程序初始化和辅助继电器划分梯形图程序在STEP 7 Micro/WIN环境里编写。不管程序多小第一条都应该处理初始化。SM0.1是PLC首次扫描时只接通一个扫描周期的特殊继电器常用来做辅助继电器清零。下面这段程序把M0.0到M0.7全部复位LD SM0.1 R M0.0, 8M区是S7-200的辅助继电器区没有外部接线端子只存在PLC内部。为什么照明控制这种不算复杂的程序也要用M区直接让启动按钮去控制输出Q行不行能行但会有两个麻烦一是手动和自动逻辑混在同一个网络里程序变得不可读二是上电瞬间如果输出Q保持某种状态灯可能自己亮起来。我在程序里把M区这样划分M0.0是手动运行标志M0.1是自动运行标志M0.2是模拟照明窗口标志。最终输出Q由这些M区合并驱动逻辑层次非常清楚后面不管加报警还是加联锁都不会乱成一锅粥。2.2 手动启停回路自锁、互锁与按钮边沿处理手动回路的梯形图是PLC教材里最经典的自锁电路这段程序值得逐条对照实物理解网络注释手动运行标志 LD I0.1 // 启动按钮 O M0.0 // 自锁保持 AN I0.2 // 停止按钮 AN I0.0 // 自动模式下禁止手动 M0.0首先是自锁。I0.1是瞬时启动按钮手指松开触点就断开必须靠M0.0的常开触点把自己“搂住”这样M0.0才能保持到停止按钮按下。其次是互锁AN I0.0把那一路自动模式开关串进网络只要模式拨到自动这个手动回路就整段断开按钮再按也没有反应。手动和自动互斥是逻辑安全的第一道保险能防止两个模式同时驱动输出。按钮抖动也是必须处理的点。机械按钮按下时金属触点会弹跳几次PLC扫描周期又很短一次按键可能被识别成多次。如果梯形图里用的是普通常开触点面板上多按几次灯的状态就容易乱跳。解决办法是加边沿检测S7-200里的EU就是上升沿有效触点把它放在I0.1后面表示“只有从0变成1的那一瞬间才执行一次”。实际体验就是按一下动一下不会抖出灵异事件。停止按钮则用ED下降沿道理一样。2.3 自动控制光线传感器与定时器的组合自动控制的核心是“时间窗口加光照”双条件缺一个都不允许自动开灯。时间窗口我用定时器做了一个60秒的演示循环目的是让读者在实训台上能快速看到效果真实项目里把窗口扩成几个小时或者直接换成RTC时钟比较指令原理完全一样。自复位定时器这样写网络60秒循环定时器 LDW T37, 600 // 当前值小于600时导通 TON T37, 600 // 100ms分辨率总共60秒T37达到600后清零重新计时形成一个往复循环的方波。再用比较指令取后半段作为“可照明窗口”LDW T37, 300 M0.2后30秒M0.2为1代表傍晚可开灯时段前30秒M0.2为0代表白天禁止开灯时段。自动允许条件就是三个变量相与LD I0.0 // 自动模式 A M0.2 // 可照明窗口 A I0.3 // 光线不足 M0.1 // 自动运行标志三个条件缺一不可这恰恰是教学楼照明设计里容易被忽略的点。如果单纯定时晴天中午一样可能开灯如果单纯照度阴天傍晚和雷阵雨前的光线变化会让判断乱套。两个条件叠加之后晴天大中午再怎么按自动也不会亮灯阴天傍晚光线传感器先给出信号然后再叠加时间窗口确认整体误动作概率就低很多。2.4 输出驱动、联锁与应急照明逻辑三个楼层的输出用三段同样结构的梯形图下面是一楼的网络一楼照明输出 LD M0.0 // 手动运行 O M0.1 // 自动运行 Q0.0 // 输出至KM1二楼把Q0.0改成Q0.1三楼改成Q0.2即可。照明输出不需要正反转那种复杂联锁因为没有机械冲突但有一条原则必须记住PLC输出点不要直接驱动大接触器线圈而是先驱动中间继电器中间继电器再去通断接触器线圈这层隔离能明显延长PLC输出点寿命具体接线放在第四章。应急照明逻辑单独走一个网络LD I0.3 // 光线不足 Q0.2 // 直接驱动应急照明这里把Q0.2既当三楼照明又当走廊应急照明是为了压缩I/O点数。如果现场楼层功能再复杂可以给应急灯单独分配一个输出点再加延时断电定时器但基础版本这样已经够用了。最后加一路运行状态指示灯LD Q0.0 O Q0.1 O Q0.2 Q0.3这段的意思是有任何一个楼层照明在工作Q0.3就点亮触摸屏和现场指示灯都能直接看到系统整体运行状态。3. MCGS组态画面设计与通信配置3.1 新建工程和通信参数配置MCGS组态的第一步是添加设备驱动打开设备窗口后添加S7-200的PPI驱动然后重点核对三个参数。通信串口一般选COM1或COM2取决于触摸屏硬件实际接的是哪一路波特率选9600校验方式选偶校验EVEN。S7-200的PORT0口出厂通信参数就是9600、8位数据、偶校验、1停止位两边完全一致才能握手成功。然后是站号S7-200 PPI默认站号是2MCGS设备属性里的PLC站号也要填2这个参数经常被人忽略改了之后通信必挂。参数填完后先做一次设备测试MCGS会往PLC发一个PPI请求报文如果返回数据有效就说明底层链路已经通了。这个步骤能迅速把“通信问题”和“画面问题”切分开后面就算画面显示不对至少能确认数据在交换。连不上时第一任务就是让这个设备测试通过再往下查画面属性才有意义。3.2 变量定义和页面规划MCGS变量分两类。设备变量对应PLC的I、Q、M等硬件地址例如I0.0代表自动模式开关Q0.0代表一楼照明输出M0.0代表手动运行标志这些变量会实时读写PLC。内存变量只存在触摸屏内部适合存放页面编号、用户权限、临时计算值这一类数据。页面按使用场景规划四页。主监控页放整栋楼的简图三个楼层各放一盏灯图标绑定Q0.0、Q0.1、Q0.2的颜色动画再放一个系统时间和T37当前值显示框操作人员扫一眼就知道全楼哪层灯开着。手动操作页放启动、停止按钮和模式切换开关配合“手动运行”“自动控制”状态文字。自动设置页放光线传感器状态、自动允许条件指示和定时器当前值调试时盯着这一页就能定位逻辑卡点在哪个条件上。报警信息页用来记录光感断线、接触器过载这些异常初学阶段可以先预留画面不挂实际报警脚本。3.3 动画连接和几个容易漏的细节MCGS画面构件的核心操作都在“动画连接”对话框里完成。按钮构件把按下动作绑定I0.1并选择“置1”抬起动作绑定I0.1并选择“清0”这样就是一个真正的点动按钮。指示灯构件把颜色动画绑定Q0.0值为1显示绿色值为0显示灰色。文本构件把显示输出绑定M0.0通过表达式在“手动运行”和“自动控制”之间切换显示。容易出错的地方经常在动作方向。按钮如果做反了会出现按一次灯亮、再按一次灯灭但PLC监控表里I点状态看起来没变化多半是置1和清0动作挂错。还有一个小坑是MCGS有些构件默认不勾选“允许输入”运行后按钮点了没反应属性里检查一下就能解决。最后把主监控页设置为启动页触摸屏上电后直接进主画面操作人员不需要手动翻页找界面。4. 接线图拆解PLC主控、中间继电器、接触器和触摸屏通信4.1 输入回路接线S7-200输入端子的接法取决于公共端的接法。CPU输入分成若干组每一组有一个公共端常见标记为M或1M。公共端接24V正极或负极决定了外部触点怎么接。我习惯的做法是公共端1M接24V正极按钮、开关的一端接到输入点另一端统一接0V这样触点闭合时给输入点提供低电平回路。也可以反过来公共端接0V、触点另一端接24V正极能正常工作但和输出回路的24V中间继电器容易串电现场接线容易乱所以我一般不推荐。需要注意的是光线传感器市面上有两类接法。如果是三线制有源传感器除了信号线接I0.3之外正负两根电源线必须单独接开关电源不能图省事把信号线和电源线并到同一个端子上。传感器和PLC距离超过二十米时信号线应该选屏蔽双绞线屏蔽层单端接地否则日光灯启辉和接触器吸合时产生的干扰可能让I0.3频繁抖动进而误触发应急照明。4.2 输出回路与主电路接线输出回路采用四级结构PLC输出点、中间继电器、接触器、照明负载。直接让PLC输出点驱动AC220V接触器线圈是很多反面教材的根源。接触器线圈是典型感性负载断开瞬间反电动势很高电弧会把输出触点烧黑时间长了触点通断能力严重下降最后灯该亮不亮、该灭不灭。中间继电器是24V线圈PLC输出点只负责给它供电冲击和电弧都被中间继电器扛住PLC输出点寿命会明显提升。接线顺序是24V开关电源正极接PLC输出端的公共端子Q0.0触点输出侧接到KA1线圈正端KA1线圈负端接回0V。KA1的常开触点串联在KM1线圈回路里KM1线圈接AC220V一端接N另一端经KA1常开触点接L。Q0.1、Q0.2对应的KA2、KA3完全一样。主回路从配电箱引来电源先经过总断路器分别到三台接触器主触点出线再到各楼层灯具。每个楼层照明回路建议再装一个分路断路器检修时单独断开某一层不干扰其他层正常用电。4.3 触摸屏通信和整体供电规划S7-200的PORT0口物理层是RS485MCGS触摸屏如果带RS485口直接A接A、B接B屏蔽层单端接地就行。如果触摸屏只有RS232口需要加一个RS232转RS485转换器触摸屏端接转换器的RS232侧PLC端接转换器的RS485侧。转换器是额外节点供电和接地处理不好经常出问题所以我在项目选型上建议直接用带RS485口的触摸屏省掉一个故障点。关于通信口的3脚和8脚定义不同资料说法比较混乱。我现场有笨办法先按A接3、B接8试一次如果设备测试失败就把A、B对调再试大多数情况下第二次就能通。A和B接反不会烧设备可以放心试。通信线要和动力线分开走线槽尤其别让接触器控制线和通信线在同一个线槽里并行走长距离否则接触器频繁吸合时通信容易闪断。供电规划上PLC和触摸屏共用一个24V开关电源是可以的但容量要算过。把PLC本体、触摸屏、三只中间继电器同时动作的电流加在一起再留30%余量。我一般直接选60W到100W的开关电源成本差别不大稳定性完全不是一个档次。必须强调的是照明主回路绝不能经过这个开关电源220V照明回路和24V控制回路在配电箱里要分区布置各自用独立断路器保护。5. 常见问题与调试经验实录5.1 触摸屏连不上PLC画面数据全灰现场最常见的故障现象是MCGS画面能打开但设备窗口显示连接失败所有指示灯都是灰色。排查顺序我固定成一条线先看通信线两端有没有指示灯闪烁不闪说明物理链路没通量一下A、B之间的电压正常应该在2V到6V之间摆动再核对通信参数波特率、校验位、站号三项有一项不对就握手失败最后检查A、B是否接反或接触不良。这里容易忽略的是站号。S7-200默认PPI站号是2但如果PLC里被人改过站号触摸屏仍然填2就肯定连不上。另一个容易忽略的点是共地问题触摸屏和PLC如果由两台不同的开关电源供电需要把两个电源的0V端子用一根线连起来否则RS485电平没有参考点数据链路会处于一种时好时坏的状态排查起来非常恼火。5.2 手动能开灯自动模式没反应手动能开说明PLC输出回路、接触器和按钮接线都没问题问题基本锁定在自动链路。按我前面的设计自动链路的三要素是I0.0自动模式、M0.2可照明窗口、I0.3光线不足三个条件同时为1M0.1才会置1。在编程软件监控表里同时监视这三个变量一眼就能看出卡在哪。大多数情况下卡在M0.2原因是定时器自复位循环没写对。常见错误是把“LDW T37, 600”漏写或者误写成“LD T37”导致T37到达预设值后不复位比较指令永远输出同一个状态。如果卡在I0.3白天也是1多半是传感器装得太靠窗强光直射导致误触发。正确做法是装在教室北侧、远离灯具的墙面上让传感器感知的是环境自然光而不是室内灯光。这个安装细节在图纸上就要标清楚靠施工时临场发挥基本都会翻车。5.3 接触器嗡嗡响、灯忽亮忽灭接触器线圈嗡嗡响是低频交流声最常见原因是线圈保持电压不足。教学楼照明回路长如果控制线径选细了压降大线圈端电压低于额定值85%时电磁吸力不够接触器就会反复吸合释放电灯跟着忽亮忽灭。处理办法是先量KM线圈两端电压确认是不是压降问题低了就加粗控制线径或者缩短控制回路距离。另一个隐蔽原因是没有给接触器线圈并吸收元件。接触器断开瞬间线圈电感会产生很高的反向电压尖峰电压会把接触器触点打毛触点接触电阻变大后灯就容易闪。我在现场踩过这个坑之后定了一条铁律任何交流接触器线圈两端必须并联RC阻容吸收或者装压敏电阻没有例外。最后照明灯的长线路也会对PLC输入端造成电磁骚扰让I0.3乱跳可以在传感器电源两端并联104瓷片电容或者在PLC输入端加RC滤波效果很快就能看到。5.4 调试顺序和几条实操心得完整调试我坚持按四步走。第一步PLC只接24V控制电输出线路暂时断开在编程软件里用监控表强制M0.0和M0.1观察Q0.0到Q0.3是否按预期翻转这一步只验证程序逻辑对不对。第二步解除强制按现场按钮、拨动模式开关验证I/O物理接线确认按钮信号能被PLC抓到。第三步给接触器线圈通电但主回路先不接灯具验证从按钮到接触器吸合的整条链路。第四步才接上灯具做整楼联动测试。按这个顺序能最大程度避免程序错和接线错混在一起不然出了问题都不知道该怀疑哪一层。还有几条经验想分享。写梯形图时每个网络都要写注释尤其教学用途的程序“带解释的梯形图”才有真正的价值一个注释虽然只花几十秒后来维护的人可能靠它省下半天时间。MCGS画面的颜色语义要统一指示灯我只用绿色和灰色两种绿色表示运行、灰色表示停止比五颜六色直观得多。接线图上每一个端子号都要标清楚别嫌麻烦图纸上少一个标注现场就要多花几十分钟拿万用表去量线。最后聊一个认知上的经验。最开始我也追求过复杂的节能算法、多传感器融合这些方案后来做的教学楼项目多了才发现真正稳妥可靠的不是算法而是逻辑分层手动管例外自动管日常应急管安全三层互不干扰再叠加上光线传感器做兜底。这套思路适应力非常强你把上面这些梯形图网络和接线图吃透以后再去接楼宇照明或者景观照明项目就会发现最关键的几个点早就已经摸清楚了。