这个例子展示了如何从频率响应数据估计传递函数。使用Simuli金宝appnk®Control Design™从Simulink模型中收集频率响应数据特遣部队
从测量数据估计传递函数的命令。要使用以前保存的频率响应数据运行示例,请从估计传递函数部分
打开Simulin金宝appk模型。
mdl =“iddemo_boost_converter”;open_system (mdl);
该模型是Boost Converter电路,通过控制斩波或开关源电压,将直流电压转换为另一个直流电压(通常是更高的电压)。在该模型中,IGBT由PWM信号驱动进行开关。
对于这个例子,我们感兴趣的是从PWM占空比设定值到负载电压Uout的传递函数。
我们使用frestimate
命令使用不同频率的正弦信号扰动占空比设定点,并记录产生的负载电压。从中,我们发现系统如何修改注入正弦信号的幅值和相位,从而在频率响应上提供离散点。
使用frestimate
需要两个初步步骤
指定频率响应输入和输出点
定义在输入点注入的正弦波
频率响应输入和输出点是使用linio
命令的输出DutyCycle
和电压测量
阻碍。
ios = [...linio([mdl,“/DutyCycle”],1,“输入”);...linio([mdl,“/PS 金宝appSimulink转换器”],1,“输出”)];
我们使用弗列斯特。Sinestream
命令定义在输入点注入的正弦波。我们对200到20k rad/s的频率范围感兴趣,希望将占空比扰动0.03。
f = logspace (log10 (200), log10 (20000), 10);在=弗列斯特。Sinestream (“频率”F“振幅”, 0.03);
用这个正弦流信号来模拟模型所需的仿真时间是用getSimulationTime
命令,并且我们知道模型使用的模拟结束时间,我们可以知道正弦流模拟将在运行模型时接管多长时间。
getSimulationTime(英寸)/0.02
ans=15.5933
我们使用定义的输入和正弦流frestimate
计算频率响应上的离散点。
[sysData, simlog] = frestimate (mdl, ios);bopt = bodeoptions;bopt。网格=“上”;相位匹配=“上”;波德图(sysData,“* r”bopt)
波德响应显示了一个增益为56db的系统,一些在2500 rad/s左右的小共振和大约20 db/decade的高频滚转,符合我们对这个电路的期望。
的弗雷斯特·西姆维尤
命令允许我们在一个图形界面中检查显示注入信号、测量输出和频率响应的估计过程。
frest.simView (simlog sysData);
图中显示了模型对注入正弦波的响应以及模型响应的FFT。注意,注入正弦波的结果是具有主导频率和有限谐波的信号,这表明一个线性模型和成功的频率响应数据收集。
在前面的步骤中,我们收集了频响数据。这些数据将系统描述为离散的频率点,现在我们对这些数据拟合一个传递函数。
我们使用Simulink Control Design生成频率响应数据,如果未安装Simuli金宝appnk Control Design,请使用以下命令加载保存的频率响应数据
负载iddemo_boostconverter_data
通过对频率响应数据的检验,我们期望系统可以用一个二阶系统来描述。
sysA = fest(sysData,2) figure, bode(sysData, 2)“r*”、sysA bopt)
sysA =从输入“DutyCycle”到输出“PS-Simulink Converte金宝appr”:-4.456e06 s + 6.175e09 ----------------------- s^2 + 6995 s + 9.834e06连续时间确定的传递函数。参数化:极点数:2零数:1自由系数:4参数及其不确定性使用“tfdata”、“getpvec”、“getcov”。状态:使用TFEST对频率响应数据“sysData”进行估计。拟合估计数据:98.04% FPE: 281.4, MSE: 120.6
估计的传递函数在提供的频率范围内是准确的。
bdclose(mdl)