主要内容

满足频域要求的设计优化(GUI)

方法调优模型参数以满足频域要求响应优化器应用程序。

此示例需要Simulink®Control 万博1manbetxDesign™。

悬架模型

打开Simulin万博1manbetxk模型。

open_system (“sdoSimpleSuspension”

质量-弹簧-阻尼器模型代表简单的悬挂系统,对于本例,您可以调整系统以满足典型的悬挂要求。该模型使用Simulink块实现了表示质量-弹簧-阻尼器的二阶系统,包括:万博1manbetx

  • 一个质量以总悬浮质量为参数的增益块,m0 + mLoad.总质量是标称质量|m0|和可变负载质量的和,mLoad

  • 一个阻尼器增益块参数化为阻尼系数,b

  • 一个春天由弹簧常数参数化的增益块,k

  • 两个积分器块来计算质量速度和位置。

  • 一个限带扰动力对物体施加扰动力的块。扰动力假设为限带白噪声。

模拟模型以查看系统对施加扰动力的响应。

设计问题

初始系统带宽过高。这可以从尖尖的位置信号中看出。调整弹簧和阻尼器的值,以满足以下要求:

  • -3dB系统带宽不能超过10rad /s。

  • 系统阻尼比必须小于1/√(2)。这确保了没有频率在通带被系统放大。

  • 尽量减少系统的预期故障率。预期故障率由依赖于质量、弹簧和阻尼器值的威布尔分布描述。

  • 当负载质量范围从0到20时,这些要求必须全部满足。

打开响应优化器

应用程序选项卡上,单击响应优化器控制系统

指定设计变量

设计变量集列表中,选择.添加b而且k为设计变量集建模变量。

  • 指定最低而且最大的值。b变量分别为100和10000。

  • 指定最低而且最大的值。k变量分别为10000和100000。

点击好吧.一个新变量,DesignVars,出现在响应优化器浏览器。

不确定变量集列表中,选择.添加mLoad变量到不确定变量集。

  • 指定不确定的值的值。mLoad变量为[10 15 20]

点击好吧.一个新变量,UncVars,出现在响应优化器浏览器。

指定线性分析输入/输出点

指定定义用于计算带宽和阻尼比的线性系统的输入/输出点。

指定输入/输出点:

  • 列表中,选择线性化I / o

  • 在Simuli万博1manbetxnk模型中,单击控件输出处的信号限带扰动力块。的创建线性化I/O集对话框更新,所选择的信号出现在其中。

  • 创建线性化I/O对话框中,选择信号并单击添加

  • 配置列表为所选信号,选择输入扰动将其指定为输入信号。

  • 类似地,添加pos信号从Simulink模型。万博1manbetx指定这个信号作为输出。在配置列表中,选择输出测量

  • 点击好吧.一个新变量,IOs,出现在响应优化器浏览器。

增加带宽和阻尼比要求

调整弹簧和阻尼器的值以满足带宽和阻尼比的要求。

设置带宽需求。

  • 打开一个对话框以指定波德星等的边界。在列表中,选择波德级

  • 指定需求名称为带宽

  • 指定边缘开始频率和幅度分别为10 rad/s和-3db。

  • 指定边缘端频率和幅度分别为100 rad/s和-3db。

  • 通过单击指定需求应用的输入/输出集选择绑定的系统.选择IOs复选框。

  • 点击好吧.一个新的要求,带宽,出现在响应优化器浏览器和带宽需求的图形化视图将自动创建。

指定阻尼比要求:

  • 打开一个对话框以指定阻尼比的边界。在列表中,选择阻尼比

  • 指定阻尼比约束值为0.7071。

  • 通过单击指定需求应用的输入/输出集选择绑定的系统.选择IOs复选框。

  • 点击好吧.一个新的要求,DampingRatio,出现在响应优化器浏览器和阻尼比要求的图形化视图将自动创建。

增加可靠性要求

调整弹簧和阻尼器的值,将100e3英里寿命内的预期故障率降至最低。故障率是利用系统阻尼比的威布尔分布来计算的。随着阻尼比的增加,故障率预计也会增加。

将可靠性需求指定为自定义需求:

  • 打开一个对话框以指定自定义需求。在列表中,选择定制需求

  • 指定自定义需求名称为MinFailureRate

  • 指定函数区域,选择最小化函数输出类型列表。

  • 将函数指定为@sdoSuspension_FailureRate。

  • 点击好吧.一个新的要求,MinFailureRate,出现在响应优化器浏览器和自定义需求的图形化视图将自动创建。

@sdoSuspension_FailureRate函数返回生命周期为100e3英里的预期故障率。

类型sdoSuspension_FailureRate
函数pFailure = sdoSuspension_FailureRate(data) %SDOSUSPENDION_FAILURERATE % % sdoSuspension_FailureRate函数用于定义一个可在图形化SDTOOL环境中使用的自定义%需求。|数据|输入参数是一个包含优化器选择的%设计变量值的字段的结构。|pFailure|返回参数是由% SDOTOOL优化求解器最小化的故障率。故障率由威布尔%分布给出,该分布是质量、弹簧和阻尼器值的函数。这种设计最大限度地降低了100e3英里寿命内的故障率。获取弹簧和阻尼器的设计值allVarNames = {data.DesignVars.Name};idx = strcmp(allVarNames,'k');k = data.DesignVars(idx).Value;idx = strcmp(allVarNames,'b');b = data.DesignVars(idx).Value; %Get the nominal mass from the model workspace wksp = get_param('sdoSimpleSuspension','ModelWorkspace'); m = evalin(wksp,'m0'); %The expected failure rate is defined by the Weibull cumulative %distribution function, 1-exp(-(x/l)^k), where k=3, l is a function of the %mass, spring and damper values, and x the lifetime. d = b/2/sqrt(m*k); pFailure = 1-exp(-(100e3*d/250e3)^3); end

优化设计

在运行优化之前,请确保已经完成了前面的步骤。或者,您可以加载sdoSimpleSuspension_sdosession从模型工作区进入响应优化器

要保存初始设计变量值,然后将它们与优化值进行比较,请配置优化:

  • 点击选项

  • 选择保存优化的变量值为新的设计变量集选择。

研究优化过程中设计变量值的变化情况:

  • 绘制数据列表中,选择DesignVars

  • 添加图列表,并选择迭代的阴谋

  • 以适当比例的方式查看设计变量。右键单击DesignVars绘制和选择显示缩放值

要在初始设计点评估需求,请单击评估需求.需求图被更新,aReqValues变量添加到响应优化器浏览器。

单击,优化设计优化.图在优化期间更新。在优化结束时,将优化设计值写入DesignVars1变量。优化设计的需求值被写入ReqValues1变量。

分析设计

比较优化前后的设计变量:

  • 绘制数据列表中,选择DesignVars

  • 添加图列表中,选择蜘蛛的阴谋

  • 若要将优化的设计变量添加到同一绘图中,请选择DesignVars1响应优化器浏览器并将其拖到蜘蛛图上。另外,在绘制数据列表中,选择DesignVars1.然后,在添加图列表中,选择蜘蛛图1添加到现有地块部分。

该图显示,优化器降低了两者k而且b值为最优设计。

比较优化前后的需求:

  • 绘制数据列表中,选择ReqValues

  • 添加图列表中,选择蜘蛛的阴谋

  • 要将优化的需求值添加到相同的图中,请选择ReqValues1响应优化器浏览器并将其拖到蜘蛛图上。另外,在绘制数据列表中,选择ReqValues1.然后,在添加图列表中,选择蜘蛛图2添加到现有地块部分。

图中显示,优化设计具有更低的故障率(MinFailureRate轴),更好地满足带宽要求。在带宽轴上绘制的值是带宽绑定与带宽值之间的差值。通过保持这个值为负来满足约束;负值越大,表示对边界的满意程度越高。

提高的可靠性和带宽是通过推动阻尼比更接近阻尼比界限。该图有两个轴表示阻尼比要求,一个轴表示每个系统极点,绘制的值是阻尼比界限与阻尼比值之间的差值。通过保持这个值为负,优化满足了约束。

最后,模拟质量位置比初始位置响应(根据需要指示较低的带宽)更平滑,代价是较大的位置偏转。

相关的例子

学习如何优化悬架设计使用sdo.optimize命令,看到满足频域要求的设计优化(规范)

%关闭模型bdclose (“sdoSimpleSuspension”