ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于S7-200 PLC与MCGS组态的隧道照明智能控制系统设计

基于S7-200 PLC与MCGS组态的隧道照明智能控制系统设计 前两年接手了一个隧道照明改造项目业主要求很明确把隧道里那段24小时全天候亮着的灯改成能自动调光的智能照明控制系统车来全亮、车走半亮、白天关闭入口段加强照明还要在值班室用触摸屏看到整套系统的运行状态。项目本身不算大但因为同时涉及西门子S7-200 PLC和MCGS组态软件要输出完整的梯形图程序、接线图设计方案和上位机组态画面中间踩了不少坑。这篇文章就把这套系统的完整设计过程写出来从控制策略到I/O分配从梯形图到组态画面再到现场调试遇到的实际问题适合正在做PLC毕业设计、或者手头接到类似中小型照明改造项目需要快速上手的工程师参考。1. 为什么用PLC组态这套路线来做隧道照明1.1 隧道照明的控制难点不是简单的天亮关灯、天黑开灯隧道照明跟普通道路照明不一样它有很明显的黑洞效应和白洞效应。白天车辆刚进隧道时人眼从亮处突然进入暗处需要适应时间所以隧道入口段必须加强照明深夜隧道里没什么车如果整条隧道还保持全亮度运行电费浪费非常严重。再加上隧道中间段和出口段的亮度需求也不同这就决定了隧道照明不能只靠一个光控开关解决最少也要分成入口加强照明基本照明应急照明几个回路来分别控制。目前大部分隧道改造项目的需求都集中在这几点能自动检测隧道内外光照度、能联动车辆检测信号、能分时段调光还要能实时看到每个照明回路的工作状态。这种需求用纯继电器回路也能做出来一部分但方案改动一次就要重新接线而且白天/夜间/来车/无车这种多条件组合逻辑用硬逻辑实现起来非常痛苦。PLC天生就是干这个的——输入条件多、输出逻辑可编程、扩展方便改控制逻辑不用动一根线。MCGS组态负责把PLC内部的位和字变量变成值班人员看得懂的图形界面这就是整套系统的核心价值。1.2 S7-200都停产了为什么还选它说句实话西门子S7-200从2013年就停产了但市场上现存的隧道、泵站、水处理、小型产线里它仍然大量在运行。我选它有两个现实原因这条隧道原本就有PLC控制柜里面装的正好是S7-200 CPU224改造时可以继续用只需要增加模拟量处理和相关模块。S7-200的指令系统足够简单市面上教材和案例多业主后续维护时找人接手成本低备件也不难找。如果你是拿这个题目做毕业设计选S7-200还有一个额外好处MCGS官方驱动里有专门的S7-200 PPI驱动组态连线上非常顺网上参考案例一抓一大把比直接用S7-1200配MCGS少踩很多驱动兼容性的坑。1.3 MCGS组态在中小型项目里的性价比优势MCGS组态软件分为嵌入版和通用版在中小型自控项目里普及度极高。正版授权费用比WinCC、iFIX这些低不少运行硬件也灵活——可以用MCGS自家的TPC系列触摸屏也可以装在普通工控机上跑。它支持通过串口PPI协议读写S7-200也支持以太网方式连接S7-200 SMART。隧道照明这种项目I/O点数几十个画面要求直观、报警要求简单MCGS完全够用而且本地化技术服务资料多遇到问题很容易搜到解决方案。2. 系统硬件选型与I/O分配从照度检测到回路控制2.1 系统架构和核心设备清单系统整体分为三层。最上层是MCGS触摸屏通过RS485连接S7-200 PLC中间层是PLC处理光照模拟量、车辆检测开关量、运行模式切换输出控制接触器底层是照明回路包括入口加强照明、基本照明和应急照明。这是我的设备清单大部分都是市面上常见、好采购的型号设备型号/规格数量作用PLCS7-200 CPU224XP AC/DC/RLY1台主控制器自带2路模拟量输入模拟量扩展EM231 4AI视CPU型号0~1块扩展模拟量输入通道光照变送器4-20mA输出量程0-2000Lux2只隧道口/隧道内照度检测车辆检测器地磁线圈式继电器触点输出3套入口/中间/出口来车检测中间继电器MY2NJ DC24V5只PLC输出节点隔离和触点扩展接触器50A/63A AC220V线圈4只控制照明回路通断组态屏MCGS TPC7062K1台上位机监控和操作开关电源DC24V 10A1只给PLC、传感器、继电器供电用户在做这类项目时要注意S7-200 CPU224XP自带2路模拟量输入电压型的0-10V范围。如果用的是4-20mA变送器就要在模拟量输入端子处并联一只250欧姆精密电阻把电流信号转成1-5V电压信号再进PLC这也是工程上最常用的做法。新手容易漏掉这个电阻直接接上去后数值要么满量程要么乱跳这不是程序问题是信号没有完成转换。2.2 I/O地址分配表提前规划能省一半调试时间I/O分配是整套系统的地图必须在写程序之前确定而且每个点要有明确含义。我的分配表如下地址信号名称类型说明I0.0手动/自动切换旋钮开关量输入1手动0自动I0.1车辆检测器1入口开关量输入触点闭合表示来车I0.2车辆检测器2中间段开关量输入同上I0.3车辆检测器3出口开关量输入同上I0.4照明回路1故障反馈开关量输入接触器辅助触点I0.5照明回路2故障反馈开关量输入接触器辅助触点AIW0隧道口光照度模拟量输入4-20mA转1-5VQ0.0入口加强照明回路开关量输出控制接触器KM1Q0.1基本照明A组回路开关量输出控制接触器KM2Q0.2基本照明B组回路开关量输出控制接触器KM3Q0.3应急照明回路开关量输出常亮故障自动投入Q0.4声光报警输出开关量输出回路故障时报警这里要重点解释一下基本照明A组/B组的设计思路。隧道基本照明灯具数量多要降低亮度时不可能把整条隧道的灯全关掉那样太危险。实务中把基本照明的灯具按奇偶分成两路A组和B组。全亮时Q0.1和Q0.2同时吸合半亮时只吸合A组、断开B组深夜无车时基本照明全部关闭只留应急照明。这个分组调光方案比用0-10V调光驱动器成本低得多控制逻辑也简单在中小型隧道改造项目中非常实用。2.3 接线图设计里最容易出问题的几个地方接线图是整个项目的硬件骨架我画过几次以后总结出几个容易踩坑的点输入回路的公共端接法。S7-200的开关量输入端子既可以接源型也可以接漏型取决于1M、2M公共端接DC24V正极还是0V。我一般习惯采用源型接法公共端接DC24V正极传感器、旋钮的触点接到对应输入点。接反了也不会烧设备但信号检测会失效。模拟量输入的量程设置。如果用了EM231扩展模块模块顶部的DIP开关必须按变送器量程拨码。EM231出厂默认是0-5V量程如果接的是4-20mA变送器需要先在外围并联250欧姆电阻再把DIP开关拨到对应档位。这个问题说明书写得不太显眼很多现场AIW0读数永远最大或为零基本都是这个原因。PLC输出触点的保护。S7-200继电器输出触点容量一般是2A直接控制接触器线圈虽然能吸合但感性负载的拉弧会明显缩短触点寿命。标准做法是PLC输出先驱动DC24V中间继电器中间继电器触点再控制AC220V接触器线圈。同时接触器线圈两端要并接RC吸收回路或压敏电阻。中间继电器线圈是直流的还要反向并联续流二极管。RS485通信线的压接。MCGS触摸屏COM口和S7-200的PORT0口都是DB9接口PPI通信只用3脚和8脚。用屏蔽双绞线做通信线时屏蔽层要在PLC端单点接地。通信线接反3对8会导致通讯时好时坏这是现场排查时最先要确认的。3. 梯形图程序设计的核心三段式调光与车检联动3.1 先把控制策略画成状态表再写程序写梯形图之前我习惯先把控制逻辑整理成一张状态表把每种工况下各个输出该是什么状态定义清楚。这套项目的状态表如下工况入口加强照明Q0.0基本照明A组Q0.1基本照明B组Q0.2应急照明Q0.3白天光照2000Lux灭灭灭亮过渡/阴天200~2000Lux亮半亮灭亮夜间无车光照200Lux亮半亮灭亮夜间来车车检信号有效亮全亮全亮亮手动模式由触摸屏按钮控制由触摸屏按钮控制由触摸屏按钮控制常亮这个策略的来源是《公路隧道照明设计细则》对入口段、中间段和过渡段亮度的基本要求。工程项目里不可能做到每个区段精确调光但把隧道分成加强、全亮、半亮、应急四个亮度档位配合车检联动已经能满足大多数改造项目的验收要求。3.2 关键网络段的指令表写法梯形图程序我按主程序子程序结构组织。主程序处理模式判断和手自动切换子程序分为光强采集换算、车检信号防抖延时、照明回路输出、报警四块。下面给出几个关键网络段的写法用STL指令表展示方便理解梯形图背后的逻辑流。模拟量采集和线性换算。配合CPU224XP的AIW0通道把1-5V对应的AIW数值转换为光照度的工程值。S7-200模拟量输入4-20mA对应0-32000但电压输入1-5V对应的数值是6400-32000所以换算公式是Lux (AIW0 - 6400) × 2000 / (32000 - 6400)即 (AIW0-6400) × 1000 / 12800。Network 1 模拟量采集与线性换算 LD SM0.0 MOVW AIW0, VW100 MOVW VW100, VW102 -I 6400, VW102 *I 1000, VW102 /I 12800, VW102注意S7-200的整数乘法容易溢出所以我在程序里把换算系数控制在1000测量值7000左右时结果在合理范围内。如果需要更高精度建议用双整数运算把AIW0先转成VD区再计算。车辆检测信号的上升沿捕捉。车检器给出的是一个电平信号车辆进入检测区时触点闭合。如果直接用常开触点驱动全亮逻辑车辆一直停在检测区时全亮状态会一直保持逻辑上是错的。正确做法是用上升沿指令EU只在触点闭合的瞬间置位一个内部中间继电器M0.1然后用M0.1启动T37延时定时器30秒后自动复位。Network 2 车检信号上升沿捕捉与30秒延时 LD I0.1 EU S M0.1, 1 LD M0.1 TON T37, 300 LD M0.1 AN T37 Q0.1 Q0.2 LD T37 R M0.1, 1这段逻辑里T37是100ms定时器设定值300就是30秒。车辆经过后Q0.1和Q0.2同时吸合全亮30秒30秒后T37动作M0.1复位Q0.1/Q0.2释放系统自动回到半亮状态。这里有个工程细节夜间无车时基本照明A组保持半亮所以车来全亮结束以后恢复的其实是半亮而不是全灭复位逻辑要避免把Q0.1也断开。夜间半亮逻辑。光照度低于200Lux且没有车检信号时基本照明A组保持吸合B组断开。用比较指令实现Network 3 夜间基本照明半亮 LDW VW102, 200 AN M0.1 AN T37 AN I0.0 Q0.1这里要注意VW102里存的是换算后的光照度工程值所以比较指令用的是VW102而不是AIW0直接比较。AN I0.0是自动模式的限定条件手动模式下跳过自动逻辑。3.3 手自动切换与安全互锁的实现手动模式下的控制权在触摸屏。我在PLC里定义了一组V区位变量触摸屏上的操作按钮写入这些V区例如V0.2对应加强照明手动开启、V0.3对应基本照明A组手动开启。手动逻辑和自动逻辑通过I0.0互锁Network 4 手动模式加强照明控制 LD I0.0 AN I0.4 Q0.0这里把I0.4回路故障反馈串进回路作为互锁保护手动或者自动模式下只要接触器反馈异常输出都会被切断。很多事故都是因为把互锁做在组态软件脚本里而不是做在PLC梯形图里。一旦触摸屏和PLC通信断开组态里的互锁就失效了PLC侧必须自己保证安全。应急照明回路Q0.3不参与任何调光逻辑PLC上电即输出。同时从硬件层面做冗余即使PLC处于停止状态应急照明也可以通过控制柜内单独的断路器回路保持供电这在隧道运维中是硬性要求灯可以少亮但不能全灭。4. MCGS组态画面设计设备窗口怎么配画面怎么画4.1 设备窗口添加S7-200驱动我用的是MCGS嵌入版组态环境触摸屏型号TPC7062K。新建工程后第一步配置设备窗口。双击设备窗口在工具箱里找到通用串口父设备先把父设备添加到窗口然后在其下挂西门子S7-200/PPI子设备。这里有个新手特别容易犯的错只添加子设备不添加父设备或者反过来结果通讯一直失败。MCGS的设备窗口结构必须是父设备下面挂子设备这是它的规定跟PLC里子程序的嵌套逻辑类似。串口参数设置如下需要和PLC侧的PPI配置保持一致参数值串口COM1触摸屏实际端口波特率9600数据位8校验位偶校验停止位1PLC地址2S7-200的PPI通信口默认波特率是9600地址是2。如果你的PLC地址被改过或者波特率被Micro/WIN软件改过触摸屏这边一定要跟着改否则设备窗口会一直显示通讯失败。4.2 变量连接与寄存器映射统一走V区最省事MCGS里有两层变量一层是实时数据库变量另一层是设备变量二者通过设备通道连接绑定在一起。和很多组态软件不同MCGS的画面元件不能直接引用设备变量必须通过实时数据库变量中转这是它跟WinCC不太一样的地方。我习惯让PLC程序把所有需要监控的状态都集中放到V区组态侧只读写V区避免一会读I点一会读Q点来回切换地址格式容易出错。具体映射如下MCGS变量名PLC地址类型方向光照度VW102字只读隧道口照度显示自动模式V0.0位只读1自动状态车检信号V0.1位只读1来车中加强照明手动V0.2位读写手动模式下控制基本照明A手动V0.3位读写手动模式下控制报警状态V0.4位只读回路故障报警PLC程序里要做一段数据传送把I0.0、I0.1、Q0.0、Q0.1这些实际开关状态搬到V区。虽然PPI驱动理论上可以直接读写I/Q/M区但统一走V区有一个实际好处调试时在触摸屏端看到的数据列表和PLC程序里的监视表完全对应哪个点有问题一目了然。4.3 用户窗口的布局思路与动画连接画面布局我采用总览式设计一张隧道剖面图左右是洞口中间是隧道段。每个照明回路用图形元件表示灯的位置亮灯显示绿色灭灯显示灰色。顶部放几个关键数字当前光照度、运行模式白天/夜间/来车、报警状态。操作区放在画面右侧布置自动/手动切换加强照明强制开启基本照明强制开启等按钮。动画连接方面灯元件不需要用复杂图库用MCGS自带的图元画一个圆或灯形加上动画显示的可见度属性即可变量值为1时显示亮色图层变量值为0时显示灰色图层或隐藏。这种方式对新手最友好后续维护时改颜色也方便。操作按钮要加权限管理。维护人员现场检修时需要强制点亮某一回路但不能让普通值班人员随意操作。MCGS的用户权限管理里把操作按钮设置的操作权限指向维护组账号默认登录的用户只有查看权限这样多了一层安全防护。4.4 运行策略里做报警、趋势曲线和存盘MCGS的运行策略相当于轻量级脚本环境可以定时执行一段类似BASIC的脚本。我在这里做了三件事第一每500毫秒把光照度值赋给趋势曲线的数据源生成实时趋势图值班人员能看到一天内的光照度变化第二定时扫描PLC的报警位V0.4为1时弹出报警窗口并在报警数据库中记录时间和内容第三整点统计照明回路累计运行时长存入本地数据库可查询日报表。脚本写法比较简单例如报警判断大致是IF 设备变量_报警位 1 THEN !ALARM(照明回路故障, 1) ENDIF实际脚本中设备变量的名称是在设备通道连接时确定的这里不展开写具体界面路径。需要提醒的是MCGS默认的报警记录存在内存中掉电会丢。要做历史报警存盘必须在运行策略里添加存盘设置把报警数据写入本地数据库文件。这个配置藏得比较深很多新手做完画面以为报警记录了断电后才发现什么都没留下。5. 现场调试踩过的坑和一点改进方向5.1 通讯一直报错排查链路分享第一次现场上电时MCGS设备窗口一直显示通讯失败我按下面几步排查的这条链路对类似问题通用先确认串口号。触摸屏上用COM1问题不大但如果在电脑上用USB转串口线连接PLC要打开设备管理器确认是COM5而不是COM3。我遇到过到底哪个COM口才是正确端口的尴尬情况。再查接线。PPI是RS485半双工通信A/B对应DB9的第3脚和第8脚不能接反。屏蔽层在PLC端单端接地。那次最终发现的问题就是通信线用的是普通USB转TTL线电平不匹配换成带隔离的USB转RS485模块后马上恢复。最后查地址。S7-200的PPI地址可能是2也可能被Micro/WIN软件改成其他值用原厂编程电缆查看CPU通信地址确保与MCGS设备地址一致。排查顺序遵循从物理层到协议层再到应用层的顺序不要一上来就怀疑是程序问题。通讯类故障九成在物理层。5.2 模拟量漂移和红外误触发的处理光照模拟量在隧道现场很容易受车灯、路灯叠加影响数值跳变很大。我在程序里加了数字滤波连续采集5次求平均。S7-200做平均时要注意累加结果的溢出问题或者用移位寄存器的方式保存最近5次采样值每来一个新值就替换最旧的。代码结构不过多展开核心思路就是滑动平均。红外车检器误触发是另一个高频问题。隧道内壁潮湿红外反射面脏了会造成误报安装角度如果正对洞口阳光方向午后也容易误触。我的做法是调整安装位置避免正对光源同时在程序里给车检信号加防抖延时持续低电平超过5秒才认为是一次有效车检。用T38做5秒延时延时时间到后取上升沿置位M0.1这样大部分干扰脉冲都会被过滤掉。5.3 光照度分区与加强照明的补充控制在完整项目中光照控制会更精细。隧道的入口段、过渡段、中间段、出口段照度需求不同我还会在程序里增加分区阈值超过2000Lux判断为白天关闭入口加强照明200到2000Lux之间判断为过渡状态入口加强照明保持低亮度低于200Lux判断为夜间入口加强照明常亮。这个三段阈值用比较指令实现程序结构和前面写的类似只是比较的目标从VW102换成不同的光照度变量。需要补充的是隧道口光照变送器的安装位置很有讲究。不能正对洞口朝里面装那样会直接照射到洞内灯具的反光数值失真严重。应该装在隧道口外侧靠近洞顶的位置探头朝上偏外采集环境漫射光这样才能反映驾驶员接近隧道时真实的人眼适应亮度。5.4 S7-200停产后的替代与升级思路虽然S7-200存量还很多但新项目我一般建议直接用S7-200 SMART或S7-1200。S7-200 SMART的通信口支持以太网和RS485MCGS新版驱动也支持S7-200 SMART程序结构基本可以平移成本并没有高多少。比较明显的区别是模拟量扩展不再需要拨码开关直接在STEP 7-MicroWIN SMART软件的系统块里组态量程反而更不容易出错。如果你拿这个题目做毕业设计也可以把整套控制逻辑移植到S7-200 SMART上组态用MCGS嵌入版或通用版画面设计逻辑完全一致。唯一要注意的是驱动选择MCGS对应S7-200 SMART的驱动名称和S7-200 PPI驱动不一样串口参数中PLC地址、波特率设置界面也有差异但整体设计流程是通用的。最后说一点个人体会整套系统调试下来控制逻辑本身并不复杂真正耗时间的往往是现场那根通信线、那个拨码开关、那个PLC地址。S7-200加MCGS这套组合虽然技术上不算新但对中小型隧道照明改造项目来说性价比和稳定性的平衡做得相当好。如果你正在做类似的照明或小型控制系统建议开工前先把控制策略画成状态表再把组态变量和PLC地址做一张映射表调试阶段能少走一半弯路。
返回列表