通常,控制工程师首先要对他们想要控制的动态系统进行数学描述。要控制的系统叫做植物.以工厂为例,本节以直流电机为例。本节发展微分方程来描述带有惯性负载的直流电机的机电特性。然后向您展示如何使用Control System Toolbox™函数基于这些方程构建线性模型。
您可以使用Control System Toolbox函数创建以下模型表示:
频率响应数据(FRD)模型,包括系统频率响应的采样测量。例如,您可以在FRD模型中存储实验收集的频响数据。
请注意
FRD模型的设计是本主题没有涉及的一个专门主题。看到频率响应数据(FRD)模型来讨论这个话题。
直流电机驱动惯性负载的简单模型显示了负载的角速度, ,作为输出电压和外加电压, ,作为输入。这个例子的最终目的是通过改变施加的电压来控制角速率。这张图显示了直流电机的一个简单模型。
一个驱动惯性负载的直流电机的简单模型
在该模型中,电机本身的动力学是理想化的;例如,假设磁场是恒定的。电路的电阻用R表示,电枢的自感用l表示。如果你不熟悉直流电机建模的基础知识,请查阅任何物理建模的基本文本。有了这个简单的模型和基本的物理定律,就有可能建立描述这个机电系统行为的微分方程。在这个例子中,电势和机械力之间的关系是法拉第的感应定律和Ampère的关于在磁场中移动的导体受力的定律。
扭矩 看电机的轴与电流成正比我通过施加的电压,
在哪里K米,电枢常数,与电机的物理性能有关,如磁场强度、绕导体线圈的线圈匝数等。反向(感应)电动势, ,是与角速率成正比的电压 看到在竖井,
在哪里Kb,电动势常数,也取决于电机的某些物理特性。
电机方程的机械部分是用牛顿定律推导出来的,牛顿定律指出惯性载荷J乘以角速度的导数等于关于电机轴的所有转矩之和。结果是这个方程,
在哪里 为粘性摩擦的线性近似。
最后,电机方程的电气部分可以用
或者,求施加的电压并代入反电动势,
这一系列方程引出了一组描述电机行为的微分方程,第一个是感应电流,
第二个角速率,
给定在上一节中推导的两个微分方程,现在您可以将直流电机表示为动态系统的状态空间。当前的我角速率ω是系统的两种状态。应用电压、 ,是系统的输入,和角速度ω是输出。
状态空间表示的直流电机的例子
在你开发了一套描述你的工厂的微分方程,你可以用简单的命令构建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 = [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
现在您已经有了直流电机的状态空间表示,您可以将其转换为其他模型表示,包括传递函数(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 =特遣部队(1.5,14 40.02[1])传递函数:1.5 ------------------ s ^ 2 + 14 + 40.02
或者,如果您想直接创建直流电机的传递函数,请使用这些命令。
s =特遣部队(“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,'ioDelay',5)
返回一个I/O延迟为5秒的系统。
传递函数:1 z^(-5) * ----- z + 1采样时间:0.01
在构建模型时,可以通过指定输入延迟、输出延迟或I/O延迟,将时间延迟添加到线性模型中。例如,添加一个输入输出延迟到直流电机,使用这段代码。
sys_tfdelay = tf(1.5,[1 14 40.02],'ioDelay',0.05)
该命令构建直流电机传递函数,但增加了0.05秒的延迟。
传递函数:1.5 exp (-0.05 * ) * ------------------ s ^ 2 + 14 + 40.02
有关向模型添加时间延迟的更多信息,请参见线性系统的时滞.
为方便起见,控制系统工具箱软件使用称为线性时不变对象存储与模型相关的数据。例如,变量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。一个
在MATLAB®提示。这个符号返回一个
矩阵。
Ans = -4.0000 -0.0300 0.7500 -10.0000
类似地,如果您想更改一个
矩阵,您可以直接这样做,如这段代码所示。
A_new = [-4.5 -0.05;0.8 - -12.0);sys_dc。一个=一个_new;