线性近似的万博1manbetx模型或子系统
打开Simulin万博1manbetxk模型。
mdl ='水缸';open_system (mdl)
在PID控制器块的输出处指定线性化输入,这是水箱系统块的输入信号。
IO(1)= Linio(“watertank / PID控制器”,1,'输入');
在水箱系统块的输出处指定一个线性化输出点。将输出点指定为开环将在不改变模型工作点的情况下消除反馈信号对线性化的影响。
IO(2)= Linio('watertank /水箱系统',1,'openOutpul');
使用指定的I / O集线性化模型。
Linsys =线性化(MDL,IO);
Linsys.
是植物在模型工作点的线性逼近。
打开Simulin万博1manbetxk模型。
mdl ='magball';open_system (mdl)
找到一个球高的稳态工作点0.05
.创建默认操作点规范,并将高度状态设置为已知值。
opspec = operspec(mdl);opspec.states(5).known = 1;opspec.states(5).x = 0.05;
修剪模型以找到操作点。
选项= findopoptions('displayReport'那“关”);op = condop(mdl,opspec,选项);
指定线性化输入和输出信号,以计算闭环传递函数。
IO(1)= Linio(“磁球/所需高度”,1,'输入');IO(2)= Linio(“magball /磁球工厂”,1,'输出');
使用指定的I / O集线在指定的操作点处线性化模型。
Linsys =线性化(MDL,IO,OP);
打开Simulin万博1manbetxk模型。
mdl ='水缸';open_system (mdl)
要计算闭环传输功能,请首先指定线性化输入和输出信号。
IO(1)= Linio(“watertank / PID控制器”,1,'输入');IO(2)= Linio('watertank /水箱系统',1,'输出');
模拟SYS.
为了10.
秒和线性化模型。
Linsys =线性化(MDL,IO,10);
打开Simulin万博1manbetxk模型。
mdl =“scdcascade”;open_system (mdl)
为外环控制器增益指定参数变化,kp1.
和ki1.
.为每个增益值创建参数网格。
Kp1_range = linspace (Kp1 Kp1 * 0.8 * 1.2, 6);Ki1_range = linspace (Ki1 Ki1 * 0.8 * 1.2, 4);[Kp1_grid, Ki1_grid] = ndgrid (Kp1_range Ki1_range);
创建带有字段的参数值结构姓名
和价值
.
Params(1).name =“Kp1”;参数(1)。价值= Kp1_grid; params(2).Name ='ki1';Params(2).value = ki1_grid;
参数个数
是一个6×4的参数值网格,其中每个网格点对应于唯一的组合kp1.
和ki1.
值。
定义线性化输入输出点,用于计算系统的闭环响应。
IO(1)= Linio('scdcascade / setpoint',1,'输入');IO(2)= Linio('scdcascade / sum',1,'输出');
使用指定的参数值线性化模型操作点。
linsys =线性化(mdl io, params);
打开Simulin万博1manbetxk模型。
mdl ='scdpwm';open_system (mdl)
从模型中提取线性化输入和输出。
IO = GetLinio(MDL);
在模型操作点进行线性化模型。
Linsys =线性化(MDL,IO)
Linsys = D =步工厂模型0静态增益。
电压到PWM块中的不连续性导致模型线性化至零。要将此块视为线性化期间的单位增益,请指定此块的替代线性化。
blocksub.name =.'SCDPWM /电压到PWM';blocksub。价值= 1;
使用指定的块替换线性化模型。
linsys =线性化(mdl blocksub io)
linsys = a =状态空间(状态空间(状态空间(0.9999 -0.0001状态空间(0.0001 1 b =步骤状态空间(0.0001状态空间(5e-09 c =状态空间)(状态空间(植物型号0 1 d =步工厂)型号0采样时间:0.0001秒离散时间 - 空间模型。
打开Simulin万博1manbetxk模型。
mdl ='水缸';open_system (mdl)
为了线心化水箱系统块,请指定线性化输入和输出。
IO(1)= Linio(“watertank / PID控制器”,1,'输入');IO(2)= Linio('watertank /水箱系统',1,'openOutpul');
创建一个线性化选项集,并指定线性化模型的采样时间。
选项= linearizeOptions(“SampleTime”,0.1);
使用指定的选项线性化工厂。
Linsys =线性化(MDL,IO,选项)
linsys = A = H H 0.995 B = PID control H 0.02494 C = H水箱S 1 D = PID control水箱S 0采样时间:0.1秒
线性化工厂是一个离散时间 - 空间模型,采样时间0.1
.
打开Simulin万博1manbetxk模型。
mdl ='水缸';open_system (mdl)
指定要线性化的块的完整块路径。
blockpath ='watertank /水箱系统';
在模型操作点处线性化指定的块。
blockpath linsys =线性化(mdl);
打开仿真软万博1manbetx件模型。
mdl ='magball';open_system (mdl)
找到一个球高的稳态工作点0.05
.创建默认操作点规范,并将高度状态设置为已知值。
opspec = operspec(mdl);opspec.states(5).known = 1;opspec.states(5).x = 0.05;
选项= findopoptions('displayReport'那“关”);op = condop(mdl,opspec,选项);
指定要线性化的块的块路径。
blockpath =“magball /磁球工厂”;
在指定的工作点对指定的块进行线性化。
Linsys =线性化(MDL,BlockPath,OP);
打开Simulin万博1manbetxk模型。
mdl ='magball';open_system (mdl)
在模型的工作点线性化工厂。
blockpath =“magball /磁球工厂”;blockpath linsys =线性化(mdl);
查看线性化设备的默认状态顺序。
linsys。attnename.
ans = 3x1 cell array {'height'} {'current'} {'dhdt'}
线性化植物并在线化模型中重新排序状态。将高度的变化率作为第二状态设置。
rounddorder = {“magball /磁球工厂/高度”;...'Magball /磁球厂/ DHDT';...'Magball /磁球厂/电流'};linsys =线性化(mdl blockpath,'陈辞',陈辞);
查看新的状态顺序。
linsys。attnename.
ans = 3x1 cell array {'height'} {'dhdt'} {'current'}
打开Simulin万博1manbetxk模型。
mdl ='水缸';open_system (mdl)
要计算闭环传输功能,请首先指定线性化输入和输出信号。
IO(1)= Linio(“watertank / PID控制器”,1,'输入');IO(2)= Linio('watertank /水箱系统',1,'输出');
模拟SYS.
将模型线性化0.
和10.
秒。返回与这些快照时间相对应的工作点;即模型线性化时的工作点。
[linsys, linop] =线性化(mdl io, [0, 10]);
打开Simulin万博1manbetxk模型。
mdl ='水缸';open_system (mdl)
不同的参数一种
和B.
在其标称值的10%以内。
[A_grid, b_grid] = ndgrid (linspace (0.9 * 1.1 * 3),...linspace (0.9 * b, b 1.1 * 4));
创建一个参数结构阵列,指定每个参数的名称和网格点。
Params(1).name =“一个”;params(1).value = a_grid;Params(2).name ='B';params(2).value = b_grid;
为模型创建默认的操作点规范。
opspec = operspec(mdl);
使用指定的操作点规范,参数网格修剪模型。抑制操作点搜索报告的显示。
opt = findopoptions('displayReport'那“关”);[op, opreport] = findop (mdl、opspec params,选择);
人事处
是一个3×4阵列的操作点对象,对应于指定的参数网格点。
为植物模型指定块路径。
blockpath =“watertank /期望的水位”;
要在线性化过程中存储偏移,请创建线性化选项集并设置储层器官
到真正的
.
选项= linearizeOptions(“StoreOffsets”,真正的);
批量使用指定的I / O点和参数变体在修剪操作点处线性化。
[Linsys,Linop,Info] =线性化(MDL,BlockPath,OP,Params,选项);
您可以使用偏移量infosets
当配置LPV System块时。
infosets
ans = 3x4结构阵列与字段:x dx u y statename inputname outputname ts
mdl
-万博1manbetxSimulink模型名称万博1manbetxSimulink模型名称,指定为字符向量或字符串。模型必须在当前工作文件夹中或在MATLAB路径中。
io
-分析点集分析点集包含输入,输出和开口,指定为线性化I / O对象或线性化I / O对象的向量。创造io
:
每个线性化I / O对象io
必须对应于Simulink模型万博1manbetxmdl
或模型层次结构中的一些正常模式模型参考。
如果您省略io
, 然后线性化
使用模型的根级别inports和Outports作为分析点。
有关指定线性化输入,输出,和开口的更多信息,请参见指定要线性化的模型部分.
人事处
-手术点线性化的操作点,指定为以下之一:
操作点对象,使用以下方法创建:
操作点对象数组,指定多个操作点。要创建一系列操作点对象,可以:
使用多个快照时提取操作点findop
.
批量使用多个操作点规范修剪模型。有关更多信息,请参阅批量计算多个规格的稳态工作点.
使用参数变体批量修剪模型。有关更多信息,请参阅批量计算参数变化的稳态工作点.
表示一个或多个模拟快照时间的正标量向量。软件模拟SYS.
并在指定的快照时间线性化模型。
如果您还指定了使用的参数变化帕纳
,软件为每个快照时间和参数网格点组合模拟模型。该操作可以计算得昂贵。
如果使用帕纳
,以及参数:
影响模型的工作点,然后指定人事处
作为一个操作点数组,其尺寸与参数值网格相同。为了获得与参数值组合对应的操作点,使用批量修剪您的模型帕纳
在线性化。有关更多信息,请参阅基于参数变化的多工作点批量线性化模型.
不要影响模型操作点,然后指定人事处
作为一个操作点。
块
-块或子系统块或子系统来线性化,指定为包含其完整块路径的字符向量或字符串。
该软件将指定块的InPorts和Outport视为开环输入和输出,该输入和输出将块与线性化之前的其余部分隔离。
blocksub
-替换块和子系统的线性化替代块和子系统的线性化,指定为结构或一个结构N-by-1结构数组N是要指定线性化的块的数量。使用blocksub
为块或子系统指定自定义线性化。例如,您可以为没有解析线性化的块指定线性化,例如具有不连续或触发子系统的块。
为研究改变模型动态对块线性化的影响,您可以通过指定块的多个替代线性化来批量线性化。
如果用不同于原始块或子系统的采样时间替换线性化,则最佳做法是设置总体线性化采样时间(选项
。采样时间
)到一个不合适的价值。
每个替代线性化结构具有以下字段。
姓名
- 块路径要指定线性化的块的块路径指定为字符向量或字符串。
价值
——替代线性化替换为块的线性化,指定为以下之一:
Double -指定SISO块的线性化作为增益。
一组双打 - 指定MIMO块的线性化作为一个N你——- - - - - -Ny增益值数组,其中N你是输入和输入的数量Ny是输出的数量。
指定模型的I/O配置必须与指定的块的配置相匹配姓名
.使用不确定的模型需要强大的控制工具箱™软件。
数组的LTI模型,不确定的状态空间模型,或不确定的真实对象-批处理线性化模型使用多个块替换。数组中每个模型的I/O配置必须与指定自定义线性化的块的配置相匹配。如果你:
结构中包含以下字段。
场地 | 描述 |
---|---|
规范 |
块线性化指定为字符向量,其中包含以下其中一个:
指定的表达式或函数必须返回以下任意一个:
返回模型的I / O配置必须与指定的块的配置匹配 |
类型 |
规范类型,指定为以下之一:
|
参数名称 |
线性化函数参数名称,指定为字符向量的单元格数组。指定 您还必须指定相应的 |
parametervalues. |
线性化函数参数值,指定为双精度向量。参数值的顺序必须与 |
帕纳
-参数样本用于线性化的参数样本,指定为以下之一:
Structure -通过指定改变单个参数的值帕纳
作为具有以下领域的结构:
姓名
-参数名称,指定为字符向量或字符串。您可以指定任何模型参数,它是模型工作空间、MATLAB工作空间或数据字典中的变量。如果模型使用的变量不是标量变量,则将参数名称指定为解析为数值标量值的表达式。例如,使用vector的第一个元素V.
作为参数,使用:
参数。Name ='v(1)';
价值
- 参数样本值,指定为双数组。
例如,更改参数的值一种
在10%范围内:
参数。Name =“一个”;param.value = linspace(0.9 * a,1.1 * a,3);
结构阵列 - 改变多个参数的值。例如,改变参数的值一种
和B.
在10%范围内:
[A_grid, b_grid] = ndgrid (linspace (0.9 * 1.1 * 3),...linspace (0.9 * b, b 1.1 * 3));Params(1).name =“一个”;params(1).value = a_grid;Params(2).name ='B';params(2).value = b_grid;
有关更多信息,请参阅为批量线性化指定参数样本.
如果帕纳
仅指定可调参数,软件批处理使用单个模型编译线性化模型。
来计算所需的偏移量LPV系统块,指定帕纳
,并设置选项。储层器官
到真正的
.然后,您可以返回额外的线性化信息信息
,并使用偏移来提取getoffsetsforlpv.
.
选项
-线性化算法选项线性化选择
选项集线性化算法选项,指定为线性化选择
选项集。
Linsys.
——线性化的结果线性化结果,作为状态空间模型或状态空间模型阵列返回。尺寸Linsys.
取决于指定的参数变化和块替换,以及模型线性化的操作点。
参数变化 | 块替换 | 线性化...... | 由此产生Linsys. 方面 |
---|---|---|---|
没有参数变化 | 没有阻止替代 | 模型操作点 | 单态空间模型 |
单个工作点,使用指定为工作点对象或快照时间人事处 |
|||
N1——- - - - - -... ——- - - - - -Nm由指定的操作点对象数组人事处 |
N1——- - - - - -... ——- - - - - -Nm |
||
NS.快照,指定为使用快照时的向量人事处 |
柱矢量长度NS. | ||
N1——- - - - - -... ——- - - - - -Nm至少一个块的模型数组,由指定blocksub。价值 |
模型操作点 | N1——- - - - - -... ——- - - - - -Nm |
|
单个工作点,使用指定为工作点对象或快照时间人事处 |
|||
N1——- - - - - -... ——- - - - - -Nm操作点数组,使用指定为操作点对象数组人事处 |
|||
NS.快照,指定为使用快照时的向量人事处 |
NS.——- - - - - -N1——- - - - - -... ——- - - - - -Nm |
||
N1——- - - - - -... ——- - - - - -Nm参数网格,指定帕纳 |
要么没有块替换,要么N1——- - - - - -... ——- - - - - -Nm至少一个块的模型数组,由指定blocksub。价值 |
模型操作点 | N1——- - - - - -... ——- - - - - -Nm |
单个工作点,使用指定为工作点对象或快照时间人事处 |
|||
N1——- - - - - -... ——- - - - - -Nm由指定的操作点对象数组人事处 |
|||
NS.快照,指定为使用快照时的向量人事处 |
NS.——- - - - - -N1——- - - - - -... ——- - - - - -Nm |
例如,假设:
人事处
是一个4×3阵列的操作点对象,您不指定参数变体或块替换。在这种情况下,Linsys.
是一个4乘3的模型阵列。
人事处
是一个操作点对象和帕纳
指定一个3×4-by-2参数网格。在这种情况下,Linsys.
是一个3×4×2型号阵列。
人事处
是有两个元素的正标量的行矢量,你没有指定帕纳
.在这种情况下,Linsys.
是一个带有两个元素的列向量。
人事处
是正标量的柱矢量,有三个元素和帕纳
指定5×6参数网格。在这种情况下,Linsys.
是一个3 × 5 × 6的模型阵列。
人事处
是单个工作点对象,不指定参数变化,并且blocksub。价值
是模型中的一个块的2×3模型数组。在这种情况下,Linsys.
是一个2乘3的模型数组。
人事处
是具有四个元素的正标量的列向量,您不指定参数变体,以及blocksub。价值
是模型中的一个块的1×2模型阵列。在这种情况下,Linsys.
是一个4乘1乘2的模型数组。
有关模型阵列的更多信息,请参阅模型阵列.
信息
——线性化信息线性化信息,作为具有以下字段的结构返回:
抵消
——线性化补偿[]
(默认)| structure | structure array对应于模型线性化的操作点的线性化偏移,返回为[]
如果选项。储层器官
是假
.除此以外,抵消
作为以下内容之一返回:
如果Linsys.
是一个单一的状态空间模型,然后抵消
是一个结构。
如果Linsys.
是一系列状态空间模型,然后抵消
结构数组是否具有相同的维度Linsys.
.
每个偏移结构都有以下字段:
场地 | 描述 |
---|---|
X |
用于线性化的状态偏移量,返回为长度的列向量NX,在那里NX状态数是多少Linsys. . |
y |
用于线性化的输出偏移,作为长度的列向量返回Ny,在那里Ny是输出的数量Linsys. . |
你 |
用于线性化的输入偏移量,返回为长度的列向量N你,在那里N你是输入的数量Linsys. . |
DX. |
连续时间系统的导数偏移量或离散时间系统的更新状态值,返回为长度的列向量NX. |
attnename. |
状态名称,作为包含的单元格数组返回NX匹配名称的元素linsys。attnename. . |
InputName. |
输入名称,作为包含N你匹配名称的元素linsys.InputName. . |
outputName. |
输出名称,作为包含的单元数组返回Ny匹配名称的元素linsys。outputName. . |
Ts |
线性化系统的采样时间,作为符合采样时间的标量返回linsys。Ts .对于连续时间系统,Ts 是0. . |
如果抵消
是结构数组,可以配置LPV系统块使用偏移集。为此,请先使用所需格式将它们转换为所需的格式getoffsetsforlpv.
.例如,看到用LTI系统阵列逼近非线性行为.
顾问
—线性化诊断信息[]
(默认)|线性化道教
对象|数组线性化道教
对象线性化诊断信息,返回为[]
如果选项。StoreAdvisor
是假
.除此以外,顾问
作为以下内容之一返回:
线性化道教
对象存储单个线性化块的线性化诊断信息。例如,使用线性化道教
对象,参见在命令行下解决线性化结果.
您可以使用Matlab路径上的自定义函数在Simulink模型中指定块或子系统的替代线性化。万博1manbetx
你的自定义线性化函数必须有一个BlockData
输入参数,它是软件创建和传递给功能的结构。BlockData
有以下字段:
场地 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
区块名 |
您指定自定义线性化的块的名称。 | ||||||||
参数 |
阻止参数值,指定为结构阵列姓名 和价值 字段。参数 属性中指定的参数的名称和值blocksub.value.parameternames.parameternames. 和blocksub.value.parametervalues. 字段。 |
||||||||
输入 |
输入信号到您定义线性化的块,指定为具有每个块输入的一个结构的结构阵列。每个结构
|
||||||||
纽约 |
块线性化的输出通道数。 | ||||||||
ν |
块线性化的输入通道数。 | ||||||||
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.parameternames.
和blocksub.value.parametervalues.
字段。
blocksub.value.parameternames = {'td'那'ts'};blocksub.Value.ParameterValues = [0.5 0.1];
默认情况下,线性化
自动设置以下Simulink模型属性:万博1manbetx
bufferreuse ='关'
RTWINLINEPARAMETERS ='ON'
blockreductionopt ='关闭'
SaveFormat = ' StructureWithTime '
线性化后,Simulink恢复了原始模型属万博1manbetx性。
万博1manbetxSimulink控制设计™软件使用逐个块方法线性化模型。该软件在Simulink模型中单独地线性化每个块,并通过组合各个块线性化来产生整个系统的线性化。万博1manbetx
该软件从操作点确定每个块的输入和状态级别,并在这些级别获取每个块的Jacobian。
对于某些块,软件不能以这种方式计算分析线性化。例如:
一些非线性没有定义的雅蟒。
一些离散块,如状态图和触发子系统,趋向于线性化为零。
有些块不实现雅可比。
自定义块,例如S函数块和MATLAB函数块,没有分析雅加索人。
您可以为任何已知预期线性化的此类块指定自定义线性化。如果您没有指定自定义线性化,软件将通过扰动块输入和状态并测量对这些扰动的响应来线性化模型。对于每个输入和状态,默认扰动级别为:
对于双精度值。
为单精度值。
这里,X是操作点处的相应输入或状态的值。有关如何更改单个块的扰动级别的信息,请参阅在线性化过程中改变扰动嵌段的扰动水平.
您可以使用全型号数字扰动来线性化系统,其中软件通过扰乱根级输入和状态的值来计算完整模型的线性化。为此,创建一个线性化选择
对象并设置线性化学算法
属性为以下内容之一:
“numericalpert”
-使用正向差分扰动输入和状态;也就是说,通过向输入和状态值添加扰动。这种扰动方法通常比'numericalpert2'
方法。
'numericalpert2'
-利用中心差分扰动输入和状态;也就是说,通过在正方向和负方向上扰动输入值和状态值。这种摄动方法通常比传统的方法更精确“numericalpert”
方法。
对于每个输入和状态,软件对模型进行摄动,并根据模型对这些摄动的响应计算一个线性模型。属性可以配置状态和输入扰动级别numericalpertrel.
线性化选项。
逐块线性化与全型数字扰动有几个优点:
大多数Si万博1manbetxmulink块具有预编程的线性化,可提供块的精确线性化。
您可以使用线性分析点来指定要线性化的模型的一部分。
您可以配置块以使用自定义线性化,而不会影响模型仿真。
在结构上删除了结构上的非生物状态。
您可以指定包含不确定性的线性化(需要强大的控制工具箱软件)。
可以获取详细的诊断信息。
线性化多速率模型时,可以使用不同的速率转换方法。全型数值扰动只能使用零阶保持速率转换。
作为替代品线性化
功能,您可以使用以下方法之一线性化模型:
要交互式线性化模型,使用模型线性化电路app.有关示例,请参阅模型操作点的线性化S万博1manbetximulink模型.
要获得多个传输功能而不修改模型或为每个传输函数创建分析点设置,请使用slLinearizer
界面。例如,看到改变参数值,获取多个传递函数.
虽然两者万博1manbetx仿真软件控制设计软件和Simulink万博1manbetxLinmod.
函数执行逐块线性化,万博1manbetx仿真软件控制设计线性化功能具有更灵活的用户界面,并使用控制系统工具箱数值算法。有关更多信息,请参阅使用Simulink控制设计与Simul万博1manbetxink的线性化.
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。