主要内容

一族

广义状态空间模型

描述

广义状态空间(一族)模型是包含可调参数或组件的状态空间模型。一族当您将数值LTI模型与包含可调组件(控制设计块)的模型组合在一起时,就会出现模型。有关数值LTI模型和控制设计块的详细信息,请参见具有可调系数的模型

您可以使用广义状态空间模型来表示混合了固定和可调组件的控制系统。使用广义状态空间模型进行控制设计任务,例如参数研究和使用命令进行参数调优systune而且looptune

建设

要构造一个一族模型:

  • 使用系列平行融通,或连接,或算术运算符+-/,,将数值LTI模型与控制设计模块相结合。

  • 使用特遣部队党卫军带有一个或多个输入参数的广义矩阵(genmat)而不是数值数组

  • 转换任何数字LTI模型、控件设计块或slTuner(金宝appSimulink控制设计)接口(需要金宝app®控制设计™),例如sys,一族使用形式:

    Gensys = genss(sys)

    sys是一个slTuner接口,gensys包含此接口中指定的所有可调块和分析点。要计算特定I/O传递函数的可调模型,请调用getIOTransfer (gensys,).在这里,而且是感兴趣的分析点。(使用getPoints(系统)以获得完整的分析点列表。)类似地,要计算特定开环传递函数的可调模型,请使用getLoopTransfer (gensys loc).在这里,疯狂的是感兴趣的分析点。

属性

包含包含在广义LTI模型或广义矩阵中的控制设计块的结构。的字段名的名字每个控件设计块的属性。

您可以使用点表示法更改这些控件设计块的某些属性。例如,如果是广义LTI模型或广义矩阵包含一个realp可调参数一个的当前值一个使用:

M.Blocks.a.Value = -1;

A, B, C, D

状态空间矩阵对可调和不确定参数的依赖关系,存储为广义矩阵(genmat),不确定矩阵(umat),或双数组。

这些属性模拟了状态空间矩阵对静态控制设计块的依赖性,realp尿素的ucomplex,或ucomplexm.动态控制设计模块等tunableGain可调参数设置为它们的当前值,内部延迟设置为零。

当相应的状态空间矩阵不依赖于任何静态控制设计块时,这些属性计算为双矩阵。

有关示例,请参见状态空间矩阵对参数的依赖关系

E

E矩阵,当广义状态空间方程是隐式的时,存储为双矩阵。的值E = []意味着广义状态空间方程是显式的。有关隐式状态空间模型的更多信息,请参见状态空间模型

StateName

州名,存储为以下类型之一:

  • 字符向量——对于一阶模型,例如,“速度”

  • 字符向量的单元格数组——对于具有两个或多个状态的模型,例如,{“位置”,“速度”}

  • -针对未命名的州。

可以将州名分配给一族仅当其所有控制设计块都是静态时才建模。否则,在相互连接组件模型以创建组件模型之前指定它们的状态名称一族模型。当你这样做时,一族模型跟踪分配的状态名。有关示例,请参见广义状态空间模型中的跟踪状态名

默认值:对于所有州

StateUnit

状态单位标签,存储为以下之一:

  • 字符向量——对于一阶模型,例如,“米/秒”

  • 字符向量的单元格数组——对于具有两个或多个状态的模型,例如,{“m”;“米/秒”}

  • -针对未命名的州。

StateUnit为方便起见,标记每个状态的单位,并且对系统行为没有影响。

你可以给a指定状态单位一族仅当其所有控制设计块都是静态时才建模。否则,请在相互连接组件模型之前指定它们的状态单元以创建一族模型。当你这样做时,一族模型跟踪分配的状态单位。有关示例,请参见广义状态空间模型中的跟踪状态名

默认值:对于所有州

InternalDelay

存储内部延迟的向量。

例如,在有延迟的系统上关闭反馈循环时,或者在串联或并联延迟系统时,会出现内部延迟。有关内部延迟的详细信息,请参见用时间延迟关闭反馈循环

对于连续时间模型,内部延迟用函数指定的时间单位表示TimeUnit模型的属性。对于离散时间模型,内部延迟表示为采样时间的整数倍Ts.例如,InternalDelay = 3表示三个采样周期的延迟。

您可以修改内部延迟的值。但是,条目的数量sys。InternalDelay不能更改,因为它是模型的结构属性。

InputDelay

每个输入通道的输入延迟,指定为标量值或数字向量。方法中存储的时间单位指定输入延迟TimeUnit财产。对于离散时间系统,指定输入延迟为采样时间的整数倍Ts.例如,InputDelay = 3表示三次采样时间的延迟。

对于一个系统ν输入,设置InputDelay到一个ν1的向量。该向量的每一项都是一个数值,表示对应输入通道的输入延迟。

你也可以设置InputDelay到一个标量值,以便对所有通道应用相同的延迟。

默认值:0

OutputDelay

输出延迟。OutputDelay为每个输出通道指定时间延迟的数字向量。方法中存储的时间单位指定输出延迟TimeUnit财产。对于离散时间系统,以采样时间的整数倍指定输出延迟Ts.例如,OutputDelay = 3表示三个采样周期的延迟。

对于一个系统纽约输出,OutputDelay到一个纽约-by-1向量,其中每个条目都是一个数值,表示对应输出通道的输出延迟。你也可以设置OutputDelay到一个标量值,以便对所有通道应用相同的延迟。

默认值:0表示所有输出通道

Ts

样品时间。对于连续时间模型,Ts = 0.对于离散时间模型,Ts表示采样周期的正标量。属性指定的单位表示此值TimeUnit模型的属性。要表示一个不指定采样时间的离散时间模型,请设置Ts = -1

更改此属性不会对模型进行离散化或重新采样。

默认值:0(持续时间)

TimeUnit

时间变量的单位是采样时间Ts,以及模型中的任何时间延迟,指定为以下值之一:

  • “纳秒”

  • 微秒的

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

更改此属性不会对其他属性产生影响,因此会改变整个系统行为。使用chgTimeUnit在时间单位之间转换而不修改系统行为。

默认值:“秒”

InputName

输入通道名称,指定为以下之一:

  • 字符向量——例如,对于单输入模型,“控制”

  • 字符向量的单元数组-用于多输入模型。

或者,使用自动向量展开为多输入模型分配输入名称。例如,如果sys是一个双输入模型,输入:

sys。InputName = 'controls';

输入名称自动展开为{“控制(1)”,“控制”(2)}

你可以用速记法u请参阅InputName财产。例如,sys.u等于sys。InputName

输入通道名有几种用途,包括:

  • 识别模型显示和图上的通道

  • 提取MIMO系统的子系统

  • 在连接模型时指定连接点

默认值:对于所有输入通道

InputUnit

输入通道单位,指定为下列之一:

  • 字符向量——例如,对于单输入模型,“秒”

  • 字符向量的单元数组-用于多输入模型。

使用InputUnit跟踪输入信号单位。InputUnit对系统行为没有影响。

默认值:对于所有输入通道

InputGroup

输入通道组。的InputGroup属性允许您将MIMO系统的输入通道分配到组中,并通过名称引用每个组。将输入组指定为结构。在这个结构中,字段名是组名,字段值是属于每个组的输入通道。例如:

sys.InputGroup.controls = [1 2];sys.InputGroup.noise = [3 5];

创建命名为控制而且噪音分别包括输入通道1、2和3、5。然后,您可以从控制输入到所有输出使用:

sys(:,“控制”)

默认值:结构,不带字段

OutputName

输出通道名称,指定为以下之一:

  • 字符矢量-用于单输出模型。例如,“测量”

  • 字符向量的单元数组-用于多输出模型。

或者,使用自动向量展开为多输出模型分配输出名称。例如,如果sys是一个双输出模型,输入:

sys。OutputName = 'measurements';

输出名称自动展开为{“测量(1)”,“测量”(2)}

你可以用速记法y请参阅OutputName财产。例如,sys.y等于sys。OutputName

输出通道名有几种用途,包括:

  • 识别模型显示和图上的通道

  • 提取MIMO系统的子系统

  • 在连接模型时指定连接点

默认值:对于所有输出通道

OutputUnit

输出通道单位,指定为下列之一:

  • 字符矢量-用于单输出模型。例如,“秒”

  • 字符向量的单元数组-用于多输出模型。

使用OutputUnit跟踪输出信号单元。OutputUnit对系统行为没有影响。

默认值:对于所有输出通道

OutputGroup

输出通道组。的OutputGroup属性允许您将MIMO系统的输出通道分配到组中,并通过名称引用每个组。将输出组指定为结构。在这个结构中,字段名是组名,字段值是属于每个组的输出通道。例如:

sys.OutputGroup.temperature = [1];sys.InputGroup.measurement = [3 5];

创建命名为温度而且测量分别包括输出通道1、3,5。的所有输入中提取子系统测量输出使用:

系统(“测量”,:)

默认值:结构,不带字段

的名字

系统名称,指定为字符向量。例如,“system_1”

默认值:

笔记

希望与系统关联的任何文本,存储为字符串或字符向量的单元格数组。属性存储您提供的任何数据类型。例如,如果sys1而且sys2系统模型都是动态的,你可以自己设置吗笔记属性如下:

sys1。笔记=sys1有一个字符串。;sys2。笔记=sys2有一个字符向量;sys1。笔记sys2。笔记
Ans = "sys1有一个字符串" Ans = " sys2有一个字符向量"

默认值:(0×1的字符串)

用户数据

您希望与系统关联的任何类型的数据,指定为任何MATLAB®数据类型。

默认值:[]

SamplingGrid

模型数组的采样网格,指定为数据结构。

对于通过对一个或多个自变量采样而得到的模型数组,此属性跟踪与数组中每个模型相关的变量值。当您显示或绘制模型数组时,将显示此信息。使用这些信息将结果追溯到自变量。

将数据结构的字段名设置为采样变量的名称。将字段值设置为与数组中的每个模型相关联的采样变量值。所有抽样变量都应该是数值和标量值,所有抽样值的数组都应该匹配模型数组的维度。

例如,假设你创建了一个11 × 1的线性模型数组,sysarr,通过不时地对线性时变系统进行快照T = 0:10.下面的代码使用线性模型存储时间样本。

sysarr。年代一个mplingGrid = struct(“时间”0:10)

类似地,假设你创建一个6 × 9的模型数组,,通过独立抽样两个变量,ζ而且w.下面的代码附加(ζ,w)

[zeta,w] = ndgrid(zeta> <6个值,w > <9个值)“ζ”ζ,' w 'w)

当你显示的时候,数组中的每个条目都包含相应的ζ而且w值。

(:: 1, - 1)(ζ= 0.3 w = 5) = 25  -------------- s ^ 2 + 3 s + 25米(:,:,2,1)[ζ= 0.35 w = 5] = 25  ---------------- s ^ 2 + 3.5 s + 25…

对于通过在多个参数值或工作点线性化Simulink模型生成的模型数组,软件进行填充金宝appSamplingGrid自动使用对应于数组中每个条目的变量值。例如,金宝appSimulink控制设计命令线性化(金宝appSimulink控制设计)而且slLinearizer(金宝appSimulink控制设计)填充SamplingGrid这样。

默认值:[]

例子

全部折叠

在本例中,您将创建一个具有一个可调参数的低通过滤器一个

F 一个 年代 + 一个

因为a的分子和分母系数tunableTF方块都是独立的,你不能用tunableTF代表F.相反,构建F使用可调实参数对象realp

创建初始值为的实际可调参数10

A = realp(“一个”, 10)
a =名称:'a'取值:10最小值:-无穷大最大值:无穷大空闲值:1实标量参数。

使用特遣部队创建可调的低通过滤器F

分子= a;分母= [1,a];F = tf(分子分母)
F =广义连续时间状态空间模型,有1个输出,1个输入,1个状态,以及以下块:a:标量参数,出现2次。输入“ss(F)”查看当前值,输入“get(F)”查看所有属性,输入“F. blocks”与块交互。

F是一个一族对象,该对象具有可调参数一个在其财产。你可以连接F与其他可调或数值模型一起创建更复杂的控制系统模型。有关示例,请参见具有可调谐元件的控制系统

这个例子展示了如何创建一个状态空间一族具有固定参数和可调参数的模型。

一个 1 一个 + b 0 一个 b B - 3. 0 1 5 C 0 3. 0 D 0

在哪里一个而且b是可调参数,其初始值是-1而且3.,分别。

使用创建可调参数realp

A = realp(“一个”1);B = realp(“b”3);

的代数表达式定义一个广义矩阵一个而且b

A = [1 A +b;0 A *b];

一个广义矩阵是谁的属性包含一个而且b.的初始值一个[1 2;0 -3]的初始值一个而且b

创建固定值的状态空间矩阵。

B = [-3.0;1.5];C = [0.3 0];D = 0;

使用党卫军创建状态空间模型。

sys = ss(A,B,C,D)
sys =广义连续时间状态空间模型,有1个输出,1个输入,2个状态,以及以下块:a:标量参数,出现2次。b:标量参数,2次。输入“ss(sys)”查看当前值,输入“get(sys)”查看所有属性,输入“sys. sys”查看当前值。Blocks”来与这些块进行交互。

sys为广义LTI模型(一族),参数可调一个而且b

本例展示了如何创建控制系统的可调模型,该控制系统具有固定的设备和传感器动态以及可调的控制组件。

考虑下图的控制系统。

假设植物的反应是 G 年代 1 / 年代 + 1 2 ,传感器动力学模型为 年代 年代 5 / 年代 + 4 .控制器 C 为可调PID控制器,预滤波器 F 一个 / 年代 + 一个 是具有一个可调参数的低通滤波器,一个

创建代表植物和传感器动态的模型。因为植物和传感器动态是固定的,所以使用数值LTI模型来表示它们。

G = zpk([],[-1,-1],1);S = tf(5,[1 4]);

要对可调组件建模,请使用控制设计块。创建控制器的可调表示C

C =可调谐pid (“C”“PID”);

C是一个tunablePID对象,它是一个具有预定义的比例-积分-导数(PID)结构的控制设计块。

创建过滤器的模型 F 一个 / 年代 + 一个 只有一个可调参数。

A = realp(“一个”10);F = tf(a,[1 a]);

一个是一个realp(实际可调参数)初始值为10的对象。使用一个作为一个系数特遣部队创建可调对象一族模型对象F

将模型相互连接,以构造一个完全闭环响应的模型ry

T =反馈(G*C,S)*F
T =广义连续时间状态空间模型,有1个输出,1个输入,5个状态,和以下块:C:可调谐PID控制器,1次出现。a:标量参数,2次。输入“ss(T)”查看当前值,输入“get(T)”查看所有属性,输入“T. blocks”与块交互。

T是一个一族模型对象。与仅连接数值LTI模型形成的聚合模型相比,T跟踪控制系统的可调元素。可调元素存储在的属性一族模型对象。的可调元素T

T.Blocks
ans =带字段的结构:C: [1x1 tunablePID] a: [1x1 realp]

当你创建一族具有可调组件的控制系统模型,可以使用诸如systune调整自由参数以满足指定的设计要求。

创建一个一族使用标记的状态名进行建模。为此,在连接组件LTI模型之前标记它们的状态。例如,将两个状态固定系数的植物模型和一个状态可调控制器连接起来。

A = [-1 -1;1 0];B = [1;0);C = [0 1];D = 0;G = ss(A,B,C,D);G.StateName = {“Pstate1”“Pstate2”};C =不可调(“C”, 1, 1, 1);L = g * c;

一族模型l保留创建它的组件的状态名。因为您没有为可调组件分配状态名C,软件会自动执行。的州名l来确认它们。

L.StateName
ans =3 x1细胞{'Pstate1'} {'Pstate2'} {'C;x1的}

为控制设计块自动分配状态名允许您跟踪广义模型中的哪些状态是由可调组件贡献的。

类型转换时,也会保留州名一族模型转换为固定系数状态空间模型。要确认,请转换l党卫军的形式。

Lfixed = ss(L);Lfixed。年代tateName
ans =3 x1细胞{'Pstate1'} {'Pstate2'} {'C;x1的}

状态单元标签,存储在StateUnit的属性一族模型,行为相似。

创建一个具有可调参数的广义模型,并检查一个矩阵。为此,检查一个广义模型的性质。

G = tf(1,[1 10]);K = realp(“k”1);F = tf(k,[1 k]);L1 = g * f;L1。一个
ans =有2行2列和以下块的广义矩阵:k:标量参数,出现2次。输入“double(ans)”查看当前值,输入“get(ans)”查看所有属性,输入“ans. blocks”与块交互。

一个属性是一个广义矩阵,它保留了对实可调参数的依赖关系k.状态空间矩阵的性质一个BC,D只保留对静态参数的依赖。当一族模型具有动态控制设计块,这些被设置为它们的当前值,用于评估状态空间矩阵属性。例如,检查一个a的矩阵性质一族模型与可调PI块。

C =可调谐pid (“C”“π”);L2 = g * c;L2。一个
ans =2×2-10.0000 0.0010 00

在这里,一个矩阵存储为双矩阵,其值为一个的当前值的矩阵L2

L2cur = ss(L2);L2cur。一个
ans =2×2-10.0000 0.0010 00

提取状态空间矩阵ssdata将所有控制设计块设置为当前值或标称值,包括静态块。的当前值一个矩阵的L1

[A,B,C,D] = ssdata(L1);一个
一个=2×2-10 10 10 -1
双(L1.A)
ans =2×2-10 10 10 -1
L1cur = ss(L1);L1cur。一个
ans =2×2-10 10 10 -1

提示

  • 你可以操纵一族普通模型党卫军模型。分析命令,例如波德而且一步通过将每个可调参数替换为其当前值来评估模型。

版本历史

在R2011a中引入