这个例子显示了如何使用鲁棒控制工具箱™提供的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]);
这rctblocks.
库包含模型和分析Simulink中的不确定性效果的块。金宝app打开库,键入
打开('rctblocks')
这不确定状态空间
块允许您指定不确定的线性系统(USS对象)。usim_model
包含三个这样的块,这些块以蓝色突出显示。“工厂”块的对话框显示在下面。
在此对话框中,
的“不确定的系统变量”参数指定不确定工厂模型(一阶不确定极点模型unc_pole
)。
在“不确定性值”参数指定块的不确定变量的值(unc_pole
在这种情况下)。
uval
是一种结构,它的字段名称和值是不确定的变量名和值以用于模拟。您可以设置uval
到[]
使用标称值的不确定变量或更改uval
分析不确定性如何影响模型的响应。
这多孔图
块是在不确定性变化时可视化响应的便捷方式。该块叠置了每个不确定性值获得的模拟结果。
为了轻松控制用于模拟的不确定性值,usim_model
使用相同的“不确定性值”uval
在所有三个中不确定状态空间
块。环境uval
到[]
用于模拟的标称值的闭环响应unc_pole
那input_unc.
, 和Sensor_gain.
:
uval = [];不确定变量%的人使用标称值SIM('usim_model',10);%模拟响应
要分析不确定性如何影响模型响应,可以使用ufind
和usample.
命令生成随机值unc_pole
那input_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_pole
那input_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的控制设计™,您可以使用相同的工作流在频域进行线性分析不确定系统。例如,你可以绘制的模型不确定性的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的十个线性化);