主要内容

slTuner

控制系统调优接口动态仿真模块模型

描述

= slTuner (mdltuned_blocks创建一个slTuner接口,,用于调优Simulink的控制系统模块®模型中,mdl.界面将模型中标记的线性分析点添加为分析点.该界面还添加了线性分析点,这意味着一个开放为永久的空缺.例如,当接口执行线性化以优化块时,它使用模型初始条件作为工作点。

= slTuner (mdltuned_blockspt的分析点列表中添加指定的点,忽略模型中标记的线性分析点。

= slTuner (mdltuned_blocks参数指定在调优模型块时希望改变其值的参数。

= slTuner (mdltuned_blocks人事处指定调优模型块的操作点。

= slTuner (mdltuned_blocksblocksub指定块和子系统的替代线性化。例如,使用此语法指定块的自定义线性化。您还可以将此语法用于未成功线性化的块,例如具有不连续或触发子系统的块。

= slTuner (mdltuned_blocks选项配置线性化算法选项。

= slTuner (mdltuned_blockspt人事处参数blocksub选项使用输入参数的任意组合pt人事处参数blocksub,选项创建.例如,你可以使用:

  • st = slTuner(mdl,tuned_blocks,pt,param)

  • st = slTuner(mdl,tuned_blocks,op,param)

对象描述

slTuner提供了Simulink模型和调优命令之间的接口systune而且looptuneslTuner允许您:

  • 指定控制体系结构。

  • 指定并参数化要调优的块。

  • 调优控制系统。

  • 通过计算(线性化)开环和闭环响应来验证设计。

  • 将调优值写回模型。

因为调优命令如systune对线性模型进行操作slTuner接口自动计算并存储Simulink模型的线性化。对象的任何属性时,此线性化将自动更新slTuner接口。当您调用查询存储在接口中的线性化的命令时,将发生更新。这些命令包括systunelooptunegetIOTransfer,getLoopTransfer.有关线性化的更多信息,请参见什么是线性化?

例子

全部折叠

创建和配置slTuner接口用于Simulink®模型,指定使用哪些块进行调优systunelooptune

打开Simulink模型。

mdl =“scdcascade”;open_system (mdl)

控制系统由两个反馈回路和一个带PI控制器的内环组成C2,外环带PI控制器C1.假设您想要调优此模型以满足以下控制目标:

  • 跟踪设定值更改为r在系统输出端y1m具有零稳态误差和指定上升时间。

  • 拒绝由所表示的扰动d2

systune命令可以联合调优控制器块以满足您指定使用的这些设计要求TuningGoal对象。的slTuner接口设置此调优任务。

创建一个slTuner模型的接口。

st = slTuner(mdl,{“C1”C2的});

该命令初始化slTuner接口,并指定两个PI控制块为可调。每个可调块根据其类型自动参数化,并在Simulink模型中使用其值初始化。模型的其余不可调部分的线性化被计算并存储在slTuner接口。

配置slTuner接口,指定与设计要求相关的任何信号位置为分析点。为跟踪需求添加输出和参考输入。另外,添加干扰抑制位置。

addPoint (st, {“r”“y1m”“d2”});

现在可以引用模型中的这些位置了TuningGoal捕获设计目标的对象。

的摘要slTuner命令窗口中的接口配置。

slTuner调谐接口“scdcascade”:2调谐块:(只读TunedBlocks属性)--------------------------块1:scdcascade/C1块2:scdcascade/C2 3分析点:--------------------------点1:信号“r”,位于scdcascade的“输出端口1”/setpoint点2:信号“y1m”,位于scdcascade的“输出端口1”/Sum点3:scdcascade的“输出端口1”/d2无永久开放。使用addOpening命令添加新的永久开口。参数:[]OperatingPoints:[](将使用模型初始条件)BlockSubstitutions:[]选项:[1x1线性化。SlTunerOptions] Ts: 0

显示界面中列出了指定的可调块、分析点和接口的其他信息。在命令窗口中,单击任何高亮显示的信号以查看其在Simulink模型中的位置。注意,指定块名“d2”addPoint命令等效于指定该块的单个输出信号作为分析点。

您现在可以使用TuningGoal对象和用途systunelooptune调整控制系统以满足这些设计目标。

除了指定设计目标之外,您还可以使用分析点来提取系统响应。例如,提取并绘制参考信号之间的阶跃响应“r”以及输出“y1m”

T = getIOTransfer(st,“r”“y1m”);stepplot (T)

输入参数

全部折叠

Simulink模型名称,指定为字符向量或字符串。

例子:“scdcascade”

的调优块列表中添加的块,具体为:

  • 字符向量或字符串-块路径。可以指定完整块路径,也可以指定部分路径。部分路径必须匹配完整块路径的末尾,并明确标识要添加的块。例如,您可以通过其名称引用一个块,前提是该块名称只在Simulink模型中出现一次。

    例如,blk = 'scdcascade/C1'

  • 字符向量或字符串数组的单元格数组-多个块路径。

    例如,blk = {'scdcascade/C1','scdcascade/C2'}

分析点添加到分析点列表中,具体为:

  • 字符向量或字符串-分析点标识符,可以是以下任何一个:

    • 例如,信号名称Pt = '扭矩'

    • 例如,具有单个输出端口的块的块路径pt = '马达/PID'

    • 例如,阻塞发出信号的路径和端口pt = '发动机型号/1'

  • 字符向量或字符串数组的单元格数组-指定多个分析点标识符。例如:

    pt ={'扭矩','电机/PID','发动机型号/1'}
  • 线性化I/O对象向量-创建pt使用linio.例如:

    Pt (1) = linio(“scdcascade /选点”,1,“输入”);Pt (2) = linio(“scdcascade /总和”,1,“输出”);

    在这里,pt (1)指定输入,和pt (2)指定输出。

    接口添加指定的所有点pt并忽略它们的I/O类型。该界面还添加了all“loopbreak”将信号输入如下永久的空缺

用于线性化的参数样本mdl,具体为:

  • 结构-通过指定改变单个参数的值参数作为具有以下字段的结构:

    • 的名字—参数名称,以字符向量或字符串形式指定。您可以在模型工作区(MATLAB)中指定作为变量的任何模型参数®工作区,或者数据字典。如果模型使用的变量不是标量变量,则将参数名称指定为解析为数值标量值的表达式。例如,使用向量的第一个元素V作为参数,使用:

      参数。Name =“V(1)”
    • 价值-参数样例值,指定为双数组。

    例如,改变参数的值一个在10%范围内:

    参数。Name =“一个”;参数。价值= linspace(0.9*A,1.1*A,3);
  • 结构数组-改变多个参数的值。例如,改变参数的值一个而且b在10%范围内:

    [A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...linspace (0.9 * b, b 1.1 * 3));参数(1)。Name =“一个”;参数(1)。价值= A_grid; params(2).Name =“b”;参数(2)。价值= b_grid;

有关更多信息,请参见为批量线性化指定参数样本

如果参数只指定可调参数,然后软件批处理使用单个编译线性化模型。如果你也配置st.OperatingPoints该软件只使用操作点对象,使用单模型编译。

有关显示使用参数采样的批量线性化如何工作的示例,请参见改变参数值,获得多个传递函数.这个例子使用了slLinearizer,但过程是一样的slTuner

方法所需的偏移量LPV系统块,指定参数,并设置st.Options.StoreOffsets真正的.然后,可以在调用线性化函数时返回额外的线性化信息,例如getIOTransfer,并提取偏移量getOffsetsForLPV

线性化的工作点mdl,具体为:

  • OperatingPointOperatingReport对象,使用findop使用单个工作点规范或单个快照时间。

  • 的数组OperatingPointOperatingReport对象,指定多个工作点。

    的数组创建OperatingPointOperatingReport对象,你可以:

  • 正标量的向量,指定模拟快照时间。

如果你配置st.Parameters,然后指定人事处作为下列之一:

  • OperatingPointOperatingReport对象。

  • 的数组OperatingPointOperatingReport属性指定的参数网格的大小匹配的对象参数财产。当你批量线性化mdl,该软件只使用一个模型编译。为了获得与参数值组合相对应的工作点,使用批量修剪模型参数在线性化。的例子线性化命令,看到基于参数变化的多工作点批量线性化模型

  • 多个快照次数。当你批量线性化mdl,软件模拟模型对每个快照时间和参数网格点进行组合。这个操作的计算开销很大。

将线性化替换为块和模型子系统,指定为结构或n-by-1结构数组,其中n要为其指定线性化的块数。使用blocksub为块或子系统指定自定义线性化。例如,您可以为没有分析线性化的块指定线性化,例如具有不连续或触发子系统的块。

要研究改变块的线性化对模型动态的影响,可以通过为块指定多个替代线性化来批量线性化模型。

如果用与原始块或子系统的采样时间不同的采样时间代替线性化,则最佳实践是设置总体线性化采样时间(选项.SampleTime)到非默认值。

每个代用线性化结构都有以下字段。

要为其指定线性化的块的块路径,指定为字符向量或字符串。

用线性化代替块,指定为以下之一:

  • Double -指定作为增益的SISO块的线性化。

  • 双精度数组-指定MIMO块的线性化为nu——- - - - - -ny增益值数组,其中nu输入的数量和ny是输出的数量。

  • LTI模型、不确定的状态空间模型或不确定的真实对象-指定模型的I/O配置必须与指定块的配置相匹配的名字.使用不确定模型需要鲁棒控制工具箱™软件。

  • LTI模型、不确定状态空间模型或不确定真实对象的数组-使用多个块替换批量线性化模型。数组中每个模型的I/O配置必须与指定自定义线性化的块的配置相匹配。如果你:

    • 使用以下方法改变模型参数参数并指定价值的维数作为模型数组价值必须匹配参数网格大小。

    • 定义多个块的块替换,并指定价值当LTI数组为多个块建模时,数组的尺寸必须匹配。

  • 结构,使用以下字段:

    描述
    规范

    块线性化,指定为包含下列之一的字符向量

    指定的表达式或函数必须返回下列之一:

    • d -矩阵形式的线性模型

    • 控制系统工具箱™LTI模型对象

    • 不确定的状态空间模型或不确定的真实对象(需要鲁棒控制工具箱软件)

    返回模型的I/O配置必须与指定的块的配置相匹配的名字

    类型

    规格类型,指定为下列之一:

    • “表情”

    • “函数”

    ParameterNames

    线性化函数参数名称,指定为字符向量的单元格数组。指定ParameterNames只有当Type = 'Function'你的块线性化函数需要输入参数。这些参数只影响指定块的线性化。

    还必须指定相应的blocksub.Value.ParameterValues字段。

    ParameterValues

    线性化函数的参数值,指定为双精度向量。参数值的顺序必须与中参数名的顺序一致blocksub.Value.ParameterNames.指定ParameterValues只有当Type = 'Function'你的块线性化函数需要输入参数。

slTuner选项,指定为slTunerOptions选项设置。

例子:options = slTunerOptions('IgnoreDiscreteStates','on')

属性

slTuner对象属性包括:

TunedBlocks

要调优的块mdl,指定为字符向量的单元格数组。

当你创建slTuner接口,TunedBlocks属性中指定的块将自动填充tuned_blocks输入参数。在现有对象中指定其他可调块slTuner接口,使用addBlock

Ts

用于分析和调优的采样时间mdl,指定为非负标量。

使用点表示法设置此属性(st.Ts = Ts).

默认值:0(表示连续时间)

参数

用于线性化的参数样本mdl,指定为结构或结构数组。

属性设置此属性参数输入参数或点符号(st.Parameters =参数).参数必须是以下其中之一:

如果参数只指定可调参数,然后软件批处理使用单个编译线性化模型。如果你也配置st.OperatingPoints该软件只使用操作点对象,使用单模型编译。

OperatingPoints

线性化的操作点mdl,指定为OperatingPoint对象的数组OperatingPoint对象,或正标量数组。

属性设置此属性人事处输入参数或点符号(st.OperatingPoints = op).人事处必须是以下其中之一:

  • OperatingPointOperatingReport对象,使用findop使用单个工作点规范或单个快照时间。

  • 的数组OperatingPointOperatingReport对象,指定多个工作点。

    的数组创建OperatingPointOperatingReport对象,你可以:

  • 正标量的向量,指定模拟快照时间。

如果你配置st.Parameters,然后指定人事处作为下列之一:

  • OperatingPointOperatingReport对象。

  • 的数组OperatingPointOperatingReport属性指定的参数网格的大小匹配的对象参数财产。当你批量线性化mdl,该软件只使用一个模型编译。为了获得与参数值组合相对应的工作点,使用批量修剪模型参数在线性化。的例子线性化命令,看到基于参数变化的多工作点批量线性化模型

  • 多个快照次数。当你批量线性化mdl,软件模拟模型对每个快照时间和参数网格点进行组合。这个操作的计算开销很大。

BlockSubstitutions

用线性化代替块和模型子系统,指定为结构或结构数组。

使用此属性可指定块或子系统的自定义线性化。您还可以将此语法用于没有分析线性化的块,例如具有不连续或触发子系统的块。

属性设置此属性blocksub输入参数或点符号(st.BlockSubstitutions = blocksubs).有关所需结构的信息,请参见blocksub

选项

线性化算法选项,指定为使用创建的选项集slTunerOptions

属性设置此属性选择输入参数或点符号(st.Options = opt).

模型

要线性化的Simulink模型的名称,由输入参数指定为字符向量mdl

TimeUnit

时间变量单位。此属性指定返回的线性化模型的时间单位getIOTransfergetLoopTransfergetSensitivity,getCompSensitivity.可以使用以下任意值:

  • “纳秒”

  • 微秒的

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

默认值:“秒”

对象的功能

addBlock 将块添加到调优块列表slTuner接口
addOpening 将信号添加到空缺列表slLinearizerslTuner接口
addPoint 将信号添加到分析点列表slLinearizerslTuner接口
getPoints 获取分析点列表slLinearizerslTuner接口
getOpenings 获取职位空缺的清单slLinearizerslTuner接口
getBlockParam 获取调优块的参数化slTuner接口
getBlockValue 获取调优块参数化的当前值slTuner接口
getTunedValue 获取调谐变量的当前值slTuner接口
getBlockRateConversion 获取调优块的速率转换设置slTuner接口
setBlockParam 设置调优块的参数化slTuner接口
setBlockValue 中设置调优块参数化的值slTuner接口
setBlockRateConversion 设置调优块的速率转换设置slTuner接口
systune 调整控制系统参数动态仿真模块使用slTuner接口
looptune 调整MIMO反馈循环动态仿真模块使用slTuner接口
loopview 图形化分析控制系统调优使用的结果slTuner接口
looptuneSetup 构造调优设置looptune调优设置systune使用slTuner接口
showTunable 的可调块的参数化值slTuner接口
getIOTransfer 用于指定I/O集的传递函数slLinearizerslTuner接口
getLoopTransfer 在指定点使用开环传递函数slLinearizerslTuner接口
getSensitivity 灵敏度函数在指定点使用slLinearizerslTuner接口
getCompSensitivity 在指定点使用互补灵敏度函数slLinearizerslTuner接口
writeBlockValue 中更新块值动态仿真模块模型
writeLookupTableData 更新调优查找表的部分
removePoint 从分析点列表中删除点slLinearizerslTuner接口
removeAllPoints 从分析点列表中删除所有点slLinearizerslTuner接口
removeAllOpenings 从永久开口列表中删除所有开口slLinearizerslTuner接口
刷新 重新同步slLinearizerslTuner与当前模型状态的接口

更多关于

全部折叠

分析点

分析点,由slLinearizer而且slTuner接口,识别模型中与线性分析和控制系统调优相关的位置。您使用分析点作为线性化命令的输入,例如getIOTransfergetLoopTransfergetSensitivity,getCompSensitivity.作为线性化命令的输入,分析点可以指定模型中的任何开环或闭环传递函数。在使用诸如命令调优控制系统时,还可以使用分析点指定设计需求systune

位置指模型中的特定块输出端口或此类输出端口中的总线元素。为了方便起见,您可以使用来自此端口的信号的名称来引用分析点。

可以将分析点添加到slLinearizerslTuner接口,年代,当您创建接口时。例如:

s = slLinearizer(“scdcascade”, {‘u1’“日元”});

或者,您可以使用addPoint命令。

的所有分析点年代、类型年代在命令提示符下显示界面内容。的每个分析点年代,显示包括块名称和端口号以及在这一点产生的信号的名称。您还可以通过编程方式获得所有分析点的列表getPoints

有关如何使用分析点的更多信息,请参见控制系统分析与设计的感兴趣信号标记而且标记感兴趣的信号批量线性化

永久的空缺

永久的空缺,由slLinearizer而且slTuner接口,识别模型中软件中断信号流的位置。软件强制这些开口进行线性化和调优。使用永久开口来隔离特定的模型组件。假设你有一个捕捉飞机动力学的大尺度模型,你只想对机身进行线性分析。您可以使用永久开口来排除模型的所有其他组件。另一个例子是,当您的模型中有级联循环时,您想要分析一个特定的循环。

位置指模型中特定的块输出端口。为了方便起见,您可以使用来自此端口的信号的名称来指代一个开口。

你可以在一个slLinearizerslTuner接口,年代,当您创建接口或使用addOpening命令。若要从永久空缺列表中删除某个位置,请使用removeOpening命令。

查看所有的开口年代、类型年代在命令提示符下显示界面内容。为每一个永久的开放年代,显示包括块名称和端口号以及来自此位置的信号的名称。您还可以通过编程方式获得所有永久循环开口的列表getOpenings

自定义线性化函数

可以使用MATLAB路径上的自定义函数为Simulink模型中的块或子系统指定替代线性化。

你的自定义线性化函数必须有一个BlockDataInput参数,这是软件创建并传递给函数的结构。BlockData具有以下字段:

描述
BlockName 要为其指定自定义线性化的块的名称。
参数 的结构数组指定的块参数值的名字而且价值字段。参数属性中指定的参数的名称和值blocksub.Value.ParameterNames而且blocksub.Value.ParameterValues字段。
输入

输入信号到您正在为其定义线性化的块,指定为每个块输入具有一个结构的结构数组。中的每个结构输入具有以下字段:

描述
BlockName 输出连接到相应块输入的块的全块路径。
PortIndex 指定的块的输出端口BlockName它连接到相应的块输入。
指定的信号的值BlockName而且PortIndex.如果这个信号是矢量信号,那么是一个具有相同维数的向量。
纽约 块线性化的输出通道数。
ν 块线性化的输入通道数。
BlockLinearization 块的当前默认线性化,指定为状态空间模型。您可以指定块线性化,该块线性化依赖于使用的默认线性化BlockLinearization

自定义函数必须返回带有的模型ν输入和纽约输出。此模型必须是以下其中之一:

  • d -矩阵形式的线性模型

  • 控制系统工具箱LTI模型对象

  • 不确定的状态空间模型或不确定的真实对象(需要鲁棒控制工具箱软件)

例如,下面的函数将当前默认块线性化乘以的延迟Td = 0.5秒。时延用带采样时间的Thiran滤波器表示Ts = 0.1.延迟和采样时间是存储在BlockData

函数sys = myCustomFunction(BlockData) Td = BlockData. parameters (1).Value;Ts = BlockData.Parameters(2).Value;sys = BlockData.BlockLinearization*Thiran(Td,Ts);结束

将此函数保存到MATLAB路径上的某个位置。

要将此函数用作块或子系统的自定义线性化,请指定blocksub.Value.Specification而且blocksub.Value.Type字段。

blocksub.Value.Specification =“myCustomFunction”;blocksub.Value.Type =“函数”

要设置延迟和采样时间参数值,请指定blocksub.Value.ParameterNames而且blocksub.Value.ParameterValues字段。

blocksub.Value.ParameterNames = {“Td”“t”};blocksub.Value.ParameterValues = [0.5 0.1];

算法

slTuner中描述的算法将Simulink模型线性化精确线性化算法

版本历史

在R2014a中引入

Baidu
map