十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

西门子S7-200与组态王在火电厂脱硫控制中的维护实战

西门子S7-200与组态王在火电厂脱硫控制中的维护实战 前两年接了个火电厂脱硫控制系统的检修配合项目推开现场控制柜门一看还是老伙计西门子S7-200的CPU226旁边工控机上跑着组态王6.55。说起来这套组合在如今S7-1200、WinCC满天飞的技术语境下有点“复古”但在存量市场里它依旧是很多火电厂脱硫工段的绝对主力。后来我索性把这个系统的改造维护从头到尾捋了一遍从PLC程序到上位机画面从PPI通讯到现场调试该踩的坑一个没落下。这篇就把完整的技术思路、配置方法和实战经验写出来给还在跟这套老组合打交道的朋友做个参考。这套系统能做什么简单说S7-200负责把脱硫塔的pH值、液位、烟气压力、泵组状态这些信号采集进来跑逻辑、算PID、输出控制组态王则承担人机交互运行人员在工控机上就能看到整个脱硫工艺的流程画面操作阀门、启停泵、查报警、看趋势。这套架构虽然朴素但胜在稳定、便宜、易维护特别适合中小型机组和老厂改造。如果你也在维护类似系统或者正准备用S7-200加组态王做一套中小规模的过程控制这篇文章的实操细节应该能帮你省不少事。1. 项目背景与硬件选型1.1 脱硫工艺对控制系统的实际需求火电厂的湿法烟气脱硫核心就是把烟气里的二氧化硫在吸收塔里用石灰石浆液洗掉。工艺上牵扯到的测点很多吸收塔的浆液pH值、浆液密度、吸收塔液位、原烟气SO2浓度、净烟气SO2浓度、增压风机入口压力、循环泵电流、氧化风机状态、石膏脱水系统状态等等。这些信号有4-20mA的模拟量也有大量泵、阀、风机的开关量。从控制需求上看系统必须完成这几件事第一调节回路最常见的是根据吸收塔浆液pH值调节石灰石供浆调节阀的开度保证脱硫效率的同时不过量耗石灰石第二顺序逻辑泵组的启停、阀门的开关要按照工艺要求顺序执行不能乱第三联锁保护比如三台浆液循环泵如果全停了增压风机必须立刻跳闸否则烟气走旁路会把吸收塔的浆液带出来甚至会损坏后边的设备。这套控制规模说大不大说小不小。模拟量大概十几路开关量几十个点S7-200这种小型PLC完全能扛下来。关键是要把I/O点位统计清楚选对CPU型号和扩展模块。1.2 为什么是S7-200和组态王新项目我肯定不会推荐S7-200毕竟已经停产多年官方早转到S7-200 SMART和S7-1200上了。但存量电厂不一样当年建设的时候这套配置是主流如今控制系统出问题业主的第一诉求往往是“用同样的东西赶紧恢复”而不是推倒重来。原因很实在改造工期短、电气人员熟悉、备件库里还压着一批模块和继电器换新系统意味着从图纸到程序全部推倒重来停机时间根本等不起。组态王也是同理。国产组态软件里组态王在电力行业占有率很高很多电厂的上位机就是它。界面全中文图库丰富学习成本低普通热工人员培训几天就能上手。跟S7-200搭配走PPI协议稳定性和实时性对脱硫这种变化比较缓慢的过程来说绰绰有余。所以我的态度是新系统可以拥抱新技术但老系统只要还能修就尽量让它继续发光发热。1.3 硬件配置与I/O点位规划这个项目PLC侧用的是CPU22624点数字量输入、16点数字量输出自带2个通讯口程序容量16KB数据块10KB扩展能力最强能挂7个扩展模块。现场需要处理的模拟量一共14路数字量输入32点数字量输出20点所以配置是1块EM231模拟量输入模块4路模拟量输入用来接pH计、密度计、液位变送器、压力变送器2块EM235模拟量输入输出混合模块每块4路模拟量输入加1路模拟量输出补足模拟量输入通道同时输出调节阀控制信号数字量输入不够的问题用1块EM223 16点输入模块解决输出点也靠EM223的16点输出来扩展。这里有个容易忽略的细节CPU226本身的24点数字量输入是分组的每8个点一组共用一个公共端接线的极性一定不能错。我遇到过前一任电工把N线的公共端接到L上结果PLC输入指示灯常亮不灭查了半天才发现是公共端短接线接错了位置。所以点位规划除了算数量还必须把模块的分组、公共端、通道地址都列成一张表施工和查线都方便得多。2. PLC控制程序的设计与实现2.1 程序框架和任务划分S7-200的程序结构是主程序OB1循环扫描配合子程序SBR和中断程序INT。脱硫这种过程控制程序逻辑并不复杂但任务划分要清爽。我当时是这么分的主程序里只做三件事调用初始化子程序、调用模拟量处理子程序、调用联锁保护子程序。调节回路和顺序控制都拆成独立的子程序用M区或者V区的位来切换状态。这样做的最大好处是调试的时候能单独禁用某一个子程序不会因为一个逻辑问题把整个系统搞瘫。中断程序留给PID使用。S7-200的PID向导生成的中断是基于时间中断的我用的是SMB34也就是定时中断0中断周期设置成1秒。这个后面讲PID的时候再细说。2.2 模拟量采集与工程量换算S7-200的模拟量输入通道对应的寄存器是AIW0、AIW2这样按偶数递增的地址。4-20mA信号经过EM231转换后数值范围是0到32000。这个数值不是直接就能用的必须换算成实际工程量。pH值的换算最简单pH计的量程是0到14对应4-20mA。在PLC里用整数运算先做减法再除公式就是实际值 原始值 ÷ 32000 × 量程上限换成STL写就是先用双整数指令把AIW0读进来转成实数乘14.0再除32000.0结果存到VD100里。这个VD100就是后面给组态王读的pH过程值。有一个经验值得说模拟量信号线一定要用屏蔽双绞线而且屏蔽层必须在PLC柜这一端单端接地。现场最初pH读数跳得跟心电图似的我去查线发现屏蔽层在传感器那边接地了PLC这边也接了两端接地形成地环流反而引入更多干扰。改成单端接地后信号立刻稳了。另外EM231模块侧面有一排DIP开关管的是输入范围、单双极性和滤波。这排开关出厂默认是0到10V电压输入如果现场信号是4-20mA却没拨码读出来就是满量程乱跳或者根本没反应。接线前先对着模块上的丝印把拨码设好别等调试时再排查。2.3 pH值PID调节回路脱硫吸收塔的pH值控制是整个系统里技术含量最高的一个回路。pH对象惯性大、滞后明显供浆调节阀动作后要过好几秒甚至十几秒pH值才开始变化所以PID参数不能照搬别的回路的经验值。S7-200编程软件STEP 7-Micro/WIN自带PID向导用向导配置比手写指令方便得多。向导里要设置给定值范围0到14PID回路起始地址选VD200增益和积分时间可以先按经验填我现场最终整定的参数是增益0.8积分时间600秒微分不用采样周期1秒。选1秒采样周期是有讲究的。pH变化本来就慢采样太频繁反而容易把噪声带进微分项导致调节阀频繁动作。1秒的采样周期配合定时中断SMB34既能及时跟踪变化又不会让输出抖得太厉害。整定的时候有个土办法先把积分时间放到很大手感调到输出不再发散再慢慢减小积分时间直到pH值能稳定在设定值附近、不再来回过冲。向导生成的PID子程序要放在中断程序里调用梯形图就是一行LD SM0.0 CALL PID0_INIT这个PID0_INIT子程序里封装了定时中断初始化和PID算法调用只要主程序里调用一次后面都是自动执行。2.4 联锁保护逻辑编写联锁逻辑是脱硫系统的安全底线必须独立于自动调节和手动操作。我写的最核心的一条三台浆液循环泵全部停止时增压风机必须跳闸。梯形图一组合就出来了LD I0.2 // 1号循环泵运行反馈 O I0.3 // 2号循环泵运行反馈 O I0.4 // 3号循环泵运行反馈 M10.0 // 有循环泵运行标志 LDN M10.0 // 没有循环泵运行 A Q0.5 // 增压风机正在运行 M10.1 // 触发联锁跳闸M10.1再去驱动一个中间继电器串到增压风机的控制回路里实现硬接线和软逻辑双重保护。这里有一条非常关键的经验联锁结果不能只留在PLC里必须通过继电器输出出来跟现场电气控制回路串联。纯粹靠通讯让组态王去软停机一旦通讯中断或者上位机死机联锁就失效了那是绝对不行的。类似的联锁还有吸收塔液位低低时停循环泵、pH值极低时连锁关闭供浆调节阀、石膏排出泵故障时停止脱水系统等等。每条联锁都要单独用一个M区标志位方便组态王做状态显示和报警触发。2.5 程序调试工具与技巧STEP 7-Micro/WIN最实用的功能是状态表监控。把关键的V区地址、M区标志位、Q输出列到状态表里就能实时看到内部变量的变化。当时调pH回路我就是一边看着状态表里的VD100过程值和VB300给定值一边在组态王画面里观察调节阀的动作两边一对照参数往哪个方向调心里就很有底。下载程序前一定要先停止PLC用STOP模式下载完成后切回RUN。这个老生常谈但真有人踩坑。有一次现场人员在RUN模式下下载程序写到一半通讯中断PLC卡在一个半更新状态CPU的SF灯亮红最后只能强制清空内存重新下程序。再一个技巧是正式程序投运前用Micro/WIN的“程序比较”功能跟上一版备份比对一下确认改动符合预期再上电这个习惯能避免很多低级返工。3. 组态王上位机开发3.1 PPI通讯配置步骤组态王和S7-200之间走的是PPI协议通过PC/PPI电缆连接CPU的Port0口或者用USB-PPI电缆接USB口。我在设备配置里选的是“PLC-西门子-S7-200PPI”然后按下面几步配置第一步在组态王的“设备”里新建一个设备选择S7-200PPI驱动给设备取名比如“PLC1”。第二步设置PLC地址为2这是S7-200的默认站号除非你在Micro/WIN里改过否则都是2。第三步设置串口参数串口号选组态王机柜里实际对应的COM口波特率9600、8数据位、偶校验、1停止位。这里波特率建议就用9600距离长、抗干扰能力强PPI协议跑这个速率也完全够用。第四步测试设备。组态王的设备测试窗口能读寄存器值如果通讯正常读V区或者M区的值会有响应。我当时第一次配的时候设备测试怎么点都是“打开通讯设备失败”后来跑到设备管理器里一看USB转串口线被识别成了COM7组态王默认只看的COM1到COM4把COM口号改到3以下就通了。USB转串口线建议买FT232芯片的CH340也能用但PL2303的旧版芯片在Win7以上系统容易掉驱动现场通讯时好时坏排查起来非常折腾。3.2 数据词典与变量定义技巧组态王的变量是放在数据词典里的。脱硫项目的数据量不大核心变量大约100多个但定义得好不好直接影响开发效率和运行流畅度。IO变量是跟PLC直接通信的变量。比如pH过程值定义成IO实数类型连接设备选“PLC1”寄存器类型选V地址填100数据类型选FLOAT。注意S7-200里实数存在V区是4字节组态王这边必须选FLOAT类型跟PLC侧的数据长度对应上要不然会读出一堆乱码。开关量变量要定义成IO离散寄存器类型可以是M或者I、Q。比如“1号循环泵运行反馈”寄存器M地址0.1这个对应PLC里的M0.1。离散量的“采集频率”建议设成500毫秒没必要太快太快会增加PPI通讯的负担模拟量则设成1秒和PLC的PID采样周期保持一致。变量定义还有一个细节是“变化灵敏度”。浮点型变量的变化灵敏度默认是0意思是有任何变化都刷新。我建议模拟量把变化灵敏度设置成0.1或者0.5这样画面上的数值不会因为末尾的小数抖动而频繁刷新看起来也更稳定。这个技巧在热工信号本身有小幅波动的时候特别有用。3.3 画面开发与常见显示问题组态王的画面开发逻辑不复杂核心就是图元加动画连接。工艺流程图这块从图库里把泵、阀门、管道、液位罐拖出来再给每个图元做动画连接。泵的运行状态可以用“填充”属性关联开关量变量运行时泵的颜色从灰变绿阀门的开关状态关联到位反馈开到位显示红色、关到位显示蓝色。液位用“垂直填充”关联液位模拟量设好填充百分比范围就能看到塔里浆液高度的实时变化。按钮操作是人机界面的重头。每个泵、每个阀门都配一个操作按钮按钮的命令语言用弹窗确认方式if(确认要启动1号循环泵吗?(1) { PLC1.M0.2 1; }这里的M0.2是PLC里的启动脉冲位PLC程序扫到这个M位置位就去启动对应的泵。这个做法的好处是操作员误触也有二次确认并且每次操作在组态王运行日志里可查出了事能追溯。再回答两个现场高频疑问。第一个按钮字体怎么改组态王的按钮文本不能直接在画面上双击编辑要右键按钮组件选“字符串替换”把原文本替换成自己想要的文字然后再去“控件属性”里统一改字体字号。第二个运行画面和电脑画面不一致怎么办这是典型的分辨率问题开发时用的显示器是1080P现场主机是1024x768的老显示器运行起来画面就超出边界了。解决方法是打开开发系统的“系统配置”里“运行系统配置”把画面窗口设置成“覆盖画面”然后按照现场显示器最低分辨率来设计画面尺寸我的做法是统一按1024x768设计所有关键操作按钮放在安全区域。3.4 报警和趋势曲线的落地配置脱硫系统的报警要按等级划分。pH值偏离设定值大是普通工艺报警泵故障跳闸是设备故障报警增压风机联锁动作是紧急报警。组态王里先定义报警组把不同类型变量归到不同报警组里然后在变量属性的“报警”页勾选对应的越限类型设置上限、上上限、下限和死区。这里的死区一定要设置防止信号在报警限附近抖动导致报警反复触发频繁打扰运行人员。历史趋势曲线相对简单变量属性里勾选“记录”设置记录死区然后在画面里拖一个“历史趋势曲线”控件关联要显示的变量。注意组态王历史数据默认存在本机的历史库文件里现场工控机系统时间如果经常被改曲线时间轴会错乱最好让运行人员定期校时或者干脆给工控机接一个NTP时钟源。4. 联合调试、常见问题与运维建议4.1 联合调试的完整流程系统安装完成后联合调试我习惯按照“从下到上、先开环后闭环”的顺序走。第一步离线调试PLC程序用Micro/WIN的仿真模式或者强制表把输入点强制成运行状态看输出点的逻辑是否正确。这一步要在PLC本体上做不牵扯上位机最快把逻辑问题暴露出来。第二步是验证模拟量通道用信号发生器给每个AI通道送4mA、12mA、20mA三个标准电流值在PLC状态表里看读数是否对应0、50%、100%同时检查组态王数据词典里的显示值是否跟PLC一致。值得注意的是S7-200模拟量通道的零点和量程会有一点漂移但不用急着在PLC里加补偿先看看偏差是否在允许范围内小了可以靠PID和联锁逻辑的冗余覆盖掉。第三步是联锁保护测试把各个联锁条件一个个模拟触发比如强制三台循环泵运行反馈全部消失看增压风机是否在1秒内动作断开。测试过程要记录每一条联锁的动作时间和输出状态这些记录是竣工验收的支撑材料。第四步是上位机画面联调操作员在组态王画面上点启动按钮现场设备动作再点停止都确认无误再移交运行。4.2 现场高频问题速查现象可能原因处理方法组态王设备显示“打开通讯设备失败”串口号错误或串口被占用在设备管理器里查看COM号改用COM1到COM4PPI通讯时断时续USB转串口线芯片质量差、线缆过长换FT232芯片的串口线波特率固定9600超过50米加RS485中继器数据词典大量变量显示设备故障PLC站号不对或PLC处于STOP状态检查PLC是否在RUN模式设置S7-200站号为2pH值读数波动大屏蔽层两端接地、EM231量程拨码错误屏蔽层单端接地检查模块DIP开关位置组态王安装报explorer.exe与.cab不匹配杀毒软件拦截、系统临时目录权限异常关闭杀毒软件清空%temp%目录以管理员身份重装运行画面显示不全开发机与运行机分辨率不一致按运行现场最低分辨率设计画面或用画面自适应按钮点击无反应命令语言绑定的变量类型不对或者变量未连接设备检查按钮动画连接里的命令语言变量必须是IO变量历史趋势查不到数据变量未勾选“记录”、历史库存储空间满在数据词典确认“记录”选项清理历史库文件目录4.3 老系统还能怎么维护S7-200毕竟停产了但备件在二手市场依然充裕CPU226、EM231这些模块都不难找价格也不高。我的建议是现场至少备一块CPU模块和一块关键的模拟量模块出问题直接换上再把Micro/WIN的备份程序下载进去半小时就能恢复生产。这比等原厂备件省太多时间。组态王的工程文件要养成定期打包备份的习惯。开发完成后把整个工程目录复制到移动硬盘里同时导出一份Excel格式的变量表。这样即使工控机硬盘挂了换一台电脑装好组态王把工程拷回去就能直接用。千万别只把快捷方式拷走那里面没有工程数据。还有一点组态王的运行授权狗一定要看好现场装好就不要再拔来拔去。我见过有保洁阿姨擦桌子顺手把USB狗拔走的系统直接变演示模式画面弹出个恐怖的“运行授权超时”整个中控室都慌了。用组态王6.55以上的版本可以考虑把加密狗换成授权文件方式但前提是厂里软件合规别去碰什么“工程解密”之类的东西出问题没人帮你担责。写在最后干这行十几年我对S7-200加组态王这套老组合的态度是能用就好好维护该升级就果断升级。对维护老系统的工程师来说掌握这套技术栈依然是相当划算的选择。我印象最深的一次凌晨三点脱硫系统增压风机跳闸厂里热工人员一个电话打过来我远程指导他通过组态王的变量状态反查PLC状态表十分钟定位到是循环泵反馈继电器触点氧化导致的联锁误动清理触点后系统恢复正常。这种“帮人救火”的成就感大概就是干工控最大的乐趣了。最后再分享一个小习惯每次调试完我都把当天改的程序备份一份命名带日期一个月下来能攒一大堆。别嫌麻烦等三个月后有人问“这个逻辑什么时候改的”你就知道这个习惯有多香了。
返回列表