在调整增益预定的控制系统时,有时有助于在设计网格中的不同点处强制执行不同的设计要求。例如,您可能想要:
指定变量调整目标,该目标在设计点上显式或隐式依赖。
在设计点的子集中强制执行调整目标,但在其他设计点忽略它。
从特定的运行中排除设计点systune
,但保留它进行分析或其他调整操作。
消除所有设计和分析阶段的设计点。
有几种方法可以定义调整目标,这些目标会跨设计点变化。
的varyingGoal
命令允许您在设计点上隐式或明确依赖的调整目标。
例如,创建调整目标,该调整目标指定跨设计点网格的可变增益和相位边距。假设您使用以下5×5网格的设计点来调整控制器。
(α,V) = ndgrid (linspace(0, 20日5),linspace(700、1300、5));
进一步假设您有一个5 × 5的目标增益裕度和目标相位裕度阵列,它们对应于每个设计点,如下所示。
[gm,pm] = ndgrid(linspace(7,20,5),linspace(45,70,5));
要在每个设计点强制指定的边距,首先为边距目标创建一个模板。模板是一个函数,它接受增益和相位裕度值,并返回TuningGoal.Margins.
具有这些边距的。
fh = @(gm,pm)tuninggoal.margins(“u”、通用、点);
使用模板和边距数组来创建不同的目标。
VG = varyingGoal (FH、通用、点);
为了更容易追踪哪个目标适用于哪个设计点,使用SamplingGrid
属性要将设计点信息附加到VG
.
vg.samplinggrid = struct('α'α,'v', V);
使用VG
和systune
正如您将使用任何其他调优目标一样。使用viewGoal
可视化调优目标并确定未能满足目标裕度的设计点。对于不同的调优目标,可以使用viewGoal
Plot包括用于检查特定设计点的目标和系统性能的滑块。看到验证增益调度控制系统.
模板函数在构建设计目标时提供了很大的灵活性。例如,你可以写一个函数,GOALSPEC(A,B)
,将目标超调作为参数的一个非平凡函数(a,b)
,并保存Matlab中的函数®文件。然后调用您的模板函数goalspec
:
fh = @(a,b)tuninggoal.porshoot(“r”,y',goalspec(a,b));
有关配置变化目标的更多信息,请参阅varyingGoal
参考页面。
强制执行设计点的要求的另一种方法是为每个设计点创建一个单独的要求实例。当您有一个仅适用于设计阵列中的一些模型的目标时,这种方法可能很有用。例如,假设您想要强制执行1 /年代回路形状只在前五个设计点上,交叉频率取决于调度变量。假设你已经创建了一个矢量,wc
,其中包含每个设计点的目标带宽。然后你可以构建一个TuningGoal。LoopShape
每个设计点的要求。将每一TuningGoal。LoopShape
要求用相应的设计点使用楷模
需求的属性。
为ct = 1:length(wc) R(ct) = TuningGoal。LoopShape (“u”,WC(CT));r(ct).model = ct;结尾
如果wc
覆盖网格中的所有设计点,这种方法等价于使用varyingGoal
对象。这是一个有用的选择varyingGoal
当你只想约束一些设计点。
您可以将该要求的闭环模型结合到控制系统的闭环模型中,而不是创建不同的要求。这种方法是一种目标归一化的形式,可以通过单个统一目标覆盖所有设计点。
例如,假设您想限制从d
来y
一个取决于调度变量的量。假设T0
是一组闭环系统在每个设计点的模型。假设您创建了一个表,gmax.
,每个设计点的最大增益值,σ..然后你可以添加另一个输出ys.
=y / gmax
到闭环模型,如下所示。
创建标量增益1/gmax数组yscaling = Reshape(1./gmax,[1 1尺寸(gmax)]);yscaling = ss(yscaling,'InputName','是',“OutputName”,“y”);%将这些增益串联到T0的y输出t0 = connect(t0,yscaling,t0.inputname,[t0.outputname; {“y”}));
根据表格的每个设计点的最大增益发生变化gmax.
.然后,您可以使用一个限制增益为1的单一需求d
到缩放后的输出ys.
.
r = tuninggoal.gain(' d ',“y”,1);
这种有效的需求规范化将需求可变性从需求对象中移出,R
,到闭环模型,T0
.
在仿真金宝app软件®,您可以使用类似的方法,通过增益块提供相关的模型输入和输出。然后,当你线性化模型,改变增益值的块与运行条件。例如,设置增益为一个MATLAB变量,并使用参数
物业SLINESERIZER.
使用每个线性化条件更改变量值。
控件可以将调优目标的应用限制为设计网格中的模型子集楷模
调整目标的财产。通过模型数组中的线性索引指定模型。例如,假设您有一个调整目标,要求的事情
.配置要求的事情
应用于3×3设计网格中的第一个和最后一个模型。
Req.models = [1,9];
当你打电话systune
和要求的事情
无论是硬目标还是软目标,systune
强制执行要求的事情
对于这些模型,忽略其余的网格。
systune
运行您可以从调优中排除一个或多个设计点,而不需要从数组中删除相应的模型或重新配置调优目标。这样做可能很有用,例如,当对整个设计网格进行调优未能满足设计需求时,可以识别有问题的设计点。当您希望从特定调优运行中排除一些设计点,但保留这些设计点以供性能分析或进一步调优时,它也会很有用。
的SkipModels
选择systuneOptions
允许您在设计网格中指定从调优中排除的模型。通过模型数组中的线性索引指定模型。例如,配置systuneOptions
跳过3 × 3设计网格中的第一个和最后一个模型。
选择= systuneOptions;opt.SkipModels = [1, 9];
当你打电话systune
和选择
,调优算法会忽略这些模型。
作为替代方案,您可以完全消除模型网格中的设计点,以便它们对任何调整或分析的阶段没有贡献。这样做,使用voidModel
,它将模型数组中的指定模型替换为南
.当您的采样网格包括表示无关或不受神经设计点的点时,此选项非常有用。使用voidModel
让您设计几乎定期的设计点网格。
systuneOptions
|varyingGoal
|viewGoal