这个例子展示了如何线性化一个有延迟的Simulink模型。金宝app
您可以使用以下选项之一线性化带有连续时间金宝app延迟块的Simulink模型,如传输延迟、可变传输延迟和可变时间延迟:
利用延迟的Pade近似,通过线性化得到一个合理的线性系统。
计算延迟精确表示的线性化。当您需要从线性化模型中的准确仿真和频率响应时使用此选项,并且在评估Pade近似的准确性时。
默认情况下,Simuli金宝appnk Control Design在Simulink模型中使用Pade近似的延迟块。
要打开本例中使用的发动机转速模型,输入
模型=“scdspeed”;open_system(模型);
发动机转速模型在动力冲程延迟感应子系统中包含一个名为dM/dt的可变传输延迟模块。为了方便,您可以通过输入将块的路径存储在MATLAB变量中
DelayBlock ='scdspeed/感应功率行程延迟/dM//dt延迟';
要使用第一阶近似计算线性化,请使用以下技术之一来将Pade近似的顺序设置为1:
在“变量传输延迟块”对话框中,在PACE订单(用于线性化)字段。
在命令行处,输入以下命令:
set_param(devileblock,“PadeOrder”,' 1 ');
接下来,指定线性化I/O节流角度为输入,发动机转速为输出,通过运行:
io (1) = linio ('SCDSPEED /油门(度)',1,“输入”);io (2) = linio ('scdspeed / rad / s到rpm',1,“输出”);
使用以下linearize命令计算线性化:
sys_1st_order_approx =线性化(模型、io);
您可以通过将PACE顺序设置为2来计算使用二阶近似的线性化:
set_param(devileblock,“PadeOrder”,' 2 ');sys_2nd_order_approx = linearize(模型,io);
要使用精确的延迟表示来计算线性模型,请在Linoptions对象中设置“MedualExActdelayModel”属性,以开启:
选择= linearizeOptions;opt.UseExactDelayModel =“上”;
使用以下线性化命令对模型进行线性化:
sys_exact =线性化(模型,io,选择);
比较Pade近似模型和精确线性化模型的Bode响应,运行如下:
p = bodeoptions ('cstprefs');p.grid =“上”;p.PhaseMatching =“上”;p.XLimMode = {“手动”};p.xlim = {[0.1 1000]};f =图;BODE(sys_1st_order_approx,sys_2nd_order_approx,sys_exact,p);h =图例('sys_1st_order_approx',“sys_2nd_order_approx”,“sys_exact”,...'地点',“西南”);h.Interpreter =“没有”;
在一阶近似情况下,相位开始发散到50 rad/s左右,发散到100 rad/s左右。
关闭Simulink金宝app模型。
bdclose(模型)
当使用离散延迟块线性化模型时,例如(Integer) delay和Unit delay块使用精确的延迟选项来考虑延迟,而不向模型动态添加状态。明确地考虑这些延迟可以提高具有许多离散延迟的系统的模拟性能,因为模型中的状态更少。
要打开一个离散系统的Si金宝appmulink模型,使用一个具有20个延迟状态的延迟块(用于本示例),运行以下程序。
模型='scdintegerdelay';open_system(模型)
默认情况下,线性化包括折叠到线性模型中的所有状态。设置线性化I / O和线性化模型如下:
io (1) = linio (的scdintegerdelay /步骤,1,“输入”);io (2) = linio (“scdintegerdelay /离散滤波器”,1,“输出”);sys_default =线性化(模型、io);
集成得到的模型可以看到它有21个状态(1 -离散滤波器,20 -整数延迟)。
大小(sys_default)
状态空间模型,包含1个输出,1个输入和21个状态。
你可以使用“UseExactDelayModel”属性线性化这个模型,如下所示:
选择= linearizeOptions;opt.UseExactDelayModel =“上”;sys_exact =线性化(模型,io,选择);
询问新的结果模型表明,它有一个状态和延迟是内部考虑的线性模型。
大小(sys_exact)
具有1个输出、1个输入和1个状态的状态空间模型。
运行两个线性化模型的阶跃响应仿真,通过运行以下命令来查看它们是否相同。
步骤(sys_default,sys_exact);h =图例('sys_default',“sys_exact”,...'地点','东南');h.Interpreter =“没有”;
关闭Simulink金宝app模型,清理图形。
bdclose(模型)关闭(f)