主要内容

线性(LTI)模型

什么是植物?

通常,控制工程师通过开发他们想要控制的动态系统的数学描述来开始。要控制的系统被称为a植物.以工厂为例,本节以直流电机为例。本节发展微分方程来描述带有惯性负载的直流电机的机电特性。然后向您展示如何使用Control System Toolbox™函数基于这些方程构建线性模型。

线性模型表示

您可以使用“控制系统”工具箱功能来创建以下模型表示:

  • 状态空间模型(SS)形式

    D. X D. T. = 一种 X + B. y = C X + D.

    在哪里一种B.C,D.是适当维数的矩阵,X状态向量,y输入和输出向量。

  • 例如,传递函数(TF),

    H S. = S. + 2 S. 2 + S. + 10.

  • 例如,零极增益(ZPK)模型,

    H Z. = 3. Z. + 1 + j Z. + 1 - j Z. + 0.2 Z. + 0.1

  • 频率响应数据(FRD)模型,由系统频率响应的采样测量组成。例如,您可以在FRD模型中存储实验收集的频率响应数据。

    笔记

    FRD模型的设计是本主题没有涉及的一个专门主题。看到频率响应数据(FRD)模型讨论这个主题。

SISO示例:直流电机

直流电机驱动惯性负载的简单模型显示了负载的角速度, ω T. ,作为输出电压和外加电压, υ 一种 P. P. T. 作为输入。该示例的最终目标是通过改变施加的电压来控制角速率。该图显示了DC电机的简单模型。

一个驱动惯性负载的直流电机的简单模型

在该模型中,电机本身的动力学是理想化的;例如,假设磁场是恒定的。电路的电阻用R表示,电枢的自感用l表示。如果你不熟悉直流电机建模的基础知识,请查阅任何物理建模的基本文本。有了这个简单的模型和基本的物理定律,就有可能建立描述这个机电系统行为的微分方程。在这个例子中,电势和机械力之间的关系是法拉第的感应定律和Ampère的关于在磁场中移动的导体受力的定律。

数学推导

扭矩 τ 在电动机的轴上看到与电流成比例一世通过施加的电压,

τ T. = K. m 一世 T.

在哪里K.m,电枢常数与电动机的物理性质有关,例如磁场强度,导体线圈周围的匝数等等。背面(诱导)电动势, υ E. m F ,是与角速率成正比的电压 ω 看到在竖井,

υ E. m F T. = K. B. ω T.

在哪里K.B.,EMF常数,也取决于电动机的某些物理性质。

电机方程的机械部分是用牛顿定律推导出来的,牛顿定律指出惯性载荷j乘以角速度的导数等于关于电机轴的所有转矩之和。结果是这个方程,

j D. W. D. T. = σ. τ 一世 = - K. F ω T. + K. m 一世 T.

在哪里 K. F ω 是粘性摩擦的线性近似。

最后,可以描述电动机方程的电气部分

υ 一种 P. P. T. - υ E. m F T. = L. D. 一世 D. T. + R. 一世 T.

或者,解决施加的电压并替换后部EMF,

υ 一种 P. P. T. = L. D. 一世 D. T. + R. 一世 T. + K. B. ω T.

这一系列方程引出了一组描述电机行为的微分方程,第一个是感应电流,

D. 一世 D. T. = - R. L. 一世 T. - K. B. L. ω T. + 1 L. υ 一种 P. P. T.

第二个角速率,

D. ω D. T. = - 1 j K. F ω T. + 1 j K. m 一世 T.

直流电机的状态空间方程

考虑到最后一节中派生的两个微分方程,您现在可以开发DC电机作为动态系统的状态表示。当前一世角速率ω是系统的两个状态。施加的电压, υ 一种 P. P. ,是系统的输入,和角速度ω是输出。

D. D. T. [ 一世 ω ] = [ - R. L. - K. B. L. K. m j - K. F j ] [ 一世 ω ] + [ 1 L. 0. ] υ 一种 P. P. T.

状态空间表示的直流电机的例子

y T. = [ 0. 1 ] [ 一世 ω ] + [ 0. ] υ 一种 P. P. T.

构建的输出模型

开发一套后描述你的工厂的微分方程,你可以用简单的命令构建SISO模型。下面几节将讨论

  • 建立了直流电机的状态空间模型

  • 模型表示之间的转换

  • 建立传递函数和零/极/增益模型

建立直流电机的状态空间模型

输入DC电机的各种参数的以下标称值。

r = 2.0%欧姆L = 0.5%Henrys km = .015%扭矩常数Kb = .015%EMF常数Kf = 0.2%NMS J = 0.02%KG.M ^ 2

鉴于这些值,您可以使用该值构造数值状态空间表示SS.函数。

A = [-R/L -Kb/L;Km/J -Kf/J = [1/L;0);C = [0 1];D = [0];sys_dc = ss (A, B, C, D)

这些命令返回如下结果:

A = 1 x = 1 x = 1 x = 1 x = 1 x = 1 x = 1 x = 1 x = 1

模型表示之间的转换

既然您有DC电机的状态空间表示,您可以转换为其他模型表示,包括传输函数(TF)和零/极/增益(ZPK)模型。

传递函数表示。您可以使用TF.从状态空间表示转换为传递函数。例如,使用此代码转换为DC电机的传输功能表示。

sys_tf =特遣部队(sys_dc)
转移功能:1.5 --------------- S ^ 2 + 14 s + 40.02

0 /钢管/增益表示。同样,zpk函数从状态空间或传递函数表示转换为零/极点/增益格式。使用此代码将直流电机的状态空间表示转换为零/极/增益形式。

sys_zpk = zpk (sys_dc)零/钢管/增益:1.5  ------------------- ( s + 4.004) (s + 9.996)

笔记

状态空间表示最适合于数值计算。为了获得最高的精度,在组合模型之前转换到状态空间,避免传递函数和零/极点/增益表示,除非模型规范和检验。

构建传递函数和零/极/增益模型

在直流电机的例子中,状态空间方法产生一组矩阵来表示模型。如果您选择不同的方法,您可以使用TF.zpkSS., 或者的朋友

sys = tf(num,den) %传递函数sys = zpk(z,p,k) %零/极/增益sys = ss(a,b,c,d) %状态空间sys = frd(响应,频率)%频率响应数据

例如,您可以通过以下代码指定分子和分母来创建传递函数。

sys_tf =特遣部队(1.5,14 40.02[1])传递函数:1.5  ------------------ s ^ 2 + 14 + 40.02

或者,如果您想直接创建直流电机的传递函数,请使用这些命令。

s = tf('s');sys_tf = 1.5 /(s ^ 2 + 14 * s + 40.02)

这些命令导致此传输功能。

传递函数:1.5  -------------------- s ^ 2 + 14 + 40.02

要构建零/极/增益模型,请使用此命令。

Sys_zpk = zpk([],[-9.996 -4.004], 1.5)

该命令返回以下零/极点/增益表示。

0 /钢管/增益:1.5  ------------------- ( s + 9.996) (s + 4.004)

构建离散时间系统

控制系统工具箱软件为离散时间系统提供了充分的支持。金宝app你可以像创建模拟系统一样创建离散系统;唯一的区别是,您必须为所构建的任何模型指定一个示例时间段。例如,

Sys_disc = tf(1, [1 1], .01);

在传输函数格式中创建一个SISO模型。

传递功能:1 ----- Z + 1采样时间:0.01

将时间延迟添加到离散时间模型

在构建模型时,可以通过指定输入延迟、输出延迟或I/O延迟,向离散时间模型添加时间延迟。时间延迟必须是非负整数,表示采样时间的倍数。例如,

sys_delay = tf(1,[1 1],0.01,'iodelay',5)

返回一个系统,I / O延迟为5秒。

传递函数:1 z^(-5) * ----- z + 1采样时间:0.01

向线性模型添加延迟

您可以通过在构建模型时指定输入延迟,输出延迟或I / O延迟来向线性模型添加时间延迟。例如,要将I / O延迟添加到DC电机,请使用此代码。

sys_tfdelay = tf(1.5,[1 14 40.02],'ioDelay',0.05)

该命令构建直流电机传递函数,但增加了0.05秒的延迟。

转移功能:1.5 exp(-0.05 * s)* ---------------- S ^ 2 + 14 s + 40.02

有关将时间延迟添加到模型的更多信息,请参阅线性系统的时间延迟

LTI对象

为方便起见,控制系统工具箱软件使用称为线性时不变对象存储与模型相关的数据。例如,变量sys_dc.为直流电机示例创建称为学生对象.还有TF,ZPK和FRD对象分别用于传递函数,零/极/增益和频率数据响应模型。四个LTI对象封装了模型数据,使您能够以单个实体为线性系统操作,而不是作为向量或矩阵的集合。

要查看LTI对象包含什么,请使用得到命令。这段代码描述了sys_dc.从直流电机的例子。

得到(sys_dc):[2×2双]B:[2×1双]C: [0 1] D: 0 E:[]扩展:0 StateName:{2×1细胞}StateUnit:{2×1细胞}InternalDelay:[0×1双]InputDelay: 0 OutputDelay: 0 Ts: 0 TimeUnit:“秒”InputName: {"} InputUnit: {"} InputGroup:[1×1 struct] OutputName: {"} OutputUnit: {"} OutputGroup:[1×1 struct]指出:[0×1弦]用户数据:[]名称:“SamplingGrid: [1×1 struct]”

属性可以操作LTI对象中包含的数据命令;有关的说明,请参阅“控制系统工具箱”联机参考页得到

另一种设置或检索LTI模型属性的方便方法是使用点表示法直接访问它们。例如,如果您想访问一种矩阵,而不是使用得到,你可以键入

sys_dc.a.

在MATLAB®迅速的。这个表示法返回一种矩阵。

Ans = -4.0000 -0.0300 0.7500 -10.0000

类似地,如果您想更改一种矩阵,您可以直接这样做,如这段代码所示。

A_new = [-4.5 -0.05;0.8 - -12.0);sys_dc.a.=一种_new;

也可以看看

||

相关例子

更多关于