最小拍控制系统详细解读(阶跃输入+速度输入2个案例)【Simulink仿真】

目录索引

  • 1.符号说明与结构框图
  • 2.最小拍控制系统构造原则
    • 2.1数字控制器D(z)的构造
  • 3.简单控制对象的最小拍控制器设计
    • 3.1阶跃输入
    • 3.2速度输入

1.符号说明与结构框图

  1. y(k)——系统响应输出的离散值
  2. u(k)——数字PID控制输出的离散值
  3. r(k)——期望输出的离散值(事先已知),在本例中为常数(即阶跃输入)
  4. e(k)——e(k)=r(k)-y(k),为期望值-实际值,是单位负反馈的误差比较信号
  5. D(z)——数字控制器的脉冲传递函数
  6. G(s)——被控对象的传递函数,G(z)——广义被控对象的脉冲传递函数
  7. Φ(z)=C(z)/R(z)\Phi(z)=C(z)/R(z)Φ(z)=C(z)/R(z)——系统的闭环传递函数,Φe(z)=E(z)/C(z)\Phi_e(z)=E(z)/C(z)Φe(z)=E(z)/C(z)——系统的闭环误差传递函数
    系统的结构框图如下:
    系统结构框图

2.最小拍控制系统构造原则

最少拍系统是指系统对某些典型的输入(阶跃、速度、加速度输入)具有最快的响应特性。具体来说,最少拍系统应满足对典型输入在有限个采样周期内结束过渡过程且稳态误差为零。研究误差序列e(k)e(k)e(k)的特性之前,不妨通过在Z域研究Φe(z)\Phi_e(z)Φe(z)的表达式来得出使得e(k)e(k)e(k)最快收敛至0的条件。
最小拍控制系统的设计原理是使得系统的闭环误差传递函数Φe(z)=a1z−1+a2z−2+...+anz−n\Phi_e(z)=a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n}Φe(z)=a1z1+a2z2+...+anzn具有最简单的表达式。因为z−kz^{-k}zk的反Z变换为δ(t−k)\delta(t-k)δ(tk),因此e(k)=a1δ(t−T)+a2δ(t−2T)+...+anδ(t−nT)(an≠0)e(k)=a_1\delta(t-T)+a_2\delta(t-2T)+...+a_n\delta(t-nT)(a_n≠0)e(k)=a1δ(tT)+a2δ(t2T)+...+anδ(tnT)(an̸=0),即e(1)=a1,e(2)=a2,...,e(n)=ane(1)=a_1,e(2)=a_2,...,e(n)=a_ne(1)=a1,e(2)=a2,...,e(n)=ann的值是有限的说明系统能在有限拍内达到最小,n的值越小,Φe(z)\Phi_e(z)Φe(z)的表达式越简单,能达到稳态值所需的拍数(周期数)越少。而我们的目的就是设计控制器D(z)使其达到稳态误差e(k)(甚至是e(t))的要求。
设计步骤大体如下:

  1. 根据被控对象的数学模型求出广义被控对象的脉冲传递函数G(z)
  2. 根据输入信号的类型,确定模型Φe(z)=1−Φ(z)\Phi_e(z)=1-\Phi(z)Φe(z)=1Φ(z),其对应关系如下表:
典型输入Z域表达式Φe(z)的形式\Phi_e(z)的形式Φe(z)
u(t)u(t)u(t)11−z−1\frac{1}{1-z^{-1}}1z11(1−z−1)F(z)(1-z^{-1})F(z)(1z1)F(z)
tu(t)tu(t)tu(t)Tz−1(1−z−1)2\frac{Tz^{-1}}{{(1-z^{-1})}^2}(1z1)2Tz1(1−z−1)2F(z){(1-z^{-1})}^2F(z)(1z1)2F(z)
12t2u(t)\frac{1}{2}t^2u(t)21t2u(t)T2z−1(1+z−1)2(1−z−1)3\frac{T^2z^{-1}(1+z^{-1})}{2{(1-z^{-1})}^3}2(1z1)3T2z1(1+z1)(1−z−1)3F(z){(1-z^{-1})}^3F(z)(1z1)3F(z)

当被控对象不含有不稳定零极点,不含有纯滞后环节z−1z^{-1}z1时,F(z)=1,此时的被控对象也称为简单对象。
满足以上条件的任意一个,被控对象称为复杂对象,当G(s)中含有不稳定零点或纯滞后环节时,不能使用D(z)或者Φe(z)\Phi_e(z)Φe(z)中增加因式消除,只能保留至Φ(z)\Phi(z)Φ(z),当G(s)中含有不稳定极点时,在Φe(z)\Phi_e(z)Φe(z)中增加对应的零点抵消Φ(z)\Phi(z)Φ(z)中的不稳定极点。
3. 求控制器的脉冲传递函数D(z),求取原理如下:
由于C(z)=E(z)D(z)G(z)C(z)=E(z)D(z)G(z)C(z)=E(z)D(z)G(z),所以C(z)R(z)=D(z)G(z)E(z)R(z)\frac{C(z)}{R(z)}=D(z)G(z)\frac{E(z)}{R(z)}R(z)C(z)=D(z)G(z)R(z)E(z),即Φe(z)=D(z)G(z)Φe(z)\Phi_e(z)=D(z)G(z)\Phi_e(z)Φe(z)=D(z)G(z)Φe(z)在单位负反馈系统中Φe(z)=1−Φ(z)\Phi_e(z)=1-\Phi(z)Φe(z)=1Φ(z),因此D(z)=Φ(z)G(z)(1−Φ(z))D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))}D(z)=G(z)(1Φ(z))Φ(z)
4. 根据D(z)生成控制算法(或者脉冲传递函数)求出输出序列,画出系统的响应曲线。

2.1数字控制器D(z)的构造

我们已经知道D(z)=Φ(z)G(z)(1−Φ(z))D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))}D(z)=G(z)(1Φ(z))Φ(z),因此欲求出D(z)只需知道Φ(z)\Phi(z)Φ(z)Φe(z)\Phi_e(z)Φe(z)即可。
Φ(z)=(a0+a1z−1+a2z−2+...+anz−n)(1−z1z−1)(1−z2z−1)...(1−zkz−1)z−m\Phi(z)=(a_0+a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n})(1-z_1z^{-1})(1-z_2z^{-1})...(1-z_kz^{-1})z^{-m}Φ(z)=(a0+a1z1+a2z2+...+anzn)(1z1z1)(1z2z1)...(1zkz1)zm
其中z1,z2,...,zkz_1,z_2,...,z_kz1,z2,...,zkΦ(z)\Phi(z)Φ(z)保留的的广义被控对象G(z)不稳定零点,z−mz^{-m}zm是闭环传递函数Φ(z)\Phi(z)Φ(z)保留的,在G(z)里面出现的纯滞后环节z−mz^{-m}zm,而输入形式决定了前面多项式a0+a1z−1+a2z−2+...+anz−na_0+a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n}a0+a1z1+a2z2+...+anzn的阶数n,阶数n和Φe(z)=(1−z−1)pF(z)\Phi_e(z)={(1-z^{-1})}^pF(z)Φe(z)=(1z1)pF(z)中的p是一致的,即n=p,系数a0、a1、...、ana_0、a_1、...、a_na0a1...an依赖于条件Φe(z)=(1−z−1)pF(z)\Phi_e(z)={(1-z^{-1})}^pF(z)Φe(z)=(1z1)pF(z)而定,Φe(z)\Phi_e(z)Φe(z)中含有p重零点z=1,因此它的0阶导到p-1阶导在z=1处的值都应该是0,即

{Φe(z)∣z=1=0dΦe(z)dz∣z=1=0d2Φe(z)dz2∣z=1=0...dnΦe(z)dzn∣z=1=0\begin{cases} \left. \Phi_e(z) \right| _{z=1}=0 \\ \left. \frac{{\rm d}\Phi_e(z)}{{\rm d}z} \right| _{z=1}=0 \\ \left. \frac{{\rm d^2}\Phi_e(z)}{{\rm d}z^2} \right| _{z=1}=0 \\ ...\\ \left. \frac{{\rm d^n}\Phi_e(z)}{{\rm d}z^n} \right| _{z=1}=0 \end{cases}Φe(z)z=1=0dzdΦe(z)z=1=0dz2d2Φe(z)z=1=0...dzndnΦe(z)z=1=0
根据上面的方程组可以解出Φe(z)\Phi_e(z)Φe(z)中的未知参数a0、a1、...、ana_0、a_1、...、a_na0a1...an,因此Φe(z)\Phi_e(z)Φe(z)已经确定,D(z)即可求得。

3.简单控制对象的最小拍控制器设计

3.1阶跃输入

假设被控对象的传递函数为G(s)=9.40.017s+1G(s)=\frac{9.4}{0.017s+1}G(s)=0.017s+19.4求阶跃输入下的最小拍控制器D(z)的表达式。在Simulink的仿真中,我们设定了Z变换的采样频率是0.005s,(其他地方默认为-1,即服从系统的采样频率)
Simulink仿真图示意
先求取广义被控对象的传递函数
G(z)=Z[1−e−Tss9.40.017s+1]=(1−z−1)Z[(9.4s(0.017s+1))]=2.394z−11−0.745z−1G(z) =Z[\frac{1-e^{-Ts}}{s}\frac{9.4}{0.017s+1}] =(1-z^{-1})Z[(\frac{9.4}{s(0.017s+1)})] =\frac{2.394z^{-1}}{1-0.745z^{-1}} G(z)=Z[s1eTs0.017s+19.4]=(1z1)Z[(s(0.017s+1)9.4)]=10.745z12.394z1
没有不稳定零极点和纯滞后环节,因此选取Φe(z)=(1−z−1),Φ(z)=z−1\Phi_e(z)=(1-z^{-1}),\Phi(z)=z^{-1}Φe(z)=(1z1),Φ(z)=z1
此时D(z)=Φ(z)G(z)(1−Φ(z))=0.4174z−0.7452z−1D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))}=0.4174\frac{z-0.7452}{z-1}D(z)=G(z)(1Φ(z))Φ(z)=0.4174z1z0.7452
我们搭建好Simulink仿真电路如下:
Simulink的仿真图
按照我们的理论,系统的应该在控制算法作用的第一拍(0.005s处)时达到0稳态误差,仿真曲线如下图(给定值为1500):
最小拍的阶跃响应
可以看到验证结果与我们理论推导相符。注意我们这里示波器取的采样周期为-1(inherited),说明是Matlab内置的采样时间,会比我们定的Ts=1s要短的多,非常接近于连续系统的仿真结果。可以看出响应曲线在上升段有很微小的纹波抖动,在进入稳态值后,纹波消失。产生纹波的原因在于Y(z)Y(z)Y(z)

3.2速度输入

假设被控对象的传递函数为G(s)=2s(s+1)G(s)=\frac{2}{s(s+1)}G(s)=s(s+1)2,求系统在采样时间1s,输入信号为单位速度输入的条件下的最小拍控制器D(z)。系统的结构框图如下图所示:
系统结构框图
下面我们借助Matlab的命令轻松地解决这个问题。首先按照第二部分最小拍控制系统的设计原则的步骤,我们应该求出带零阶保持器的广义被控对象的Z域脉冲传递函数G(z)=Z[1−e−Tss⋅G(s)]G(z)=Z[\frac{1-e^{-Ts}{s}\cdot G(s)}]G(z)=Z[]1eTssG(s),在Matlab工作区输入代码并获得输出的脉冲传递函数:

>> syms s;%定义符号变量s
>> s=tf('s');%s定义为tf(transfer function传递函数)类型的结构体
>> Gs=2/(s*(s+1));
>> Ts=1;
>> Gz=c2d(Gs,Ts,'zoh')%带零阶保持器(ZOH)的离散化,采样时间为1sGz =0.7358 z + 0.5285----------------------z^2 - 1.368 z + 0.3679Sample time: 1 seconds
Discrete-time transfer function.>> zpk(Gz)%展示为零极点模式ans =0.73576 (z+0.7183)------------------(z-1) (z-0.3679)Sample time: 1 seconds
Discrete-time zero/pole/gain model.

可以看出脉冲传递函数G(z)中含有1个不稳定极点z=1,但是考虑到此时的Φe(z)=(1−z−1)2F(z)\Phi_e(z)={(1-z^{-1})}^2F(z)Φe(z)=(1z1)2F(z),具有z=1这个零点,说明D(z)的表达式D(z)=Φ(z)G(z)Φe(z)D(z)=\frac{\Phi(z)}{G(z)\Phi_e(z)}D(z)=G(z)Φe(z)Φ(z)中可以将极点z=1约去,不必再增加额外的(1−z−1)(1-z^{-1})(1z1)因式,因此可以取F(z)=1即Φe(z)=(1−z−1)2\Phi_e(z)={(1-z^{-1})}^2Φe(z)=(1z1)2,此时Φ(z)=1−Φe(z)=1−(1−z−1)2=2z−1−z−2\Phi(z)=1-\Phi_e(z)=1-{(1-z^{-1})}^2=2z^{-1}-z^{-2}Φ(z)=1Φe(z)=1(1z1)2=2z1z2,根据D(z)=Φ(z)G(z)Φe(z)D(z)=\frac{\Phi(z)}{G(z)\Phi_e(z)}D(z)=G(z)Φe(z)Φ(z)可以求出控制器表达式D(z)。

>> syms z;
>> z=tf('z');
>> Phiez=(1-z^(-1))^2;
>> Phiz=1-Phiez;%得到Φ(z)
>> Dz=Phiz/(Gz*Phiez);%得到数字控制器的脉冲传递函数
>> minreal(zpk(Dz))%得到最简零极点式ans =2.7183 (z-0.5) (z-0.3679)-------------------------(z+0.7183) (z-1)Sample time: 1 seconds
Discrete-time zero/pole/gain model.

我们按照此要去搭建好Simulink仿真图如下
Simulink仿真图
D(z)的Sample time设置为1(因为我们的采样时间是Ts=1s),仿真时间设为10s(差不多可以清楚地看见过渡过程)
速度输入的仿真
黄色为指令信号(单位速度输入),蓝色为响应曲线。我们将示波器的图形(print to figure)打印到图形。利用数据游标工具找到t=1和t=2的点。如果我们的理论正确,那么e(0)=0,e(1)=1,e(2)=0.e(3)=e(4)=…=0;

t数据游标(采样时刻的值)
1在这里插入图片描述
2在这里插入图片描述
3在这里插入图片描述
4在这里插入图片描述

由于r(k)=k,y(k)的采样值依次为0,2,3.002,3.997,e(k)=r(k)-y(k)基本满足e(0)=0,e(1)=1,e(2)=0.e(3)=e(4)=…=0。
从我们仿真的结果看,采样点处的值只需要两拍就达到了稳态,但是采样点之间有纹波(这是因为E(z)=a1z−1+a2z−2+...+anz−nE(z)=a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n}E(z)=a1z1+a2z2+...+anzn并不是有限项,U(z)也并不是有限项,即u(k)最终并没有达到恒定,误差也并没有最终严格归0),这种控制属于有纹波的最小拍控制。还可以通过增加积分可牺牲控制拍数的手段,达到无纹波的最小拍控制,这是连续系统所做不到的。
希望本文对您有帮助,感谢大家对本站点的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot官方热部署和远程调试神器,真带劲!

平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款SpringBoot官方的热部署工具spri…

【Python】输入任意个数元素并保存至列表

目录1.导入任意个数元素到列表1.1.编程思路1.2.代码片2.查找一个重复元素在列表中的所有位置2.1.编程思路2.2代码片1.导入任意个数元素到列表 1.1.编程思路 输入未知个数的元素需要用列表来存储,由于Python具有内存的动态分配能力,列表不需要手动动态分…

MySQL 性能优化的 9 种姿势,面试再也不怕了!

大家好,我是磊哥!今天给大家分享一些简单好用的数据库优化方式!1、选择最合适的字段属性Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的…

Excel的规划求解【详细步骤】

本文目录1.说明2.准备加载项步骤1步骤2步骤33.线性规划问题步骤4步骤5步骤61.说明 使用Lingo程序也可以实现线性规划、非线性规划以及0-1规划,但是在缺少Lingo程序的情况下,我们使用Excel照样可以很容易地完成。在这里我给大家提供了解决此类问题的详细…

4 种方法!检查字符串是否为合法的日期格式

哈喽大家好,今天咱们来讲一下,Java 中如何检查一个字符串是否是合法的日期格式?为什么要检查时间格式?后端接口在接收数据的时候,都需要进行检查。检查全部通过后,才能够执行业务逻辑。对于时间格式&#x…

【Matlab】根据图生成带权邻接矩阵,并求出最短路径

目录图的简介无向图(Graph)生成带权邻接矩阵求两点最短路径有向图(Digraph)生成带权邻接矩阵求最短路径图的简介 图是拓扑学中的一个重要概念,分为无向图和有向图两种。图有两个重要属性,即点(…

阿里二面:为什么要分库分表?

在高并发系统当中,分库分表是必不可少的技术手段之一,同时也是BAT等大厂面试时,经常考的热门考题。你知道我们为什么要做分库分表吗?这个问题要从两条线说起:垂直方向 和 水平方向。1 垂直方向垂直方向主要针对的是业务…

Java 中 List 分片的 5 种方法!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错&a…

Matlab仿真炮弹飞行轨迹——探究射弹参数对飞行轨迹的影响

目录1.分析炮弹受力2.设定参数并仿真3.通过仿真寻找最佳射弹速度3.1.射弹角度的影响3.2.射弹速率的影响3.3.炮弹属性和空气的影响3.3.1.空气阻力系数的影响3.3.2.炮弹质量的影响1.分析炮弹受力 假设炮弹在飞行过程中可以看成质点,运动时仅考虑初始速度、重力加速度…

50行代码,搞定敏感数据读写!

每天早上七点三十,准时推送干货一、介绍在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、…

【Python】导入资源管理器的文件列表(计算文件和文件夹大小)

文章目录1.按照扩展名进行分类2.导出文件的大小3.计算文件夹大小4.分类到字典5.完整代码及效果1.按照扩展名进行分类 使用Python查询一个路径下的所有文件可以借助glob模块以及os模块。 在导入文件列表之前,我们需要指定我们的操作目录,操作目录一经指定…

HashMap 中的一个“坑”!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)最近公司新来了一个小伙伴,问了磊哥一个比较“奇怪”的问题,这个问题本身的难度并不大,但…

【Python】交互式界面创建函数

文章目录简介规则思路示例代码与运行效果简介 运行Python时,在程序运行过程中手动输入一个函数表达式,并将其作为一个函数进行后续的调用工作,类似于Matlab里面的匿名函数。这个功能使用传统语言会相当麻烦,当然,我也…

原生 js前端路由系统实现3之代码 构建工具 和 querystring功能

为什么80%的码农都做不了架构师?>>> 构建 目前前端构建工具流行的是 grunk.js 功能是大而全,但往往大而全的东西为了多样性 需要做额外的配置 我还是想要有一个专门为自己特性项目而生构建工具 我不想加载第三方的node模块,也不…

单例模式,真不简单

前言单例模式无论在我们面试,还是日常工作中,都会面对的问题。但很多单例模式的细节,值得我们深入探索一下。这篇文章透过单例模式,串联了多方面基础知识,非常值得一读。1 什么是单例模式?单例模式是一种非…

【python】最优化方法之一维搜索(黄金分割法+斐波那契法)

文章目录1.概念2.遍历搜索3.优化算法3.1.一维搜索原则3.2.黄金分割法Code Block3.3.斐波拉契法Code Block1.概念 \qquad一维搜索是最优化方法最简单的一种,即求一个在(a,b)内,连续下单峰函数f(x)f(x)f(x)的极小值。所谓下单峰函数就是只有一个极小值的函…

MySQL系列之E-1------MySQL主从复制原理

主从复制是异步复制,可以通过google的一个插件实现半同步E.1 主从复制原理1、建立主从复制的用户名和密码2、将master上主库需要进行复制的库“锁库”3、通过mysqldump备份master上主库,“解锁“,在slave端进行恢复4、更改配置文件5、在丛库上执行change…

工作中常用的 6 种设计模式!

前言 哈喽,大家好。平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中…

【Matlab/C/Python/VB/...】代码复制到word时如何变成彩色的

文章目录下载Notepad复制代码在Notepad粘贴在word中粘贴下载Notepad Notepad是一款免费的Windows软件,一般Windows10和Windows7系统都已经自带,也可以在应用商店直接搜索下载 「win10系统兼容的是7.8版本」 复制代码 在语言编辑乱码复制代码&#xff…

hadoop 2.5.0安装和配置

安装hadoop要先做以下准备: 1.jdk,安装教程在 http://www.cnblogs.com/stardjyeah/p/4640917.html 2.ssh无密码验证,配置教程在 http://www.cnblogs.com/stardjyeah/p/4641524.html 3.linux静态ip配置,教程在 http://www.cnblo…