比例谐振控制的一种实现(含代码)
原文地址:https://donghao2nanjing.github.io/2018/06/22/PR_Controller/
1. 比例谐振控制器简介
首先,我们来看看比例谐振控制器的传递函数和伯德图:
\(\omega_{r}\) 是.谐振频率。
如上图所示,在50Hz(314 rad/s)处,幅频曲线的增益为无穷大,这就是为什么比例谐振控制器能够无静差跟踪特定频率信号的奥妙所在。但是,在实际应用中,参考给定的频率往往并不是一个常数,比如电网频率可能会在49.5Hz到50.5Hz之间变化,所以往往会采用准比例谐振控制。
准比例谐振控制器传递函数如下:
增加了\(2\omega_{r}\) 之后,减小了谐振频率处的增益,但是却在谐振频率附近形成了一个具有较大增益的频带,由此减小频率偏移带来的影响。
你可以改变 \(\omega_{r}\),通过在MATLAB中运行如下代码来亲自感受一下:
s = tf([1, 0], 1) ;
Kp = 15 ;
Kr = 2000 ;
wr = 50 * 2 * pi ;
wi = pi ;
G_PR = Kp + Kr * s / (s^2 + wr^2)
figure
bode(G_PR)
G_QPR = Kp + 2 * wi * Kr * s / (s^2 + 2 * wi * s + wr^2)
figure
bode(G_QPR)
2. C语言实现
话不多说, 代码在此。
代码中实现的比例谐振控制器结构如下:
论文 Effects of Discretization Methods on the Performance of Resonant Controllers中使用了两个积分器实现了比例谐振控制器,我们采用这样的结构,并做相应的改进(忘记出处在哪里了,如知晓请补充)。
这种实现具备两个好处:
- 结构简单,易于实现
- 可以实时地改变谐振频率,可用于存在锁相环的场合,对于频偏地适应性更强。
你可以运行这里地 **Simulink仿真模型 **来感受一下。
- Kp 设为0 而 Kr 设为10
- \(\omega_{i}\) 设为 \(0.01\omega_{r}\)
仿真结果如下:
3.参考
1.Effects of Discretization Methods on the Performance of Resonant Controllers"
2.百度文库文档