实战篇——变频风机恒压控制(非PID)

对于做通风或者废气处理行业的人来说,恒压控制可以说是比较基础的一个要求,通过控制调节风机变频器的频率,使得某一点的风压稳定在设定压力值附近。一般可以通过PLC的PID模块、带PID调节功能的智能数显仪、抑或是直接通过变频器的PID功能来实现。
对于带HMI的系统,我建议通过PLC来实现恒压控制,毕竟当工况有大的改变时,在触摸屏上更改参数什么的会比较方便。
这里我准备通过两篇文章,分别用PID控制和非PID控制两种方式来实现恒压控制。这期我们就用非PID的调节方式。

1. 风压的特性

首先我们要了解,如果以Pa为单位,风压的波动一般是比温度波动“刺激“得多的。给大家看看项目现场的记录。
在这里插入图片描述

可以看到,在风机频率固定的情况下,压力变送器测得的风压始终有一定幅度的波动。波动的幅度会受风速、管道直径、取样点是否在长直管段中间这些因素的影响。一般来说,波动幅度在±20Pa~±50Pa之间。该项目中黑线对应的测压点风管管径大,风速低,红线对应的测压点管径小,风速高。

2. 解决思路

风压的不稳定性会导致一个问题,如果以一个固定的压力作为调节目标,那变频器的输出频率在每个采样周期都会改变,这样显然是不符合实际使用需求的,这种情况下我们可以采取以下方法:
1、将风压取值由时间点的数值换为时间段的平均值,你第1s,6s,11s,16s,21s……时间点的风压值曲线跟1-5s均值、6-10s均值、11-15s均值、16-20s均值……时间段均值的风压曲线,明显是后者更加平稳。
2、允许风压在设定值附近小范围波动,此时无需改变变频器频率。
我们的调节逻辑如下:
在这里插入图片描述

当风压在设定值允许波动范围内时,风机频率不变;在范围外但差值不大时,每个周期频率略微增减;当风压离设定值差距比较大时,每个周期频率增减数值大一些。我这里就简单分了3段,当然,如果对时效性要求比较高,可以多分几段。

3. 编程

有了以上思路,那编程其实是非常简单的,我用SCL编程如下。

REGION 计算n秒风压均值
    "R_TRIG_1s"(CLK := "Clock_1Hz");    //系统时钟,1Hz
    IF "R_TRIG_1s".Q THEN
        "PE101_Sum" := "PE101_Sum" + "AIAO_Num".PE101;
        IF "Count" >= "Parameter".n THEN
            "Count" := 1;
            "PE101_Avg" := "PE101_Sum" / "Parameter".n;
            "PE101_Sum" := 0;
            "Change_M101_FREQ" := TRUE;
        ELSE
            "Count" := "Count" + 1;
        END_IF;
    END_IF;
END_REGION

REGION 根据风压改变风机频率
    "PE101_Deviation" := "PE101_Avg" - "Parameter".PE101_Set;
    IF "Change_M101_FREQ" THEN
        IF "PE101_Deviation" < -200 THEN
            "AIAO_Num".M101_FREQ := "AIAO_Num".M101_FREQ - 3;
        ELSIF "PE101_Deviation" > 200 THEN
            "AIAO_Num".M101_FREQ := "AIAO_Num".M101_FREQ + 3;
        ELSIF "PE101_Deviation" < -30 THEN
            "AIAO_Num".M101_FREQ := "AIAO_Num".M101_FREQ - 0.5;
        ELSIF "PE101_Deviation" > 30 THEN
            "AIAO_Num".M101_FREQ := "AIAO_Num".M101_FREQ + 0.5;
        END_IF;
        
        //设置频率上下限
        IF "AIAO_Num".M101_FREQ < "Parameter".M101_FREQ_Min THEN
            "AIAO_Num".M101_FREQ := "Parameter".M101_FREQ_Min;
        ELSIF "AIAO_Num".M101_FREQ > "Parameter".M101_FREQ_Max THEN
            "AIAO_Num".M101_FREQ := "Parameter".M101_FREQ_Max;
        END_IF;
        "Change_M101_FREQ" := FALSE;
    END_IF;
END_REGION

当然,如果经常会用到的话,把他做成一个程序块也是很方便的。
今天抽空做了个块,发现杂七杂八的接口变量还真不少。
接口和程序如下:
请添加图片描述

REGION 计算n秒风压均值
    #R_TRIG_1s(CLK := "Clock_1Hz");    //系统时钟,1Hz
    IF #R_TRIG_1s.Q THEN
        #PE_Sum := #PE_Sum + #PE;
        IF #Count_Num >= #N_s - 1 THEN
            #Count_Num := 0;
            #PE_Avg := #PE_Sum / #N_s;
            #PE_Sum := 0;
            #Change_FREQ := TRUE;
        ELSE
            #Count_Num := #Count_Num + 1;
        END_IF;
    END_IF;
END_REGION

REGION 根据风压改变风机频率
    IF #Change_FREQ THEN
        #PE_Deviation := #PE_Avg - #PE_Set;
        IF #Positive THEN   //取压点在风机后端,风机频率增加,压力值增大
            IF #PE_Deviation < - #Deviation_Value2 THEN
                #FAN_FREQ := #FAN_FREQ + #FREQ_Change_Value2;
            ELSIF #PE_Deviation > #Deviation_Value2 THEN
                #FAN_FREQ := #FAN_FREQ - #FREQ_Change_Value2;
            ELSIF #PE_Deviation < - #Deviation_Value1 THEN
                #FAN_FREQ := #FAN_FREQ + #FREQ_Change_Value1;
            ELSIF #PE_Deviation > #Deviation_Value1 THEN
                #FAN_FREQ := #FAN_FREQ - #FREQ_Change_Value1;
            END_IF;
        ELSE  //取压点在风机前端,风机频率增加,压力值减小
            IF #PE_Deviation < - #Deviation_Value2 THEN
                #FAN_FREQ := #FAN_FREQ - #FREQ_Change_Value2;
            ELSIF #PE_Deviation > #Deviation_Value2 THEN
                #FAN_FREQ := #FAN_FREQ + #FREQ_Change_Value2;
            ELSIF #PE_Deviation < - #Deviation_Value1 THEN
                #FAN_FREQ := #FAN_FREQ - #FREQ_Change_Value1;
            ELSIF #PE_Deviation > #Deviation_Value1 THEN
                #FAN_FREQ := #FAN_FREQ + #FREQ_Change_Value1;
            END_IF;
        END_IF;
        //设置风机频率上下限
        IF #FAN_FREQ < #FREQ_Min THEN
            #FAN_FREQ := #FREQ_Min;
        ELSIF #FAN_FREQ > #FREQ_Max THEN
            #FAN_FREQ := #FREQ_Max;
        END_IF;
        #Change_FREQ := FALSE;
    END_IF;
END_REGION

调用之,设定工况为:取压点在离心风机后端,测得压力为正压,需要通过调整风机频率将测压点压力稳定在800Pa,为了加速显示效果,设为每3s调整一次风机频率。风压在770830Pa频率不变,在600770Pa / 830~1000Pa,每次+/- 0.5Hz,在<600Pa / >800Pa,每次+/- 2Hz。风机频率在15~45Hz之间。
运行效果如下:
请添加图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值