主要内容

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

此示例显示如何使用使用系统识别工具箱™识别的线性模型为不能很好地线性化的模型组件指定线性化。本例需要Simscape™Electrical™软件。

线性化硬盘模型

打开硬盘驱动器的S金宝appimulink®模型。

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

在这个模型中,硬盘驱动器由电流源驱动。电流源由一个由脉冲宽度调制(PWM)信号驱动的电路实现,因此其输出可以根据占空比进行调整。硬盘型号请参见硬盘驱动器的数字伺服控制

pwm驱动电路通常具有高频开关元件,例如本模型中的MOSFET晶体管,其平均行为没有很好地定义。因此,找到这类电路的精确线性化是有问题的。当您将模型从占空比输入线性化到位置误差时,结果为零。

此模型中的Simscape求解器配置为在本地求解器模式下运行。当线性化模型时,首先关闭局部求解器。

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

线性化模型。

Io (1) = linio(“scdpwmharddrive /责任周期”, 1“输入”);Io (2) = linio('scdpwmharddrive/Hard Disk Model', 1“输出”);系统=线性化(模型,io)
sys = D =占空比位置err 0静态增益。

正如预期的那样,PWM分量使系统线性化到零。

重新打开本地求解器进行模拟。

set_param (SimscapeSolver“UseLocalSolver”“上”

寻找PWM分量的线性模型

您可以估计pwm驱动电流源的频率响应,并使用结果确定线性模型。

电流信号有一个离散采样时间1 e -.因此,您需要使用具有固定采样时间的正流信号作为估计输入信号。创建一个频率在2000到200000 rad/s之间的信号。

idinput = frst . createfixedtssinestream (Ts,{2000,200000});idinput。振幅= 0.1;

定义pwm驱动电路的输入和输出点,并使用正流输入信号进行频响估计。

Pwm_io (1) = linio(“scdpwmharddrive /责任周期”, 1“输入”);Pwm_io (2) = linio(“scdpwm硬盘/PWM驱动转换器”, 1“openoutput”);Sysfrd = fresestimate (model,pwm_io,idinput);

要使用频响数据识别二阶模型,请使用“系统识别工具箱”功能特遣部队

Sysid = ss(tfest(idfrd(sysfrd),2));

将识别的模型与原始频响数据进行比较。

波德(sysid sysfrd,的r *

为了估计频率响应,您使用了2000到200,000 rad/s之间的频率。所确定的模型在频率小于2000 rad/s时具有平坦的幅度响应。然而,之前的估计并没有包括这些频率。

为了验证频率响应在较低频率下是否平坦,请使用频率为20和200 rad/s的正流输入信号来估计响应。

Lowfreq = [20 200];inputlow = frest.createFixedTsSinestream(Ts,低频率)
正流输入信号:频率:[20 200](rad/s)振幅:1e-05 SamplesPerPeriod: [3141593 314159] NumPeriods: 4 RampPeriods: 0 FreqUnits (rad/s,Hz): rad/s SettlingPeriods: 1 applyfilteringestimestimate (on/off): on SimulationOrder (Sequential/OneAtATime): Sequential

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

由于分析20和200 rad/s频率并不需要如此高的采样率,因此可以通过将采样时间增加到1的军医

Tslow = 1e-4;wslow = 2*pi/Tslow;inputlow = frst . createfixedtssinestream (Tslow,wslow./round(wslow./lowfreq));inputlow。振幅= 0.1;

为了使模型与更小的采样时间兼容,可以像修改后的模型一样使用速率转换块对输出数据点重新采样。

modellow =“scdpwmharddrive_lowfreq”;open_system (modellow)

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

Sysfrdlow = fretimate (modellow,getlinio(modellow),inputlow);

频率响应估计可能需要几分钟。对于本例,加载估计结果。

负载scdpwmharddrive_lowfreqresults

为了验证识别模型的低频响应,将估计结果与识别模型进行比较。

波德(sysid sysfrdlow,的r *

关闭低频模型。

bdclose (modellow)

指定PWM组件的线性化

若要使用经过验证的识别模型指定ppm驱动组件的线性化,请指定ppm驱动转换器子系统的线性化。

为此,首先为转换器块启用块线性化规范。

pwmblock =“scdpwm硬盘/PWM驱动转换器”;set_param (pwmblock“SCDEnableBlockLinearizationSpecification”“上”);

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

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

将占空比参考信号的采样时间设置为设备的采样时间。

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

线性化模型。

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

您可以通过使用以下命令估计频率响应来验证整体线性化结果。

valinput = frst . sinestream (sys);Valinput = fselect(Valinput,3e3,1e5);valinput。振幅= 0.1;Sysval = fresestimate(模型,io,valinput);

频率响应估计可能需要几分钟。对于本例,加载估计结果。

负载scdpwmharddrive_valfreqresultssysval bodemag (sys,的r *

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

关闭模型。

bdclose (“scdpwmharddrive”

另请参阅

|(系统识别工具箱)

相关的话题