为什么是PID控制

  在进入正式话题之前需要引入四个概念:稳态误差终值定理幅角条件系统稳定的充要条件
稳态误差:系统达到稳定状态后,系统的实际输出量与系统希望的输出量之间的偏差。
终值定理:设有连续函数f(t)f(t)f(t),当t趋于无穷时,f(t)f(t)f(t)的极限存在,则有
在这里插入图片描述
其中。F(s)F(s)F(s)f(t)f(t)f(t)经过拉普拉斯变换后的函数,即
在这里插入图片描述
幅角条件
  零点到根的夹角和与极点到根的夹角和是 180°180°180° 的倍数。φφφ表示零点,θθθ表示极点
在这里插入图片描述

系统稳定的充要条件:闭环传递函数的极点位于sss的左半平面。对于某个系统的传递函数的极点为 ppp1ppp2 ,它们都在实轴上,即 p1 === −-aaa , p2 === −-bbb (aaabbb均为常数)对该系统一个单位冲激信号,于是系统的响应为
在这里插入图片描述
ppp1 <<< 000 , ppp2 <<< 000
在这里插入图片描述
  说明这个系统是收敛的,也就是说这个系统可以稳定。

ppp1ppp2 有一个大于000
在这里插入图片描述
  说明这个系统是发散的,也就是说这个系统无法达到稳定。
ppp1ppp2 并没有在实轴上,即 p1 === −-aaa +++ bbbiii , p2 === −-aaa −-bbbiii ,此时有
在这里插入图片描述
在经过拉普拉斯逆变换,得
在这里插入图片描述
  正弦函数是等幅振荡函数,而 eee(-at) 会随 ttt 得增大而减小 ,最终趋向于000,故而 X(t)X(t)X(t) 是一个振荡衰减函数,最终仍会趋向于 000。图像大概是这个样子
在这里插入图片描述
如果 p1 === aaa +++ bibibi , p2 =a−bi= a -bi=abi ,此时有
在这里插入图片描述
  此时该函数时振荡发散的,是不稳定的,图像就是上图从右往左看。

  进入正式话题,在做实际工程或者学习自动控制原理的时候,PID控制经常被提起,大部分工程中涉及控制基本都是PID,那么PID到底是什么?它为什么可以做控制使用?又是如何控制的呢?所谓PID就是比例积分微分控制,下面我们就对333种控制稍做分析。

比例控制

  对于如下比例控制系统,输入是R(s)R(s)R(s),输出是X(s)X(s)X(s)
在这里插入图片描述

在这里插入图片描述
于是系统的闭环传递函数为
在这里插入图片描述
  由这个传递函数可知极点p=(−1−p = ( -1 -p=(1 Kp )/a) /a)/a,我们知道,当 ppp位于 sss 的左半平面时系统才会稳定,也就是说 Kp >>> −1-11 时系统才会稳定。
  我们给系统一个输入一个目标值,即 r(t)=rr(t)=rr(t)=r, 于是
在这里插入图片描述

在这里插入图片描述
根据中值定理,有
在这里插入图片描述
那么稳态误差为
在这里插入图片描述
  由上式可知,KKKp 趋向于无穷大时,eeess 趋向于 000,但实际工程中,KKKp 不可能取太大,否则超调量会非常大(一阶系统除外),如果超过了控制器的输出范围,那也就没有意义了,但是在控制器的输出范围内,Kp又不会太大,所以稳态误差还是消除不了,故而一般不单独使用比例控制。

举个实际的例子:
  对于系统:
在这里插入图片描述
  通过以上的推理,该系统在 KKKp >>> −1-11 时才会稳定,那就在simulink中仿真一下,把输入设置为101010,示波器中的黄线代表目标值,蓝线代表输出值:
KKKp === −- 222 时,系统结构如下
在这里插入图片描述
输出曲线如下
在这里插入图片描述
  由图可以看出,输出值已经跑飞了,系统不可能会稳定下来。
看看 KKKp === 222 时的情况
在这里插入图片描述
  这时候系统已经稳定了,但是稳态误差很大。
再看看 KKKp === 100 的情况
在这里插入图片描述
  此时稳态误差已经很小了,可以忽略不计了。但是此时的 KKKp 已经非常大了,如果系统此时输出为 999 ,那么偏差就为 111,比例控制输出为 100100100,对于PWM调节的话,占空比最大就是100100100%\%%,很明显这是不符合实际应用的。当然控制器的输出我们可以不当做占空比直接使用,比如在单片机的PWM的配置过程中,令计数值为100010001000才代表100100100%\%%占空比,那么比例控制输出100100100,对应PWM占空比也才101010%\%%,看上去很合理,也符合实际应用,这样一来,系统的调节时间就会变长,同样我们也可以理解为此时 KKKp 还较小。所以比例控制一般不单独使用。

积分控制

  上面我们研究了比例控制器,他不能消除稳态误差,所以需要设计新的控制器C(s)C(s)C(s),系统结构框图如下:
在这里插入图片描述
求得系统传递函数
在这里插入图片描述
  我们同样令r(t)=rr(t) = rr(t)=r ,拉普拉斯变换后, R(s)=r/sR(s) = r / sR(s)=r/s,于是有
在这里插入图片描述
  我们的目标是消除稳态误差,即 eeess === 000
在这里插入图片描述
继续推导
在这里插入图片描述
  这个 C(s)C(s)C(s)不就是积分嘛,KKKi 就是积分增益。我们来验证一下,还是拿前面的系统
在这里插入图片描述
设置 KKKp === 222 , KKKi === 111,看看比例控制与积分控制的效果
在这里插入图片描述
  黄色的直线表示目标值,蓝色的线是比例控制,橙色线是积分控制。由图可以看出,积分控制很明显的消除了稳态误差,但是积分控制的调节时间却比比例控制要长很多,那将比例控制与积分控制放在一起,同时作用,效果又是怎样的?

更改系统框图
在这里插入图片描述
  最上面一个闭环是比例控制,第二个是积分控制,最下面一个是比例积分控制,为方便对比我们稍稍做下参数调整,将比例积分控制的 KKKi 增加到 222,看看效果
在这里插入图片描述
  这条绿色的线就是比例积分控制,其余三条不变。由图可知,比例积分控制不仅吸取了比例控制的快速响应并稳定特点,还吸取了积分控制能消除稳态误差的特点,所以比例积分控制的有点明显胜于比例控制。

引入微分控制

  设一个二阶系统的一对根为 ppp1 =−a+bi= - a + bi=a+bi , ppp2 =−a−bi= - a - bi=abi,对该系统输入一个单位冲激信号,那么该系统的响应为
在这里插入图片描述
经过拉普拉斯逆变换后,得
在这里插入图片描述
  我们知道这个函数得曲线是振荡衰减直至到000,也就是说这个系统是稳定的。我们的目标是让系统更快速稳定,也就是加快系统的收敛速度,也就是−a-aa 越小,系统的收敛的速度才会越快,减小 −a-aa 也就是改变根轨迹,让根左移。我们以实例来说明:
设有系统的开环传递函数为
在这里插入图片描述
  该系统有222个极点,φφφ1=== 000,φφφ2=== −2-22,没有零点,渐近线交点σσσa===−1-11,与实轴得交角为90°90°90°,根轨迹如下
在这里插入图片描述
那么所有的根都将在实部为−1-11这条竖线上,我们要让系统快速衰减,也就是让根左移,并且越左越好,我们就让他移到实部为−2-22得这条竖线上,为便于计算,我们设这个根为k=−2+2√3ik=-2+2√3ik=2+23i
在这里插入图片描述
根据幅角条件
在这里插入图片描述

在这里插入图片描述
这也就是说,k=−2+2√3ik=-2+2√3ik=2+23i不在原根轨迹上,如果要使这个根满足幅角条件,或者说改变原根轨迹使得kkk在新的根轨迹上,该怎么办呢?那就加个30°,也就是加个零点嘛,如图
在这里插入图片描述
通过计算,补偿的30°这个零点为−8-88,那么这个新的控制器不就是H(s)=s+8H(s)=s+8H(s)=s+8,这不就是微分控制和比例控制吗,即PDPDPD控制,这里就把微分控制引进来了,我们可以仿真一下
在这里插入图片描述
  这个结构中,上面一个闭环是PDPDPD控制,下面一个就是PPP控制,KpK~p~K p  =8=8=8,得到得输出响应
在这里插入图片描述
蓝色的线表示PDPDPD控制,橙黄色得线表示PPP控制,可以清楚得看到PDPDPD控制得超调要小的多,收敛的速度也明显比比例控制快很多。我们在修改修改参数,将KKKi =2.9=2.9=2.9,看看效果
在这里插入图片描述
很明显,现在的超调已经变得很小了,收敛速度更快。对于微分控制,在实际应用中,不会拿微分控制单独做一个控制器,因为微分控制对高频干扰十分敏感,比如在系统中存在这样一个干扰:D(t)=0.01sin(100t)D(t)=0.01sin(100t)D(t)=0.01sin(100t),它的幅值很小,频率很高,一旦遇到微分控制,于是D(t)D(t)D(t)ttt求导,此时 DDD1(t)=cos(100t)cos(100t)cos(100t),赋值被放大了100倍,所以微分控制在很多时候并不被使用,PIPIPI控制被广泛应用。

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

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

相关文章

卡尔曼滤波器推导

注&#xff1a;受控制领域大牛CAN博士启发&#xff0c;受益匪浅&#xff0c;作此文以为笔记。 简介 设 卡尔曼滤波器是从测量值ZZZk的平均数开始的。开始推导&#xff1a; 由上式可知   也就是说随着kkk的增大&#xff0c;测量结果Zk不在重要&#xff0c;因为已经获得了足…

cocos2dx3.2文件结构和代码结构

既然选定了cocos2dxlua的原生方式来开发&#xff0c;首先要确定的是使用哪个版本的cocos2dx&#xff0c;先看看github上的changelog和releasenote&#xff0c;然后在google里搜索一下&#xff0c;参考了jacky的博客http://zengrong.net/post/2100.htm&#xff0c;最终选择了coc…

改进的PID算法

位置式PID算法 位置式PIDPIDPID算法是一种比较直观的的PIDPIDPID算法&#xff0c;如系统框图中所示&#xff0c;ininin表示设定值&#xff0c;errorerrorerror表示差值&#xff0c;uuu表示控制器输出值&#xff0c;outoutout表示被控量。算法表达式如下&#xff1a; 增量式PI…

几种简单电路知识汇总

这篇文章用于记录平时设计电路或者在书中遇到的一些电路方面的知识&#xff0c;会不定期更新。就先从运算放大器开始&#xff0c;对此做个简单的介绍。 运算放大器 说到运算放大器就不得不说两个概念&#xff0c;虚短与虚断。 虚短&#xff1a; 在理想情况下&#xff0c;运算…

51单片机——交通灯

原理图 功能描述 1、基本功能就是如同红绿灯一般&#xff0c;不做赘述。   2、红灯时长和绿灯时长可通过按键设置&#xff0c;即按键列中的上面4个&#xff0c;当这4个按键有一个按下后便进入时长设置功能&#xff0c;设置完成后按最下面两个按键&#xff08;紧急控制按钮&am…

设置TextField内文字距左边框的距离

2019独角兽企业重金招聘Python工程师标准>>> //设置文本框左边的viewUITextField *textField [[UITextField alloc]init];textField.frame CGRectMake(10, 30, 300, 30);[self.view addSubview:textField];textField.leftView [[UIView alloc]initWithFrame:CGRe…

类的三大特性

类有三大特性&#xff1a;继承&#xff0c;封装&#xff0c;多态&#xff0c;这个也是介绍类的时候&#xff0c;必须提到的话题&#xff0c;那么今天就来看一下OC中类的三大特性&#xff1a; 一、封装 学习过Java中类的同学可能都知道了&#xff0c;封装就是对类中的一些字段&a…

操作系统抢占式优先级调度_操作系统中的优先级调度(非抢先)

操作系统抢占式优先级调度Priority scheduling is a type of scheduling algorithm used by the operating system to schedule the processes for execution. The priority scheduling has both the preemptive mode of scheduling and the non-preemptive mode of scheduling…

数据结构pta选择判断复习

第一章绪论 1-3数据的逻辑结构是指数据的各数据项之间的逻辑关系。 错 是数据元素之间的逻辑关系 2-4以下属于逻辑结构的是&#xff08; &#xff09;。 (2分) 顺序表 散列表 有序表 单链表 有序表 2-12以下关于数据结构的说法中正确的是____。 (2分) A数据结构的逻辑结构独立于…

粗略的看JFinal的基于AOP的拦截器的实现

2019独角兽企业重金招聘Python工程师标准>>> 简单的说一下AOP的实现&#xff0c;所谓AOP&#xff0c;即&#xff08;Aspect Oriented Programming&#xff09;的缩写&#xff0c;体现在程序中就是你可以通过配置在任意的代码块前后插入你想插入的执行代码。例如日志…

大二上数据结构复习

目录 第一章绪论练习 第二章线性表 第三章栈和队列 第四章串 第五章数组和广义表 第六章树和二叉树 第七章图 第九章查找 第十章排序 第一章绪论练习 1-8 数据结构的抽象操作的定义与具体实现有关。 (1分) T F 1-14 数据结构包括数据对象集以及它们的逻辑结构和物理结构&#…

大二上数据结构复习2

第二章线性表 综合 一、在什么情况下用顺序表比用链表好 表长度确定&#xff0c;很少进行插入删除操作且经常访问元素 二、2-4 顺序表的插入和删除要求仍然保持各个元素原来的次序。设在等概率情形下, 对有 127 个元素的顺序表进行插入, 平均需要移动多少个元素? 删除一个元素…

操作系统(王道笔记第二章)

目录第二章 2.1_1进程的定义、组成、组成形式、特征 2.1_2进程的状态与转换 2.1_3进程的控制 2.1_4进程通信 2.1_5线程概念和多线程模型 2.2_1处理机调度的概念层次 2.2_2处理机调度的时机、切换与过程、方式 2.2_3调度算法的评价指标 2.2_4FCFS、SJF、HRRN调度算法 2.2_5时间片…

C语言画图形(图形库graphics的使用)

目录 工具 c语言基本绘图 文字输出 c语言基本贴图 获取鼠标、键盘信息 工具 &#xff08;1&#xff09;环境&#xff1a;VC &#xff08;2&#xff09;库函数&#xff1a;graphics.h&#xff08;因为不是标准库函数&#xff0c;所以需下载EASYX&#xff09; &#xff08;3&am…

关于DDD中Domain的思考

2019独角兽企业重金招聘Python工程师标准>>> 本文既不推销UML&#xff0c;也不推广DDD&#xff0c;更不涉及各种论战。-- 作者 某天又一次打开关于DDD(领域驱动设计)的PDF文档时&#xff0c;自己有了个疑问&#xff1a;什么是领域(Domain)&#xff1f;译文中是这样描…

算法设计TSP问题动态规划

#include <iostream> #include <cmath> using namespace std; //集合虚拟化用000 、001 、010 、011 、100 、101 、110 、111分别表示{} 、{1}&#xff08;V[2^(1-1)]&#xff09; 、{2}&#xff08;V[2^(2-1)]&#xff09; 、{1,2}&#xff08;V[2^(1-1)2^(2-1)]…

字符串使用与内部实现原理

Redis 发展到现在已经有 9 种数据类型了&#xff0c;其中最基础、最常用的数据类型有 5 种&#xff0c;它们分别是&#xff1a;字符串类型、列表类型、哈希表类型、集合类型、有序集合类型&#xff0c;而在这 5 种数据类型中最常用的是字符串类型&#xff0c;所以本文我们先从字…

Lisp-Stat翻译 —— 第九章 统计绘图窗体

2019独角兽企业重金招聘Python工程师标准>>> 第九章 统计绘图窗体 除了前几章略述的绘图窗体原型提供的基本绘图工具之外&#xff0c;Lisp-Stat里的统计绘图还需要用来管理数据和将那些数据转换成屏幕上的图形的工具集。这些工具由绘图原型graph-proto提供。更多的…

操作系统(王道笔记第三章内存)

第三章内存3.1_1内存的基础知识&#xff08;1&#xff09;什么是内存&#xff1a;略&#xff08;2&#xff09;进程运行的基本原理①从写程序到程序运行②链接③装入3.1_2内存管理的概念&#xff08;1&#xff09;内存管理管哪几个方面&#xff08;2&#xff09;内存保护①上下…

Redis 快速搭建与使用

Redis 是由 C 语言开发的开源内存数据存储器&#xff0c;经常被用作数据库、缓存以及消息队列等。 Redis 因为其强大的功能和简洁的设计&#xff0c;深受广大开发者和公司的喜爱&#xff0c;几乎占领了内存数据库市场的所有份额。 1 Redis 特性 Redis 有很多优秀的特性&#…