做锅炉换热站控制这块的工程师,大概率都碰过这类需求:一套锅炉加换热站系统,既要根据温度自动调节运行,又得让操作工能在现场手动干预;温度、压力、液位这些模拟量信号得实时读回来,还得按时间段自动加热。我去年刚做完的一个项目,正好用的就是西门子200Smart配昆仑通态MCGS触摸屏,这套组合把模拟量读取、自动/手动切换、时间加热控制全部做进去了。今天把整个程序设计思路和关键实现步骤整理出来,从IO分配、量程转换到模式切换、定时控制,再到触摸屏组态和现场调试的坑,一条线讲清楚。想用200Smart做小型供热控制项目的朋友,这篇可以直接当参考模板用。
1. 项目需求与控制方案设计思路
1.1 这个换热站项目到底要解决什么问题
先交代一下项目背景。这个现场是一套小型燃气锅炉配套的换热站,工艺上并不复杂:锅炉产出高温热水,通过板式换热器把热量传递给二次侧采暖水,二次侧由循环泵驱动送到用户端。整个系统需要监控的温度点有锅炉出水温度、一次侧回水温度、二次侧供水温度、二次侧回水温度,压力点有一次侧供回水压力和二次侧供回水压力,另外还有一个膨胀水箱液位信号。
用户提出的控制需求归纳起来是三条:第一,二次侧供水温度必须稳定在设定范围,偏低时自动启动加热流程;第二,系统必须具备自动和手动两种工作模式,检修或者调试时能脱离自动逻辑单独操作每一台设备;第三,考虑到夜间用热需求下降,白天用热高峰前需要提前蓄热,所以加热动作要按照时间段来控制,比如凌晨04:30开始预热,白天高峰时段满负荷运行,夜间低谷自动转入保温运行。
从控制规模看,输入输出点并不多,模拟量有7个温度点、4个压力点、1个液位信号,数字量大概十几点,属于非常典型的小型换热站控制系统。这种规模的项目如果上DCS或者高端PLC,成本完全没必要,选一款小型PLC加触摸屏的方案最合适,这也是200Smart在这个场景下最常见的使用方式。
1.2 为什么选200Smart与昆仑通态这对组合
选200Smart的理由很直接。第一是成本优势,整个控制系统硬件费用控制在万元级,比同档次进口小型PLC低不少;第二是指令系统和服务器的兼容性好,200Smart虽然是西门子家族里入门级的产品,但它的指令集沿用了200系列的习惯,像我这种以前用过老200/200CN的工程师,上手基本零成本,写梯形图的速度比看手册还快;第三是模拟量扩展能力强,通过EM AM06这类扩展模块,8路模拟量输入完全够用,而且模块自带的隔离通道在抗干扰方面表现不错,不用额外加隔离器。
昆仑通态MCGS触摸屏则是国内小型HMI里市场份额很高的产品,选它主要看中几点:组态软件免费,下载和调试不受授权限制;驱动库齐全,走PPI协议和200Smart通信非常成熟稳定,基本是即插即用;画面组态灵活,用户窗口、设备窗口、实时数据库这套体系学起来很快,后期改画面不用重新编译下装,在触摸屏上直接做修改就行。而且MCGS的配方功能和报表功能对于换热站这种需要定期设置运行参数的场景来说非常实用。
这种“200Smart+MCGS”的组合在中小型锅炉房、换热站、空调机房项目里几乎成了标配。有一个重要因素在于后期维护:现场的电工和水暖工经过简单培训就能掌握触摸屏修改参数的操作,而PLC程序只要不涉及逻辑变动就不需要厂家反复派人进场,用户自己就能调整时间计划和温度设定值。
1.3 系统架构与IO地址规划
整套系统架构分三层:底层是传感器和执行器,中间是200Smart PLC,上层是MCGS触摸屏。传感器信号进PLC,PLC做逻辑运算和温度判断,输出控制继电器接触器去驱动循环泵、补水泵、电动调节阀等设备,触摸屏通过PPI协议和PLC交换数据,实现参数设定、状态监控和手动操作。
IO地址规划是整个程序设计里最容易被新手忽略、却最影响后面编程效率的一步。我的习惯是先列一张完整表格再动手写程序。
| 信号类型 | 地址范围 | 说明 |
|---|---|---|
| 模拟量输入 | AIW16~AIW38 | EM AM06模块占用的模拟量输入通道,依次接温度、压力、液位信号 |
| 数字量输入 | I0.0~I1.3 | 泵的启停反馈、故障信号、手自动转换开关、急停按钮 |
| 数字量输出 | Q0.0~Q1.1 | 循环泵、补水泵启停控制,电动阀开关控制,报警输出 |
| V存储区 | VB100~VB999 | 实时时钟缓存、模拟量转换结果、时间设定参数、运行状态标志 |
这里有个经验要分享:地址规划时模拟量通道要集中使用连续地址,这样后期写量程转换子程序时可以用循环指令批量处理;数字量输入里务必预留两个急停和复位按钮的位置,这个细节在后面的模式切换逻辑里非常重要;V存储区要在程序里专门划出一片作为触摸屏可读写参数区,并且做好注释和分割线,以后改程序找地址能省大量时间。
2. 模拟量读取与工程量换算
2.1 模拟量信号采集的接线方式
这个项目里模拟量信号有两种类型:温度信号用得最多的是PT100热电阻,压力信号选用4-20mA两线制变送器,液位用投入式液位计,同样是4-20mA输出。在选模拟量扩展模块时,如果温度点多且分散,最好用专门的热电阻模块EM AR02,它可以直接接入PT100并内部完成线性化,输出数值就是温度值的10倍,省去大量运算。但我这个项目只有7个温度点,考虑到后期可能增加模拟量通道,最终选了EM AM06,4个AI通道和2个AO通道。PT100信号通过温度变送器转成4-20mA再进AM06,虽然多了一道变送器,但信号统一为4-20mA后,程序里所有模拟量通道的量程转换公式完全一致,简化了程序结构。
接线时需要注意几点:EM AM06的模拟量输入通道分两组,每组有独立的公共端,两线制变送器的正极接模块的电源正,负极接信号输入正端,公共端把变送器负极和模块的COM连起来。实际接线最常犯的错误是两线制变送器接线时把电源负极接到模块信号负端,导致回路电流不经过测量电阻,读数要么是满量程,要么完全没信号。遇到读数异常,先拿出万用表串入信号回路,量一下电流是否为4-20mA,只要电流正常从模块侧查问题和线路问题,基本都能定位。
2.2 200Smart的模拟量数据格式与量程转换
200Smart的模拟量输入通道经过A/D转换后,数值范围是0~27648,对应0-20mA或0-10V的信号。如果接的是4-20mA变送器,下限4mA对应5530这个数值,上限20mA对应27648,所以量程转换公式为:
工程值 = (原始值 - 5530) × 满量程范围 / (27648 - 5530)
以一路0-100℃的4-20mA温度变送器为例,如果PLC读到的原始模拟量数字是13500,那么实际温度的换算过程是:
(13500 - 5530) × 100 / (27648 - 5530) = 7970 × 100 / 22118 ≈ 36.03℃
这个公式要理解清楚,不能简单套用0-27648直接除以满量程。用错公式最常见的表征是温度显示比实际值偏高,起始温度总是差十几度,就是因为没减去5530对应的下限偏置。
在200Smart里实现这个转换,推荐用整数转浮点数再运算的方式。程序可以用比较指令判断原始值是否小于5530,如果小于直接清零,避免信号断线时出现很大的负值被误认为正常低温。断线保护这个逻辑太重要了,换热站这种场合一旦变送器断线导致温度误判断为超低,自动逻辑就会把加热设备全开起来,现场就会过热甚至出安全事故。
我习惯把量程转换写成一个子程序,参数包括原始值地址、量程下限、量程上限、转换结果地址,每个模拟量通道调用一次。这样虽然程序看起来多几行,但后期增加模拟量通道或者修改量程范围时只需要改调用参数,不用动子程序内部逻辑。
2.3 模拟量滤波与干扰处理
换热站现场的干扰源主要有两个:一个是变频器,另一个是泵类设备的启停冲击。变频器本身输出侧的高频谐波会通过电源线辐射干扰模拟量信号,泵启停时大电流冲击也会造成地电位波动。处理手段是软件和硬件双管齐下。
硬件上,所有模拟量信号线必须用屏蔽双绞线,屏蔽层单端接地,严禁两端接地,否则会形成地环流,反而引入更大的干扰。屏蔽线要全程穿金属管敷设,不能和动力线在同一根线槽里走。变送器供电尽量用开关电源的独立一路输出,不要和PLC的数字量输出传感器电源共用。
软件上,我的做法是在每个模拟量采集周期做多次采样再取平均值。200Smart的程序扫描周期一般在10ms以内,如果每个扫描周期读一次模拟量并且立刻用于控制,数值波动会比较明显。比较稳妥的做法是用一个定时器每隔200ms执行一次采样子程序,连续采样5次,去掉最大值和最小值后取中间3次平均值,再赋值给用于控制的变量。这样处理后,即便有轻微的电磁干扰,实际显示值和用于控制的温度值都能保持稳定。
需要注意的是,滤波的时间常数不能取得过大。如果每隔几秒钟才采一次样做平均,虽然显示很稳,但温度快速变化时控制响应会迟钝,加热滞后严重。我曾经把滤波时间调到1.5秒,现场温度波动范围反而扩大了,就是因为控制动作跟不上真实温度变化。
3. 自动/手动模式切换的程序实现
3.1 模式切换控制原则与程序骨架
模式切换是整个控制程序里最容易出逻辑问题的地方。换热站要求每个设备都具备自动和手动两种控制方式,但这里的“手动”不是指完全脱离PLC的物理硬接线手动控制,而是在PLC程序里将某一台设备从自动逻辑中剥离出来,由操作员在触摸屏上用按钮直接控制启停。这种区分非常重要,因为在自动模式下手动运行某一台泵,如果自动逻辑恰好在某个条件下也输出该泵的启动指令,两个信号就会互相冲突。所以必须在每个设备的控制输出前加上模式选择逻辑。
控制原则可以总结为一句话:输出优先级从高到低依次是急停、联锁保护、手动控制、自动控制。急停必须直接切断输出点,不能用软件逻辑替代。联锁保护是指液位过低、压力超限等危险工况下,即使手动状态也要强制停泵。
程序骨架分为三层。主程序OB1调用模式管理子程序、系统运行状态判断子程序、手动控制子程序、自动控制子程序、报警处理子程序。每个设备最终输出到Q点的逻辑在独立的输出映射子程序中完成,比如循环泵的Q0.0输出值,等于急停取反后与联锁条件取反后,再与手自动选择结果相与。这样把控制逻辑和输出物理点分离,调试时查看程序逻辑非常清晰。
3.2 自动模式控制逻辑详解
自动模式的核心逻辑是温控加联锁。以二次侧循环泵为例,自动模式下只要二次侧系统没有故障,循环泵应保持连续运行,这是为了保证用户端采暖持续不断。二次侧供水温度的控制则通过调节一次侧电动调节阀的开度来实现。温度偏低时电动阀开大,让更多一次侧高温水进入板换;温度偏高时关小电动阀。
为了避免电动阀频繁动作,程序设计了两级控制方式。温度偏差在死区范围内时,电动阀保持当前开度不变;偏差超过死区上限时,电动阀以每秒一个步长的速度开大;偏差低于死区下限时,电动阀以同样速度关小。死区范围通常设为±2℃。实际运行时,二次侧供水温度可以稳定在设定值±1.5℃以内,基本满足供热要求。
补水泵的自动控制则完全由压力信号决定。二次侧回水压力低于补泵启动压力设定值时,补水泵启动补水;压力达到停泵压力设定值时停泵。启动压力和停泵压力之间要设置1.5米水柱左右的回差,否则补水泵启停过于频繁,机械寿命会大幅缩短。
自动模式下还有一个必须考虑的条件:设备故障联锁。比如循环泵在自动运行中发生热继电器跳闸,PLC接到故障信号后应停止该泵的输出,并切换备用水泵投入运行,同时生成报警信息推送到触摸屏。如果只有一台循环泵,故障时要立即停止加热控制逻辑,防止无水循环状态下继续通入一次侧加热介质,造成板换汽化损坏。
3.3 手动模式与安全保护切断
手动模式用于设备检修、调试和自动控制失效时的应急操作。在触摸屏上切换进入手动模式后,每台泵和电动阀的画面都会显示独立的启动、停止按钮。为了保护设备,手动操作也设置了基本联锁。比如手动启动补水泵,如果液位过低,由于膨胀水箱液位联锁仍然生效,补水泵不允许启动。
手动模式的逻辑程序相对简单,每个设备对应一个置位/复位按钮映像,但因为安全要求高,我特别强调几个细节。按钮在触摸屏上应设置操作权限,一般操作员只能操作泵的启停,修改温度设定值、PID参数等高级功能需要工程师权限才能操作。急停只有物理硬按钮,不做触摸屏软急停,原因很简单,触摸屏死机或通信断开时软急停完全失效,物理急停才是最后的保命手段。
模式之间相互切换时还有时序要求。自动切手动时,设备当前输出状态要保持,防止切换瞬间设备突然停机,这在现场会引起很大冲击,尤其循环泵切换后停机再启动,对泵的机械密封是很大的损伤。手动切自动时,设备状态由自动逻辑重新接管,切换前必须将手动模式下的输出全部清零,避免从手动输出的状态直接进入自动判断,发生状态竞争。我在程序里用了一个切换瞬间标志位,切换动作发生的那个扫描周期将所有设备的手动输出标志置零,从下一个扫描周期开始进入正常控制流程,这样处理下来切换过程没有任何一次误动作。
4. 时间加热控制功能设计与实现
4.1 时间加热控制要解决的现场痛点
换热站的时间加热控制需求来自于供热负荷随时间段变化的客观规律。白天用户在家、室外温度高时,热需求小;清晨和傍晚室外温度低,热需求急剧上升。如果完全按照固定温度偏差控制加热设备,有两种矛盾情况:一是负荷上升后再加热,温度爬升滞后,用户会感觉暖气不热;二是在负荷低谷时温度达标,设备频繁启停,浪费能源。
时间加热控制的核心思路是用时间曲线预判负荷趋势,在负荷到来之前提前蓄热,在负荷低谷时转入保温运行。具体到本项目,用户要求的工作模式是:每天凌晨04:30自动启动一次侧加热循环,通过板换向二次侧系统预充热量,到06:00用户起床时二次侧供水温度已经达到设定值;白天09:00~16:00时段按正常温度控制运行;夜间22:00后进入保温模式,只维持系统不冻,降低运行能耗。
这种需求用PLC实现其实不复杂,难点在于要把时间判断和温度判断结合起来,并且要考虑日期切换时的边界问题。
4.2 读取实时时钟与时段判断逻辑
200Smart读取实时时钟使用READ_RTC指令,功能是将系统时钟读取到以VB起始地址的8个字节缓存中。读取到的数据格式是BCD码,字节顺序为年、月、日、时、分、秒、保留、星期。比如当前时间是2025年1月15日下午14时30分25秒,缓存里的数值是16#25、16#01、16#15、16#14、16#30、16#25、16#00、16#03。
做时间判断时最简单的办法是直接比较BCD码,不要转换成十进制。因为小时的BCD码16#04就是十进制的04,16#14就是14,大小关系完全一致,直接用整数比较指令就能判断。下面是一段判断当前时间是否进入加热时段的梯形图逻辑思路:
// 假设VB100起存放READ_RTC读取的时钟缓存 // VB103为小时,VB104为分钟 // VW210存放加热开始时间设定值(高字节为小时,低字节为分钟) // 判断: 当前小时=设定小时 且 当前分钟>=设定分钟 LDW= VB103, VB210 AW>= VB104, 0 OLD LDW> VB103, VB210 OLD = M10.0 // 加热时段允许标志这里有一个平时容易踩的坑:READ_RTC读取的时钟如果需要手动校准,需要在触摸屏或者初始化子程序里先写入系统时间。200Smart掉电后如果没有超级电容或者扩展电池模块,时钟会恢复到默认值,导致时间控制全部失效。我们做项目时专门在初始化子程序里加了一段逻辑,判断年份字节如果小于2020年,就自动将时钟设置为2020年1月1日并触发触摸屏弹出窗口提示操作员校时。
4.3 时间与温度复合控制程序示例
单纯到时间就启动加热显然不够安全,还要考虑温度情况。我把时间加热控制定义成一个状态机,包含四个状态:等待状态、预热状态、正常控制状态、保温状态。
等待状态:系统未到预热开始时间,或者用户手动关闭时间加热功能,此时只做防冻保护,二次侧供水温度低于5℃时强制启动循环泵防止管道冻裂。
预热状态:到达预热开始时间,且二次侧供水温度低于预热目标温度时,开启一次侧加热泵或打开电动阀,使系统快速升温。预热结束条件有两个,达到预热目标温度,或者预热持续最长时间到。两个条件任一满足就退出预热状态,没必要继续烧下去,能耗是最重要的制约。
正常控制状态:白天时段,温度控制由前面说的电动阀调节逻辑完成,控制目标是维持二次侧供水温度在用户设定值附近。
保温状态:到达夜间保温时段后,关闭一次侧加热设备,循环泵保持运行,只在二次侧供水温度低于保温下限温度时才短暂启动加热。
这个状态机的程序实现用一个字节变量加比较指令就可以完成,不需要复杂的跳转。每个扫描周期先判断当前时间落在哪个时段,再根据时段设置不同的目标温度和加热允许标志。程序里的时间设定参数全部放在V存储区,由触摸屏写入,用户可以根据季节变化调整各时段的时间点,不用改PLC程序。
还有一个操作细节:状态切换时要复位相关定时器和累计计时器。比如从预热状态切到正常控制状态,预热累计时间必须清零,否则下次再进入预热状态,计时起点是上一次残留值,会导致此轮预热时间判断错误。这个坑我调试时碰到过,当时预热状态只进入一次就一切正常,但如果下午临时停炉后再次启动预热,预热时长被缩短了将近一半,排查了半天才发现是切换时没有清理累计定时器。
5. 昆仑通态MCGS组态与联调
5.1 通信连接配置
MCGS触摸屏通过串口和200Smart通信,协议选PPI。组态时在设备窗口里添加“西门子S7-200”驱动,设置对应的COM口、波特率、站号。200Smart的PPI端口缺省站号是2,MCGS这边一定要把设备地址改成2,这个站号对应的是200Smart CPU上的站号设置,如果通信不上,首先要查的就是站号是不是对的。
还有一个通信要点是波特率。200Smart出厂默认PPI波特率是9.6kbps,MCGS设备配置要同步设置成9.6k,位数8,无校验,1停止位。我在现场遇到过一次通信经常掉线的情况,排查到最后发现是PLC侧PPI端口波特率被之前调试人员改成了187.5kbps,而触摸屏侧的配置还是9.6k,通信能连上但极不稳定,而且出错后无法自动恢复,需要断电重启触摸屏才能重新通信。改回一致的波特率后问题彻底消失。
通信正常后,设备窗口里需要添加需要读写的PLC变量。MCGS的变量体系和PLC地址是一一对应的,但要注意数据类型匹配:200Smart的V存储区分字节、字、双字,一个32位浮点数在MCGS里定义成Float类型的变量,通道地址要对应到V区的起始字地址。如果定义错了数据类型,读回来的数据会完全乱掉,这是组态调试中常遇到的问题。
5.2 画面布局与变量监控
MCGS的画面组态我分成四个主要窗口:系统总览、自动控制、手动控制、参数设置。
系统总览画面上用图库里的管道阀门图片做一个简单的工艺流程图,把各温度测点、压力测点的实时数值以文本框的方式动态显示,运行状态用指示灯指示。这个画面主要用于日常巡检,值班员扫一眼就能判断系统是否正常运行。
自动控制画面放二次供水温度设定值、一次侧电动阀开度给定值、PID参数、各加热时段的时间设定。这些参数全部关联到PLC的V存储区,修改后需点击保存按钮,通过脚本将参数写入PLC的保持性存储区。这里要特别说明,200Smart的V区只有一部分是断电保持的,默认是V区最后512个字节根据系统块设置决定,我们在系统块里把部分V区设置为断电保持区域,把时间设定参数全部放进去。否则用户修改好时间断电重启后参数丢失,会认为是程序故障,这是必须提前规避的。
手动操作画面则是每一个泵和电动阀的启停按钮、状态指示、故障复位按钮。按钮关联的变量是PLC里定义的手动启动标志和手动停止标志,在程序中用置位复位指令锁定状态,而不是靠按钮的瞬时按下状态直接驱动输出。这样即使通信瞬间刷新有延迟,按钮操作也不会丢失。
5.3 屏保设置、配方下发与变频器监控
有一类需求经常被问到:昆仑通态触摸屏的屏保画面怎么设置。MCGS里实现屏保功能是通过系统设置的“窗口切换”功能。在运行策略里新建一个用户策略,策略中设置一个窗口切换动作,当系统无操作持续时间达到设定时长后,自动切换到指定的初始窗口。实际操作中,我把系统总览画面设为初始窗口,超时60秒无触摸操作就自动切回总览,避免长时间停留在参数设置画面忘记退出带来的误操作风险。
配方功能是实现参数批量下发的一个非常实用的功能,尤其适合换热站这种季节转换时参数需要整组调整的场景。MCGS的配方是把一组与PLC地址关联的变量值记录在触摸屏内部,调用配方时通过脚本将配方值写入对应的PLC地址。比如冬季配方、夏季配方、春秋季配方,每种配方包含所有时间设定参数、目标温度、回差设定。切换季节时操作工只需要在配方面板选择相应配方,一键下发,所有参数瞬间更新。关键点在于配方变量的地址定义必须和PLC参数地址严格对应,而且配方向PLC写入的脚本要在数据处理完成后给出一个“写入完成”标志,PLC收到标志后立即执行一次参数校验子程序,核对参数范围是否合理,不合理则拒绝执行并报警。
说到变频器监控,有些项目里的循环泵或补水泵配置了变频器,需要在触摸屏上监视变频器的输出电压、电流、频率。实现方式取决于变频器是否支持Modbus协议。如果变频器支持Modbus RTU,可以直接通过PLC或者触摸屏的通信口按Modbus协议读取变频器寄存器。在200Smart里做Modbus主站读取,调用MBUS_CTRL和MBUS_MSG指令即可,将读回来的频率、电流、电压数据放到V区,MCGS再读出显示。在MCGS画面上做一个简单的文字显示框,关联电压、电流、频率变量,加上数据刷新功能,就实现了监视变频器输出电压的画面。
这里要提醒一个寄存器映射的问题:不同品牌的变频器寄存器地址差异极大,即便是同一个品牌,不同系列的型号地址表也可能不同。组态前一定要到变频器手册里查对应参数的Modbus寄存器地址和数据格式,有些是16位无符号整数,有些是32位浮点数,还有些要乘以系数才是实际工程值。三相输出电压如果直接读寄存器值是当前实际输出电压数值除以10的倍数,不处理直接显示就会差一个数量级。
5.4 与200Smart的通信调试心得
最后聊聊通信联调时的一些经验。200Smart和MCGS之间如果通信不稳定,除了前面说的站号和波特率问题,还有一个经常被忽略的点是通信线。PPI通信是RS485半双工,需要A、B两条线正确连接。触摸屏端通常标注A+和B-,PLC端PPI口的3号脚为RS485+,8号脚为RS485-,接线时A+接3脚,B-接8脚。如果A、B接反,通信表现为时断时续,触摸屏上有的变量能读取,有的变量读数为0。在项目现场要养成用万用表确认接线极性的习惯,别指望靠软件的通信诊断功能来反推接线错误,效率低得多。
通信参数全部调通后,建议做一次连续48小时的稳定性测试,期间不要操作触摸屏,让它自动运行并记录数据变化。如果48小时内通信没有中断,说明通信链路可靠,可以交付用户;如果有过中断,检查通信线屏蔽层接地是不是单端良好,以及通信线是否和动力线穿在同一根管子里。
6. 调试中的常见问题与排查技巧
6.1 模拟量读数异常问题速查
模拟量问题是换热站调试中最多的一类问题,我把常见现象和排查思路整理成表格,现场对照处理效率最高。
| 故障现象 | 可能原因 | 处理办法 |
|---|---|---|
| 读数为0,无变化 | 信号回路断线、变送器未供电 | 万用表量变送器输出端电流,确认是否在4-20mA范围 |
| 读数始终是27648上限 | 信号接线极性接反、信号线短路 | 检查A+、B-极性,检查屏蔽层是否碰到信号线 |
| 读数偏大,同时温变不准 | 量程转换公式未减去4mA下限偏置 | 确认按(原始值-5530)/(27648-5530)计算 |
| 读数上下跳动大 | 变频器干扰、电源纹波大 | 加模拟量滤波,检查屏蔽接地,电源加滤波电容 |
| 读数到最大量程后不再变化 | 变送器量程选择不对 | 确认变送器量程和PLC程序里量程上下限一致 |
| 某一通道读数固定值 | 对应通道损坏、组态地址配错 | 用编程软件在线监视AIW地址,确认地址是否有冲突 |
这里特别说明一下地址冲突的问题。200Smart的AIW地址是由模块安装位置决定的,如果CPU上有两个模拟量扩展模块,第一个模块的通道地址通常是AIW16~AIW22,第二个模块的通道地址依次往后排。但有些情况下硬件组态和实际安装顺序不一致,比如触摸屏组态里将第二个模块的通道地址分配给了第一个模块的物理通道,读数就会出现张冠李戴的现象,把温度信号显示在压力位。排查时用在线监视功能看每个AIW的实时变化,确认信号对应的通道是否正确。
6.2 模式切换与输出紊乱问题
模式切换时输出紊乱是最危险的问题,可能造成设备误动作。典型的故障场景是自动切手动后,操作员在触摸屏上启动一台泵,按下启动按钮时泵不转,松开按钮时泵反而转了几秒。原因通常是程序里使用了瞬时按钮信号直接驱动输出,而没有做置位/复位自保持,按钮信号消失后输出点跟随断开,但因为触摸屏刷新延迟出现输出抖动。解决办法就是前面说的,手动按钮必须通过置位指令保持状态,再通过停止按钮复位。
另一个常见问题是自动模式切换到手动模式后,设备自动启动。原因是在自动逻辑里,输出条件满足时把输出点一直置1,切换到手动模式后,自动逻辑清0,但手动逻辑中还没有启动标志,输出点被其它联锁条件误触发。排查时先检查切换前自动逻辑输出的状态,再检查设备输出物理点是否有中间继电器接点粘连。如果中间继电器外壳烧黑,果断更换继电器,不要只修改程序,硬件问题不改的话会反复出现。
6.3 时间加热控制不生效的处理
时间控制不生效,第一反应查PLC实时时钟是否准确。现场经常遇到的情况是PLC时钟比实际时间慢了几分钟甚至几个小时,操作工前一天设定好时间,第二天发现该启动没启动,误以为是程序逻辑坏了。解决办法是让触摸屏在一开机时自动从系统时间同步到PLC时钟。MCGS里可以通过脚本在校时窗口写入当前系统时间到PLC的V区,PLC执行校时子程序更新系统时钟。
还有一种容易忽略的情况是时间段定义的边界条件。比如预热时段定义为04:30到06:00,如果程序判断当前时间大于等于04:30且小于等于06:00才允许动作,那么正好在04:30这个整点时刻,由于PLC扫描周期和READ_RTC的最小时间分辨率是1秒,会出现某个扫描周期正好读到04:29分59秒而不满足条件,下一个扫描周期读到04:30分00秒就满足条件,中间有一个周期的延迟。这个影响不大,但如果边界条件是04:59分59秒这种非整点时刻,判断语句就更容易出错,调试时务必把边界设成整分,并且预留一两分钟的缓冲,不要在用户设定的临界时间点卡得太死。
6.4 下载程序与在线监控注意点
200Smart使用Micro/WIN SMART软件编写和下载程序,下载时如果把CPU切换到RUN状态下载,程序会暂时停止运行,这在换热站运行期间是绝对禁止的操作。下载前必须让现场设备全部处于停止状态,尤其是循环泵不能运行,否则下载瞬间数字量输出全部清零,泵突然停机可能引发水击或者设备损坏。
在线监控时,如果要修改正在运行的定时器、比较器的设定值,尽量通过触摸屏修改V存储区的参数实现,而不要在线强制修改程序中的常数值。因为一旦程序重新编译下载,常数值会恢复初始状态,而V存储区的修改不受程序下载影响,操作更安全。
7. 一点个人总结
这套系统从设计到交付大概用了一个月时间,其中程序编写和触摸屏组态加起来一周左右,剩余时间基本都花在现场调试和参数整定上。做下来最深的体会是,换热站这类项目逻辑上并不复杂,真正考验程序的往往是一些细节:模拟量断线保护、模式切换时序、时间边界判断、参数断电保持。这些细节只要有一个没考虑到,到了现场就会变成一次让人头大的故障排查。
对于准备用200Smart和昆仑通态做类似项目的朋友,我的建议是先在办公室把工艺流程图捋清楚,把所有传感器和设备的地址表做出来,再动笔写程序。程序结构上尽量把模拟量处理、模式管理、时间控制分开做成独立子程序,将来不管是改控制参数还是扩展测点都方便。调试阶段耐心做48小时连续运行测试,同时观察触摸屏上各个变量的实时刷新情况,很多通信问题和地址错误都会在这段时间里暴露出来。
最后分享一个小技巧:我在每个模拟量通道的量程转换子程序里都加了一段“断线跟踪”逻辑,一旦某些关键温度信号断线超过5秒,程序会自动将对应测点的显示值置成故障值并且给出声光报警。这个操作在实际运行中救过我们好几次,很大程度避免因传感器故障导致误加热或误停机。做法很简单,比较AIW原始值是否低于5500,持续累计一定时间后置位断线标志即可。这个小功能成本极低,但对系统安全运行的价值非常大,值得在今后的同类项目里坚持用下去。