主要内容

使用系统标识指定模型部件的线性化

此示例显示如何为使用System Identification Toolbox™确定的线性模型不能很好地线性化的模型组件指定线性化。这个例子需要Simscape™Electrical™软件。

线性化硬盘模型

打开硬盘驱动器的S万博1manbetximulink®型号。

模型=“scdpwmharddrive”; 开放式系统(模型)

在此模型中,硬盘驱动器设备由电流源驱动。电流源由一个由脉宽调制(PWM)信号驱动的电路实现,因此其输出可以通过占空比进行调整。有关硬盘驱动器型号的详细信息,请参阅硬盘驱动器的数字伺服控制

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

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

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

将模型线性化。

io (1) = linio (“SCDPWM硬盘驱动器/占空比”1.“输入”);io (2) = linio (“SCDPWM硬盘驱动器/硬盘型号”1.“输出”);sys =线性化(模型,io)
sys = D =占空比位置err 0静态增益。

正如预期的那样,PWM部件使系统线性化为零。

打开本地解算器进行模拟。

set_param (SimscapeSolver“UseLocalSolver”“上”

求PWM元件的线性模型

你可以估计pwm驱动电流源的频率响应,并使用结果来识别线性模型。

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

idinput=frest.createFixedTSineStream(Ts,{2000200000});idinput.Amplitude=0.1;

定义PWM驱动电路的输入和输出点,并使用正弦流输入信号运行频率响应估计。

pwm_io (1) = linio (“SCDPWM硬盘驱动器/占空比”1.“输入”);pwm_io (2) = linio (“scdpwmharddrive / PWM驱动转换器”1.“openoutput”);sysfrd=frestimate(型号、pwm_io、输出);

要使用频率响应数据识别二阶模型,请使用系统识别工具箱函数tfest

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

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

波德(sysid sysfrd,“r*”

为了估计频率响应,您使用的频率在2000到200000 rad/s之间。所识别的模型在频率小于2,000 rad/s时具有平坦的幅值响应。但是,以前的估计没有包括这些频率。

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

lowfreq=[20 200];inputlow=frest.CreateFixedTSineStream(Ts,lowfreq)
sinestream输入信号:Frequency: [20 200] (rad/s) Amplitude: 1e-05 SamplesPerPeriod: [3141593 314159] NumPeriods: 4 RampPeriods: 0 FreqUnits (rad/s,Hz): rad/s SettlingPeriods: 1 applyfilteringinfestimate (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=frest.createFixedTSineStream(Tslow,wslow./round(wslow./lowfreq));输入低。振幅=0.1;

为了使模型与较小的采样时间兼容,使用修改模型中的速率转换块对输出数据点进行重新采样。

modellow =“scdpwmharddrive\u低频”;开放式系统(modellow)

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

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

频率响应估计可能需要几分钟的时间。例如,加载估计结果。

负载scdpwmharddrive_lowfreqresults

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

波德(sysid sysfrdlow,“r*”

关闭低频模型。

bdclose (modellow)

指定PWM组件的线性化

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

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

pwmblock =“scdpwmharddrive / PWM驱动转换器”;设置参数(pwmblock,“SCDEnableBlockLinearizationSpecification”“上”);

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

代表=结构(“规格”“sysid”...“类型”“表情”...“ParameterNames”...“参数值”);set_param (pwmblock“SCDBlockLinearizationSpecification”,代表);

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

设置参数(“SCDPWM硬盘驱动器/占空比”“采样时间”“Ts_plant”);

将模型线性化。

set_param (SimscapeSolver“UseLocalSolver”“关”) sys = linearize(model,io);set_param (SimscapeSolver“UseLocalSolver”“上”

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

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

频率响应估计可能需要几分钟的时间。例如,加载估计结果。

负载SCDPWMhardwrive_valfreq结果bodemag(sys,sysval,“r*”

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

关闭模式。

bdclose (“scdpwmharddrive”

另请参阅

|(系统识别工具箱)

相关话题