
1. 先别急着写程序把“除灰控制”到底要控什么盘清楚做除灰控制系统之前我一直在想一个问题这玩意儿到底算难还是算简单说简单吧无非就是几个电动阀、几个料位计、一台风机、一台卸料器按顺序开开关关说难吧真上手之后你会发现梯形图里面每一行逻辑背后都藏着工艺需求而你一旦把工艺需求理解偏了写出来的程序越“漂亮”现场越难用。我这次做的是一个小型脉冲布袋除尘器的控制系统属于除灰系统里比较典型也相对基础的一类。它的工作逻辑大体分两块一是过滤状态下的正常引风含尘气体进入除尘器后经过滤袋过滤干净气体由引风机排出二是清灰状态下的离线脉冲喷吹也就是当滤袋表面积灰到一定程度之后用压缩空气瞬间反吹把滤袋上附着的粉尘震落让灰落进灰斗再通过卸灰阀排出。整个控制系统的核心任务就是管理这两套状态的自动切换以及各种手动干预手段。如果你只听这个描述感觉确实不复杂。但实际去梳理控制需求时第一批坑就来了。比如脉冲喷吹有“在线清灰”和“离线清灰”两种模式在线清灰是风机不停脉冲阀按行轮流喷吹离线清灰是先把某个仓室切离系统再对这个仓室进行强力喷吹。两种模式的阀组动作顺序完全不同对程序结构的要求也不一样。我当时拿着工艺人员给的说明文档只看到“脉冲清灰”四个字文档里根本没有讲清楚到底是哪种模式结果按照离线方式把程序框架搭好了对方才说他们需要的是在线轮流喷吹。那一版框架等于白写。所以我的第一个建议是动手写梯形图之前先花两天时间把工艺流程图吃透。至少要把下面这些内容一条条在纸上列清楚系统一共有多少个设备引风机、卸灰阀、脉冲阀、电加热器、料位计、压差变送器等每个设备的启停条件是什么有没有联锁比如引风机启动前要确认除尘器进出口阀门到位卸灰阀运行时不能和脉冲喷吹同时动作清灰触发条件是什么按时间周期按压差高低还是两者结合有没有需要模拟量参与控制的地方比如压差信号、温度信号手动/自动切换后各个设备的动作是否一致很多程序只把“手动/自动”做成了软切换但现场操作工真正需要的是“自动状态下的点动干预”这个细节直接决定你在组态上做操作按钮的逻辑形态。这一步做扎实了后面的梯形图和组态才有意义。否则你做的只是一个“能跑通Demo的PLC程序”不是一套“能稳定运行在除尘器上的控制系统”。2. 硬件选型与I/O点表这页纸算不清楚现场跑线就等着哭控制系统的第二个大门槛不是写程序而是把硬件方案定下来。很多人第一次做除灰控制会有一个错觉既然控制逻辑这么简单随便搞一个PLC就行把点位估个大概就可以下单了。等你真正开始接线、做柜子、写程序的时候才发现有几个输入信号你漏了有几个输出通道你算错了然后整个柜子要重新改线、PLC模块要重新增补工期和成本直接翻倍。先说我这次的选型结果。我用的PLC是汇川H5U系列因为手头正好有现货而且支持在线仿真调试点比较全。输出模块用晶体管输出考虑到现场脉冲阀是DC24V驱动不用继电器隔离直接配合中间继电器驱动负载。HMI组态软件用的是MCGS触摸屏是昆仑通态10.2寸的那款型号TPC1062Ti。这套组合算是工控圈子里非常常见的低成本方案能满足中低端除灰系统需求而且彼此之间的通讯协议兼容性很好——MCGS支持与汇川H5U的以太网通讯这对接下来的组态工作省了不少事。如果你不是非要用我这个搭配那选型核心思路也就是看三件事PLC的I/O点数是否冗余足够、通讯接口是否支持你计划用的组态软件和触摸屏、输出驱动方式是否能带得动现场的负载类型交流接触器还是DC电磁阀。PLC品牌是次要的现场好用才是真的。I/O点表这里我把这次项目的一张简表附在下面。这张表是在正式画梯形图之前我和电工师傅一起坐在桌子前一个一个点捋出来的顺序就是按设备清单过信号类型地址分配信号名称关联设备备注DIX0引风机运行反馈引风机接触器辅助触点用于联锁判断DIX1引风机故障反馈热继电器故障报警DIX2除尘器进出口压差高压差变送器开关量输出触发清灰DIX3灰斗料位高料位计开关量输出触发卸灰DIX4压缩空气压力低压力开关禁止清灰DIX5集控室急停急停按钮常闭触点硬接线直接切主回路同时进PLCDOY0引风机启动接触器线圈需中间继电器隔离DOY1脉冲阀1第1排电磁阀每排独立DOY2脉冲阀2第2排电磁阀每排独立DOY3脉冲阀3第3排电磁阀每排独立DOY4卸灰阀启动卸灰阀电机接触器与脉冲喷吹需互锁AIA0除尘器进出口压差0-10V压差变送器用于压差趋势显示AIA1除尘器烟气温度PT100温度变送器用于超温报警判断你会发现这份点表里有几个点不是“纯控制必须”的比如温度模拟量、压差模拟量但它们对系统运行和维护来说非常重要。纯逻辑控制确实只需要一个压差开关、一个超温开关就够了可你要在组态界面上给操作工显示一个趋势曲线、压差实时数值的话模拟量通道就得提前留好。这类点位的遗漏是除灰控制系统里最频繁的返工原因因为很多设备采购时只订了开关量仪表后续想取模拟量就必须换仪表甚至换PLC模块。I/O点表定下来之后我习惯把每个设备的“动作条件”用自然语言写一遍再翻译成梯形图。比如“脉冲喷吹允许”的条件是系统处于自动模式、压缩空气压力正常、引风机运行中、没有急停动作这四个条件缺一不可。这种自然语言描述既能帮助自己理清逻辑也是后续和甲方沟通需求的依据免得程序写完了双方对“为什么这个阀不能动”产生分歧。3. 梯形图开发阶段上升沿和下降沿的正确用法决定系统是否“听话”梯形图阶段是这次项目里最花时间的部分也是所谓“从梯形图到组态的那些坑”里最早出现的一批坑。我知道很多初学者一提到PLC梯形图就觉得无非是“线圈加触点”逻辑对了就能跑。但一个控制系统里往往不是“逻辑对不对”的问题而是“这个动作会在什么时候触发、触发多久、能否重复触发”的问题这就要用到很多细节技巧。3.1 用一个时间继电器实现脉冲轮流喷吹除灰系统的核心控制动作之一就是脉冲阀的轮流喷吹。假设系统有3排脉冲阀每排喷吹2秒、间隔10秒那么整个喷吹周期就是3个阀逐个动作循环往复。梯形图实现方式有很多种我这次用的是结构化程度相对高的一种两个定时器互相“掐表”。用T0做一个2秒脉冲定时器T1做一个10秒间隔定时器。T0计时到2秒时第一排脉冲阀输出“ON”同时复位自身T1计时到10秒时触发第二排脉冲阀T1再复位。通过T0/T1的交替启动实现3个阀循环轮流动作。这里最关键的坑在于你不能把所有阀放在同一个“周期”里写完就完事因为当系统运行时间长了之后两个定时器的相位会漂移3个阀的喷吹时间会互相挤压。正确的做法是给每个脉冲阀分别建立自己的“启动条件”并且把喷吹顺序做得像“接力棒”一样上一棒跑完了才允许下一棒启动。这类顺序控制在PLC里有一个非常经典的结构叫“步进顺控”如果你用三菱PLC可以用STL指令来实现如果像我这次一样用汇川H5U这种支持结构化文本的PLC那你完全可以用一个“步号寄存器”来做状态切换。步骤之间用状态转移条件来判断程序可读性比一长串定时器互锁强得多。3.2 上升沿的真正用法别把按钮按成“点射”或者“连发”还有一个特别容易踩坑的地方是启动/停止按钮的处理。我收到过很多新手写的梯形图启动按钮用的是“常开触点直接驱动保持线圈”停止按钮用的是“常闭触点断开线圈”。在纯逻辑层上看这样写没问题。但真实场景下操作工按按钮不像我们做仿真时那么“精准”他可能在自动状态下不小心碰了一下启动按钮结果系统立刻进入启动流程他也可能在停止时连续按了好几下结果程序在第二次按下时又触发了启动。解决办法是将每一个操作按钮都通过上升沿指令处理然后把它存成一个“一次性的脉冲标志”。也就是说按钮按下的一瞬间不管他按多久、按几次程序只认为“收到了一个启动请求”。启动请求被处理完之后这个标志就自动清除除非他真正再次按一下按钮否则这个请求不会自我重复。这个东西在MCGS组态里也同样适用——触摸屏上的按钮如果不经过上升沿处理会非常容易出现“按一下动作两次”的问题因为触摸屏的按钮信号持续时间往往比你PLC扫描周期长得多。3.3 联锁逻辑要装“保险丝”而不是装“感叹号”梯形图阶段另一个重要职责是把各种联锁条件写进去。除灰系统的联锁虽然不算复杂但容易遗漏的是“非正常状态下的安全处理”。举个例子压缩空气压力过低时禁止脉冲喷吹。很多人的做法是在脉冲阀输出回路串一个“压缩空气压力正常”的常开触点只要压力掉了阀就不能启动。这个做法没问题但你有没有想过如果某个脉冲阀此刻正处于喷吹中压力突然掉了怎么办这个阀会保持打开还是立即关闭如果程序只做了“禁止启动”而没有做“正在动作时立即切断”那么这个阀就会一直喷吹到定时器结束为止气包里的压力会进一步掉下去。我最后的处理方式是在每个脉冲阀的输出回路上串接“压缩空气压力正常”触点之外还把压力低信号放进每个阀的“保持条件”里。也就是说一个阀是否保持喷吹状态不仅取决于它的脉冲计时器是否到点还取决于压力是否正常。这样的联锁才算是真正“保了险”。这也是梯形图阶段最不应该偷懒的地方。3.4 手自动切换逻辑的隐藏细节手自动切换也是除灰控制里永不缺席的功能。很多初次做除灰的人的默认做法是组态上放一个“手动/自动”切换开关PLC程序里把每一路输出都做一个“手动模式优先”选择即M手ON时输出跟随面板/触摸屏上的按钮M手OFF时输出跟随自动逻辑。这个思路本身没有错但有一个容易被忽略的条件模式切换的瞬间输出状态不能发生突变。举个例子系统在自动模式下第2排脉冲阀刚好处于喷吹过程中你这时候把手动/自动开关拨到手动如果程序处理不当第2排阀会瞬间断开。等你又拨回自动时由于定时器的状态已经被复位了整个喷吹周期又会重新开始这就会导致滤袋的清灰不规律甚至对压缩空气系统造成冲击。我的建议是程序里增加一个“模式切换时序”处理。当检测到模式切换信号上升沿时先把当前正在执行的动作完成到安全位置比如让正在喷吹的阀完成本次喷吹再切换控制权。这一步在除灰系统里尤其重要因为喷吹周期本来就短如果切换过度频繁滤袋使用寿命会明显下降。4. 组态阶段变量地址对接的那一夜我盯着通讯状态窗口看了三个小时梯形图开发完成PLC程序能独立跑通之后接下来就到组态环节。我用的MCGS组态软件在工控圈子里用户量很大和触摸屏配合时可以说是“开箱即用”。但是真把画面搭起来之后你才会发现坑全在变量对接上。4.1 驱动配置里的“设备地址”和“PLC站号”要严格对应MCGS组态软件和PLC通讯的第一步是添加一个“设备驱动”。你需要在MCGS的设备窗口里新建一个“通用TCP/IP父设备”然后在下面挂一个对应你用PLC品牌的子设备。比如我用的是汇川H5U就需要选择对应汇川协议的驱动。这个环节的第一个雷区是驱动类型选错了不会立刻报错而是等编译下载到触摸屏后所有变量全部显示“通讯失败”你再回去查可能就得浪费半天。我那天就是这样先在MCGS里建了一个“Modbus TCP”子设备把PLC的IP填进去测试时大部分寄存器读到了数据但有几个地址始终读不到。后来用H5U自带的编程软件连接PLC才发现H5U的默认Modbus地址区划分和标准Modbus有区别部分寄存器区需要映射。这类问题做组态之前最好先拿Modbus扫描工具把PLC支持的表/寄存器区间扫一遍确认你计划访问的地址确实存在于Modbus地址映射表里。4.2 变量名匹配不是“看起来一样”就万事大吉MCGS组态的数据对象定义会直接绑定到你PLC里的具体地址。这里最容易出现的坑是PLC程序里定义了一个叫“Pulse_Valve1”的位MCGS组态里也建了一个叫“Pulse_Valve1”的位对象但两者的地址根本不是同一个。因为MCGS的变量名是你随便取的它不负责检查这个变量名和PLC符号表里是否一致它只认地址。所以哪怕你变量名取得一模一样地址错了照样读不到。这也是为什么我强烈建议组态前先做一份“PLC变量对照表”把PLC程序里的每个中间变量、输出点、寄存器地址跟MCGS数据对象一一对应列出来。这份表不用很复杂Excel里两列就行一列是PLC变量另一列是MCGS变量地址。但有了它你组态时就可以像填表一样把变量一个个填进去大大减少因地址写错导致的返工。4.3 用“数值显示”调试比“指示灯”更高效MCGS组态画面里最常见的元件是“指示灯”和“按钮”。但调试的时候我建议你在画面上额外放置一些“数值显示”控件直接显示PLC里关键寄存器和位状态的数值。尤其是模拟量数据比如压差和温度。原因很简单你在PLC编程软件里在线监控数值那是一回事但你要确认触摸屏通讯拿到的是不是这个数值那就是另一回事了。用数值显示就能直观地看到“PLC里是500触摸屏显示500”这种对应关系。指示灯只能告诉你“有信号”、“没信号”一旦出现通讯问题你很难判断到底是指标反转还是根本就没读到数据。用数值显示检查完之后再换成正规的操作界面会更稳妥。4.4 组态画面布局的经验之谈除灰系统的组态画面我一般会分成四块工艺总览页、清灰控制页、报警记录页、趋势曲线页。工艺总览页放一张除尘器结构简图把引风机、脉冲阀、灰斗料位、压差这些关键点用图符标出来操作工一眼就能看到系统当前运行状态。清灰控制页放脉冲喷吹相关的手动/自动设置、喷吹间隔时间设置、轮次显示等。报警记录页主要显示故障信息。趋势曲线页就是模拟量的实时曲线方便巡检时观察压差变化趋势判断滤袋是否需要更换。千万不要试图把所有信息塞进一页画面。现场操作工用手指头戳触摸屏的频率很高画面太挤不仅操作不方便还会误触。把每一页的功能分清楚是组态设计里容易被低估但实际体验差异很大的细节。5. 联机调试阶段所有“理论上没问题”的情况都会在现实里给你上一课等梯形图和组态都做完了接下来就是把PLC和触摸屏连起来进行现场的联机调试。这个阶段我遇到了一批共性的坑它们不是程序逻辑错误也不是组态配置错误而是发生在“真实物理世界”里的问题。5.1 风机的“假反馈”接触器吸合了不代表风机在转我调试时遇到过最迷惑的问题之一触摸屏上显示引风机运行正常但现场听声音就知道风机没有转起来。排查后发现PLC采集的是接触器辅助触点信号接触器确实吸合了但风机的电机回路里还有一个热继电器跳闸了只是我们没有把热继电器信号接入PLC所以系统只看到接触器吸合就认为风机运行了。这个问题暴露出来的是“设备状态反馈的取点位置”设计问题。除灰这种小系统很多时候电工图省事就把反馈信号直接从接触器辅助触点取不会单独装一个电流互感器或电机综合保护器去判断“电机真的在转且电流正常”。但如果真正做到“保护完备”用电机综合保护器采集电流或者再加一路热继电器常闭触点串入反馈回路就能第一时间判断电机是否真的在运行。这类反馈信号的精度直接影响梯形图联锁逻辑的正确性。5.2 脉冲喷吹时的气压瞬间跌落其实是“气包选小”了脉冲喷吹系统正常工作时气包内的压缩空气会在瞬间释放如果气包容积不够大、补气速度跟不上会导致气包压力在一个喷吹周期内出现明显的跌落。如果你的程序里把“压缩空气压力低”作为禁止喷吹的条件那这种正常的瞬时跌落就会造成清灰动作频繁中断。我当时遇到的情况是第1排脉冲阀喷吹时气包压力从0.6MPa掉到0.35MPa幸好没低于我们设置的0.3MPa联锁值否则系统会反复进入“喷吹-等待压力恢复-喷吹”的死循环。最终我把联锁值调低了一点同时增加了补气气路的管径。这个问题的根源在工艺管路上而不是PLC程序上但它会直接表现为“控制系统不稳定”所以做控制的人也要能和工艺沟通这些边界条件。5.3 触摸屏上的“时间设定”不生效是谁动了我的寄存器除灰系统的脉冲喷吹间隔、喷吹时间通常是允许操作工在触摸屏上自行设定的。这种设定值一般通过MCGS数据对象写入PLC的寄存器地址保存为32位或16位整数。但这里有一个小小的坑PLC里保存这些参数的寄存器如果你用的是掉电保持区那没问题如果用的是普通寄存器区那么PLC断电重启后这些设定值会全部恢复为默认值。操作工在前一天辛辛苦苦调好的喷吹间隔参数第二天早上开机发现被重置了他就会觉得这套系统“有毛病”。我在调试时是把所有触摸屏设定参数统一放在PLC的掉电保持区地址上同时在组态里增加了一个“参数保存”按钮按下之后将当前显示值一次性写入保持寄存器。这样即使PLC断电参数也不会丢失。这个细节非常小但能把现场操作人员的信任度提升一个级别。5.4 组态按钮的“信号保持”问题没加“弹起复位”必出事MCGS组态上的按钮如果你不做特殊配置默认是按下去的时候给变量置1松开的时候置0。但如果你需要的是“点动”操作比如手动状态下按住某一排脉冲阀喷吹、松开停止那默认状态其实恰好满足需求。但如果你需要的是一个“锁定”按钮比如手动启动引风机后希望它一直保持运行状态直到你再按一次停止按钮。那么你就不能在触摸屏上简单用“置位/复位”按钮去直接操作线圈了因为触摸屏按钮的信号一旦丢失PLC线圈可能立刻断开。我最后在梯形图里做了“启保停”逻辑触摸屏上的启动和停止按钮只作为瞬时触发信号真正的保持逻辑完全靠PLC内部完成。这样任何时候触摸屏通讯断开或按钮误松都不会导致设备非正常停机。这个原则在除灰这种对运行连续性要求较高的系统上尤其重要。6. 现场反复出现的三类故障我把它们归成了“排查手册”调试结束、系统正式投运后不代表你的工作就结束了。除灰系统里的故障和PLC程序本身相关的其实只占一小部分更大的问题集中在传感器、线路和执行机构上。我把现场高频出现的故障整理成了一个小手册现在分享出来希望能帮后来者少走弯路。第一类是“料位计不灵”。灰斗料位计在粉尘环境下容易因为积灰导致误报或是因为安装位置不当料位探头根本检测不到积灰。这类故障的表现很典型明明灰斗里已经满了卸灰阀却一直不动作。第二类是“电磁阀线圈烧坏”。脉冲阀是高频往复动作的元件电磁阀线圈长时间通电后发热严重如果散热条件差线圈寿命会显著缩短。选型时注意购买正规品牌同时在PLC程序里尽量把单次喷吹时间控制在2秒以内避免线圈长时间持续通电。第三类是“压差信号漂移”。压差变送器在粉尘环境下取压管非常容易被堵住导致数值显示异常偏高或偏低。这类故障的特点是“时好时坏”而且往往和天气、运行时间有关系。最有效的办法是在取压管上加装吹扫装置定期用压缩空气吹扫取压管路保证测量数据可靠。除灰这种系统控制逻辑本身真不难难就难在它夹在除尘工艺、现场环境和用户操作习惯三者之间。任何一个环节没考虑到反映到运行中就是“不好用”。做这个项目的过程让我最大的一个体会就是控制程序永远留一手冗余。留一手是指逻辑判断上宁可多判断几个条件也不要为了“省点数”去压缩联锁组态画面上宁可多留几个调试时用的数值框也不要等现场出问题了再重新下载工程。这套思路在除灰系统上适用在大多数中小型工控项目上同样适用。