为使用系统辨识模型组件指定线性化
这个例子显示了如何指定的线性化模型组件,该组件使用一个线性模型线性化不是很好使用系统辨识工具箱™标识。这个例子需要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”)
另请参阅
frestimate
|特遣部队
(系统辨识工具箱)