干工控这些年,煤矿通风这一块的活儿我接过不止一单。说白了,这类系统的核心就一句话:让传感器盯住瓦斯浓度,让三菱PLC按规矩决定风机怎么转,再让组态王把状态搬上电脑屏幕,做到既看得见、又管得住。三菱PLC加组态王这个组合,在煤矿项目里相当常见,成本可控、资料好找、维护门槛也不高,特别适合刚入行的电气工程师、井下电工,还有做自动化毕业设计的学生参考。这篇文章我就把整个方案的思路、IO分配、接线要点、梯形图逻辑和组态王配置从头到尾捋一遍,全是实际项目里验证过的东西,照着做基本不会跑偏。
1. 项目需求与控制逻辑拆解
1.1 先搞清楚瓦斯浓度控制到底要干什么
煤矿井下最怕的就是瓦斯积聚。瓦斯的主要成分是甲烷,它在空气中的爆炸下限大概在5%,上限在16%,在这个区间里遇上明火就是事故。所以通风机的任务不只是送风,更关键的是把瓦斯浓度压到安全线以下。浓度一旦失控,风机必须按预设逻辑动作,该报警报警、该停机停机,绝不能等值班员看见了再手动处理。
这里要引入一个煤矿行业里绕不开的概念:瓦斯电闭锁。通俗讲,就是瓦斯浓度超标时,控制系统自动切断相关区域的供电,同时把风机状态锁定住,防止有人盲目重启设备、带着隐患送电。这套方案的核心,就是把"瓦斯电闭锁"从人工习惯变成PLC程序里的固定逻辑,让机器去执行最不能出错的那一步。
另外还要说清楚,系统不是只做一个"超标就跳闸"的开关,而是要分梯度处理。浓度轻微偏高,系统先提示、先加强通风;浓度到了危险线,才动真格停电闭锁。这样既保证安全,又尽量减少对整个生产流程的扰动。这个"分级管控"的思路,是整个控制逻辑的骨架。
1.2 控制策略定下来:三档判断加回差保护
根据大多数矿井的实际使用习惯,我一般把控制点设成三档。第一档是正常段,瓦斯浓度低于0.8%,风机保持正常运行,系统只做监测和记录。第二档是预警段,浓度到0.8%以上,PLC立刻驱动声光报警器,同时保持风机全速运转,用加大通风量的方式尝试把浓度压下去。第三档是危险段,浓度达到1.5%,PLC输出断电闭锁信号,切断风机回路,并且进入自锁状态。
这里有一个新手特别容易忽略的细节:回差。如果报警点设在0.8%,浓度在0.79%和0.81%之间来回波动,继电器和报警器就会频繁吸合释放,触点寿命直线下降,现场也会被弄得一惊一乍。所以我通常在程序里加回差——报警触发值仍然用0.8%,但解除报警要等浓度回落到0.75%以下。类似温控器的上下限逻辑,虽然多写几行程序,但调试的时候能省一堆麻烦。
第三档的断电自锁恢复逻辑也要单独设计。闭锁触发后,即使浓度降回安全范围,系统也不会自动复电,必须由巡检人员确认现场安全、按下复位按钮,程序才会解除闭锁。这个"人工确认"的环节是我特意保留的,安全系统最忌讳自动复电——谁也不知道闭锁期间现场发生了什么,机器不能替人做这个判断。
1.3 系统整体架构:传感器、PLC、上位机怎么分工
这套系统按层级划分,我习惯分成四层来看。最底下是感知层,也就是煤矿专用的低浓度甲烷传感器,它负责把瓦斯浓度变成电信号送给PLC。往上是控制层,三菱PLC负责所有逻辑判断、定时、闭锁和输出驱动。再往上是执行层,包括接触器驱动的通风机、声光报警器、断电继电器这些。最顶上的是监控层,组态王运行在井上工控机上,通过通讯线和PLC交换数据,实时显示浓度、风机状态,并记录历史数据。
信号流很清晰:传感器信号进PLC,PLC内部做比较和连锁,输出给接触器和报警器;同时PLC把关键寄存器数据上传到组态王,组态王下发手动指令给PLC。四层各管各的事,互不越权。这样做的好处是,即使组态王挂了,PLC依然能独立完成所有安全保护动作,上位机挂了不影响井下安全底线,这是这套架构最值得坚持的一点。
2. 硬件选型与IO分配详解
2.1 核心硬件怎么选,为什么这么选
PLC我选三菱FX3U系列,具体型号看现场端子数量需求,一般用FX3U-64MR起步。MR是继电器输出型,带载能力强,触点坏了也好换,用在风机控制这种低频通断场合足够。FX3U自带RS-422编程口,可以和上位机组态王直接通讯;程序容量、扫描速度对付这种中等规模逻辑绰绰有余。
模拟量扩展模块选FX3U-4AD。瓦斯传感器的输出信号有几种,现场最常遇到的是4-20mA电流输出和200-1000Hz频率输出两种。我推荐优先选4-20mA电流输出的传感器,因为它可以直接进模拟量模块,接线简单、抗干扰能力也不错,程序处理也直观。频率输出的传感器虽然矿用历史长、传输距离远,但要占用PLC的高速计数输入口,编程相对绕。本方案主线按4-20mA来走,频率型在进阶部分单独提。
执行层主要用中间继电器加交流接触器。PLC的Y端子不要直接驱动接触器线圈,因为接触器线圈有电感,通断瞬间会产生反向电动势,容易打坏PLC输出触点。稳妥的做法是PLC输出驱动中间继电器,中间继电器触点再控制接触器线圈,中间加RC吸收或者压敏电阻,这也是我在现场一贯的做法。声光报警器选带自锁功能的,方便值班人员看清报警来源。
2.2 IO分配表:每一个点都要有名字
IO分配是整个项目里最枯燥但最不能出错的部分。我的习惯是先在表格里把每一个输入输出点定义死,再动手画图写程序,避免干到一半发现端子不够用。这套系统的典型分配如下:
| 编号 | 软元件 | 信号名称 | 说明 |
|---|---|---|---|
| X0 | 急停按钮 | 紧急停止,常闭输入 | 串在整个控制逻辑最前面 |
| X1 | 转换开关 | 手动/自动切换 | 拨到自动才允许PLC自控风机 |
| X2 | 启动按钮 | 手动启动风机 | 手动模式下使用 |
| X3 | 停止按钮 | 手动停止风机 | 手动模式下使用 |
| X4 | 主风机接触器辅助触点 | 主风机运行反馈 | 用于判断风机是否真实启动 |
| X5 | 备用风机接触器辅助触点 | 备用风机运行反馈 | 备机自投逻辑判断依据 |
| X6 | 主风机故障信号 | 热继/变频器故障 | 触发备机切换 |
| X7 | 复位按钮 | 解除瓦斯电闭锁 | 人工确认安全后按下 |
| Y0 | 主风机接触器 | 经中间继电器驱动 | 控制主风机启停 |
| Y1 | 备用风机接触器 | 经中间继电器驱动 | 控制备风机启停 |
| Y2 | 声光报警器 | 瓦斯预警/危险报警 | 第二、三档都动作 |
| Y3 | 断电闭锁指示灯 | 闭锁状态指示 | 提醒现场人员 |
| CH1 | FX3U-4AD通道1 | 瓦斯浓度信号 | 4-20mA进,接传感器输出 |
这里特别提醒一点,X0急停必须用常闭触点。常闭的意思是一旦线路断了,PLC收到的是断开信号,系统自动进入紧急状态;如果用常开,断线时系统反而以为一切正常,那是要出大事的。这个习惯在煤矿项目里属于铁律,千万不要图省事反着接。
2.3 接线关键点:漏型输入、继电器隔离、屏蔽线
三菱FX3U的输入端子是漏型/源型可切换的,通过S/S端子的接法来控制。漏型接法是把S/S端子接到24V正极,按钮另一侧接X端子,外部传感器用NPN输出;源型则相反。现在井下传感器和按钮绝大多数是NPN型,所以漏型接法最通用。接线时统一把S/S端子接到开关电源的+24V,所有输入信号低端接到0V,对着图纸核对一遍再上电。
模拟量部分,4AD的通道端子要分清,正极接传感器信号线,负极接传感器公共地,屏蔽层在PLC柜这一端单点接地。不少现场模拟量读数乱跳,十有八九是屏蔽层两端都接地了,形成地环路干扰,或者是把信号线和动力线绑在了同一个线槽里。强弱电分开走,模拟量线用双绞屏蔽电缆,这两条做到了,大部分干扰问题就提前消灭了。
2.4 电源分配也要提前规划
这类系统至少需要三路电源:PLC和控制回路一路,传感器变送器一路,接触器动力回路一路。传感器电源要单独用一路稳压的24V直流,不要和继电器线圈共用开关电源——继电器吸合瞬间电流波动大,会把传感器的测量值拽得乱七八糟的。动力回路要经过断路器、接触器再到电机,与PLC之间用中间继电器和接触器辅助触点做隔离,电气的强、弱两部分在柜内也要用隔板分开。
3. 组态王与三菱PLC通讯配置
3.1 通讯链路怎么搭最省心
组态王和三菱PLC通讯,最常用的方式是USB-SC09-FX编程电缆,一头插PLC的编程口,另一头通过USB转串口到工控机。组态王里对应设备驱动选"三菱FX系列编程口",然后指定串口号。这个方案不需要额外买通讯模块,成本最低,调试时也方便,还能顺便用同一根线下载程序,适合绝大多数中小型项目。
如果现场要求通讯距离更远、或者组态王要放到离PLC几十米以外,那就得换方案。常见做法是给FX3U加一块FX3U-485-BD通讯板,走RS-485总线,组态王通过USB转485模块接总线上。这种方式抗干扰更好、传输距离更远,但要多配一块通讯板和一个转换器,还要注意终端电阻和总线极性,调试复杂度稍微高一点。井下环境特别复杂时,我甚至建议直接用FX3U-ENET走以太网,稳定性和速度都上来了,代价是成本明显增加。
3.2 组态王设备配置参数,照抄就行
设备配置是新手最容易卡壳的地方。我的参数设定一般是这样的:串口选实际COM口号,波特率9600,数据位8,停止位1,无校验(或偶校验,取决于PLC侧设置),通信超时3000毫秒,PLC站号保持默认0。组态王安装完之后,先在"设备驱动"里找到三菱FX系列编程口,添加设备,再把这个参数表填上。
| 参数项 | 设定值 | 备注 |
|---|---|---|
| 串口 | COM3 或实际口号 | 在设备管理器里确认 |
| 波特率 | 9600 | 和PLC一致即可 |
| 数据位 | 8 | 三菱编程口协议标准 |
| 停止位 | 1 | 同上 |
| 校验方式 | 无/偶校验 | 建议以连接测试为准 |
| 站号 | 0 | FX3U编程口默认 |
| 通信超时 | 3000ms | 太长影响响应,太短易误报断线 |
配好之后一定要用组态王自带的"设备测试"功能验证一次,能读到PLC数据再继续做变量,不要等画面做完了才发现根本ping不通,那种返工太痛苦了。
3.3 数据词典变量怎么建,藏着哪些坑
组态王的数据词典是把PLC寄存器和画面控件连接起来的桥梁。瓦斯浓度存在PLC的D0里,你就在组态王新建一个I/O整数变量,连接设备选刚才配好的PLC,寄存器填D0,读写属性选只读。风机运行状态存在M1里,就建I/O离散变量,寄存器填M1。按钮、复位这些需要上位机下发的信号,寄存器填M2、M7之类,读写属性选读写。
这里有个老生常谈但总有人犯的错:D寄存器是16位,数值范围是-32768到32767,组态王侧变量类型一定要对应好,别把一个0到4000的模拟量数据读出来变成负数甚至溢出。我一般把D0里的原始数字量直接传给组态王,然后用组态王的表达式功能除以400再显示成百分比浓度,这样PLC侧不用做浮点转换,组态王侧也只做一次简单除法,效率高、逻辑也直观。
4. 梯形图程序设计与详解
4.1 程序架构先想清楚,状态位提前规划
写梯形图最忌讳上来就堆指令。我拿到IO分配表之后,第一步是规划内部继电器和寄存器。这套程序里,我习惯用M0做手动/自动状态标志,M1做主风机运行输出标志,M10做瓦斯预警标志,M11做瓦斯危险闭锁标志,M12做闭锁保持状态。定时器用T0做备用风机延时投入,T1做声光报警闪灯脉冲。寄存器方面,D0存放4AD读上来的瓦斯浓度原始数字量,D10存放换算后的浓度千分比,D20存放传感器断线标志。
程序整体可以分成五个功能块:模拟量采集与换算、浓度分档判断、风机启停与自锁、瓦斯电闭锁与复位、报警输出。这样分开写的最大好处是调试定位快,哪儿出了问题直接跳到对应段落查,不用拿着一整页梯形图满屏找触点。
4.2 模拟量采集与工程值换算,别把原始值当浓度用
4AD模块的数据要通过FROM指令读进PLC。FX3U-4AD挂在PLC扩展总线上,指令格式是FROM K0 K0 D0 K1,含义是从0号特殊功能模块的第0号缓冲区读取1个字到D0。注意M8000是PLC运行时常ON触点,这段采集逻辑每个扫描周期都要执行,不能只执行一次,否则浓度值不会刷新。
读取上来的D0是数字量,不能直接拿来做判断。我按4AD在4-20mA量程下满量程对应数字量0到4000来处理,如果传感器量程是0到10%VOL,那么实际浓度就是D0除以400。程序里用浮点指令换算:先把D0转成浮点数,然后除以400,结果存到D10,组态王读D10直接就是带两位小数的浓度百分比。整数运算在FX3U里也能做,但浮点更直观,也方便后续扩展报警阈值。
浮点换算还有一层好处:传感器如果断线或者信号异常,D0通常会跌到接近0,换算出来的浓度就是0,看起来反而像"瓦斯浓度很低很安全"。这会掩盖故障,所以一定要加断线判断:如果D0持续小于20(对应浓度0.05%以下),程序置位断线标志M20,同时点亮断线报警灯,提醒值班人员检查传感器回路。这个细节教科书上很少写,但现场救过我好几次。
4.3 浓度分档判断与回差逻辑怎么写
分档判断我用区间比较指令ZCP来做。指令格式是ZCP S1 S2 S D,意思是判断D和S1、S2的关系,结果写到以D开头的连续三个软元件中。我这样写:ZCP K320 K600 D0 M30。当D0小于320时,M30为ON,表示正常;当D0介于320和600之间时,M31为ON,表示预警;当D0大于600时,M32为ON,表示危险。320和600这两个数对应的正是0.8%和1.5%的浓度阈值。
回差逻辑单独写一段。预警标志M10用M31置位,但解除条件不是D0回到320以下,而是用另一个比较指令判断D0小于300(即0.75%)才复位。这样浓度在0.75%到0.79%之间小幅波动时,M10不会反复通断。危险闭锁标志M11的边缘处理更要保守,一旦触发就保持,只能靠复位按钮清除,回差在这里不起作用——这是安全逻辑,必须锁死。
4.4 风机启停、自锁、互锁,一个都不能少
风机控制逻辑按手动和自动两种模式分别处理。自动模式下的条件是:M0为ON(自动状态)、X0急停未动作、M12闭锁标志OFF、浓度低于危险值,满足后风机自动启动并自锁。手动模式则不判断浓度,只认X2启动按钮和X3停止按钮,方便检修时单机试车。
自锁回路的标准写法是:启动按钮X2的常开触点并联Y0常开触点,串联停止按钮X3常闭、急停X0常闭、闭锁M12常闭,最后输出Y0。这样Y0一旦吸合就通过自身触点维持导通,停止按钮或闭锁条件断开时才会掉电。
主风机和备用风机之间必须做电气互锁。我的做法是输出Y1之前串联Y0的常闭触点,输出Y0之前串联Y1的常闭触点,确保任何时刻只有一台风机运行,否则两个接触器同时吸合,轻则短路重则引发事故。硬件回路里同样要加机械联锁,这才是双重保险。
4.5 瓦斯电闭锁与人工复位,这是整个系统的命门
瓦斯电闭锁逻辑是整个程序里我最强调的部分。当M32(危险浓度)为ON时,SET M12置位闭锁标志;一旦M12为ON,不管浓度是否已经降下来,风机都保持停止状态。复位条件只有一个:X7复位按钮按下。程序写成LD M12、RST M12,意思很明确——只有人为干预才能解除闭锁。
还要考虑一种情况:如果闭锁期间瓦斯浓度一直没降下来,复位按钮按了也不能让风机启动,因为风机启动条件里串联着M32的常闭触点。所以即使M12被复位,只要浓度还在危险线以上,风机依然不会启动。等到浓度真正降到安全范围、人工确认完毕、按下复位按钮,三个条件同时满足,系统才允许恢复运行。这套逻辑我把每一步都验证过,现场矿方检查时对这个设计非常认可,说是把"人的确认权"和"机器的执行权"分开了。
4.6 备用风机自动投入的逻辑与延时
备用风机不能主风机一报故障就立刻启动。如果主风机是过流跳闸,备机立刻顶上,很容易造成电网冲击。我的做法是:主风机运行反馈X4消失或故障信号X6为ON,先保持主风机停止状态,同时启动T0定时器延时3秒;3秒后如果备机没有故障、急停未动作,才置位Y1输出备风机。这3秒是给接触器灭弧和电网稳定的时间,实测下来比零延时切换靠谱得多。
备机启动后还要持续监视它的运行反馈X5,如果X5在启动后2秒内没有闭合,说明备机实际没有启动,程序会置位备机故障标志,并输出报警。这个功能叫"电气互锁加运行反馈闭环",防止接触器触点粘连或者卡死导致实际风机没转、系统却以为转了,这是现场最隐蔽的危险。
5. 组态王画面组态与联动
5.1 主画面设计:让值班员一眼看懂现场
组态王画面设计的原则是"少文字、多图形、状态一目了然"。主画面我一般从上到下分三个区域:顶部是系统标题和当前时间,中间是通风系统示意图,底部是操作按钮和报警信息。系统示意图要画得贴近实际:一台风机、一台备机、两个浓度监测点,用管道线连接起来,风流方向用箭头标注。风机图标用组态王图库里的风机图元,运行时通过动画连接让它在运转状态旋转起来,值班员扫一眼就知道风机在不在转。
浓度显示用数字值输出控件,同时加一个色块指示:正常显示绿色,预警显示黄色,危险显示红色。这里我不建议在组态王里写复杂的判断脚本,直接利用PLC传来的M10、M11、M12状态,用动画连接的"填充颜色"属性绑到对应状态位就行,PLC已经在做判断了,上位机只负责呈现结果,职责越单一越可靠。
5.2 动画连接和控制按钮怎么做
给风机图元添加旋转动画,连接变量选M1,旋转条件设为"变量=1时旋转",速度设成每分钟60转左右,视觉上比较自然。浓度显示控件的"值输出"属性绑定到D10,显示格式设成两位小数,单位写"%",数值范围设到0到10。这样画面上直接显示的就是1.25%这样的直观数值,而不是一堆原始数字量。
操作按钮要跟PLC侧软元件联动。手动启动按钮的"按下时"命令语言写\本站点\手动启动=1,PLC程序里对应的M2置位后触发启动;复位按钮写\本站点\复位按钮=1,对应PLC侧X7的等效M7。注意组态王里I/O离散变量读写时,置1之后要记得在PLC侧程序里做自复位,或者画面端用"按下时置1、弹起时置0"的方式,否则按钮状态会一直卡在1,影响后续操作。
5.3 报警窗口和趋势曲线配置
组态王的报警功能要用"报警窗"控件集中展示。变量D10设置高报值0.8、高高报值1.5,同时关联M10和M11,一旦PLC触发报警,报警窗里自动弹出记录。这里的关键是报警优先级要分清楚:预警是提示级别,可以用黄色闪烁;危险闭锁是紧急级别,用红色并带声音提示,报警声音文件可以换成现场指定的语音播报。
趋势曲线一定要做,这不仅是给值班员看的,更是给矿方留证据的。实时趋势曲线控件绑定D10,时间轴设成20分钟,能看到浓度变化趋势;历史趋势曲线通过组态王自带的记录功能,把D10定时写入数据文件,保留至少三个月。万一出了事,拿着浓度曲线复盘比对着台账解释有说服力多了。
6. 常见问题排查与实操心得
6.1 故障现象速查表,照着查省一半时间
现场调试最耗时间的不是写程序,而是排查那些"看起来哪里都对但就是不动"的问题。我把这些年踩过的坑整理成了一张速查表:
| 故障现象 | 可能原因 | 处理办法 |
|---|---|---|
| 组态王读数一直不动 | 通讯线松动、COM口号选错、站号不对 | 用设备测试功能逐个排查,确认能读到再继续 |
| 浓度显示跳动厉害 | 模拟量屏蔽层未接地、与动力线同槽 | 屏蔽层单端接地,模拟量线单独走线槽 |
| 浓度显示为0但传感器正常 | 4AD通道没使能、偏置增益未校准 | 读4AD状态寄存器,检查通道初始化设置 |
| 风机频繁启停 | 回差没做、按钮触点抖动 | 加回差逻辑,程序里加10ms延时滤波 |
| 报警响了又自己灭 | 报警自保持逻辑缺失 | SET置位报警标志,人工复位才复位 |
| 备机切不过来 | 备机反馈没接到位、互锁触点误动作 | 核对备用风机接触器辅助触点接线,检查Y0/Y1互锁 |
| 断电后风机还在转 | 接触器触点粘连、继电器释放慢 | 换接触器,检查中间继电器是否卡死 |
这些问题的共性是:越觉得"不应该"的故障,越可能藏在接线和配置这些基础环节里。排查时一定从物理层开始查,不要一上来就怀疑PLC程序有问题。
6.2 现场调试的正确顺序,一步都不能跳
我的调试顺序固定是五步。第一步是IO空载验证:把PLC打到停止状态,用强制功能逐一测试每个输入点有没有信号、每个输出点能不能动作,确保接线正确。第二步是模拟量校准:用标准信号源给4AD送4mA和20mA两个点,确认读数分别对应0和满量程,有偏差就做偏置和增益修正。第三步是逻辑功能测试:把传感器的信号模拟器接上,人为设置几个浓度值,观察风机、报警、闭锁是否按预定逻辑动作。第四步是组态王联调:确认变量读取、按钮下发、报警弹出都正常。第五步才是真实的传感器接入和联动试验,用标气或者现场实测数据做最终验证。
这五步每一步都在检验上一阶段的成果,跳步的结果通常是前面埋的雷在后面引爆。特别是模拟量校准,有些模块出厂偏置并不准,不做两点校准直接拿原始值当浓度用,后面所有判断都建立在错误数据上,查起来能把人逼疯。
6.3 几次真实的教训,写出来你们别再踩
第一次做这类项目的时候,我把闭锁复位做成了自动复位——浓度一降下来系统就自己恢复风机运行。当时觉得这多省事啊,结果矿方的安全科长当场就否决了,说这违反了他们的安全习惯:瓦斯超限断电后,必须人工到现场确认、手动复电,这是矿上铁打的规矩。从那以后我再也不自作聪明搞自动复位,安全系统里人的确认环节绝对不能省。
还有一次是传感器标校问题。井下传感器按规程要定期标校,但矿上人员变动大,标校记录跟不上,时间一长传感器零点漂移,浓度显示越来越不准。后来我在组态王画面里专门做了一个"传感器标校到期提醒"区域,记录上次标校日期,到了90天就自动闪烁提醒。这个功能虽然简单,但确实帮矿上了避免了好几起隐患。
最后说一个最容易被忽略的问题:程序版本管理。这种项目后期改动很频繁,今天我改一个报警值,明天他调一个延时参数,改来改去现场跑的程序和电脑里存的程序就对不上了。我现在每改一次程序,都会在梯形图注释里写明修改日期和修改人,同时把带日期的备份文件单独存一个文件夹。这个习惯看起来不起眼,但出了事故要查逻辑的时候,就是你唯一的救命稻草。
6.4 调试这类系统几年后,我最大的感受
前后做了几套煤矿通风瓦斯控制系统之后,我最大的体会是:这套系统的技术难度其实不算高,真正的挑战在于把安全逻辑吃透。PLC指令、通讯配置、画面组态都是可以查阅手册学会的,但"什么时候必须停机、什么时候必须人工干预、什么时候可以自动恢复"这些安全边界的拿捏,需要真正到现场去感受、去和矿方人员反复沟通,才能沉淀成靠谱的逻辑。
如果你正在做类似的项目,我建议你在动手写梯形图之前,先把矿井现有安全规程翻一遍,把每一个控制点对应的安全要求列成表,再开始规划IO和程序。程序是安全逻辑的载体,而不是程序的起点。这套"三菱PLC+组态王"的方案本身很成熟,照着这篇文章的框架做下来,系统能跑得稳、查得清、报得准,剩下的,就是你在现场珠链般串起的那些经验了。