资讯中心

煤矿井下排水自动化改造:S7-200 PLC与MCGS组态实战解析

📅 2026/10/1 18:01:30
煤矿井下排水自动化改造:S7-200 PLC与MCGS组态实战解析
搞煤矿机电的朋友应该深有体会井下水仓排水看着简单却是天天让人提心吊胆的活。水排不及时轻则影响采掘进度重则威胁设备甚至人身安全。以前很多矿还是靠人工巡检、手动开泵夜班电工在井下一待就是一整班遇到来水突然加大跑都跑不及。后来我做矿井排水自动化改造控制系统用的都是西门子S7-200搭配昆仑通态MCGS组态这套组合在存量井工矿里占有率相当高无论是改造旧系统还是新建小规模集控用起来都顺手。今天就把这个项目的完整过程掰开揉碎聊一聊从方案选型、硬件配置、PLC逻辑到MCGS画面和驱动调试再到现场遇到的坑一次讲透。适合正在做煤矿机电、矿井排水自动化或者刚接触PLC组态的工程师参考搞水处理、泵站自控的朋友也能从中抄到不少作业。1. 项目需求与整体设计思路1.1 煤矿排水系统到底要解决什么问题煤矿井下水仓的来水不是均匀的采掘工作面涌水、防尘喷雾用水、巷道冲洗水最后都汇到中央水仓和采区水仓。排水系统的核心任务就一句话在保证安全的前提下把水仓水位控制在合理区间。但实际干起来才知道这句话背后藏着很多具体问题。第一个问题是人工操作的不确定性。传统手动排水靠电工巡检时看水仓水位看到水位高了就开泵排得差不多了再关泵。问题是三班倒的人不一定盯得住夜班精力差、巡检间隔长很容易出现水仓高位运行。一旦水仓满了水就会倒灌进变电所、皮带巷甚至采煤工作面轻则停产重则损坏设备。第二个问题是水泵的启停保护。水泵电机启动电流大频繁启停对接触器、电机绕组都不友好同时泵出口管路的闸阀如果不按顺序配合就会出现憋泵、水锤、逆流反转这些毛病一年烧几台电机很正常。人手动操作时往往图省事跳过流程直接按泵启动时间长了问题就暴露出来了。第三个问题是运行数据没有记录。以前排水靠交接班本子记录什么时候开的泵、开了多久、排了多少水全凭经验和记忆。泵的累计运行时间不清楚保养更换也就没依据往往是等泵坏了才去抢修。所以这套系统的目标很明确自动检测水位按策略启停泵泵和闸阀按安全流程联动故障自动切换同时把状态数据送到地面调度室让值班员在屏幕前就能看到水仓液位和泵的运行情况。1.2 为什么是S7-200和MCGS很多新入行的朋友会问现在都S7-1200、S7-1500、三菱FX5U了为什么还要用S7-200说实话新项目我也会建议上S7-200 SMART或者更高一级的PLC但现实情况是煤矿上的存量设备太多了。S7-200从九十年代用到现在大量矿井的排水、皮带、风机控制系统里还在稳定运行备件和会维护的人都不缺。改造项目如果整体换PLC成本高、工期长、井下防爆改造风险也大所以很多业主明确要求继续用S7-200。MCGS这边的逻辑更简单它是一款成熟的国产组态软件上手快价格比WinCC这类国外产品友好太多对中小规模集控项目完全够用。而且MCGS在煤矿行业用得早各种型号的触摸屏、工控一体机在井下和调度室都有大量应用售后和技术资料也好找。一个项目用S7-200做控制、MCGS做监控整套下来成本可控、维护方便现场电工培训半天就能上手。选型对比可以看下面这个表基本能说明问题方案组合成本上手难度煤矿存量适用场景S7-200 MCGS低低很大存量改造、小规模排水集控S7-200 SMART MCGS中低持续增加新建或整体升级项目S7-1200 WinCC高中高较少大型综合自动化、需要高端集成三菱FX 国产组态中中一般看矿区既有设备生态当然选S7-200还有一个现实原因Micro/WIN编程软件装一台旧电脑就能用梯形图编程逻辑直白井下电工在井上就能改维护不像高端系统那样依赖厂家。这在实际维护中太重要了。1.3 系统架构与通信网络整套系统的架构分三层设备层、控制层、监控层。设备层包括投入式液位计、电接点压力表、电动闸阀、水泵电机、真空接触器等控制层就是S7-200 PLC负责逻辑判断和设备控制监控层是MCGS组态运行在井下分电所的本安型操作台或者井上调度室工控机上。通信链路按现场条件有两种常见接法。一种是把MCGS触摸屏直接放在井下分电所通过PPI电缆和PLC通信距离几十米以内走RS485最简单另一种是井上调度室需要远程监控那就通过光猫或工业以太网把RS485信号转换到环网里MCGS运行在井上工控机上。后者需要加一个串口服务器或者带有网口的协议转换器现场调试时多一层网络配置但功能上区别不大。我在这个项目里采用了井下触摸屏就地监控加井上远程浏览的方案。PLC的PPI口分出一路给就地触摸屏另一路通过光缆模块上送井上。PPI协议是S7-200原生协议只要波特率、站号设置一致通信非常稳定这点后面调试部分会细说。2. 硬件选型与IO规划2.1 主要设备清单与选型理由硬件选型是整个项目的地基选错了后面有的折腾。我先列一份项目常用清单再逐个说关键点。设备型号/规格作用PLC CPUS7-200 CPU224XP或CPU226控制核心CPU224XP自带2路模拟量输入适合小系统模拟量扩展EM231 4AI或EM235 4AI/1AO采集液位、压力、电流等多路模拟量水泵电机矿用隔爆型三相异步电机排水动力功率不同选真空接触器或软启动器液位计投入式液位变送器 4-20mA量程按水仓深度实时水仓液位压力变送器4-20mA量程0-2.5MPa排水管出口压力监视电动闸阀矿用隔爆电动闸阀带开到位/关到位限位泵出口截止与引水控制综合保护器电机综合保护器带故障干接点过载、短路、缺相保护触摸屏/工控机MCGS支持的本安型触摸屏或工控一体机就地监控界面中间继电器DC24V线圈触点容量足够输出隔离与扩容选型时有几个细节值得单独说。液位计我坚持用投入式液位变送器而不是浮球液位开关。浮球结构在井下泥水环境里极易卡滞泡沫多的时候还会误动作维护量太大。投入式液位变送器用静压原理测液位没有活动部件除了定期清理探头结垢基本省心。量程按水仓实际深度选比如水仓深度5米就选0-5米量程别选太大否则有效分辨率会变差。PLC方面如果模拟量点数不多CPU224XP自带2路AI可以直接省一个扩展模块。但排水系统一般还要采集母管压力和电流模拟量点数往往超过2路所以项目里通常还是会配EM231或EM235。另外要注意CPU224XP自带2个RS485口Port0和Port1一个口接触摸屏一个口留给编程或者接远程模块非常实用这也是我偏爱它的原因。输出回路一定要通过中间继电器隔离。S7-200输出点直接带接触器线圈时间一长触点容易粘连甚至烧毁尤其井下电压波动大故障率很高。加一级中间继电器后PLC输出只带动继电器线圈触点再驱动交流回路逻辑上多了一步可靠性提升明显这个钱不能省。2.2 IO分配表与地址规划IO分配看着琐碎但规划得好编程和接线都会顺手很多。分享一份典型的煤矿双泵排水系统IO分配表你可以直接参考。输入信号地址说明I0.01号泵就地启动按钮I0.11号泵就地停止按钮I0.22号泵就地启动按钮I0.32号泵就地停止按钮I0.41号泵综合保护器故障I0.52号泵综合保护器故障I0.61号泵闸阀开到位I0.71号泵闸阀关到位I1.02号泵闸阀开到位I1.12号泵闸阀关到位I1.2远程/就地切换开关I1.3手/自动切换开关AIW0水仓液位 4-20mAAIW4排水管压力 4-20mA输出信号地址说明Q0.01号泵启动到软启动器/真空接触器Q0.12号泵启动Q0.21号泵闸阀开Q0.31号泵闸阀关Q0.42号泵闸阀开Q0.52号泵闸阀关Q0.6声光报警输出这个配置按“一用一备”考虑。系统如果要求双泵同排输出点还要增加但逻辑结构是类似的。规划时要注意把关键故障输入放在CPU自带的数字量输入区扩展模块的输入点留给不常用的备用点这样万一CPU故障排查范围更小。2.3 煤矿现场接线与抗干扰措施井下环境对控制系统并不友好动力电缆和信号电缆常常在同一条巷道里敷设启泵时几十安甚至上百安的电流一冲击模拟量信号就开始跳舞。抗干扰这件事必须在接线阶段就做好不能等投运了再补。第一信号线必须用屏蔽双绞线并且屏蔽层单端接地。所谓单端接地就是屏蔽层只在PLC侧或传感器侧一端接地另一端悬空避免形成地环路电流。这个点在现场经常被忽略结果就是模拟量跳得没法用。第二模拟量信号线和动力电缆分开走线如果必须交叉就走直角交叉尽量减少平行长度。我看到过有的施工队把所有电缆捆成一束调试时液位数值忽高忽低查了半天才找到原因。第三PLC电源要单独供电或加隔离变压器。井下电压波动大大功率设备启停瞬间电压跌落明显PLC电源直接从动力回路拉很容易复位重启。我之前给系统加了一个1:1隔离变压器单独给PLC和触摸屏供电这个问题基本就消失了。第四4-20mA信号线不宜拉得太长。井下巷道距离动辄几百米长距离传输模拟量信号压降和干扰都会放大。如果水仓距离PLC太远合理的方案是在水仓附近加一个远程IO或者先把信号转成RS485数字信号再上送而不是硬拉模拟量线。这个思路能省很多调试时间。3. 控制逻辑与梯形图实现3.1 控制策略与液位分级排水控制策略的核心是液位分级加死区控制。液位分级就是设定几个液位阈值系统按水位区间决定启停几台泵死区控制则是把启泵液位和停泵液位拉开距离避免水位在某个临界点附近抖动导致泵频繁启停。参考设定如下按水仓深度5米举例液位状态阈值动作停泵液位0.8m所有泵停止1号泵启动液位2.0m启动当前主用泵2号泵启动液位3.2m1号泵运行中水位仍上涨启动2号泵超高报警液位4.2m声光报警通知调度室这套设定里启泵液位和停泵液位之间差了1.2米为什么水泵启动电流大频繁启停会让接触器触头磨损、电机绕组发热。把死区拉大一泵启动后可以连续运行较长时间把水位降到停泵液位再停这样的循环效率远高于频繁短转。控制模式分远程自动、远程手动、就地手动三种。就地手动优先级最高适合检修远程自动用于正常生产远程手动则给调度员灵活干预的空间。切换逻辑放在PLC里通过I1.2和I1.3开关切换但无论哪种模式综合保护器故障信号都无条件停机。这种“保护优先于一切”的设计原则是煤矿控制系统的基本底线。3.2 核心程序块拆解在S7-200中程序按功能块组织主要有模拟量处理、泵阀联动、轮泵切换、故障保护这几块。逐个说。模拟量处理。S7-200的AIW0读回来的是0到32000的整数值4-20mA信号对应6400到32000。要把这个值换算成液位米数公式是实际液位 (当前值 - 6400) / (32000 - 6400) × 量程。比如量程5米AIW0读回16000那液位就是(16000-6400)/(32000-6400)×5 ≈ 1.88米。换算结果存到VD0供比较指令使用。这里还要加一个断线判断如果AIW0的值小于4000基本可以判定传感器断线或信号回路故障程序应输出报警并保持当前状态不能误启泵。泵阀联动。排水泵的启停必须和出口电动闸阀配合。常用逻辑是启动时先发闸阀开命令等开到位反馈到位再发泵启动命令停止时先发泵停止命令延时3到5秒再关闸阀等关到位后再复位。先开阀再启泵是为了避免憋泵先停泵再关阀是为了防止水锤。不同泵型、不同管道布置对时机的需求略有差异这个顺序要根据现场工艺微调。下面是一段逻辑示意用类似结构化文本的写法表达便于理解// 启1号泵流程远程自动 IF 自动模式 AND 液位 2.0m AND 1号泵无故障 THEN 发送1号闸阀开命令; IF 1号闸阀开到位 THEN 发送1号泵启动命令; M0.0 : 1; // 记录1号泵运行状态 END_IF; END_IF;轮泵切换。两泵系统如果长期只用一台另一台容易“放坏”而且固定泵的磨损也集中。我用的策略是记录每台泵的累计运行时间每次启动时优先选择累计时间短的那台。S7-200里用两个VD区保存运行分钟数每次泵运行信号为真时定时器累计分钟数累加到对应VD区启动前用比较指令选泵。这个逻辑看起来简单但对延长设备寿命非常有效。故障保护。综合保护器故障信号一接入PLC立即停掉对应泵并报警同时如果系统处于自动模式且另一台泵无故障自动切换启动备用泵。切换过程不加延时因为故障工况下时间是最宝贵的。3.3 与MCGS的变量地址规划PLC和MCGS之间要传数据前提是双方对变量地址的理解保持一致。我在PLC里规划了通信数据区把需要上送和需要下发的数据集中在V区这样MCGS只读取V区即可编程清晰排查也快。V区规划参考变量名地址类型方向水仓液位VD100浮点PLC → MCGS排水管压力VD104浮点PLC → MCGS1号泵累计运行时间VD108双整数PLC → MCGS2号泵累计运行时间VD112双整数PLC → MCGS自动模式M0.0位PLC → MCGS1号泵远程启泵指令M0.1位MCGS → PLC2号泵远程启泵指令M0.2位MCGS → PLC1号泵运行状态M10.0位PLC → MCGS2号泵运行状态M10.1位PLC → MCGS系统报警M10.2位PLC → MCGS规划地址时要注意S7-200的V区是字节寻址浮点和双整数都要以偶数地址起始并且相邻定时器中断不要挤在同一个VW里避免数据重叠。MCGS侧建变量时数据类型也要严格对应浮点就是浮点位就是位一旦类型不匹配读回来的数据完全是乱的。4. MCGS组态配置与画面开发4.1 建立工程与通信驱动配置MCGS组态看起来界面友好但通信配置是最容易卡住新手的一关。新建工程后第一步不是画画面而是把设备窗口配置好。设备窗口里先添加“通用串口父设备”再在父设备下添加具体的PLC驱动。S7-200对应的是“西门子S7-200PPI”驱动这个驱动在MCGS的设备驱动列表里自带。串口参数要跟PLC实际设置一致。默认情况下S7-200的PPI口波特率是9600数据位8无校验停止位1PLC地址默认是2。MCGS侧按这个配置就能通信。但注意有些矿井的PLC系统块被人改过地址可能改成了3或者5或者波特率改成了187.5k必须用Micro/WIN软件连上去确认实际参数不能想当然。一个常见的坑是Micro/WIN占用串口导致MCGS连不上。S7-200在“在线”状态下会一直轮询PPI口如果电脑的编程线还插在Port0上MCGS就抢不到通信资源。调试时最好分开用两个通信口或者先把编程线拔掉。MCGS驱动配置完成后可以在“设备调试”窗口里直接读取变量值能读到PLC里的数据说明通信链路已经打通再去画画面就踏实了。另外提醒一句驱动文件要去MCGS官方渠道下载对应版本。组态软件升级后老驱动不一定兼容新的运行环境反过来新驱动也可能不认旧工程。这类问题往往表现为设备能添加但始终报通信失败重装驱动才解决。版本匹配这件事真能折腾人。4.2 画面设计与报警曲线通信通了之后画面设计才有意义。排水系统的MCGS画面我一般分四块主流程画面、控制画面、报警画面、趋势曲线画面。主流程画面呈现整个排水系统工艺水仓、水泵、闸阀、管路按实际布局画出来。液位用液位柱动画显示数值绑定VD100泵运行状态用颜色变化区分运行是绿色停止是灰色故障是红色闪烁。这类动态效果MCGS做起来很方便关键是绑定的变量别连错。控制画面是操作员用得最多的界面。在这里放远程/就地切换、手/自动切换、1号泵/2号泵启停按钮、闸阀开关按钮、模式选择等。注意按钮权限要分级操作员只能启停设备工程师才能改设定参数和模式。MCGS提供用户管理功能我给调度员和机电科长分配不同权限组防止误操作改了工艺参数。报警画面主要是液位超高、压力异常、泵故障、通信断线这些条目显示报警时间、确认状态、恢复时间。MCGS的报警系统支持实时报警和历史报警查询我把报警数据存到U盘或SD卡方便事后追查。趋势曲线非常重要尤其是水仓液位的历史趋势。调度员通过曲线能看到一个班次内水位的变化规律甚至能反推采掘工作面哪个时段涌水增多。MCGS的实时曲线绑定当前值历史曲线需要配置历史数据存储存储周期我一般设5秒能平衡数据量和显示精度。4.3 驱动选型、协议解码与自研驱动方向MCGS设备驱动的本质就是一个把协议封装好的DLL文件。你往设备窗口拖一个驱动底层就是驱动通过串口或网络按对应协议去读写PLC里的寄存器。选驱动最怕选错。举个例子现场如果用的是光洋PLCMCGS里有对应光洋K协议的驱动要选这个型号而不是拿一个通用Modbus驱动硬怼。搞过伟创PLC的朋友也知道伟创有自己的通信协议MCGS同样提供了专门驱动。选错驱动就像普通话和方言对不上两边都急得冒汗数据就是传不过来。那什么时候需要自己写驱动呢一般是两种情况一是设备太冷门MCGS官方设备列表里没有二是设备虽然有标准Modbus协议但寄存器定义乱得离谱官方驱动读不出有效数据。这时候就要走MCGS设备驱动二次开发。驱动二次开发的思路可以这么理解你要写一个“解码器”。MCGS提供设备驱动SDK用VC编写DLL实现设备初始化、读取、写入、断开这些接口函数。重点在于你自己实现协议组帧、发送、接收、校验、解析的完整链路。比如一个仪表用Modbus RTU协议你要自己拼出报文站号功能码寄存器地址数据CRC校验然后从接收缓冲区里把响应帧解析出来转成MCGS里的变量值。这个过程需要对协议非常熟悉但一旦跑通后面可复用的东西很多。本文就不展开写具体DLL代码了但方向是明确的先去MCGS官方下载SDK和驱动开发文档再对着协议手册一步步实现调试时就用调试助手抓帧验证。理解这个“解码器”概念对日常调试也有用。当你在MCGS调试助手里看到一帧PLC返回的数据要知道哪几个字节是数据段、哪几个字节是校验位这能帮你快速判断是通信问题还是数据解析问题。4.4 用调试助手定位通信问题MCGS的调试助手是排故利器。它不仅能直接读写PLC变量还能观察通信过程。打开设备调试窗口输入要读取的寄存器地址点“读取”如果返回正常值说明上行链路没问题如果返回错误码就要从错误码类型入手排查。我遇到过一次诡异的问题MCGS偶尔能读到数据但画面数据刷新的速度特别慢感觉像卡住了一样。用调试助手抓通信日志才发现PLC侧的数据刷新周期和MCGS的采集周期不匹配MCGS设成了100ms去轮询而PPI链路本身响应速度跟不上导致通信队列堵塞。后来把采集周期调到500ms问题立刻消失。调试助手的另一个用法是和串口抓包工具配合。虚拟串口工具把串口复制成两路一路给MCGS一路给串口监控软件这样就能看到MCGS发出的每一帧请求和PLC返回的每一帧响应。通过观察帧结构可以验证站号、功能码、数据地址、CRC校验是否正确。很多时候通信不上一眼就能从抓包数据里看出PLC根本没收到请求或者收到了但返回帧校验失败。5. 现场常见问题与排障实录5.1 通信不上怎么查通信问题是这套系统里出现频率最高的故障我把排查顺序总结成一张速查表按顺序走一遍绝大多数问题都能定位。排查项检查内容常见原因串口参数波特率、数据位、校验位、停止位与PLC系统块设置不一致PLC站号MCGS里设置的PLC地址默认2有人改过就通不上驱动型号设备窗口选的驱动是否正确选错S7-200协议或别的驱动线缆连接RS485接线A/B是否反相很多通信故障是A/B接反线缆质量是否用屏蔽双绞线接地是否良好井下动力干扰导致误码通信口占用Micro/WIN软件是否占用同一串口编程口和MCGS抢资源终端电阻长距离通信是否加120Ω终端电阻信号反射导致帧错误固件/驱动版本S7-200CPU固件与MCGS驱动版本固件太老或驱动版本不匹配S7-200固件版本这个点玩老设备的人应该有体会。有些老CPU固件版本较低Micro/WIN新版本软件连接时会报错或不识别这时候要么用老版本Micro/WIN要么升级CPU固件。MCGS驱动也一样组态软件版本升级后老驱动文件可能失效要去MCGS下载中心官网获取匹配版本。别小看版本匹配我见过太多项目卡在这个看似不起眼的环节上。5.2 液位信号乱跳液位信号乱跳是另一个高发问题现象是画面上液位数值不停波动有时候无规律地跳个几十厘米严重时还导致误启泵、误停机。排查思路从易到难。先看液位计探头是否被淤泥包裹泥水环境里探头表面结垢是常态清理一下数值就能恢复。再看信号线是不是和动力电缆捆在一起如果布线无法改变至少把屏蔽层可靠单端接地。接着看模拟量模块供电是否稳定井下电压波动大液位计供电不稳信号自然不稳。程序侧也要做两道防线。一是数字滤波在PLC里对模拟量做多次采样取平均比如每200ms采一次取最近10次平均值作为当前液位二是加死区判断液位变化速率超过物理极限比如每秒跳0.5米就认为是干扰保持上次有效值。这两道防线配合现场的液位信号基本就稳了。还有一个细节4-20mA断线时信号会跌到0对应AIW读数小于6400。程序里判断如果液位读数异常低要报警提示“传感器故障或断线”而不是直接当真实低液位去停泵。这个保护逻辑能在传感器出问题时保住现场设备。5.3 泵频繁启停与动作异常泵频繁启停大部分是死区设置太小引起的。我说过启泵液位和停泵液位之间要留足够空间。如果设置了2.0米启泵、1.9米停泵那水位稍微波动就跨越阈值泵持续启动停止接触器很快完蛋。合理做法是把停泵液位设在0.8米到1.0米和启泵液位拉开1米以上让泵启动后能持续运行一段时间。另一种频繁启停来自闸阀到位反馈丢失。如果开到位限位开关接触不良PLC一直收不到开到位信号泵就永远不启动但画面显示闸阀在“开”状态操作员反复点启动按钮系统反复发开阀命令。这种情况要检查限位开关的接线和机械安装位置而不是改程序。还有一种情况是泵启动后立即跳闸看监听日志是综合保护器动作。这不一定代表电机真过载有可能是电流互感器选型不匹配、保护定值设置过小或者启动电流冲击导致保护器误动作。排查时要结合电机实际额定电流和启动方式把保护定值重新整定。5.4 几个值得养成的习惯项目做得多了有些习惯是真的救命。工程文件一定要备份。S7-200的程序通过Micro/WIN可以导出到电脑也可以把程序直接拷到S7-200存储卡里。换CPU时把存储卡插到新CPU上就能恢复程序省去重新下载和调试的麻烦。MCGS工程同样要定期备份画面对应变量多一旦工程丢失恢复起来非常费劲。每次现场调试前先确认供电电压和相序。井下检修后有时候电源相序会调错泵反转运行、压力上不去、电流还偏大很多“泵坏了”的结论其实只是相序反了。PLC程序里不方便做相序检测的情况下启泵前手动试一下转向是必要的。最后给所有IO点做一张纸质标签。井下环境灰尘大、湿度高端子排上如果没标签半年之后谁都认不出哪根线是干什么的。我见过不少老项目设备一故障电工先花两小时扫盲线路。一张清晰的标签表能省下的时间远超你贴标签花掉的十分钟。说到调试顺序我的个人经验是先单机后联调先本地后远程。先把液位计标定准确再把泵和闸阀单台试通最后才切到远程自动模式跑整套流程。这样分层推进即使出问题范围也是可控的不会一上来全系统乱成一锅粥。这套S7-200加MCGS的排水系统只要按照这个思路走完一遍投运后基本就是长期的稳定运行。

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案