我正在研究Matlab simulink块:均值(可变频率) . 该块显示在http://www.mathworks.com/help/physmod/sps/powersys/ref/meanvariablefrequency.html
该算法的第一步是整合输入信号 . 但是,当输入信号是常数时,积分器将累积直到它溢出 . 有谁知道如何在这样的块中解决这个问题 .
我还附上了下面这个块的图表:
稍后,我将它改为离散时间模型并在我的DSP中实现这样的算法 . 如果您有任何建议,我是一个很好的倾听者 .
2 回答
您需要实现 Anti-Windup 控件 . 最简单的方法是使用 PID-Controller 并将常数和差分增益设置为零 . 对于Anti-Windup,您通常有两种选择:反算和钳位 . 有关差异和参考,请查看本文:Anti-windup control using a PID-Controller
您正在实施的功能是
其中
T
是传输延迟 . 这可以通过替换z = y + T
并由于积分的线性来重新排序哪里
是一个有限常数,它取决于初始条件,如果你的信号
u
在初始时间为零,则可以假定为0 .如果我们看一下具有DC偏移的输入信号,例如
然后实现
(1)
将首先进行整合然后减去,这将使您的注意力饱和或导致精度损失 . 但(2)
将首先减去并因此删除任何DC然后集成,而不会有饱和度的风险 . 因此,我建议更改实现如下:
或者,您可以将理想积分器
1/s
更改为在DC处具有有限增益的低通滤波器,例如,1/(1+s)
虽然这(以及@thewaywewalk建议的抗饱和控制器)与理想行为相比会使您的信号失真 .PS:感谢stackoverflow不支持正确的数学符号...
:-/