Simulink中的鲁棒性分析
这个例子展示了如何使用鲁棒控制工具箱™提供的Simulink模块和辅助函数来指定和分析Simulink中的不确定系统,以及如何使用这些工具来执行不确定系统的蒙特卡罗模拟。
介绍
Simulink模型usim_model
由一个带有传感器反馈的不确定植物组成:
open_system (“usim_model”)
该电厂是一阶模型,有两个不确定性来源:
位置在-10和-4之间变化的实极
未建模的动力学,在低频时相对不确定性为25%,在130 rad/s时不确定性为100%。
反馈路径有一个便宜的传感器,该传感器由20 rad/s的一阶滤波器和0.1到2之间的不确定增益建模。要指定这些不确定变量,请键入
一级工厂模型un_pole = ureal(“unc_pole”5,“范围”, -10 [4]);Plant = ss(un_pole,5,1,1);%未建模的植物动力学Input_unc = ultidyn(“input_unc”[1]);Wt = makeweight(0.25,130,2.5);%传感器增益Sensor_gain = ureal(“sensor_gain”, 1“范围”(0.1 - 2));
用于不确定性建模和分析的Simulink块
的RCTblocks
库包含在Simulink中建模和分析不确定性影响的块。要打开库,请键入
打开(“RCTblocks”)
的不确定状态空间
块允许您指定不确定线性系统(USS对象)。usim_model
包含三个这样的块,用蓝色突出显示。“Plant”块的对话框如下所示。
在此对话框中,
“不确定系统变量”参数表示不确定对象模型(极点不确定的一阶模型)
unc_pole
)。"Uncertainty value"参数指定块的不确定变量(
unc_pole
在这种情况下)。
uval
是一个结构,其字段名和值是用于模拟的不确定变量名和值。你可以设置uval
来[]
对不确定变量或变量使用标称值uval
分析不确定性对模型响应的影响。
的多图图
块是一种方便的方法,可以将不确定性变化时的响应分布可视化。该块叠加了每个不确定性值的模拟结果。
不确定系统的蒙特卡罗模拟
为了方便地控制用于仿真的不确定值,usim_model
使用相同的“不确定值”uval
在这三个国家不确定状态空间
块。设置uval
来[]
的标称值模拟闭环响应unc_pole
,input_unc
,sensor_gain
:
[];%使用不确定变量的标称值sim卡(“usim_model”10);%模拟响应
要分析不确定性如何影响模型响应,可以使用ufind
和usample
生成随机值的命令unc_pole
,input_unc
,sensor_gain
。第一次使用ufind
为了找到不确定状态空间
块usim_model
并编译出这些块中的所有不确定变量的列表:
[uvars,pathinfo] = ufind(“usim_model”);uvars%不确定变量
Uvars = struct with fields: input_unc: [1x1 ultidyn] sensor_gain: [1x1 ureal] unc_pole: [1x1 ureal]
pathinfo (: 1)%到USS块的路径
ans = 3x1单元阵列{'usim_model/Plant'} {'usim_model/传感器增益'}{'usim_model/未建模的植物动力学'}
然后使用usample
生成不确定度值uval
符合规定的不确定度范围。例如,可以模拟10个随机值的闭环响应unc_pole
,input_unc
,sensor_gain
如下:
为我= 1:10;Uval = ussample (uvars);%生成不确定变量的随机实例sim卡(“usim_model”10);%模拟响应结束
的多图图
窗口现在显示了不确定反馈回路的10种可能的响应。注意每个uval
Instance是一个包含不确定变量值的结构input_unc
,sensor_gain
,unc_pole
:
uval不确定变量的%样本值
Uval = struct with fields: input_unc: [1x1 ss] sensor_gain: 0.5893 unc_pole: -4.9557
随机模拟
如果需要,您可以配置模型以使用不同的不确定性值uval
对于每个新的模拟。为此,添加uvars
到基本或模型工作区,并将usample
调用模型InitFcn:
bdclose (“usim_model”), open_system (“usim_model”)在基本工作区中写入不确定变量列表evalin (“基地”,' uvars = ufind(“usim_model”);“)%修改型号InitFcnset_param (“usim_model”,“InitFcn”,'uval = ussample (uvars);');%模拟10次(与按“开始模拟”10次相同)为我= 1:10;sim卡(“usim_model”10);结束%清理set_param (“usim_model”,“InitFcn”,”);
再次多图图
窗口显示了不确定反馈回路的10种可能响应。
不确定Simulink模型的线性化
如果您有Simulink Control Design™,您可以使用相同的工作流程来线性化和分析频域中的不确定系统。例如,您可以绘制模型不确定性的10个随机样本的闭环波德响应:
清晰的sysWmax = 50;未建模动态的最大固有频率% (input_unc)为我= 1:10;Uval = ussample (uvars,1,wmax);Sys (:,:,i) = linearize(“usim_model”);结束波德(sys)标题(usim\_model的十种线性化);
如果操作点与不确定变量无关,则更快的方法是在一次射击中使用ulinearize
命令:
Usys =线性化“usim_model”)
具有1个输出,1个输入,3个状态的不确定连续时间状态空间模型。模型不确定性由以下块组成:input_unc:不确定的1x1 LTI,峰值增益= 1,1次出现sensor_gain:不确定的real,标称= 1,范围=[0.1,2],1次出现unc_pole:不确定的real,标称= -5,范围=[-10,-4],1次出现类型“usys”。查看标称值和usys. value。“不确定性”与不确定元素相互作用。
然后可以对不确定状态空间模型进行采样忙
生成一个类似的波德图:
波德(usample(忙10 wmax))标题(usim\_model的十种线性化);