重要提醒:软件滤波不能替代硬件抗干扰(屏蔽、布线、共地、隔离器),软件只做抖动抑制、输出斜坡平滑。 场景:PLC 输出 4‑20mA 给变频器 AI,HMI 给定 0‑50Hz,避免 AO 输出剧烈跳变,抑制频率抖动。 ABB AC500(Automation Builder,Codesys),两种方案:①系统自带斜坡功能块;②手写 SCL 一阶低通滤波 + 限幅。
注意:模拟量输出 AO 模块本身没有硬件滤波,滤波逻辑写在 PLC 用户程序;变频器侧 AI 输入也要开启模拟量滤波,两者配合。
一、核心思路(AO 输出控制变频器频率)
流程:HMI 给定频率(REAL,0‑50Hz)→【软件滤波 / 斜坡平滑】→标度转换 → AO 原始值输出给模块。 不要把 HMI 突变的给定直接输出 AO,否则电流瞬间跳变,变频器转速抖动。
方案 1:使用 ABB 标准库 CtrlRampStep 斜坡平滑
库:ABB_Ctrl_AC500_Library → CtrlRampStep功能块,做输出斜坡,给定突变时输出缓慢跟随,抑制跳变。
变量声明
VAR
Freq_Set_HMI:REAL:=0.0; // HMI频率给定 0‑50Hz
Freq_Ramp_Out:REAL:=0.0; // 斜坡滤波后输出频率
AO_Raw:DINT:=0; // AO原始输出,4‑20mA:5529~27648
RampFB:CtrlRampStep;
END_VAR
调用功能块 SCL
// CtrlRampStep斜坡块
RampFB.In:=Freq_Set_HMI;
RampFB.Step:=2.0; // 每周期最大变化量(Hz),数值越小越平滑;2~5Hz常用
RampFB.Mode:=1; // 1=斜坡生效;0=直通
RampFB();
Freq_Ramp_Out:=RampFB.Out;
// 限幅保护,钳位0‑50Hz
IF Freq_Ramp_Out>50.0 THEN Freq_Ramp_Out:=50.0; END_IF;
IF Freq_Ramp_Out<0.0 THEN Freq_Ramp_Out:=0.0; END_IF;
// 标度转换:0Hz→5529(4mA);50Hz→27648(20mA)
AO_Raw:=REAL_TO_DINT( (Freq_Ramp_Out /50.0)*(27648‑5529)+5529 );
// 写到AO通道,例如%QW2.0
%QW2.0:=DINT_TO_WORD(AO_Raw);
参数说明:
Step,现场干扰大设 1‑2;响应要快设 3‑5。 这个块本质是增量式斜坡,给定突然跳变,输出不会瞬间跳过去,直接抑制 AO 输出剧烈跳动。
方案 2:手写一阶低通 IIR 滤波(适合抑制高频微小抖动)
公式:Out(n) = Out(n‑1) + K*(In‑Out(n‑1))K 取值 0.05~0.2,K 越小滤波越强,响应越慢。
VAR
Freq_Set_HMI:REAL:=0.0;
Freq_Filt:REAL:=0.0;
K:REAL:=0.1; //滤波系数0.05~0.2
END_VAR
//一阶低通滤波
Freq_Filt:= Freq_Filt + K*(Freq_Set_HMI‑Freq_Filt);
//限幅
IF Freq_Filt>50.0 THEN Freq_Filt:=50.0; END_IF;
IF Freq_Filt<0.0 THEN Freq_Filt:=0.0; END_IF;
//再做标度输出到AO
AO_Raw:=REAL_TO_DINT( (Freq_Filt/50.0)*(27648‑5529)+5529 );
%QW2.0:=DINT_TO_WORD(AO_Raw);
方案 3:限幅突变滤波(过滤瞬间尖峰干扰)
只过滤突变,不改变正常响应速度。当给定和上次输出差值超过阈值,就拒绝突变。
VAR
Freq_Set_HMI:REAL;
Freq_Out:REAL:=0.0;
DeltaMax:REAL:=3.0; //允许单次最大变化3Hz
END_VAR
IF ABS(Freq_Set_HMI‑Freq_Out) > DeltaMax THEN
IF Freq_Set_HMI > Freq_Out THEN
Freq_Out:=Freq_Out+DeltaMax;
ELSE
Freq_Out:=Freq_Out‑DeltaMax;
END_IF;
ELSE
Freq_Out:=Freq_Set_HMI;
END_IF;
二、变频器侧必须配合设置
以 ABB ACS510/ACS580 举例:
模拟量 AI 输入滤波时间:参数
13.18 AI1滤波时间,设置 50‑200ms,滤除电流环微小抖动。不要把滤波设置过大,否则转速响应迟钝。
变频器内部加减速斜坡时间,建议 5‑10s。
逻辑分工:
PLC 软件滤波:抑制给定侧突变;
变频器 AI 滤波:抑制4‑20mA 线路带来的高频噪声。
三、调试要点
AO 原始量程:AC500 AO 模块 4‑20mA 标准原始:5529(4mA) ~ 27648(20mA),不要写错量程,否则频率偏移。
任务周期:把滤波程序放在固定周期任务,例如 100ms 周期任务,不要放在自由运行 OB1,否则滤波效果不稳定。
软件滤波参数不要调得极端大,否则 HMI 改频率,电机转速半天不跟随。
如果万用表测 PLC AO 输出电流本身就在抖动,优先排查硬件干扰,不要单纯加大软件滤波掩盖硬件故障。
四、完整推荐调试顺序
硬件:屏蔽双绞线、单端接地、强弱电走线分开;干扰大加装 4‑20mA 隔离器。
变频器 AI 模拟输入滤波 50‑150ms。
PLC 程序优先使用
CtrlRampStep做斜坡平滑,Step=2。观察转速抖动情况,微调 Step/K 滤波系数。
保留输出限幅,防止 AO 超量程。





