目录
0 背景
1 重复控制器模型
2 编写matlab程序
3 结果示例
0 背景
上午想绘制重复控制器的伯德图,但是因为重复控制器属于离散系统,所以不同于常规的线性连续系统,不是很好绘制,同时CSDN、MATLAB/SIMULINK论坛上也没有什么分享,经过1个多小时的摸索,我终于搞明白了,现在分享给大家,防止大家重复浪费时间。
1 重复控制器模型
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2MjN1QTOxQTMwIDNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Fig.1 重复控制器的框图
Fig.2 重复控制器数学模型
当我们取Q = 0.95,N = 200的时候,重复控制器的数学模型就是这样了:
,我们编写.m文件如下:
2 编写matlab程序
N = 200;%1个系统单位时间内的采样个数
Q = 0.95
ts = 1/(N*50);%采样时间,50表示系统频率是50Hz,如工频电网
H4 = tf([ 1 zeros(1,N)],[1 zeros(1,N-1) -Q],ts);%重复控制器的模型
bode(H4)%绘制重复控制器的伯德图
3 结果示例
显然,重复控制器在系统倍周期处,具有较大的增益,可以有效地抑制周期性干扰,跟随周期性给定信号
Fig.3 bode图
当然,有的同学可能想对比一下Q取不同值的结果,以及希望横坐标为Hz,并且限制为[0 1000]Hz,只需要如下程序即可:
P = bodeoptions;%设置bode图对象
P.FreqUnits = 'Hz';%设置横轴为Hz
P.grid = 'on';%打开网格
P.XLim={[10 1000]};%设置横轴范围
N = 200;%1个系统单位时间内的采样个数
ts = 1/(N*50);%采样时间,50表示系统频率是50Hz,如工频电网
for i = 0.8:-0.2:0
Q = 1 - i;%改变多个Q值
H4 = tf([ 1 zeros(1,N)],[1 zeros(1,N-1) -Q],ts);%重复控制器的模型
bode(H4,P)%绘制重复控制器的伯德图
hold on
end
Fig.4 bode图
PS :
有什么问题,留言在评论区即可,看见后会回复。
觉得对你有用的话,可以点赞、关注我哦,我会经常分享自己学的小知识,避免大家浪费时间。