1 内模原理与重复控制
内模原理的表述:在一个控制系统中,如果控制器的反馈来自被调节的信号,且在反馈回路中包含被控信号的动力学模型,那么整个系统是稳定的。内模原理的本质是是把外部信号的动力学模型植入控制器以构成高精度的反馈控制系统,这样的系统能够无静差的跟踪输入信号。
对于阶跃信号l(t),其拉斯变换为1/s,所以包含PI控制器可以无静差的跟踪阶跃信号。对于交流信号,其拉斯变换为
所以PI控制器是无法无静差的跟踪正弦信号的。PR控制器可以无静差的跟踪交流信号,PR控制器的传递函数是
对于周期性的重复信号,典型的是带RCD负载的时候出现的周期性的电流扰动。定型的RCD负载的电流信号波形如下图:
设重复信号周期为L,则其信号模型可以表示为
其离散传递函数表示为
其中N为一个周期的采样次数。包含上述内模的控制器就是重复控制器,它可以无静差的消除周期信号。
2 重复控制器的结构
重复控制的结构如下图所示
对于上图框图中的重复控制器,受控对象是P(z),C(z)是补偿器,包括相位补偿和幅值补偿,为了简化,可以取C(z)等于
Q(z)是为了增强系统的稳定性,是为了让系统的闭环极点为了单位圆内,一般去成小于1的常数,取Q(z)=0.95,重复控制器的传递函数H(z)等于可以
3 重复控制编程实现
重复控制传递函数为
写成差分方程形式为
N:一个周期内的采样次数
K:相位补偿次数
假设N=192,K=3,Kr=0.4,则用程序实现为:
const int N=384; float y[N]={0}; float e[N]={0}; float Kr=0.4; const int K=4; float err;//控制误差 float rpt; //err相当与当前拍误差,e[0]相当于err的前N拍 //同理rpt相当于当前拍重复控制的输出量,y[0]相当于rpt的前N拍 //计算误差err err=Vref-Vsample; //计算重复控制输出 rpt=y[0]*0.95+e[K]*Kr; for(int i=0;i<N-1;i++) { e[i]=e[i+1]; y[i]=y[i+1]; } e[N-1]=err; y[N-1]=rpt; err+=rpt;
4 逆变器重复控制Matlab建模
逆变器系统的Matlab模型如下。逆变器用单相半桥逆变桥拓扑结构,电池组分正负俩个电池组,每个电池组电压360V。逆变器输出电压有效值220V。电阻设置为6M,模拟空载电阻无穷大的情况。开关Breaker在0.5s时闭合,模拟突加RCD满载的情况。RCD电阻设置为6欧姆,电容设置为4000uF。
非线性负载模块详情
控制模块Control的详情如下。重复控制器采用嵌入式结构,嵌入在PI电压环前面。逆变控制采用电压外环PI控制,电流内环比例控制。1302是50%占空比,这个占空比补偿是用来是的半桥在无控制输入时输出电压保持为0。
重复控制模块的xiangq详情如下图。
5 控制仿真
只用PI-P控制不用重复控制时
输出电压和参考电压波形,之前俩个波形基本重合,到0.5s加了RCD负载后输出电压就比较糟糕:
输出电流波形,来看一下情况有多恶劣,电流峰值达到了200V:
输出电压THD,THD后面维持在10%左右:
采用重复控制以后
输出电压和参考电压波形
输出电压的THD,稳定在4.5%附近:
输出电流波形:
总结
可见重复控制对于抑制RCD负载的效果非常好,带满载的时候THD都基本能稳定在4.5%左右。重复控制可调参数主要有幅值补偿系数和相位补偿系数。幅值补偿系数太过小的时候,重复补偿强度会很弱,效果不明显。重复控制系数过大的时候,重复控制会引起震荡。最终效果以在实际机器上调试为准,不过跟仿真基本差不离多少。下次有时间可以做一个用StateFlow编程驱动的更精确的模型出来。仿真模型已上传CSDN,仿真模型下载地址:https://download.csdn.net/download/liuzhijun301/12008303