主要内容

鲁棒性分析在Simulink金宝app

这个例子显示了如何使用鲁棒控制工具箱™提供的Simulink金宝app模块和辅助功能,以指定和分析Simulink和不确定系统如何使用这些工具来执行不确定系统的Monte Carlo模拟。

介绍

Simu金宝applink模型usim_model由具有传感器反馈的不确定工厂组成:

Open_System('usim_model'

该工厂是一阶模型不确定性有两个来源:

  • 实极点,其位置之间变化-10和-4

  • 未暗模式的动态,其在130 rad / s的低频上升至100%不确定度的相对不确定性的25%。

反馈路径具有由一阶滤波器,在20弧度建模的便宜传感器/ s和一个不确定的增益0.1和2之间的范围内要指定这些不确定变量,类型

%一阶工厂模型Unc_pole =尿尿('unc_pole',-5,'范围',[ -  10-4]);植物= SS(unc_pole,5,1,1);%未确定的植物动力学input_unc = ultidyn('input_unc',[1 1]);重量= makeweight(0.25,130,2.5);%传感器增益Sensor_gain =尿尿('sensor_gain',1,'范围',[0.1 2]);

金宝appSimulink模块的不确定性建模与分析

rctblocks.库包含模型和分析Simulink中的不确定性效果的块。金宝app打开库,键入

打开('rctblocks'

不确定状态空间块允许您指定不确定的线性系统(USS对象)。usim_model包含三个这样的块,这些块以蓝色突出显示。“工厂”块的对话框显示在下面。

在此对话框中,

  • 的“不确定的系统变量”参数指定不确定工厂模型(一阶不确定极点模型unc_pole)。

  • 在“不确定性值”参数指定块的不确定变量的值(unc_pole在这种情况下)。

uval是一种结构,它的字段名称和值是不确定的变量名和值以用于模拟。您可以设置uval[]使用标称值的不确定变量或更改uval分析不确定性如何影响模型的响应。

多孔图块是在不确定性变化时可视化响应的便捷方式。该块叠置了每个不确定性值获得的模拟结果。

不确定系统的Monte Carlo模拟

为了轻松控制用于模拟的不确定性值,usim_model使用相同的“不确定性值”uval在所有三个中不确定状态空间块。环境uval[]用于模拟的标称值的闭环响应unc_poleinput_unc., 和Sensor_gain.

uval = [];不确定变量%的人使用标称值SIM('usim_model',10);%模拟响应

要分析不确定性如何影响模型响应,可以使用ufindusample.命令生成随机值unc_poleinput_unc., 和Sensor_gain.。首次使用ufind找到不确定状态空间usim_model并编译这些块中所有不确定变量的列表:

[UVARS,PATHINFO] = UFIND('usim_model');uvars%不确定变量
uvars =结构与字段:input_unc:[1x1的ultidyn] sensor_gain:[1x1的尿素] unc_pole:[1x1的尿素]

PATHINFO(:,1)对USS块的%路径
ANS = 3X1单元阵列{ 'usim_model /工厂'} { 'usim_model /传感器增益'} { 'usim_model /未建模设备动态'}

然后用usample.生成不确定性值uval与指定的不确定性范围一致。例如,您可以为10个随机值模拟闭环响应unc_poleinput_unc., 和Sensor_gain.如下:

为了I = 1:10;uval = usample(uvars);%产生不确定变量的随机实例SIM('usim_model',10);%模拟响应结尾

多孔图窗口现在显示了不确定反馈循环的10个可能的响应。注意每个uval实例是包含不确定变量的值的结构input_unc.Sensor_gain., 和unc_pole

uval不确定变量的%样本值
uval =结构与字段:input_unc:[1x1的SS] sensor_gain:0.5893 unc_pole:-4.9557

随机模拟

如果需要,您可以配置模型以使用不同的不确定性值uval对于每个新模拟。为此,添加uvars到基本或模型工作区,并连接usample.调用Model initfcn:

bdclose('usim_model'),open_system('usim_model'%写在基地工作区的不确定变量列表evalin('根据''uvars = ufind(' 'usim_model' ');'%修改模型initfcnset_param('usim_model''InitFcn''Uval = USAMPLE(UVARS);');%模拟十倍(与按下“开始模拟”十倍)为了I = 1:10;SIM('usim_model',10);结尾% 清理set_param('usim_model''InitFcn''');

再次多孔图窗口显示了不确定反馈回路的10个可能的响应。

不确定的Simulink模型的线性化金宝app

如果你有Simulink金宝app的控制设计™,您可以使用相同的工作流在频域进行线性分析不确定系统。例如,你可以绘制的模型不确定性的10个随机样本的闭环波特响应:

清除SYS.wmax = 50;未拼接动态的%MAX自然频率(INPUT_UNC)为了I = 1:10;uval = usample(uvars,1,WMAX);SYS(:,:,1)=线性化('usim_model');结尾BODE(SYS)标题('USIM \ _MODEL的十个线性化);

如果操作点与不确定的变量无关,则更快的方法是在一次拍摄中计算不确定的线性化(USS对象)鲁莽命令:

USYS = ulinearize('usim_model'
USYS =不确定连续时间状态空间模型与1个输出,1个输入端,3个状态。该模型不确定性由以下部分构成:input_unc:不确定的1x1 LTI,峰值增益= 1,1次出现sensor_gain:不确定真实的,标称= 1,范围= [0.1,2],1次出现unc_pole:不确定真实的,标称= -5,范围= [-10,-4],1次出现输入“usys.NominalValue”看到标称值,“GET(USYS)”可以看到所有的属性,以及“usys.Uncertainty”与不确定元素进行交互。

然后,您可以品尝到不确定的状态空间模型USYS产生类似的波特图:

博德(usample(USYS,10,WMAX))标题('USIM \ _MODEL的十个线性化);

也可以看看

职能

相关话题