pid 订阅
PID=port ID,在STP(生成树协议)中,若在端口收到的BPDU中BID和path cost相同时,则比较PID来选择阻塞端口。数字电视复用系统名词 PID(Packet Identifier) 在数字电视复用系统中它的作用好比一份文件的文件名,我们可以称它为“标志码传输包” 。工程控制和数学物理方面 PID(比例积分微分)英文全称为Proportion Integration Differentiation,它是一个数学物理术语。PID由8位端口优先级加端口号组成,端口号占低位,默认端口号优先级128。 展开全文
PID=port ID,在STP(生成树协议)中,若在端口收到的BPDU中BID和path cost相同时,则比较PID来选择阻塞端口。数字电视复用系统名词 PID(Packet Identifier) 在数字电视复用系统中它的作用好比一份文件的文件名,我们可以称它为“标志码传输包” 。工程控制和数学物理方面 PID(比例积分微分)英文全称为Proportion Integration Differentiation,它是一个数学物理术语。PID由8位端口优先级加端口号组成,端口号占低位,默认端口号优先级128。
信息
外文名
Packet Identifier
简    称
PID
构    成
8位端口优先级加端口号
词    性
数学物理术语
中文名
数字电视
应    用
工程控制和数学物理
PID自动化
工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。同时,控制理论的发展也经历了古典控制理论、现代控制理论和智能控制理论三个阶段。智能 控制的典型实例是模糊全自动洗衣机等。自动控制系统可分为开环控制系统和闭环控制系统。一个控制系统包括控制器、传感器、变送器、执行机构、输入输出接 口。控制器的输出经过输出接口、执行机构,加到被控系统上;控制系统的被控量,经过传感器,变送器,通过输入接口送到控制器。不同的控制系统,其传感器、 变送器、执行机构是不一样的。比如压力控制系统要采用压力传感器。电加热控制系统的传感器是温度传感器。PID控制及其控制器或智能PID控制器(仪表)已经很多,产品已在工程实际中得到了广泛的应用,有各种各样的PID控制器产品,各大公司均开发了具有PID参数自整定功能的智能调节器 (intelligent regulator),其中PID控制器参数的自动调整是通过智能化调整或自校正、自适应算法来实现。有利用PID控制实现的压力、温度、流量、液位控制 器,能实现PID控制功能的可编程控制器(PLC),还有可实现PID控制的PC系统等等。可编程控制器(PLC) 是利用其闭环控制模块来实现PID控制,而可编程控制器(PLC)可以直接与ControlNet相连。开环控制系统(open-loop control system)是指被控对象的输出(被控制量)对控制器(controller)的输出没有影响。在这种控制系统中,不依赖将被控量反送回来以形成任何闭环回路。闭环控制系统(closed-loop control system)的特点是系统被控对象的输出(被控制量)会反送回来影响控制器的输出,形成一个或多个闭环。闭环控制系统有正反馈和负反馈,若反馈信号与系 统给定值信号相反,则称为负反馈(Negative Feedback),若极性相同,则称为正反馈,一般闭环控制系统均采用负反馈,又称负反馈控制系统。闭环控制系统的例子很多。比如人就是一个具有负反馈 的闭环控制系统,眼睛便是传感器,充当反馈,人体系统能通过不断的修正最后作出各种正确的动作。如果没有眼睛,就没有了反馈回路,也就成了一个开环控制系 统。另例,当一台真正的全自动洗衣机具有能连续检查衣物是否洗净,并在洗净之后能自动切断电源,它就是一个闭环控制系统。阶跃响应是指将一个阶跃输入(step function)加到系统上时,系统的输出。稳态误差是指系统的响应进入稳态后,系统的期望输出与实际输出之差。控制系统的性能可以用稳、准、快三个字 来描述。稳是指系统的稳定性(stability),一个系统要能正常工作,首先必须是稳定的,从阶跃响应上看应该是收敛的;准是指控制系统的准确性、控 制精度,通常用稳态误差来(Steady-state error)描述,它表示系统输出稳态值与期望值之差;快是指控制系统响应的快速性,通常用上升时间来定量描述。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它 以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的 其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象,或 不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、 积分、微分计算出控制量进行控制的。比例(P)控制比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。积分(I)控制在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的 或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积 分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到接近于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后几乎无稳 态误差。微分(D)控制在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用, 其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入 “比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能 够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在 调节过程中的动态特性。PID控制器的参数整定是控制系统设计的核心内容。它是根据被 控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是 依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主 要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应 曲线法和衰减法。两种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需 要在实际运行中进行最后调整与完善。一般采用的是临界比例法。利用该方法进行 PID控制器参数的整定步骤如下:⑴首先预选择一个足够短的采样周期让系统工作;⑵仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡, 记下这时的比例放大系数和临界振荡周期;⑶在一定的控制度下通过公式计算得到PID控制器的参数。 在实际调试中,只能先大致设定一个经验值,然后根据调节效果修改。对于温度系统:P(%)20--60,I(分)3--10,D(分)0.5--3对于流量系统:P(%)40--100,I(分)0.1--1对于压力系统:P(%)30--70,I(分)0.4--3对于液位系统:P(%)20--80,I(分)1--5参数整定找最佳,从小到大顺序查先是比例后积分,最后再把微分加曲线振荡很频繁,比例度盘要放大曲线漂浮绕大湾,比例度盘往小扳曲线偏离回复慢,积分时间往下降曲线波动周期长,积分时间再加长曲线振荡频率快,先把微分降下来动差大来波动慢。微分时间应加长理想曲线两个波,前高后低4比1一看二调多分析,调节质量不会低PID与自适应PID的区别:首先弄清楚什么是自适应控制在生产过程中为了提高产品质量,增加产量,节约原材料,要求生产管理及生产过程始终处于最优工作状态。因此产生了一种最优控制的方法,这就叫自适应控制。在这种控制中要求系统能够根据被测参数,环境及原材料的成本的变化而自动对系统进行调节,使系统随时处于最佳状态。自适应控制包括性能估计(辨别)、决策和修改三个环节。它是微机控制系统的发展方向。但由于控制规律难以掌握,所以推广起来尚有一些难以解决的问题。加入自适应的pid控制就带有了一些智能特点,像生物一样能适应外界条件的变化。还有自学习系统,就更加智能化了。这在IEEE《控制系统》杂志上有综述,可由格拉斯哥大学CAutoD网站 [1]  免费下载改善PID微分和积分的方法及:Y Li, KH Ang, GCY Chong, Patents, software, and hardware for PID control: An overview and analysis of the current art, Control Systems, IEEE, 26(1),42-54。
收起全文
精华内容
下载资源
问答
  • 一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制) PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原来上来...

    一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)

    PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原理上来理解PID控制。
    PID(proportion integration differentiation)其实就是指比例,积分,微分控制。先把图片和公式摆出来,看不懂没关系。(一开始看这个算法,公式能看懂,具体怎么用怎么写代码也知道,但是就是不知道原理,不知道为什么要用比例,微分,积分这3个项才能实现最好的控制,用其中两个为什么不行,用了3个项能好在哪里,每一个项各有什么作用

    PID控制算法原理

    PID控制算法公式

    总的来说,当得到系统的输出后,将输出经过比例,积分,微分3种运算方式,叠加到输入中,从而控制系统的行为,下面用一个简单的实例来说明。

    比例控制算法

    我们先说PID中最简单的比例控制,抛开其他两个不谈。还是用一个经典的例子吧。假设我有一个水缸,最终的控制目的是要保证水缸里的水位永远的维持在1米的高度。假设初试时刻,水缸里的水位是0.2米,那么当前时刻的水位和目标水位之间是存在一个误差的error,且error为0.8.这个时候,假设旁边站着一个人,这个人通过往缸里加水的方式来控制水位。如果单纯的用比例控制算法,就是指加入的水量u和误差error是成正比的。即
    u=kp*error
    假设kp取0.5,
    那么t=1时(表示第1次加水,也就是第一次对系统施加控制),那么u=0.5*0.8=0.4,所以这一次加入的水量会使水位在0.2的基础上上升0.4,达到0.6.
    接着,t=2时刻(第2次施加控制),当前水位是0.6,所以error是0.4。u=0.5*0.4=0.2,会使水位再次上升0.2,达到0.8.
    如此这么循环下去,就是比例控制算法的运行方法。
    可以看到,最终水位会达到我们需要的1米。
    但是,单单的比例控制存在着一些不足,其中一点就是 –稳态误差!(我也是看了很多,并且想了好久才想通什么是稳态误差以及为什么有稳态误差)。
    像上述的例子,根据kp取值不同,系统最后都会达到1米,不会有稳态误差。但是,考虑另外一种情况,假设这个水缸在加水的过程中,存在漏水的情况,假设每次加水的过程,都会漏掉0.1米高度的水。仍然假设kp取0.5,那么会存在着某种情况,假设经过几次加水,水缸中的水位到0.8时,水位将不会再变换!!!因为,水位为0.8,则误差error=0.2. 所以每次往水缸中加水的量为u=0.5*0.2=0.1.同时,每次加水缸里又会流出去0.1米的水!!!加入的水和流出的水相抵消,水位将不再变化!!
    也就是说,我的目标是1米,但是最后系统达到0.8米的水位就不在变化了,且系统已经达到稳定。由此产生的误差就是稳态误差了。
    (在实际情况中,这种类似水缸漏水的情况往往更加常见,比如控制汽车运动,摩擦阻力就相当于是“漏水”,控制机械臂、无人机的飞行,各类阻力和消耗都可以理解为本例中的“漏水”)
    所以,单独的比例控制,在很多时候并不能满足要求。

    积分控制算法

    还是用上面的例子,如果仅仅用比例,可以发现存在暂态误差,最后的水位就卡在0.8了。于是,在控制中,我们再引入一个分量,该分量和误差的积分是正比关系。所以,比例+积分控制算法为:
    u=kp*error+ ki ∗ ∫ error
    还是用上面的例子来说明,第一次的误差error是0.8,第二次的误差是0.4,至此,误差的积分(离散情况下积分其实就是做累加), error=0.8+0.4=1.2. 这个时候的控制量,除了比例的那一部分,还有一部分就是一个系数ki乘以这个积分项。由于这个积分项会将前面若干次的误差进行累计,所以可以很好的消除稳态误差(假设在仅有比例项的情况下,系统卡在稳态误差了,即上例中的0.8,由于加入了积分项的存在,会让输入增大,从而使得水缸的水位可以大于0.8,渐渐到达目标的1.0.)这就是积分项的作用。

    微分控制算法

    换一个另外的例子,考虑刹车情况。平稳的驾驶车辆,当发现前面有红灯时,为了使得行车平稳,基本上提前几十米就放松油门并踩刹车了。当车辆离停车线非常近的时候,则使劲踩刹车,使车辆停下来。整个过程可以看做一个加入微分的控制策略。
    微分,说白了在离散情况下,就是error的差值,就是t时刻和t-1时刻error的差,即u=kd*(error(t)-error(t-1)),其中的kd是一个系数项。可以看到,在刹车过程中,因为error是越来越小的,所以这个微分控制项一定是负数,在控制中加入一个负数项,他存在的作用就是为了防止汽车由于刹车不及时而闯过了线。从常识上可以理解,越是靠近停车线,越是应该注意踩刹车,不能让车过线,所以这个微分项的作用,就可以理解为刹车,当车离停车线很近并且车速还很快时,这个微分项的绝对值(实际上是一个负数)就会很大,从而表示应该用力踩刹车才能让车停下来。
    切换到上面给水缸加水的例子,就是当发现水缸里的水快要接近1的时候,加入微分项,可以防止给水缸里的水加到超过1米的高度,说白了就是减少控制过程中的震荡。

    现在在回头看这个公式,就很清楚了
    这里写图片描述
    括号内第一项是比例项,第二项是积分项,第三项是微分项,前面仅仅是一个系数。很多情况下,仅仅需要在离散的时候使用,则控制可以化为
    这里写图片描述
    这里写图片描述
    每一项前面都有系数,这些系数都是需要实验中去尝试然后确定的,为了方便起见,将这些系数进行统一一下:
    这里写图片描述
    这样看就清晰很多了,且比例,微分,积分每个项前面都有一个系数,且离散化的公式,很适合编程实现。
    讲到这里,PID的原理和方法就说完了,剩下的就是实践了。在真正的工程实践中,最难的是如果确定三个项的系数,这就需要大量的实验以及经验来决定了。通过不断的尝试和正确的思考,就能选取合适的系数,实现优良的控制器。

    展开全文
  • 在直接数字域设计中,我们常常需要用到PID算法,而PID算法投入单片机使用时,往往需要硬件的支持,在调试时非常麻烦。本文通过Matlab仿真的手段实现PID,方便了开发者对系统的设计和实时调试。

    0.符号说明

    1. y(k)——系统响应输出的离散值
    2. u(k)——数字PID控制输出的离散值
    3. r(k)——期望输出的离散值(事先已知),在本例中为常数(即阶跃输入)
    4. e(k)——e(k)=r(k)-y(k),为期望值-实际值,是单位负反馈的误差比较信号
      图片来源于百度百科
      注:图片来源于百度百科

    1.如何根据连续系统建立差分方程

    1.1.获取连续系统的传递函数

    线性定常系统的控制中,PID是个非常常见的控制方式,如果可以通过Matlab仿真出PID的控制效果图,那么对系统设计时的实时调试将会容易得多。在这里我们将会以一个利用系统辨识参数的PID设计为为例展示Matlab仿真PID的过程。
    首先需要对一个未知的系统的参数进行辨识,以延迟环节可以忽略不计的电机调速系统为例。将时间戳导入xdata向量,对应的时刻转速导入ydata向量,进行系统辨识

    链接:Matlab的系统辨识

    我们就以上文链接中辨识的系统传递函数为例:
    G ( s ) = 0.998 0.021 s + 1 G(s)=\frac{0.998}{0.021s+1} G(s)=0.021s+10.998因此通过tf函数建立系统结构体如下:

    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    

    1.2.获取离散系统的传递函数

    由于是数字PID仿真,我们需要选取一个采样时间,本案例选用的是0.005s(注意,采样周期应该小于系统纯滞后时间的0.1倍)。在对其进行数字PID控制前,我们需要将这个系统离散化:

    ts=0.005;  %采样时间=0.005s
    dsys=c2d(sys,ts,'z');      %离散化
    

    dsys即我们根据采样周期离散化的Z变换系统。首先我们需要提取这个Z变化d那系统的参数方便后面的计算:

    [num,den]=tfdata(dsys,'v');%'v'代表强制以向量的格式(默认为元胞数组)输出num和den
    

    1.3.转换为差分方程

    求解出的Z变换表达式为 d s y s = n u m ( 1 ) ⋅ z + n u m ( 2 ) d e n ( 1 ) ⋅ z + d e n ( 2 ) = 0.2114 z − 0.7881 dsys=\frac{num(1)\cdot z +num(2)}{den(1)\cdot z+den(2)}=\frac{0.2114}{z-0.7881} dsys=den(1)z+den(2)num(1)z+num(2)=z0.78810.2114
    在PID仿真的过程中我们需要求解出时域表达式 ,因此需要借助差分方程解决,对于以下的Z变换:

    \begin{equation}
    Y(z)=dsys\cdot U(z)=\frac{num(2)}{den(1)\cdot z+den(2)}\cdot U(z)
    \label{eq:Sample1}
    \end{equation}

    \begin{equation}
    zY(z)+den(2)Y(z)=num(1)zU(z)+num(2)U(z)
    \label{eq:Sample2}
    \end{equation}
    对上式进行反Z变换,可以得到以下的差分方程:

    \begin{equation}
    y(k+1)+den(2)y(k)=num(1)u(k+1)+num(2)u(k)
    \label{eq:Sample3}
    \end{equation}

    \begin{equation}
    y(k+1)=-den(2)y(k)+num(1)u(k+1)+num(2)u(k)
    \label{eq:Sample4}
    \end{equation}
    位置型PID仿真时实际上可以不需要保存前一个数据(u(k)和y(k)),增量型PID必须要保存前一个数据。这里我们使用了位置型PID,但仍然利用 u 1 u_1 u1 y 1 y_1 y1保存了上一个数据,仅仅是为了演示这一过程。\begin{equation}
    y(k+1)=-den(2)y(k)+num(1)u(k+1)+num(2)u(k)
    \end{equation}
    可以转换为下面的式子:
    \begin{equation}
    y(k)=-den(2)y_1+num(1)u(k)+num(2)u_1
    \label{eq:Sample5}
    \end{equation}
    我们的差分方程就这样建立完毕。注意,此差分方程仅仅是描述系统模型的运算规律的,和我们的控制无关。因此是y(k)和u(k)的映射关系。我们下面的控制则是利用负反馈信号e(k)导出u(k)的输出,求解的是控制器u(k)的序列值。

    2.基本PID控制原理

    以位置型PID控制为例。将连续的PID控制转换为数字式时,微分环节被用差分代替,积分环节被累加和代替,比例环节则保持不变。差分的实现非常简单,只需要用 e ( k + 1 ) − e ( k ) e(k+1)-e(k) e(k+1)e(k) e ( k ) − e 1 e(k)-e_1 e(k)e1等效即可。积分的实现在每一次运算的后面都累加原来的误差,即Ee=Ee+e_1;即可。PID的控制器输出 u ( k ) = K p ⋅ e ( k ) + K d ⋅ ( e ( k ) − e 1 ) + K i ⋅ E e u(k)=Kp\cdot e(k)+Kd\cdot (e(k)-e_1)+Ki\cdot Ee u(k)=Kpe(k)+Kd(e(k)e1)+KiEe
    PID控制器构造完毕,我们需要通过r(k)和y(k)得到e(k),再通过e(k)得出u(k),进而再求解出y(k),再结合r(k)求解出e(k),…以此循环,求解出离散的响应点。
    详细的代码如下:

    ts=0.005;  %采样时间=0.005s
    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    dsys=c2d(sys,ts,'z');      %离散化
    [num,den]=tfdata(dsys,'v');   %
    e_1=0;      %前一时刻的偏差      
    Ee=0;       %累积偏差
    u_1=0.0;    %前一时刻的控制量
    y_1=0;       %前一时刻的输出
    %PID参数
    kp=0.22;    
    ki=0.13;
    kd=0;
    u=zeros(1,1000);%预先分配内存
    time=zeros(1,1000);%时刻点(设定1000个)
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %期望值
        y(k)=-1*den(2)*y_1+num(2)*u_1+num(1)*u(k);%系统响应输出序列
        e(k)=r(k)-y(k);   %误差信号
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1); %系统PID控制器输出序列
        Ee=Ee+e(k);    %误差的累加和
        u_1=u(k);    	%前一个的控制器输出值
        y_1=y(k);    	%前一个的系统响应输出值
        e_1=e(k);		%前一个误差信号的值
    end
    %(仅绘制过渡过程的曲线,x坐标限制为[0,1])
    p1=plot(time,r,'-.');xlim([0,1]);hold on;%指令信号的曲线(即期望输入)
    p2=plot(time,y,'--');xlim([0,1]);%不含积分分离的PID曲线
    hold on;
    

    输出的PID控制曲线如下:
    PID控制

    3.比较PID输出,分析参数产生的影响

    一个基本的PID就完成了。下面如果我们想要知道修改PID的三个参数kp,ki,kd会带来什么效果,只需要在程序中修改即可。为了方便起见,我们建立一个PID的数组,kp,ki,kd每次都取数组的一个值,然后设定一个大循环开始循环仿真。再利用subplot输出子图的方式将所有的PID效果都输出到一个图进行对比。该代码根据上述代码修改已经很容易,PID比较图的代码如下:

    close all
    PID=[0.22,0.13,0;
        0.4,0.13,0;
        0.4,0.25,0;
        0.8,0.23,0.4;
        0.8,0.2,1;
        0.7,0.2,0.9];%初始化PID参数
    for pid=1:1:6
    ts=0.005;  %采样时间=0.005s
    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    dsys=c2d(sys,ts,'z');      %离散化
    [num,den]=tfdata(dsys,'v');   %
    e_1=0;      %前一时刻的偏差      
    Ee=0;       %累积偏差
    u_1=0.0;    %前一时刻的控制量
    y_1=0;       %前一时刻的输出
    %PID参数
    kp=PID(pid,1);    
    ki=PID(pid,2);
    kd=PID(pid,3);
    u=zeros(1,1000);
    time=zeros(1,1000);
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %给定量
        y(k)=-1*den(2)*y_1+num(2)*u_1+num(1)*u(k);
        e(k)=r(k)-y(k);   %偏差
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
        Ee=Ee+e(k);    
        u_1=u(k);    
        y_1=y(k);    
        e_1=e(k);
    end
    subplot(2,3,pid);
    p1=plot(time,r,'-.');xlim([0,1]);hold on;
    p2=plot(time,y,'--');xlim([0,1]);
    title(['Kp=',num2str(kp),' Ki=',num2str(ki),' Kd= ',num2str(kd)]);
    hold on;
    end
    

    输出的子图矩阵如下:
    PID子图矩阵
    可以发现,修改Kp会造成上升时间的缩短,但是有可能也会带来较大的超调。积分的增加是一个严重的滞后环节,会减小相位裕度,也会带来超调(超调量并不是绝对的,相对于较小的Kp可能会产生较大的超调,而Kp较大时超调会减小(例如第一行的1图和2图的对比))。然而积分的引入也是必要的,否则将会很长时间无法削弱误差e(k)(例如第二行第二个图)。微分的引入相当于一个超前校正,会减少超调,但是过渡的微分很可能会造成尾部振荡,系统逐渐变得不稳定。因此微分和积分之间需要一个平衡,当满足这个平衡的时候,系统几乎没有振荡,同时响应速度也较快。(第一行的图3是积分过多,产生超调,第二行的图1和图3就比较理想)
    综合上述,PID的调节经验可以归结为以下几点:

    • Kp较小时,系统对微分和积分环节的引入较为敏感,积分会引起超调,微分可能会引起振荡,而振荡剧烈的时候超铁也会增加。
    • Kp增大时,积分环节由于滞后产生的超调逐渐减小,此时如果想要继续减少超调可以适当引入微分环节。继续增大Kp系统可能会不太稳定,因此在增加Kp的同时引入Kd减小超调,可以保证在Kp不是很大的情况下也能取得较好的稳态特性和动态性能。
    • Kp较小时,积分环节不宜过大,Kp较大时积分环节也不宜过小(否则调节时间会非常地长),在下面这个例子中我们还会介绍到,当使用分段PID,在恰当的条件下分离积分,可以取得更好的控制效果。原因在于在稳态误差即将满足要求时,消除了系统的滞后。因此系统超调会明显减少。本例中采样的抗积分饱和的方法是遇限削弱积分法。

    4.改进PID算法(遇限削弱积分法)

    遇限削弱积分法的原理是
    u ( k ) > u m a x u(k)>u_{max} u(k)>umax时,若e(k)>0即输出值还未到达指定值,则认为积分会带来滞后,不再积分。
    u ( k ) < 0 u(k)<0 u(k)<0时,若e(k)<0即输出值超过了指定值,则认为积分会带来滞后,不再积分。
    在本案例中认为 u m a x = r ( k ) u_{max}=r(k) umax=r(k)
    改进PID算法如下(需要些两个循环,当然也可以用一个循环,将其中的PID设为一个子过程调用):

    close all
    ts=0.005;  %采样时间=0.005s
    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    dsys=c2d(sys,ts,'z');      %离散化
    [num,den]=tfdata(dsys,'v');   %
    e_1=0;      %前一时刻的偏差      
    Ee=0;       %累积偏差
    u_1=0.0;    %前一时刻的控制量
    y_1=0;       %前一时刻的输出
    %PID参数
    kp=0.22;    
    ki=0.13;
    kd=0;
    u=zeros(1,1000);
    time=zeros(1,1000);
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %给定量
        y(k)=-1*den(2)*y_1+num(2)*u_1+num(1)*u(k);
        e(k)=r(k)-y(k);   %偏差
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
        Ee=Ee+e(k);    
        u_1=u(k);    
        y_1=y(k);    
        e_1=e(k);
    end
    p1=plot(time,r,'-.');xlim([0,1]);hold on;
    p2=plot(time,y,'--');xlim([0,1]);
    hold on;
    a=1;%控制积分分离的二值数
    e_1=0;Ee=0;u_1=0.0;y_1=0;%重新初始化       
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %给定量
        y(k)=-1*den(2)*y_1+num(2)*u_1;
        e(k)=r(k)-y(k);   %偏差
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
         if ((u(k)>r(k)) && (e(k)>0))||((u(k)<0) && (e(k)<0))
             a=0;
         else 
             a=1;
         end     
        Ee=Ee+a*e(k);    
        u_1=u(k);    
        y_1=y(k);    
        e_1=e(k);
    end
    p3=plot(time,y,'-');xlim([0,1]);
    title('含积分分离与不含积分分离的对比');
    legend([p1,p2,p3],'指令信号','不含积分分离','含积分分离');
    

    输出的曲线对比图如下:
    积分分离之后的改进PID
    可以发现,系统的超调量明显减少了,调节时间也减少了一点。原因在于我们采用了分段PID的手段,既消除了稳态误差还削弱了积分环节带来的滞后影响。

    5.simulink仿真

    需要的模块名称(不区分大小写)如下:

    • gain(参数分别为0.22和0.13/0.005)
    • sum(参数分别为"|±"和"|++")
    • integrator
    • scope
      注意:本文使用的是离散PID仿真,而simulink使用的是连续系统仿真,转换PID参数时P参数不变,I参数应该除以仿真间隔Ts=0.005,D参数应该乘Ts。

    以表中第一组PI参数为例:
    在这里插入图片描述
    得到的示波器曲线如下:
    在这里插入图片描述

    希望本文对您有帮助,谢谢阅读。

    展开全文
  • 位置式PID与增量式PID区别浅析

    万次阅读 多人点赞 2019-04-26 08:55:12
    1PID控制算法 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备、气动设备 和电子设备.在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法 PID 实指“比例 ...

    1PID控制算法

    什么是PID

    PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备、气动设备 和电子设备.在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法

    PID 实指“比例 proportional”、“积分 integral”、“微分 derivative”,这三项构 成 PID 基本要素。每一项完成不同任务,对系统功能产生不同的影响。它的结构简单,参数易 于调整,是控制系统中经常采用的控制算法。

    PID:比例单元(P)、积分单元(I)和微分单元(D)组成

    PID控制公式

     

    其中:u(t)为控制器输出的控制量;(输出)

    e(t)为偏差信号,它等于给定量与输出量之差;(输入)

    KP 为比例系数;(对应参数 P)

    TI 为积分时间常数;(对应参数I)

    TD 为微分时间常数。(对应参数 D) 

     

    数字 PID 控制算法通常分为位置式 PID 控制算法和增量式 PID 控制算法。  

    位置式 PID 算法 :

    pid算法中位置型和增量型有什么区别,分析两者优缺点

     e(k): 用户设定的值(目标值) -  控制对象的当前的状态值 

    比例P :    e(k)

    积分I :   ∑e(i)     误差的累加

    微分D :  e(k) - e(k-1)  这次误差-上次误差

    也就是位置式PID是当前系统的实际位置,与你想要达到的预期位置的偏差,进行PID控制

    因为有误差积分 ∑e(i),一直累加,也就是当前的输出u(k)与过去的所有状态都有关系,用到了误差的累加值;(误差e会有误差累加),输出的u(k)对应的是执行机构的实际位置,,一旦控制输出出错(控制对象的当前的状态值出现问题 ),u(k)的大幅变化会引起系统的大幅变化

    并且位置式PID在积分项达到饱和时,误差仍然会在积分作用下继续累积,一旦误差开始反向变化,系统需要一定时间从饱和区退出,所以在u(k)达到最大和最小时,要停止积分作用,并且要有积分限幅输出限幅

    所以在使用位置式PID时,一般我们直接使用PD控制

    而位置式 PID 适用于执行机构不带积分部件的对象,如舵机和平衡小车的直立和温控系统的控制

     

    结合代码可以很好理解

    typedef struct PID
    { 
      float P,I,D,limit;
    }PID;
    
    typedef struct Error
    {
      float Current_Error;//当前误差
      float Last_Error;//上一次误差
      float Previous_Error;//上上次误差
    }Error;
    
    /*! 
     *  @brief      位置式PID
     *  @since      v1.0
     *  *sptr :误差参数
     *  *pid:  PID参数
     *  NowPlace:当前位置
     *  Point:   预期位置  
     */
    
    // 位置式PID控制
    float PID_Realize(Error *sptr,PID *pid, int32 NowPlace, float Point)
    {
    
    	int32 iError,	// 当前误差
    		 Realize;   //实际输出	
    
    	iError = Point - NowPlace;	// 计算当前误差
    	sptr->Current_Error += pid->I * iError;	// 误差积分
          sptr->Current_Error = sptr->Current_Error > pid->limit?pid->limit:sptr->Current_Error;//积分限幅
          sptr->Current_Error = sptr->Current_Error <-pid->limit?-pid->limit:sptr->Current_Error;
    	Realize = pid->P * iError       //比例P
                + sptr->Current_Error   //积分I
    			+ pid->D * (iError - sptr->Last_Error);  //微分D
    	sptr->Last_Error = iError;		  	// 更新上次误差
    	return Realize;	// 返回实际值
    }

    增量式PID

     

    pid算法中位置型和增量型有什么区别,分析两者优缺点

    比例P :    e(k)-e(k-1)   这次误差-上次误差

    积分I :   e(i)     误差   

    微分D :  e(k) - 2e(k-1)+e(k-2)   这次误差-2*上次误差+上上次误差

     增量式PID根据公式可以很好地看出,一旦确定了 KP、TI  、TD,只要使用前后三次测量值的偏差, 即可由公式求出控制增量

    而得出的控制量▲u(k)对应的是近几次位置误差的增量,而不是对应与实际位置的偏差     没有误差累加

    也就是说,增量式PID中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果,并且在系统发生问题时,增量式不会严重影响系统的工作

    总结:增量型 PID,是对位置型 PID 取增量,这时控制器输出的是相邻两次采样时刻所计算的位置值
    之差,得到的结果是增量,即在上一次的控制量的基础上需要增加(负值意味减少)控制量。
     

    typedef struct PID
    { 
      float P,I,D,limit;
    }PID;
    typedef struct Error
    {
      float Current_Error;//当前误差
      float Last_Error;//上一次误差
      float Previous_Error;//上上次误差
    }Error;
    
    /*! 
     *  @brief      增量式PID
     *  @since      v1.0
     *  *sptr :误差参数
     *  *pid:  PID参数
     *  NowPlace:实际值
     *  Point:   期望值
     */
    // 增量式PID电机控制
    int32 PID_Increase(Error *sptr, PID *pid, int32 NowPlace, int32 Point)
    {
    
    	int32 iError,	//当前误差
    		Increase;	//最后得出的实际增量
    
    	iError = Point - NowPlace;	// 计算当前误差
    
    	Increase =  pid->P * (iError - sptr->Last_Error)   //比例P
    			  + pid->I * iError      //积分I
    			  + pid->D * (iError - 2 * sptr->Last_Error + sptr->Previous_Error);  //微分D
    	
    	sptr->Previous_Error = sptr->Last_Error;	// 更新前次误差
    	sptr->Last_Error = iError;		  	// 更新上次误差
    	
    	return Increase;	// 返回增量
    }
    

    增量式与位置式区别:

    1增量式算法不需要做累加,控制量增量的确定仅与最近几次偏差采样值有关,计算误差对控制 量计算的影响较小。而位置式算法要用到过去偏差的累加值,容易产生较大的累加误差。 

    2增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作 影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作。 而位置式的输出直接对应对象的输出,因此对系统影响较大

    3增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。

    4在进行PID控制时,位置式PID需要有积分限幅输出限幅,而增量式PID只需输出限幅

    位置式PID优缺点:

    优点:

    ①位置式PID是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k)的值和执行机构的实际位置(如小车当前角度)是一一对应的,因此在执行机构不带积分部件的对象中可以很好应用

    缺点:

    ①每次输出均与过去的状态有关,计算时要对e(k)进行累加,运算工作量大。

    增量式PID优缺点:

    优点:

    ①误动作时影响小,必要时可用逻辑判断的方法去掉出错数据。
    ②手动/自动切换时冲击小,便于实现无扰动切换。当计算机故障时,仍能保持原值。
    ③算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关。


    缺点:

    ①积分截断效应大,有稳态误差;

    ②溢出的影响大。有的被控对象用增量式则不太好;

     

    展开全文
  • 模糊PID算法及其MATLAB仿真(1)

    万次阅读 多人点赞 2019-04-15 20:34:35
    目录 1、PID控制 2、模糊控制 ... PID控制是及其普遍的控制方法,主要分为位置式PID和增量式PID,主要方程大家可以查看其他资料,这里就不作详细的解释了,另外还需要了解阶跃响应曲线上面的超调...

    目录

    1、PID控制基础

    2、模糊控制

    3、模糊PID简介

    4、模糊自整定PID的理论内容(重点内容)

    4.1 基本原理

    4.2 模糊子集及其论域的确定

    4.3 模糊规则的建立

    4.4 模糊推理

    4.5、解模糊化


    2020 年4月2日  由于浏览数量的增加,这里做了一些增补及修改。有问题请大家指出。


    1、PID控制基础

        PID控制是极其常用的控制方法,主要分为位置式PID和增量式PID,主要方程大家可以查看其他资料,这里就不作详细的解释了,另外还需要了解阶跃响应曲线上面的超调量、稳态误差等参数的意义。

    2、模糊控制

        模糊控制的发展历史和相关的论证也不说了,百度百科也有。

        相关概念扫盲(不一定准确):

    相关概念简单理解
    论域类似于值域,一般是变量的变化范围
    隶属度一般的“属于”概念是相互独立的,属于你就不属于我。隶属度则定义来了既可以属于你,也可以属于我,只是可能更属于我或更属于你
    模糊语言正大、正中、正小、零、负大、负中、负小这些定性的描述词

        其实模糊控制的提出确实很有意义,对很多领域来说都是。模糊控制的提出者Zadeh还同时搞了个“软计算”的概念,使用计算机模拟人类的直觉并将其自动化,个人觉得这种将客观现实转换到人的逻辑水平进行推理,再在物理现实实现的过程一直令人着迷,就像大数定理、哥德尔定理。现在深度神经网络的发展其实远超出当时提出的“软计算”,但是感觉如果模糊规则足够庞大复杂,仍然可以达到很高的水平。

        模糊控制还常常与专家系统等结合在一起使用,其实要发论文的话还是要结合当前的一些机器学习内容来搞。

        大家用MATLAB做一下仿真其实是有利于理解模糊控制的。

        模糊控制的隶属度函数定义有相关的理论,但是实际是很灵活的,比如你认为在论域[0,10]里面,3可以是负中、可以负小、可以负大,甚至还有一部分可能是零,只是隶属度不同。

        另外,在模糊论域的选取过程中,我们常看到的是(-6,6)这样的区间,其实这并不重要,你如果想把自己的数据套用到这个算法里面,就可以做一下线性变换,把你的论域映射到这个区间。

    3、模糊PID简介

        模糊PID其实有多种,并不是单一的方法。根据其结构主要分为三种 [1](目前我查到的资料只看到以下三种):

        (1)模糊控制和PID控制各自在相应的条件下执行自己的功能,条件作为一种开关(单刀双掷),当采用模糊控制好的时候则使用模糊控制,当使用PID控制器较好时则使用PID算法。

    具体我就不画了,直接截的图。

    单独的模糊控制器具有较好的鲁棒性,但由于它是离散的规则控制(主要是基于语言变量),往往在工作点附近容易引起小辐震荡(稳态误差问题),使受控系统的静态误差较大。而单独PID控制鲁棒性较差,但其积分作用可以有效消除系统稳态误差,并且在工作点附近的小范围内有较好的调节效果。因此这种双模结构结合了两者的优点,做到的优势互补。

        (2)模糊自整定PID算法(名字多:模糊自组织PID,模糊自调节PID、模糊自适应PID...)

        这种方法比较常用,也就是使用模糊规则的方式进行PID三个参数的整定,至于它是否优于PID算法,个人持怀疑态度,后湖会提到。这种方法基本就是用计算机代替人进行PID参数整定。结构如下图:

        Robot Model 是文献 [2] 中的控制模型,这里大家要用自己的模型代替。

        这种方法本质上是PID控制,对于参数变化范围大的对象,要获得良好的相应性能,就需要对PID参数进行在线调整,模糊自整定PID就是比较好的方法。

        (3)还有一种我也是在参考文献 [1] 才见过的,文中提到这有点类似冗余控制,这个大家可以自行参考研究。

    4、模糊自整定PID的理论内容(重点内容)

    4.1 基本原理

    典型PID控制器的传递函数(CSDN的公式编辑器不太好用,又截图了0.0):

     其中 Kp , Ti , Td 分别是比例增益、积分和微分时间常数。PID控制器的设计和参数整定放在模糊规则里。

    4.2 模糊子集及其论域的确定

         一般PID参数在整定的时候常采用 Ziegler-Nichols 方法,这种方法对于线性或者参数变化较小的对象有良好的响应性能,但参数变化较大时则需要另外调整。Ziegler-Nichols 方法一般设:

    其中Ku、Tu分别是在比例(只有比例)控制下,系统临界稳定状态时控制器的增益和系统响应震荡周期;alpha为常数通常取 

    alpha = 4。经大量的仿真计算验证,Kp、Td的调整范围由下确定:

    则对于模糊控制器的设计时论域采用如下:

    归一化处理:

    对于 alpha 值也要进行论域划分 alpha = {2,3,4,5}。

    这里隶属度函数的定义就比较灵活了,我参考的书(《模糊控制原理与应用(第二版)》机械工业出版社)上面采用S,B,并经过多次调整得到隶属度函数:

    其中的 x 就可以用 Td' 和 Kp' 代替。而误差 e 和误差变化率 ec 可以取7语言变量,为了便于记住(其实记住会在后续步骤比较方便),NL,NM,NS,ZE,PS,PM,PL,分别对应负大、负中、负小、零、正小、正中、正大,对应的大家考虑英语怎么表示就行。隶属度函数通常取三角。

    4.3 模糊规则的建立

        模糊规则主要由“if ...... and......then......”的形式给出,例如:

    Ri:if e is Ai and ec is Bi then Kp' is Ci and Td' is Di and alpha is Ei

    表示第i条推理规则为当误差e在隶属度中为Ai且误差变化率ec在隶属度中为Bi时,比例系数Kp'就为Ci,微分系数就为Di并且alpha为Ei。这种推理规则大家可以从一些文献中查找,文献[2]给出了一种设计方式(不过是关于PID三个参数的)。

        模糊规则通常来源于专家知识、经验等。其本质上是一个查找表。即给定e,ec ,得出相对应的输出模糊变量。这里要注意的是 数量 的问题:对于单输入单输出(SISO)系统,假设划分为 7 * 7 的规则,那么总共可以得到 49 条不同 e 和 ec 的输出。那么对于多输入单输出(MISO)的情况下,那么模糊规则中你可以设计他们之间的关系为 and 、or 等,这时,有多少个输入,就应该有多少个模糊规则表。对于多输入多输出(MIMO)系统,则涉及到的问题就比较多了。随着输出的增加,模糊规则数会呈现指数形式增加,因此也有一些降维的解决方案,这里不做叙述。

    个人揣测:模糊规则库是模糊控制的关键所在,但也是模糊控制的难点。所以很多研究模糊控制的优化都针对模糊规则的涉及。也就是所谓的专家系统、神经网络模糊之类的。

    4.4 模糊推理

        模糊推理主要为根据模糊运算规则将模糊规则库中的 if then 转化成某种映射。模糊运算的规则实际上是有数学理论支撑的。最常见的运算方法有以下几种:

    (1)最小运算法

        最小运算法也称 Mamdani 方法,即取隶属度函数极小值。

    (2)积运算

        积运算也称 Larsen 方法,故名思意,就是取隶属度函数的乘积。

    (3)算数运算

        算数运算也称 Zadeh 方法,没错,就是发明模糊控制的那个人。算数运算可以表示为:

    另外还有最大最小运算、布尔运算、标准法运算等。

        其实需要注意的主要就是模糊运算与常规的运算之间的区别。比如在模糊控制中看起来可能是交运算符(^),但是实际上是个取极小值运算。

    4.5、解模糊化

        解模糊化就是要把经过模糊推理后的结果在系统中进行应用,因为模糊推理所得到的输出可能是“较大”、“适中”、“负小”这样的结果,你直接告诉你的系统是不行的。因此这里需要把这个模糊输出进行清晰化,因此解模糊也称为清晰化、去模糊化。

        解模糊化最常用的就是重心法。另外还有最大隶属度法等。其实如果你从数学的角度进行理解就懂了,模糊输出是一个类似高斯分布的隶属度函数,你想让你的系统输出准确,就应该取那个隶属度尽可能大的值,其实也就是均值或者中心。

     

    参考文献:

    [1] 高福学, 李伯全, 丁丽娟, et al. 链篦机篦床温度场模糊PID控制的研究与仿真[J]. 微计算机信息, 2009, 25(16):42-43.

    [2] S. krishna, S. Vasu,Fuzzy PID based adaptive control on industrial robot system,Materials Today: Proceedings,Volume 5, Issue 5, Part 2,2018,Pages 13055-13060.

    [3] Kudinov Y I , Kolesnikov V A , Pashchenko F F , et al. Optimization of Fuzzy PID Controller's Parameters ☆[J]. Procedia Computer Science, 2017, 103:618-622.

    [4] A tuning proposal for direct fuzzy PID controllers oriented to industrial continuous processes

    [5] Khan A A , Rapal N . [IEEE 2006 IEEE International Conference on Engineering of Intelligent Systems - Islamabad, Pakistan (22-23 April 2006)] 2006 IEEE International Conference on Engineering of Intelligent Systems - Fuzzy PID Controller: Design, Tuning and Comparison with Conventional PID Controller[J]. 2006:1-6.

    展开全文
  • 模糊PID算法及其MATLAB仿真(2)

    万次阅读 多人点赞 2019-04-16 18:05:07
    上一篇写了模糊自整定PID的理论,这篇来做MATLAB仿真。 目录 补充内容:如何计算临界稳定下的开环增益 Ku 和震荡周期 Tu MATLAB进行模糊PID仿真 1、准备工作 2、模糊控制器的设计 补充内容:如何计算临界稳定...
  • 基于BP神经网络PID控制+Simulink仿真

    万次阅读 多人点赞 2019-05-30 10:58:30
    最近在学习电机的智能控制,上周学习了基于单神经元的PID控制,这周研究基于BP神经网络的PID控制。 神经网络具有任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控制。利用BP神经网络可以...
  • 非常好用的模糊PID温度控制算法

    热门讨论 2017-09-04 09:23:59
    这个是非常好用的模糊PID温度控制算法,已经在自己的项目中使用,你只需要按照自己的控制对象修改误差变化率最大值和误差阈值即可。
  • PID的理解和应用

    万次阅读 多人点赞 2019-06-01 20:43:46
    PID控制简介、比例、 积分、微分控制算法、增量式PID应用
  • 一个模糊PID温度控制算法源代码 (亲测可用)
  • 直流电机PID调速

    千次阅读 多人点赞 2019-12-07 11:19:32
    文章写的是基于数字PID控制器的闭环电机速度控制系统,系统以STC89C51单片机为控制核心,通过电机驱动L298N(这里因为所用电机是个小马达,额定电流和堵转电流不算大,所以用的是TC1508S做驱动)控制电机转速,电机...
  • PID】位置式PID控制原理

    万次阅读 多人点赞 2018-07-12 20:14:27
    PID控制流程图:
  • PID简介

    千次阅读 多人点赞 2019-10-30 12:42:29
    大三退隐,安心学习之前总结一下所学的PID知识,备忘 PID的数学形式 PID三个参数的作用 PID控制算法作用是使得输出的实际值尽量稳定快速的接近设定值,并且不需要了解系统本身特性,适用性强 比例控制算法 P ...
  • 上篇介绍了连续系统的PID算法,但是计算机控制是一种采样控制,他只能根据采样时刻的偏差来计算控制量,因此计算机控制系统中,必须对公式进行离散化,具体就是用求和代替积分,用向后差分来代替微分,使模拟PID离散...
  • PID调试软件(模拟仿真)

    热门讨论 2014-09-07 22:42:37
    用C#写的PID调试软件,用于模拟、仿真及学习。可自行调整P I D三个参数,然后看到波形显示,初学者学习好工具。 1.需要.net framework,你懂的 2.运行后点击Go,PID就会跟踪。 3.修改PID参数后,请重新点击Go! 4....
  • MATLAB仿真PID控制器与模糊控制器

    万次阅读 多人点赞 2019-03-04 16:06:10
    摘要:使用matlab编写PID控制器与模糊控制器,并对原理进行解析。 背景: 小白自学。 基础:1、视频“自动控制原理”,1-3章,柠檬大学,点此链接 2、《基于MATLAB的系统分析与设计——模糊系统》,楼顺天等,...
  • 增量式PID算法的MATLAB实现

    千次阅读 多人点赞 2019-06-22 13:27:19
    增量式PID的MATLAB实现PID控制的分类连续PID控制离散PID控制位置式PID控制增量式PID控制位置式PID与增量式PID的比较离散PID控制的MATLAB实现实现增量式PID算法绘制GUI界面,实时更改给定值 PID控制的分类 连续PID控制...
  • PID专家控制matlab仿真

    千次阅读 2019-09-10 18:34:50
    PID专家控制matlab仿真 一、实验目的   使用matlab针对某二阶或三阶系统,结合专家控制规则,设计相应的专家PID控制器,使得其闭环系统能快速跟踪阶跃信号。 (1)画出闭环输出响应,误差响应曲线; (2)画出...
  • matlab模糊控制工具箱使用和模糊控制pid实例参考

    万次阅读 多人点赞 2019-02-28 13:26:17
    6)simulink中使用fis文件,首先加入fuzzy模块,然后写入模糊文件,注意应用格式加单引号: 'fuzzpid.fis' 2、模糊控制pid实例 模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以...
  • 目录:一、简介二、二位式控制算法三、位置式PID算法1. P算法2. I 算法3. D算法四、增量式PID算法五、几种增量式PID算法的变形 一、简介 将偏差的 比例(Proportion)、积分(Integral) 和 微分(Differential) ...
  • PID介绍 PID调参 串级PID

    万次阅读 多人点赞 2019-06-19 13:44:38
    鉴于串级PID在pixhawk系统中的重要性,无论是误差的补偿,如姿态解算;还是控制的实现,如姿态控制,位置控制,靠的都是串级的pid,这里我们先对串级pid做一个介绍,后面会再接着分析,姿态的控制以及位置的解算和...
  • 四轴PID控制算法详解(单环PID、串级PID)

    千次阅读 多人点赞 2019-06-18 14:59:10
    正文开始:这篇文章分为三个部分:PID原理普及常用四轴的两种PID算法讲解(单环PID、串级PID)如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?PID原理普及1、  对自动控制系统的基本要求:  &...
  • PID循迹控制算法

    千次阅读 多人点赞 2020-11-28 15:01:33
     让小车进行循迹最重要的是获取车相对于循迹线的位置,关于循迹模块的原理我已经在之前的一篇博客上讲过,如果大家没看过的话可以点此链接:PID循迹模块原理。 PID循迹原理简介 图1 循迹车寻线行走图示 图2 市场...
  • PID算法之模糊PID

    千次阅读 2020-10-10 10:33:58
    在实际的控制系统中,线性系统毕竟是...这里需要注意的是,专家PID 也好,模糊 PID 也罢,绝对不是专家系统或模糊算法与 PID 控制算法的简单加和,他是专家系统或者模糊算法在 PID 控制器参数整定上的应用。也就是说,
  • PID

    千次阅读 多人点赞 2018-05-20 21:57:26
    微积分快速入门S—路程 V—速度 a—加速度其中的边长为v和t的长方形的面积为s积分的结果是一个函数所围成的面积进阶积分s = v * t v = a * t 微分S = f(t) = v * t f '(t...积分控制 PID控制器中的积分对应于图1中...
  • 模糊PID——基于MATLAB的直流电机控制系统

    千次阅读 热门讨论 2019-03-26 21:11:29
    根据传统PID控制中系数对控制特性的影响,采用模糊PID控制方式代替双闭环传统PID的转速控制。通过MATLAB/Simulink仿真软件建立控制系统的数学模型,重点说明了模糊控制器的制作过程。并通过仿真的结果,证明了模糊...
  • PID算法的FPGA实现

    2015-04-14 11:57:09
    PID算法的FPGA实现的quartus工程
  • 离散PID基础知识

    万次阅读 2017-09-23 09:29:22
    PID调节器出现于上世纪30年代,PID控制就是对偏差进行比例,积分和微分的控制。PID的三个单元分别是比例 ,积分,微分。在工程实际中,一般P是必须的,所以衍生出多种组合的PID控制器,如PD,PI,PID等。  (1)...
  • PID控制详解

    万次阅读 多人点赞 2018-12-16 10:43:04
    PID控制详解 一、PID控制简介 PID( Proportional Integral Derivative)控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性...
  • PID的各种算法优缺点

    千次阅读 2021-02-18 12:04:42
    PID的各种算法优缺点 数字式位置式PID 数字式增量式PID 积分分离式PID 变速积分PID 不完全微分PID 微分先行PID b### 位置式PID
  • 史上最详细的PID教程——理解PID原理及优化算法

    千次阅读 多人点赞 2021-03-22 19:28:56
    位置式PID与增量式PID区别浅析_Z小旋-CSDN博客_增量式pid 常用PID算法: ①PI算法: 特点: 从时域上看,只要存在偏差,积分就会不停对偏差积累,因此稳态时误差一定为零 不足:比例与积分动作都是对过去控制误差...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 926,569
精华内容 370,627
热门标签
关键字:

pid