主要内容

线性(LTI)模型

什么是植物?

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

线性模型表示

您可以使用Control System Toolbox函数创建以下模型表示:

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

    d x d t 一个 x + B u y C x + D u

    在哪里一个BC,D是适当尺寸的矩阵,x状态向量,uy输入和输出向量。

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

    H 年代 年代 + 2 年代 2 + 年代 + 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 ,作为输入。这个例子的最终目的是通过改变施加的电压来控制角速率。这张图显示了直流电机的一个简单模型。

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

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

数学推导

扭矩 τ 看电机的轴与电流成正比由施加的电压感应,

τ t K t

在哪里K,电枢常数,与电机的物理性能有关,如磁场强度、绕导体线圈的线圈匝数等。反向(感应)电动势, υ e f ,是与角速率成比例的电压 ω 从竖井看,,

υ e f t K b ω t

在哪里Kb,电动势常数,也取决于电机的某些物理特性。

电机方程的机械部分是用牛顿定律推导出来的,牛顿定律指出惯性载荷J乘以角速率的导数等于电机轴上所有扭矩的总和。结果是这个等式,

J d w d t τ K f ω t + K t

在哪里 K f ω 为粘性摩擦的线性近似。

最后,电机方程的电气部分可以用

υ 一个 p p t υ e f t l d d t + R t

或者,求施加的电压并代入反电动势,

υ 一个 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 t

直流电动机的状态空间方程

给定在上一节中推导的两个微分方程,现在您可以将直流电机表示为动态系统的状态空间。当前的还有角速率ω是系统的两种状态。应用电压、 υ 一个 p p ,是系统的输入,和角速度ω是输出。

d d t ω R l K b l K J K f J ω + 1 l 0 υ 一个 p p t

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

y t 0 1 ω + 0 υ 一个 p p t

建立SISO模型

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

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

  • 在模型表达之间转换

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

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

输入下列直流电机的各种参数的标称值。

R= 2.0%欧姆L= 0.5%亨利Km = 0.015%扭矩常数Kb = 0.015%电动势常数Kf = 0.2% Nms J= 0.02% kg.m^2

给定这些值,您可以使用党卫军功能。

A=[-R/L-Kb/L;Km/J-Kf/J]B=[1/L;0]; C=[01];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

在模型表达之间转换

现在您已经有了直流电机的状态空间表示,您可以将其转换为其他模型表示,包括传递函数(TF)和零/极/增益(ZPK)模型。

传递函数表示。你可以用特遣部队将状态空间表示转换为传递函数。例如,使用此代码转换为直流电机的传递函数表示。

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

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

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

请注意

状态空间表示法最适合于数值计算。为获得最高精度,在组合模型之前,应转换为状态空间,并避免传递函数和零/极/增益表示,模型规格和检查除外。

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

在直流电机示例中,状态空间方法生成一组表示模型的矩阵。如果选择不同的方法,则可以使用特遣部队zpk党卫军,或联邦德国

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

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

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

或者,如果要直接创建直流电机的传递函数,请使用以下命令。

s =特遣部队(“s”);sys_tf = 1.5 / (s ^ 2 + 14 * s + 40.02)

这些命令导致这个传递函数。

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

要建立零/极点/增益模型,使用这个命令。

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

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

零/极/增益:1.5-------------------(s+9.996)(s+4.004)

构造离散时间系统

控制系统工具箱软件为离散时间系统提供全面支持。您可以用创建模拟系统的相同方式创建离散系统;唯一的区别万博1manbetx是,必须为构建的任何模型指定一个采样时间段。例如

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

以传递函数格式创建SISO模型。

传递函数:1 ----- z + 1采样时间:0.01

在离散时间模型中添加时间延迟

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

sys_delay = tf(1, [1 1], 0,'ioDelay',5)

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

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

向线性模型添加延迟

在构建模型时,可以通过指定输入延迟、输出延迟或I/O延迟,将时间延迟添加到线性模型中。例如,添加一个输入输出延迟到直流电机,使用这段代码。

系统延迟=tf(1.5,[11440.02],'ioDelay',0.05)

此命令构造直流电机传递函数,但增加0.05秒延迟。

传递函数:1.5 exp (-0.05 * ) * ------------------ s ^ 2 + 14 + 40.02

有关向模型添加时间延迟的更多信息,请参见线性系统的时滞

线性时不变对象

为方便起见,控制系统工具箱软件使用称为LTI对象存储与模型相关的数据。例如,变量sys_dc为直流电机示例创建的称为SS对象.还有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。一个

在MATLAB®提示。这个符号返回一个矩阵。

ans=-4.0000-0.0300.7500-10.0000

类似地,如果要更改一个矩阵,您可以直接这样做,如下面的代码所示。

A_new = [-4.5 -0.05;0.8 - -12.0);sys_dc。一个=一个_new;

另请参阅

||

相关的例子

更多关于