详解PR控制器
详解PR控制器
1 PR控制以及使用PR控制用于单相离/并网逆变器
1.0 前言
在一个闭环控制系统中,可分为输入参考值、闭环控制器、执行机构、输出参数,反馈系数,这几个部分。
设计一款控制器,可以让系统的输出参数跟踪输入参考值,达到了控制的目的。在直流控制系统中,常用的控制器就是比例微分积分(Proportion Integration Defferentiation,PID)控制器了。然而,在交流系统中,PID控制器由于对高频信号的跟踪性能较差,并不能满足设计要求。而PR控制器,对特定频率信号的跟踪效果是良好的。
1.1 基本知识
PR控制器原理:
系统在双闭环控制过程中通常使用传统的PI控制器,但是电网在基波处的增益是有限值,PI控制器能够实现对直流信号的无静差追踪,却并不能在正弦信号的追踪过程中实现无静差,相应产生的稳态误差会造成追踪电流在有效值幅值和相位上的误差。电流有效值幅值上的误差,可以通过增大控制器的比例系数,相应的增大基波频率的增益来实现,但是并不能完全的消除误差,仍是有差调节。在幅值误差得到有效改善的情况下,系统的误差主要表现为相位误差,需要通过控制器的改进来减小相位的误差值。
根据PR控制器在跟踪控制方面的优势,用PR控制器替代PI控制器,在系统加载冲击性负载时,可以有很好的响应速度,保证了系统良好的动态稳定性。
下面给出 PR 控制器的传递函数以及对应的基波频率处的增益:
根据(1)(2)可以看出,由于基波频率处的增益趋于无穷大,使系统在追踪固定频率正弦信号时能够实现无静差追踪。
PR控制的传递函数形式为:
利用matlab绘制一下该传递函数的幅频响应,是在谐振频率ω = ωo的频率点增益无穷大,且没有相位滞后。
根据PR控制器上述的特性,我们可以设计谐振频率等于电网的角频率,使电网基波信号增益无穷大而其他频段增益小,从而应用在交流电路的控制中。
至于为什么不用传统的PI控制,其原因是PI控制器对于交流信号的控制性能差,对直流信号的跟踪性能好,直流信号增益无穷。因此DC-DC变换中多采用PI控制,而在交流中也可以通过DQ坐标变换,将需要控制的交流信号变换为直流信号,再用直流控制器PI控制旋转坐标系下的d轴分量与q轴分量,从而间接控制交流量的效果。
总而言之,PI是直流信号控制器,PR是交流控制器。
1.2 实际使用
实际应用中,虽然 PR 控制在基波频率处拥有较高 的增益,但是相角裕度较小,带宽较窄,引起系统发生振荡,容易造成控制器谐振频率的偏移,影响系统稳定。由于电网频率不会严格的等于50Hz,难免存在波动,因此前文提到的PR控制器在电网频率稍微偏离50Hz,增益大幅衰减。为增加相角裕度和带宽宽度、控制的鲁棒性,可以通过添加增益较高的低通滤波器实现,增加截止频率ωc,改写传递函数为:
修改后的PR控制器,亦称为准比例谐振控制(Quasis Proportional Resonant),在谐振频率附近的小范围内,仍然具有高增益,因此能适用电网频率波动的情况。
增加了2ωr之后,减小了谐振频率处的增益,但是却在谐振频率附近形成了一个具有较大增益的频带,由此减小频率偏移带来的影响。
你可以改变 ωrωr,通过在MATLAB中运行如下代码来亲自感受一下:
1 | s = tf([1, 0], 1) ; |
至此,我们发现应用准谐振控制时需要整定3个参数,Kp、Kr、ωc。先回顾PID的三个参数。
- P因子,决定响应速度。
- I因子,决定稳态误差。
- D因子,决定抗扰能力。
而通常在电力电子中多用PI控制,电力传动有PI也有PD。PI控制电机无静差调速,可用于舵机消除抖动。
式中:Kp,Kr,ωc 为控制器参数,ω0=314 rad/s。
PI 控制PR控制和准 PR 控制的频率特性如图所示。
kp=10,ki = kr = 100;
图中,PI 控制器在基波频率处的增益几乎为零,而PR控制器与准PR 控制器在基波频率处的增益却很大, 且具有相似的频率特性,可以在指定的频率下对稳态误差 进行有效的消除,故可利用准PR控制器来代替PI控制器,从而在消除幅值误差的同时消除相位误差,做到对指 定信号的准确追踪,消除了稳态误差。
波特图详细对比
下图是当Kp分别取为1、10、100,Ki=10时PI控制器的波特图(蓝色是Kp=1,绿色是Kp=10,红色是Kp=100)。
附上实现代码:
1 | % this is Matlab code: |
下图是当Kp=1,Ki分别取为1、10、100时PI控制器的波特图(蓝色是Ki=1,绿色是Ki=10,红色是Ki=100)。
附上实现代码:
1 | Kp=1 |
可以看到,PI控制器对高频信号的增益会较低,而对低频信号会有较大的放大作用。假如使用PI控制器对50Hz及以上(角频率314rad/sec)的正弦波进行跟踪,系统的跟踪特性会较差。而且会把低频噪声放大。
下图是当Kp分别取为1、10、100,Kr=1时理想的PR控制器的波特图(蓝色是Kp=1,绿色是Kp=10,红色是Kp=100)。
附实现代码:
1 | Kr=1; |
下图是当Kp=1,Kr分别取为1、10、100时理想的PR控制器的波特图(蓝色是Kr=1,绿色是Kr=10,红色是Kr=100)。
附实现代码:
1 | Kp=1; |
上面理想PR的波特图,可以看到就算调整PR的参数,波形也没什么大的变化。在实际使用中,可能进行实时调参的。图像变化这么小,跟踪效果也不会好。
接下来看看实际使用的PR控制器的波特图。
下图是当Kp分别取为1、10、100,Kr=1时实际的PR控制器的波特图(蓝色是Kp=1,绿色是Kp=10,红色是Kp=100)。
附实现代码:
1 | Kr=1; |
下图是当Kp=1,Kr分别取为1、10、100时实际的PR控制器的波特图(蓝色是Kr=1,绿色是Kr=10,红色是Kr=100)。
附实现代码:
1 | Kp=1; |
PI和PR的Kp作用类似,都是增大开环增益,增加控制精度。
Ki和Kr作用类似:降低系统稳态误差。
准PR控制器的设计
通过对准PR控制器的传递函数的分析,可以明确在 控制器参数的设计过程中,主要是对 Kp ,Kr,ωc 进行选 择,所以本文首先使用控制变量的方法来对各个参数的作用进行分析。
首先令 Kp2 =0,ωc =1,同时使 Kr 不断变化,对应的频 率特性如图 4 所示。
Kr1=10
Kr2=100
Kr3=1000
Kr4=10000
由图 可知,在参数 Kr 的变化过程中,只有控制器的增益相应的进行变化,并且随着 Kr 的增大,控制器的增益 增大的同时,稳定性不断加强,但却不会对控制器的带宽 造成影响。然而 Kr 增大到一定程度就会引起谐波分量的放大,所以要合理的选择参数 Kr,既满足基波频率处有较 大的增益,又能具有一定的衰减性。
令 Kp=0,Kr=1,ωc 进行不断变化,对应的频率特性如图所示。
Wc =1,
Wc =5,
Wc =15,
Wc =30,
Wc =50,
从图 5 中可得,在参数ωc 变化过程中,控制器的增益与带宽同时发生变化,说明ωc 对两者都存在相关性,虽然 随着ωc 的增大,控制器基波频率处的增益未发生改变,但 控制器非基波频率处的增益和带宽却同时变大,所以参数 ωc 的选择需要根据频率的波动和控制器带宽的需求共同决定。
在分析 Kp变化之前,先令 Kp =0,并将 jω=s 带入到H(s)中,得到
令上式中的ω0/2ωc=Q,则 Q 看作 PR 控制器谐振环节 的品质系数。
设电网允许的频率波动是±0.5 Hz,此时的控制器带 宽为 d=1 Hz,
,在 |Q (ω/ω0 -ω0/ ω) | =1 时可得频率之间相差带宽为 d = ωc /2πQ = ωc/ π,对应的ωc =3.14。
最后令 Kr=100,ωc =3.14,Kp 进行变化,对应的频率特性如图 所示
kp= 0.1 ,
kp= 1 ,
kp= 10,
根据上图 的变化,控制器的增益与带宽都受到 Kp变化的影响,但是随着 Kp 的增大,控制器增益在基波频率处的增益并未发生改变,只在非基波频率处增益相应的增 大,对应的带宽随着 Kp的增大而减小。所以随着 Kp 的 不断增大,使系统的抗干扰能力不断增强,但是并不能无 限增大,若 K p 2 过大会造成系统的振荡而影响其稳定性。计根据对控制器各个参数的分析,准 PR 控制参数的设 一般需要按照以下步骤设计[1 3]:
1)ωc值的确定,此值主要与系统截止频率的带宽需求有关(ωc可以调节谐振频段宽度,同时调节谐振峰值增益,ω0就是谐振频率点);
2)Kr值的确定,此值主要根据系统所需的峰值增益 的大小来进行取值(Kr可以调节谐振峰值增益,同时调节谐振频段宽度);
3)Kp值的确定,此值主要根据系统对比例增益的要求来选择最佳的Kp 值(Kp可以调节PR控制器的整体增益)。
按照上述步骤设计的控制器参数,使准 PR 控制器系 统具有很强的稳定性与抗干扰性,系统的控制效果达到最佳。根据本系统实际实验过程的需要,选择的准 PR 控制 参数如下:Kp=6.5,Kr =120,ωc=8,得到的准PR控制器 Bode 图如图 所示。
准 PR 控制的谐波补偿环
为了增强系统的抗干扰能力,在准 PR 控制器中增加各个主要频次谐波的谐振补偿环,使系统在谐波频率点处产生较大的增益,同时保证系统有足够的相角裕度和良好的动态性能。根据实际中谐振补偿方式的需要合理进行选择,谐振补偿环的传递函数为:
下面以 3 次谐波为例,如图所示。在准 PR 控制器 中添加 3 次谐波补偿环,并画出对应的 Bode 图。添加了谐波补偿环后,对应的谐波频率处产生了很大增益,实现了对应谐波的无静差追踪,同时抑制了谐波对系统电能质量的影响。一般情况下,通过添加特定次数的谐波补偿环,在实现对基波成分跟踪的同时,还能对特定次数的谐 波成分进行跟踪,实现对特定次数谐波的消除,从而减小了谐波造成的污染,提高了逆变器系统的电能质量。
为了观察准比例谐振控制器中三个参数的影响,同样用MATLAB绘制bode图,控制变量法来看。
1 | figure() |
由bode图可知,Kp越大,其他低频段和高频段的增益越大;Kr越大,谐振点的增益越大,但附近周围频带的增益也相应有所增大;wc越大,周围频带的增益也相应有所增大。
而参数wc可以任意取一个较小的数,2 π × 0.1、2 π × 0.5、2 π × 1,因此真正需要整定的参数也就只有Kp和Kr了。
1.3 传递函数推导
从Bode图中可以发现,比例谐振控制器与二阶欠阻尼谐振系统极为相似,典型二阶系统的传递函数为。
当ζ取不同值时,其Bode图为
将Bode图中的两条幅频曲线相减,即可得到PR Controller,Bode图中相减即实际增益的相除,即传递函数相除。
令 ζ1 ( 0.01 ) ) < ζ2 ( 0.5 ),计算两个二阶系统传递函数相除
对应Bode图为
得到的传递函数和Bode图就是比例谐振控制器,对系数进行替换即可得到本文开头的比例谐振控制器传递函数。
当串联使用时,一般可将比例Kp设置为1,通过调节谐振增益的幅值和频宽设计合适的谐振控制器,通过双线性Z变换得到离散的控制器参数。
此外,当谐振频率变化时,比如开头提到的AC交流频率在45Hz~65Hz变化时,可以根据变化的频率,更新ωo,通过Z变换的系数关系式,实时刷新谐振控制器的离散控制系数。
1.4 单相离网逆变器
离网逆变器是把DC逆变出来的AC直接使用,输出接负载,控制对象是输出电压,力争低THD,幅值可控。
控制结构框图:
资源链接:
1.5 单相并网逆变器
并网逆变器是把DC逆变出来的AC电送入另一个交流系统,输出端接电网,控制对象是输出电流,力争低THD,幅值可控,且与电网电压同相位。
控制结构框图:
资源链接:
1.6 PR控制器离散化
目前而言,同一种控制方式有3种表达形式:
- 时域,有连续时域和离散时域之分。
- 复频域,又称s域。
- z域。
在大学之前的学习一直都是时域下的,也是最容易理解的。大学期间接触到拉氏变换是由连续时域到复频域的变换,z变换是离散时域到z域的变换。
在连续时域下,描述不同时间点的方程称为微分方程。
在离散时域下,描述不同时间点的方程称为差分方程。
传递函数离散化后,函数中消掉了拉普拉斯算子“s”,同时出现了“z”。有一个公式需要认识。
以上公式,转化为单片机或DSP可以执行的命令为:
在前人研究基础上:
方法很多,选哪一个种呢?在TI写的数字锁相环算法库中有说明文档详细推导各个参数的计算,其中就涉及到连续传递函数离散化的问题,TI采用的Tustin。简单起见我们也选Tustin方法了。
看起来比较简单的方法是Forward Euler、Backward Euler、Trapezoid(Tustin)这三种了。直接把公式代入,用z消掉s就好了。
MATLAB也提供了传递函数离散化的内置函数c2d。
1 | Ts=1/25000; |
但是好像不能用MALTAB计算出准谐振一般表达式的离散化结果,索性直接带入化简得了。
过程略,结果如下。
在当初学习的时候会思考离散化里面的T到底是什么。我的理解就是,相邻两次以离散化的方式实现连续传递函数的时间间隔。在DSP中的控制一般写在中断中,那么对应的T即中断时间间隔。而在Simulink中,Powergui和模型设置这两个地方都能设置步长,到底哪个才是真正的呢?目前没有想明白,若想要验证的话设置为相同的步长即可。
当时学习的时候也有一个疑问,为什么在学习PID控制器的时候没有所谓的离散化步骤。怎么就直接把PID的C语言实现给写出来了呢?是因为PID的连续时域表达式简单,很容易就能推导出离散时域表达式,用的微积分的思想。而在学习PR控制器的时候,是先得到他的传递函数,即s域表达式,可以直接从s域到z域变换。
那实现数字一阶滤波器的时候呢?也是先根据模拟RC电路推导传递函数,再变到连续时域的一阶微分方程,离散时域。那稍微复杂一点的二阶甚至高阶滤波器呢,就是直接从s域到z域到离散时域的。
总之,当我们用数字方式实现控制时,根本目的是得到他的离散时域表达式。
1.7 离散化练习题
在Matlab中验证结果:
1 | Kp=1;Ki=2;Kd=3;Ts=1e-3; |
可得到:
Sampling time: 0.001
和计算结果一致。
同时Matlab的c2d()函数总共支持五种离散方法。
1 |
|
使用Matlab离散PR控制器
1 | Kp=1; |
可得到,离散化后,数字实现的C语言为:
1.8 逆变器仿真模型中使用PR闭环控制器
Matlab/Simulink搭建了模型:
电气主回路中参数:滤波电感Lf=47uH,滤波电容Cf=1uF,负载Lf1=30欧姆。
控制回路:
PR控制器实现框图:
经过参数优化后,Kp=1000,Kr=100;wc=2*pi*5;wo=2*pi*50;
上图中,error = Vref - Vout/311。Vref为频率50Hz、幅值为1的正弦波。Vout是逆变器输出。可以看到闭环系统中误差可降到1mV *311=0.331V之内(1mV为error波形的幅值,311为电压标幺化基准值)。
1.9 DSP实现
有了Z域下的表达式,可以直接得到离散时域表达式,即差分方程。
以二阶为例:
则离散时域表达式为:
因此可以根据前面推导的PR控制器在Z域下的通用表达式,写出它的通用离散时域表达式。
1 | /* |
1 | /* |
之前一直以为我把应用PR于单相逆变器的代码也上传了。代码可以移步这里
单相逆变器,单台运行、并联运行以及并联并网
1.10 C语言的一种实现
1 | /************************************************************ |
1 | /* 计算R控制器 */ |
1 | // PR控制 |
1 | CNTL_RC_F_C(EpsVoltCon_Reg.f32VoltCNTL, EpsVoltCon_Reg.f32VoltCoff, EpsVoltCon_Reg.f32VoltInstant_Ref - (ADValue.f32VINV)); |
上述是直接根据离散化的方法来进行离散化,还有一种方法是可以将比例谐振控制器拆分成简单的积分组合,引进中间变量,以便于算法实现:










































