这个例子展示了如何使用鲁棒控制工具箱提供的Simulink®金宝app块和辅助函数在Simulink中指定和分析不确定系统,以及如何使用这些工具对不确定系统进行蒙特卡罗模拟。
Simu金宝applink模型usim_model
由具有传感器的反馈不确定设备组成:
开放式系统(“usim_model”)
该工厂是一个一阶模型,有两个不确定性来源:
实际极点,其位置在-10和-4之间
未建模动态,在低频时达到25%的相对不确定度,在130 rad/s时上升到100%的不确定度。
反馈路径有一个便宜的传感器,由一个20 rad/s的一阶滤波器建模,增益范围在0.1到2之间。要指定这些不确定的变量,请键入
%一阶植物模型unc_极点=ureal(“unc_pole”,-5,“范围”, -10 [4]);工厂= ss (unc_pole 5 1,1);%未建模植物动力学input_unc = ultidyn (“input_unc”[1]);,130 wt =补足重量的东西(0.25,2.5);%传感器获得传感器增益=ureal(“sensor_gain”1.“范围”,[0.1 2]);
的遥控门锁
库包含用于在Simulink中建模和分析不确定性影响的块。若要打开库,请键入金宝app
打开(“RCTblocks”)
的不确定的状态空间
块用于指定不确定线性系统(USS对象)。usim_model
包含三个以蓝色突出显示的块。下面显示“Plant”块的对话框。
在此对话框中,
“不确定系统变量”参数指定了不确定对象模型(极点不确定的一阶模型)unc_pole
).
“不确定值”参数指定块的不确定变量的值(unc_pole
在这种情况下)。
uval
是一种结构,其字段名和值是用于模拟的不确定变量名和值。你可以设置uval
来[]
用标称值表示不确定变量或变化uval
分析不确定性对模型响应的影响。
的多点图
块是一种方便的方法,可以在改变不确定度时可视化响应扩散。该块将为每个不确定度值获得的模拟结果叠加在一起。
为便于控制用于模拟的不确定度值,usim_model
使用相同的“不确定性值”uval
在所有三个不确定的状态空间
块。设置uval
来[]
模拟的闭环响应的标称值unc_pole
,输入法
,及传感器增益
:
uval = [];%使用不确定变量的名义值sim卡(“usim_model”,10);%模拟响应
要分析不确定性如何影响模型响应,可以使用ufind
和usample
用于生成的随机值的命令unc_pole
,输入法
,及传感器增益
.第一次使用ufind
找到不确定的状态空间
阻塞usim_model
并编制这些块中所有不确定变量的列表:
[uvars,pathinfo]=ufind(“usim_model”);uvars%不确定变量
Uvars = struct with fields: input_unc: [1x1 ultidyn] sensor_gain: [1x1 ureal] un_pole: [1x1 ureal]
pathinfo (: 1)%到USS块的路径
ans = 3x1 cell array {'usim_model/Plant'} {'usim_model/Sensor Gain'} {'usim_model/未建模植物动力学'}
然后使用usample
生成不确定性值uval
与指定的不确定度范围一致。例如,您可以模拟10个随机值的闭环响应unc_pole
,输入法
,及传感器增益
详情如下:
为我= 1:10;uval = usample (uvars);%生成不确定变量的随机实例sim卡(“usim_model”,10);%模拟响应结束
的多点图
窗口现在显示不确定反馈回路的10种可能响应。请注意,每个uval
实例是一个包含不确定变量值的结构输入法
,传感器增益
,及unc_pole
:
uval%不确定变量的样本值
Uval = struct with fields: input_unc: [1x1 ss] sensor_gain: 0.5893 un_pole: -4.9557
如果需要,可以将模型配置为使用不同的不确定性值uval
对于每个新的模拟。要执行此操作,请添加uvars
到基础或模型工作区,并将usample
调用模型InitFcn:
bdclose (“usim_model”), open_system (“usim_model”)%在基本工作区中写入不确定变量列表evalin (“基地”,' uvars = ufind(“usim_model”);“)%修改InitFcn模型设置参数(“usim_model”,“InitFcn”,'uval=usample(UVAR);');%模拟十次(与按“Start simulation”十次相同)为我= 1:10;sim卡(“usim_model”,10);结束%清理设置参数(“usim_model”,“InitFcn”,'');
再次多点图
窗口显示不确定反馈回路的10种可能响应。
如果您有Simulink金宝app Control Design™,您可以使用相同的工作流来线性化和分析频域的不确定系统。例如,可以绘制模型不确定性的10个随机样本的闭环波德响应图:
清楚的syswmax=50;%未建模动力学的最大固有频率(输入_unc)为我= 1:10;uval = usample (uvars 1 wmax);sys (:,:, i) =线性化(“usim_model”);结束博德(sys)头衔(“usim\\ U模型的十种线性化”);
如果工作点与不确定变量无关,则更快的方法是使用铀化
命令:
忙= ulinearize (“usim_model”)
usys=具有1个输出、1个输入、3个状态的不确定连续时间状态空间模型。模型不确定性由以下模块组成:输入不确定性1x1 LTI,峰值增益=1,1次出现传感器增益:不确定性实值,标称值=1,范围=[0.1,2],1次出现unc极点:不确定性实值,标称值=-5,范围=[-10,-4],1次出现类型“usys.NominalValue”查看标称值,“get(usys)”查看所有属性,和“usys.uncertability”来与不确定因素互动。
然后可以对不确定状态空间模型进行采样忙
生成类似的波德图:
波德(usample(忙10 wmax))标题(“usim\\ U模型的十种线性化”);