主要内容

为使用系统辨识模型组件指定线性化

这个例子显示了如何指定的线性化模型组件,该组件使用一个线性模型线性化不是很好使用系统辨识工具箱™标识。这个例子需要Simscape™电气™软件。

线性化硬盘模式

打开模型®模型硬盘金宝app。

模型=“scdpwmharddrive”;open_system(模型)

在这个模型中,硬盘植物是由电流源。实现电流源的电路是由一个脉冲宽度调制(PWM)信号,其输出可以调节工作周期。硬盘模型的细节,请参阅数字伺服控制的硬盘驱动器

PWM-driven电路通常有高频开关组件,如MOSFET晶体管在这个模型中,不是定义良好的平均行为。因此,找到一个这种类型的精确线性化电路是有问题的。当你从责任周期线性化模型的输入位置错误,结果是零。

Simscape解决者在这个模型配置为运行在本地解决模式。线性化模型时,首先关闭当地的解决者。

SimscapeSolver =[模型/ PWM驱动转换器/解算器配置的];set_param (SimscapeSolver“UseLocalSolver”,“关闭”)

线性化模型。

io (1) = linio (“scdpwmharddrive /责任周期”,1“输入”);io (2) = linio (“scdpwmharddrive /硬盘模型”,1“输出”);sys =线性化(模型,io)
sys = D =工作周期位置犯错0静态增益。

正如所料,PWM组件导致系统线性化零。

把当地的解算器模拟。

set_param (SimscapeSolver“UseLocalSolver”,“上”)

寻找PWM线性模型组件

你可以估计的频率响应PWM-driven电流源和使用结果来识别一个线性模型。

当前的信号的离散采样时间1 e -。因此,您需要使用一个sinestream信号与一个固定的样品时间为你估计输入信号。创建一个信号的频率在2000年和200000年之间rad / s。

idinput = frest.createFixedTsSinestream (Ts, {2000、200000});idinput。幅值= 0.1;

定义输入和输出点PWM-driven电路,并运行使用sinestream输入信号频率响应估计。

pwm_io (1) = linio (“scdpwmharddrive /责任周期”,1“输入”);pwm_io (2) = linio (“scdpwmharddrive / PWM驱动转换器”,1“openoutput”);sysfrd = frestimate(模型、pwm_io idinput);

确定二阶模型使用频率响应数据,利用系统辨识工具箱函数特遣部队

sysid = ss (tf (idfrd (sysfrd), 2));

比较原始频率响应数据识别模型。

波德(sysid sysfrd,的r *)

估计频率响应,您使用频率在2000年和200000年之间rad / s。识别模型有一个平级响应频率小于2000 rad / s。然而,先前的估计不包括这些频率。

来验证是否较低频率的频率响应是平的,估计响应使用sinestream输入信号频率为20和200 rad / s。

lowfreq = (200);lowfreq inputlow = frest.createFixedTsSinestream (Ts)
sinestream输入信号频率:[200](rad / s)振幅:1 e-05 SamplesPerPeriod: [3141593 314159] NumPeriods: 4 RampPeriods: 0 FreqUnits (rad / s,赫兹):rad / s SettlingPeriods: 1 ApplyFilteringInFRESTIMATE(开/关):在SimulationOrder(顺序/ OneAtATime):顺序

快速的组合样品的时间1 e -秒(10 MHz采样频率)和较低的频率产生高SamplesPerPeriod输入信号的值。在这种情况下,考虑到每个频率有四个周期,频率响应估计将日志输出数据与约1400万个样本。

因为如此高的采样率是没有必要分析20和200 rad / s频率,你可以避免内存问题通过增加样品的时间1的军医

Tslow = 1的军医;wslow = 2 *π/ Tslow;inputlow = frest.createFixedTsSinestream (Tslow wslow. /轮(wslow. / lowfreq));inputlow。幅值= 0.1;

使模型兼容较小的样品时间,重新取样输出数据点使用速度过渡块在修改模型。

modellow =“scdpwmharddrive_lowfreq”;open_system (modellow)

你可以估计的频率响应低频率使用以下命令。

sysfrdlow = frestimate (modellow getlinio (modellow) inputlow);

频率响应估计可能要占用几分钟的时间。对于这个示例,负载估计的结果。

负载scdpwmharddrive_lowfreqresults

验证的低频响应识别模型,确定模型的估计结果进行比较。

波德(sysid sysfrdlow,的r *)

关闭低频模型。

bdclose (modellow)

为PWM组件指定线性化

指定的线性化PWM-driven组件使用验证识别模型,指定PWM-driven转换器子系统的线性化。

要做到这一点,首先使转换器块的线性化规范。

pwmblock =“scdpwmharddrive / PWM驱动转换器”;set_param (pwmblock“SCDEnableBlockLinearizationSpecification”,“上”);

指定sysid使用MATLAB®作为块线性化表达。

代表=结构(“规范”,“sysid”,“类型”,“表情”,“ParameterNames”,,“ParameterValues”,);set_param (pwmblock“SCDBlockLinearizationSpecification”,代表);

责任周期的设定样本时间参考信号的植物。

set_param (“scdpwmharddrive /责任周期”,“SampleTime”,“Ts_plant”);

线性化模型。

set_param (SimscapeSolver“UseLocalSolver”,“关闭”)系统=线性化(模型、io);set_param (SimscapeSolver“UseLocalSolver”,“上”)

你可以验证总体线性化的结果估计频率响应使用以下命令。

valinput = frest.Sinestream(系统);valinput = fselect (valinput 3 e3 1 e5);valinput。幅值= 0.1;sysval = frestimate(模型、io valinput);

频率响应估计可能要占用几分钟的时间。对于这个示例,负载估计的结果。

负载scdpwmharddrive_valfreqresultssysval bodemag (sys,的r *)

线性化的结果是准确的,所有的共鸣中存在的实际动力学模型。

关闭模式。

bdclose (“scdpwmharddrive”)

另请参阅

|(系统辨识工具箱)

相关的话题