一台ABB ACS510变频器搞定恒压供水,很多人第一反应是“那还得配个PLC才像回事”。实际上做过现场的人都知道,ACS510本身就内置了一套挺完整的恒压供水控制逻辑,就是SPFC宏。所谓“无PLC的触摸屏通讯程序”,指的是把压力PID、启停逻辑全部交给变频器自己做,触摸屏只负责给人看、给人改参数,两边通过RS485走Modbus RTU协议直接对话,中间不插PLC。这套玩法我大大小小做了好几个项目,单泵恒压供水、小规模多泵轮换都试过,稳定程度和调试速度比传统“PLC+变频器”省了不少事。
先给不知道SPFC是什么的朋友补个概念:SPFC(我看不少同行写成SPFS,ABB手册里的标准宏名其实是SPFC,全称是“恒压供水控制宏”)是ACS510出厂预设的一组端子定义、参数默认值和控制逻辑的组合。你只要把变频器参数9902设为对应SPFC宏,它就自动把AI1、AI2、DI1、继电器输出这些端子通道安排成适合恒压供水的接法,同时把内部的PID调节器激活。这意味着压力闭环直接在变频器内部完成,没有外部PLC也能做到稳定控压,触摸屏只是把设定压力和目标压力替人传给变频器而已。
这个项目我做的时候把整个架构拆成三块:变频器参数侧、触摸屏组态侧、调试维护侧。下面把每一块怎么落地、用什么参数、踩过什么坑,都按现场操作顺序写清楚。
1. 为什么用SPFC宏而不外挂PLC
1.1 先搞清楚SPFC宏帮你干了什么
ACS510的应用宏不止SPFC一个,还有ABB标准宏、PID控制宏、PFC多泵宏这几类。SPFC和PID控制宏的区别在于,SPFC专门为“单泵恒压供水”做了默认优化:它的DI端子默认定义成启动/停止、内部外部给定切换,继电器输出默认分配成故障输出和运行指示,AI1默认是压力设定值输入,AI2默认是压力变送器反馈输入。你连外部PLC控制器都不用,只需接上启动信号、压力变送器、电源,把运行方式选到SPFC,它就自动跑PID调节。
SPFC宏内部实际是个带反馈闭环的PI调节器。压力设定值经过内部斜坡到PI控制器的目标端,压力变送器的电流信号直接作为反馈值。PI输出对应变频器的输出频率,压力低了就加速,压力高了就减速,整个过程在变频器内部循环完成。触摸屏在这个架构里不做PID运算,只负责把用户设定的压力值和实际压力值搬到人眼前,避免每次调压力都要跑到电控柜按键面板上去按。
省掉PLC之后,最直接的好处是成本和故障点同步下降。一套小型PLC加上编程费用,少则大几百多则一两千,对于单单恒压供水这个控制需求来说,这份开销占整个电控柜比重不小。而且PLC与变频器之间的通讯、PLC内部的PID程序、PLC的供电回路,都是新的故障可能,现场排查的时间成本也得算进去。用SPFC宏之后,压力PID跑在变频器内部,抗干扰和可靠性由变频器保证,外部通讯出问题了顶多是不能远程监视和修改设定,水泵本身还能按原参数维持运行。
1.2 这套方案解决的核心场景
我碰到过三种应用场景,选SPFC是最合适的:第一种是小型住宅小区二次供水改造,控制柜只带一台主泵,压力设定值在柜门触摸屏上直接调,不需要复杂的报警管理。第二种是临建工地的临时加压泵,工期短、调试时间紧张,变频器自己带PID可以快速投运,不需要等PLC程序写完。第三种是原有用PLC做的系统坏了,现场找到一台备用ACS510想临时顶上去,把应用宏切到SPFC再配上触摸屏,老系统很快就能恢复。
SPFC宏的边界也要讲清楚,它不是万能的。单泵恒压没问题,多泵轮换或者一用一备这种泵组逻辑,SPFC并不擅长,那是PFC宏或者外部PLC的活。如果现场要求两台以上泵自动切换、轮换运行、循环启动,别硬把SPFC往上升,老老实实再考虑PLC扩展方案。项目开始的时候先把泵的数量和运行模式定死,就算到后期再加泵,该换方案就换方案,省得半路改架构。
2. 通讯架构与接线基础
2.1 变频器端子的正确接法
ACS510上跟SPFC宏相关的端子主要分两类:控制逻辑端子和通讯端子。控制逻辑端子集中在模拟量输入和数字量输入区,SPFC宏默认排列是这样的:AI1接压力给定信号(0到10V或4到20mA),AI2接压力变送器反馈(一般是两线制4到20mA),DI1接启动/停止信号,DI2接内部外部给定切换,继电器RO1输出故障信号,继电器RO2输出运行信号。这些端子定义选SPFC宏后自动生效,不需要在参数里逐条重新映射,前提是接对端子号,别接到别的备用端子上。
RS485通讯端子则要单独说。ACS510的Modbus通讯走的是变频器控制板上标着35、36、37的那组端子,35接RS485正端也就是A或者D+,36接RS485负端B或者D-,37接通讯地线DGND。触摸屏的RS485端子同样分正负,接的时候要按设备说明书把屏的A接到变频器35、屏的B接到36,串一遍电阻也最好加上屏蔽双绞线的屏蔽层单端接到37。很多通讯不稳定的现场,根源就是正负接反或者屏蔽层两端都接了地,产生地环路干扰,轻则通讯时断时续,重则完全连不上。
接线用屏蔽双绞线是比较稳妥的做法,线径不低于0.5平方毫米,距离不太远的话走普通屏蔽线问题也不大。超过50米就建议用带屏蔽的RS485专用线,并且只在变频器这一侧单端接地。出厂默认通讯参数是波特率9600、地址1、无校验8位数据一位停止位,实际组态时给变频器分配不同站号,注意端子上并联的变频器数量不超过32台,否则负载太重影响通讯电平。
2.2 触摸屏怎么在物理层接进来
这里的触摸屏不是通过串口服务器或者转换模块中转的,而是直接把屏上的COM口接到变频器的RS485端子。现在常见的人机界面,像昆仑通态、威纶通、步科这些,都自带RS485接口,硬件上做一个Modbus RTU主站绰绰有余。屏作为主站主动轮询,变频器作为从站被动响应,一条总线上可以把多台变频器并联起来分别设置站号。
接线顺序上有个习惯值得推广:到变频器这头先把通讯线并联好再接到端子,而不是一台一台往端子上堆线。并联接头要用端子排或者可靠的压线端子,避免两根线拧在同一个螺丝孔里虚接。线缆颜色也统一,比如常把棕线做正、蓝线做负,每台柜子里都按这个来,调试时少很多找线时间。屏蔽层短引到DGND端子,然后整条线缆的屏蔽只在变频器这侧接地即可。
如果现场有干扰源,比如变频器输出侧的大功率电缆和通讯线走在同一个桥架,那最好定期检查通讯误码率。ACS510在参数里能看到通讯诊断信息,实在不行就把通讯波特率降到9600,虽然速度慢一点,但抗干扰能力会强不少。正常情况下触摸屏轮询几十个寄存器点,9600波特率完全够用。
3. 触摸屏通讯程序的实现
3.1 先背熟变频器的Modbus寄存器映射
无PLC方案里触摸屏程序的核心就是寄存器读写。ACS510走Modbus RTU时,有几个关键地址我是长期在用的:40001是状态字,40002是控制字,40004是外部给定1,40005是外部给定2,还有几个数据地址用来读实际频率、实际电流。变频器的控制逻辑里,只要把给定源分配到串行通讯给定,那么触摸屏往40004写一个百分比数字,变频器就会把这个数字当成频率或者压力给定去执行。
要注意寄存器地址和协议地址的区别,触摸屏组态软件里通常填的是4x-0001这种形式,对应Modbus的保持寄存器40001。而实际报文里协议地址是寄存器编号减一,这个转换关系软件会自动处理,不需要手工算。但量程换算必须自己做,ABB变频器把0到百分之百映射成0到10000的整数写入,只有少数情况用-32768到32767那种折半结构,我用过的ACS510基本是0到10000对应0到100%。
状态字40001和控制字40002也要搞清楚。控制字往40002写1是启动、写0是自由停车,这是ACS510串行控制里最常用的命令。状态字不同数值的含义比较繁琐,比如0102是运行、0503是准备好,但其实不必死记所有状态值,在触摸屏上把状态字做成十六进制数值显示,再配合状态字各个bit的含义:bit0表示就绪、bit1表示运行、bit7表示故障,画面逻辑通过位读取来判断当前状态,比对着一个完整数值判断直观得多。
3.2 驱动画面和脚本的设计思路
触摸屏程序分三块做:主监控画面、参数设定画面、故障记录画面。
主监控画面放这四个元素:当前压力数值(从40005或专门的反馈寄存器读)、设定压力数值(本地触摸屏内部寄存器,同时写入变频器给定)、运行状态指示灯、启停按钮。启停按钮是位开关,按下时给40002写1,弹起时写0,或者做成两个独立按钮分别发送启动和停止指令,位置固定不要来回跳,操作工用起来更顺手。
参数设定画面主要放压力设定值输入框和PID参数调整窗口。压力设定值输入框绑定的是触摸屏本地寄存器,比如LW100,再用一个脚本把LW100转换成百分比写入40005。为什么不在输入框里直接绑定变频器寄存器?因为HMI数值输入控件直接写寄存器的话,换算系数不好处理,万一操作工输入的是以bar为单位的实际压力值,柜内程序再算百分比就要多做一步。我一般是在定时脚本里每500毫秒做一次转换,既保证实时性,又不至于太频繁占通讯带宽。
故障记录画面更简单,通过状态字判断故障位后,在屏上翻出故障代码,对照ACS510手册的故障表给出中文描述。变频器的当前故障码读取地址一般在40010之后的几个寄存器里,具体哪个地址以手册为准。我的习惯是把故障码和运行状态放在同一个画面,调试时一眼能看到“报过载还是一段时间失速”。
3.3 压力给定和频率显示的换算方法
这里最容易搞乱的就是量程换算,我写出来给大家参考。假设现场压力变送器量程是0到16bar,输出4到20mA,变频器的压力设定值内部按0到100%表示。那么当操作工在屏上输入10.5bar时,对应百分比是10.5除以16再乘以100,约等于65.6%,换算成寄存器数值就是6560。
// 触摸屏脚本示意(伪代码) 压力百分比 = 操作输入压力值 / 压力变送器量程 * 10000 40005 = 压力百分比频率显示反过来算。变频器实际运行频率一般通过读取实际输出频率寄存器得到,假定最大频率50Hz,寄存器满量程对应10000。屏幕显示值时用50乘以读到的数值再除以10000,就得到当前的Hz。同样的换算逻辑用在电流、压力反馈上,只要把“满量程对应什么工程值”换算关系理清,触摸屏上所有数据都是一条公式的事。
在威纶通和昆仑通态这类组态软件里,写脚本的触发方式可以选“定时执行”或者“按钮触发”。我建议压力给定换算用定时执行,每300到500毫秒执行一次,不要去等操作按确认键才发送,这样触摸屏上改完设定压力值,变频器很快就能收到,手感上更像直接调节。转换脚本里最好加个限制,超过量程上限就钳位到满量程,低于下限就钳位到0,防止手误把给定压力写到超大量程导致水泵长时间全速运行。
4. 参数设置与现场调试
4.1 必须改的一组核心变频器参数
ACS510用SPFC宏跑恒压供水,上电之后要改的参数没几个,我一般按固定顺序设置:
9902应用宏选SPFC;1001外部控制给定源改为串行给定;1102这一组PID给定源选定为从Modbus给定;5301通讯波特率、5302站号、5303奇偶校验这些通讯参数要和触摸屏匹配;再就是加减速时间、最大频率、电机额定电流这些电机侧参数。最后把压力反馈对应到AI2的量程关系核对一遍,包括AI2信号类型选电流型4到20mA,以及对应线性换算系数。
每一台ACS510和触摸屏的参数值现场都要单独核对,不同厂批次的默认值可能不完全一样,尤其是通讯格式。我自己就遇到过一台变频器里通讯参数是偶校验,触摸屏设成无校验,怎么调都连不上,最后把屏自由协议格式逐位核对才发现差一个bit。所以参数设置这件事不能只过一遍,最好把所有跟通讯有关的参数列成一张表,一条一条对着打钩。
4.2 PID参数整定的现场手感
PID整定是恒压供水调试里最考验耐心的环节。SPFC宏里PID增益和积分时间调整到位以后,压力表指针或者触摸屏曲线应该呈现出一种“缓慢接近设定值、轻微过冲又回来、很快稳定”的状态,而不是快速抖动或者慢吞吞半天跟不上。
我调试的起步经验是:先把增益放到比较小的值,比如0.5到1之间,积分时间放到稍长,比如30到60秒。投运后观察设定压力从0拉到目标值时,变频器频率是不是能比较平滑地往上爬。如果压力到设定值附近后反复震荡,多半是增益偏大,往下调30%到50%再试。如果压力半天上不去,频率增长缓慢,或者到设定值后频率收不住继续冲高,除了检查增益外,还要看看积分时间是不是太长,压力反馈数字是不是跳动太厉害。
现场还要注意一个容易忽视的点:供水管网里的水压变化相对慢,PID调节周期不需要很快,但SPFC宏内部PID扫描频率是固定的,所以不要指望外部再用触摸屏做一个PID去叠加。外部越少干预越好,PID参数放在变频器内部动,触摸屏只做监视和给定修改,逻辑层次干净。
4.3 休眠唤醒和压力反馈处理
SPFC宏里面有休眠和唤醒相关的控制逻辑,这个功能对于夜间用水量小的场合特别有用。水管压力保持到一定程度,流量很小,泵还在低速运转,白白浪费电。开启休眠功能后,当压力满足条件且持续一段时间后,变频器会让泵停机,等压力掉到唤醒压力以下时再自动启动。
有些同行上来就把休眠参数设得太敏感,睡眠和唤醒来回切换频繁,反而把水泵继电器搞坏或者对机械密封造成冲击。我的做法是休眠延时设长一点,比如压力达标后保持10分钟才进入休眠,唤醒再留一个合适的死区,比如设定压力是10bar,唤醒压力设为7到8bar,让泵一次启动就能持续供一段时间,避免频繁点动。
压力反馈信号的处理也有细节。两线制压力变送器接AI2,如果信号线和动力线布线靠太近,反馈数字会跳,导致PID输出波动。这种情况先在变频器模拟量输入滤波参数上设个0.1到0.5秒的滤波时间,从源头上把干扰滤掉。但滤波时间又不能设太大,否则PID看到的是一个严重滞后的压力值,调节起来动作迟钝,管网压力都快超压了频率还在往上加。
5. 常见通讯故障与现场排查
5.1 触摸屏完全连不上变频器
这应该是出现概率最高的故障。排查顺序按硬件层到软件层来:先确认触摸屏COM口输出的是RS485而不是RS232,不少老款屏的COM口默认RS232,需要拨码或者组态里切换到RS485模式。再用万用表量一下变频器通讯端子A、B之间的电压,正常空闲状态下RS485应有2到6V左右的压差,没有电压可能是变频器通讯口没工作或者接线松动。
如果电压正常还是连不上,找一根USB转RS485线,用电脑串口调试助手直接发Modbus RTU报文,往40001发个读取指令看变频器有没有应答。这一步能快速区分是变频器问题还是触摸屏组态问题。应答正常的话,问题基本在触摸屏的参数配置,比如波特率、校验位、站号、寄存器格式总有一项对不上。组态软件里Modbus设备类型也要选对,有些屏要把数据类型设为16位位元或者32位,读出来数值才会正常。
5.2 通讯时好时坏或偶发断线
偶发断线比完全连不上更恼人。主要原因我总结了三种:一是接地不当形成地环路,二是通讯总线距离长且没有终端电阻,三是电源干扰严重。地环路问题如前所述,屏蔽层单端接地能解决大半。距离长的情况,在总线两端各加一个120欧终端电阻能有效抑制信号反射,很多项目把这东西省了,到现场调试就会来来回回吃噪声亏。
还有一种隐蔽情况是触摸屏和变频器供电来自不同回路,变频器启动时造成电源压降,触摸屏瞬间复位,通讯自然跟着中断。这种故障表现是系统运行到启动瞬间才断连,运行时反而正常。测出来是这个原因的话,给触摸屏加个隔离电源或者电源滤波器,往往立竿见影。
5.3 调试中的其它坑
PID参数怎么调都稳不住的时候,先别急着改参数,把触摸屏上的压力读数跟现场标准压力表对一下,经常是压力变送器两个线接反了或者量程配置不对,导致反馈信号满量程往反方向走。变频器会以为自己一直在超压,频率持续拉低,看上去就像PID失控。
还有一个经验是不要多设备共用一条RS485线却把站号设置重复,只要有重复站号,通讯报文就会互相冲突,表现歇斯底里的乱读或者某个设备掉线,这种问题在单台上电时完全正常,一并联就出问题,排查起来费时间。我的习惯是施工记录上把每台从站的站号、线色、端子的对应关系画表格留档,后面维护换设备不用重新猜。
最后提醒一句:无PLC触摸屏直接控变频器这个方案,触摸屏掉电或者通讯线断掉的时候,变频器会按设定参数保持运行或者正常停机,不会引起泵机失控,这是SPFC宏本身带安全性的体现。但前提是启停信号还是通过硬端子DI1给的,如果启停也全部依赖通讯,那就得在通讯超时参数里设一个合理的值,防止通讯断了泵却一直转。做这套方案时,启停我还是优先用硬接线,触摸屏做监视和设定,逻辑可靠性高很多。
这套玩法我一直觉得是控制系统里的“轻量级选手”,不追求大而全,但胜在务实。后来我又在单泵基础上扩展过一次,用了PFC宏做多泵循环,核心通信思路和SPFC完全一致,可见把寄存器读写和参数组态吃透,换一种宏只是换一份参数清单而已。真要说麻烦的地方,反倒是通讯干扰和量程换算这些小细节,提前按文章里的习惯处理,调试一次就能顺利跑完。