本文为翻译学习文章,供学习使用,文中的模型和指令我重新绘制测试过,可以使用。
原文地址:https://ww2.mathworks.cn/help/ident/ug/estimating-transfer-function-models-for-a-boost-converter.html
这个实例展示了如何通过频率响应数据估算传递函数。你可以通过 Silmulink Contral Design收集一个Simulink模型的频率响应模型,然后使用tftest指令基于测量得到的数据来估算一个传递函数。如需了解从预先获取的频率响应数据来估算传递函数可直接跳至估算传递函数部分。
升压转换器
打开simulink模型。
mdl = ‘iddemo_boost_converter’;
Open_system(mdl);
此模型是一个将DC电压通过开关电压源控制转换到另一个DC电压(通常是更高的电压)的升压转换线路。在这个模型中IGBT被作为开关由PWM信号驱动。
对于这个实例,我们对PWM占空比设定点到负载电压的传递函数Uout感兴趣。
收集频率响应数据
我们使用frestimate命令通过不同频率的正弦曲线来扰动占空比设定点,同时记录下产生的负载电压。由此方式我们可以找到系统是如何改变注入正弦信号的幅值和相位,从而为我们提供频率响应的离散点。
使用frestimate需要两个初始步骤:
1、 选定频率响应的输入和输出点;
2、 将正弦注入点定义在输入端;
频率响应的输入和输出点通过使用linio命令创建,对于这个实例是DutyCycle的输出和电压测量模块。
ios = [...
linio([mdl,'/DutyCycle'],1,'input'); ...
linio([mdl,'/PS-Simulink Converter'],1,'output')];
我们使用frest.Sinestream命令来定义正弦信号在输入点注入。我们对200-20K rad/s的频率范围感兴趣,并希望将占空比扰动0.03。
F = logspace(log10(200),log10(20000),10);
in = frest.Sinestream('Frequency',f,'Amplitude',0.03);
使用该正弦信号仿真模型的仿真时间时由getSimulationTime确定的,由于我们知道模型使用的仿真结束时间,我们可以了解正弦流仿真将会占用模型简化运行多长时间。
getSimulationTime(in)/0.02
我们通过frestimate使用定义的输入和正弦流计算频率响应的离散点。
[sysData,simlog] = frestimate(mdl,ios,in);
bopt = bodeoptions;
bopt.Grid = 'on';
bopt.PhaseMatching = 'on';
figure, bode(sysData,'*r',bopt)
波特图可以看出系统增益为56db,在2500rad/s附近由一些谐振。高频部分以20db/十倍频下滑,这些与我们对电路的期望匹配。
Frest.simView命令允许我们在一个展示注入信号、输出测量,频率响应的图形界面中检查frestimate的过程。
frest.simView(simlog,in,sysData);
这个图片展示了模型对应于注入信号的频率响应以及模型响应的FFT。注意,注入正弦波形的结果信号有主导频率和有限谐波表明模型为线性模型,频率响应数据被成功收集。
估算一个传递函数
通过预先的步骤我们收集到了频率响应数据。这些数据用离散频率点描述一个系统,我们现在可以用传递函数去匹配数据。
我们可以通过Simulink Contral Design产生频率响应数据,如果Simulink Contral Design没有安装,我们可以通过以下命令加载保存的频率响应数据。
load iddemo_boostconverter_data
通过检查频率响应数据,我们评估系统可能可以用一个二阶系统来描述。
sysA = tfest(sysData,2)
figure, bode(sysData,'r*',sysA,bopt)
sysA =
From input "DutyCycle" to output "PS-Simulink Converter":
-4.456e06 s + 6.175e09
----------------------
s^2 + 6995 s + 9.834e06
Continuous-time identified transfer function.
Parameterization:
Number of poles: 2
Number of zeros: 1
Number of free coefficients: 4
Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.
Status:
Estimated using TFEST on frequency response data "sysData".
Fit to estimation data: 98.04%
FPE: 281.4, MSE: 120.6
传递函数在提供的频率范围被准确估计。
bdclose(mdl)