PID算法程序—位置式PID控制算法

合集下载

(完整版)PID控制规律及数字PID基本算法

(完整版)PID控制规律及数字PID基本算法
c(t)
Gc (s)
3、比例微分控制
1 u(t)
) Ti s
K p (1 Ti s) Ti s
入了相位滞后,使得系统相对稳定性变差;一阶微分 环节的出现,提高了系统的阻尼程度,缓和了控制器 零极点对系统稳定性及动态过程的不利影响。
微分控制能反应输入信号的变化趋势,因此在输入信
r(t)

连续PID控制算例
开环传递函数:
G(s)
6
(s 1)(s 2)(s 3)
原系统 PI控制
Matlab/Simulink
PID控制
1.6
1.4
原系统 PI控 制
PI控制器:比例系数Kp=3.1815、积分时间常数
1.2
PID控 制 Ti=1.345
1
PID控制器:比例系数Kp=4.7787、积分时间常数
系统的快速性及相对稳定性。
PID控制器的时域表达式:
u(t
)

K
p
[e(t
)

1 Ti

e(t)dt
0
Td
de(t ) ] dt
二、连续PID传递函数的离散化
各环节的离散化处理
r(t)

e(t) K p
Td s
c(t)
1/ Ti s
u(t)
r(t)

e(t) c(t)
T
e*(t) K p
为0,0.9,3时系统的阶跃响应。
黄色线对应比例系数为2,微分系数为0时的阶跃响应 紫色线对应比例系数为2,微分系数为0.9时的阶跃响应 青色线对应比例系数为2,微分系数为3时的阶跃响应
随着微分作用的增强,系 统的超调量减小,系统的 阻尼程度提高,相对平稳 性变好,调整时间缩短, 快速性变好

PID控制算法(PID控制原理与程序流程)

PID控制算法(PID控制原理与程序流程)

PID控制算法(PID控制原理与程序流程)⼀、PID控制原理与程序流程(⼀)过程控制的基本概念过程控制――对⽣产过程的某⼀或某些物理参数进⾏的⾃动控制。

1、模拟控制系统图5-1-1 基本模拟反馈控制回路被控量的值由传感器或变送器来检测,这个值与给定值进⾏⽐较,得到偏差,模拟调节器依⼀定控制规律使操作变量变化,以使偏差趋近于零,其输出通过执⾏器作⽤于过程。

控制规律⽤对应的模拟硬件来实现,控制规律的修改需要更换模拟硬件。

2、微机过程控制系统图5-1-2 微机过程控制系统基本框图以微型计算机作为控制器。

控制规律的实现,是通过软件来完成的。

改变控制规律,只要改变相应的程序即可。

3、数字控制系统DDC图5-1-3 DDC系统构成框图DDC(Direct Digital Congtrol)系统是计算机⽤于过程控制的最典型的⼀种系统。

微型计算机通过过程输⼊通道对⼀个或多个物理量进⾏检测,并根据确定的控制规律(算法)进⾏计算,通过输出通道直接去控制执⾏机构,使各被控量达到预定的要求。

由于计算机的决策直接作⽤于过程,故称为直接数字控制。

DDC系统也是计算机在⼯业应⽤中最普遍的⼀种形式。

(⼆)模拟PID调节器1、模拟PID控制系统组成图5-1-4 模拟PID控制系统原理框图2、模拟PID调节器的微分⽅程和传输函数PID调节器是⼀种线性调节器,它将给定值r(t)与实际输出值c(t)的偏差的⽐例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进⾏控制。

a、PID调节器的微分⽅程式中b、PID调节器的传输函数a、⽐例环节:即时成⽐例地反应控制系统的偏差信号e(t),偏差⼀旦产⽣,调节器⽴即产⽣控制作⽤以减⼩偏差。

b、积分环节:主要⽤于消除静差,提⾼系统的⽆差度。

积分作⽤的强弱取决于积分时间常数TI,TI越⼤,积分作⽤越弱,反之则越强。

c、微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太⼤之前,在系统中引⼊⼀个有效的早期修正信号,从⽽加快系统的动作速度,减⼩调节时间。

PID算法程序—位置式PID控制算法

PID算法程序—位置式PID控制算法

PID算法程序—位置式PID控制算法位置式PID控制算法是一种经典的控制算法,用来实现对于被控对象位置的精确控制。

本文将介绍位置式PID控制算法的原理和实现方式。

位置式PID控制算法的原理是基于被控对象的位置反馈信号,通过比较设定值和实际值之间的差异,进行控制动作的调整。

PID控制算法分为三个部分,即比例(Proportional)、积分(Integral)和微分(Derivative)控制。

比例控制通过比较设定值和实际值的差异,按照一个比例系数进行控制。

比例控制的作用是根据误差的大小来产生一个合适的控制量,使得误差越大,则控制量越大。

比例控制的数学公式为:P=Kp*e,其中P为控制量,Kp为比例系数,e为误差。

积分控制通过对误差进行累计,按照一个积分系数进行控制。

积分控制的作用是根据误差的累积量来产生一个较长期的平均控制量,以消除一些系统方面的偏差。

积分控制的数学公式为:I = Ki * ∫e dt,其中I为控制量,Ki为积分系数,∫e dt为误差的累积量。

微分控制通过对误差的变化率进行控制,按照一个微分系数进行控制。

微分控制的作用是根据误差的变化趋势来产生一个瞬时控制量,以抑制控制过程中的震荡和超调现象。

微分控制的数学公式为:D = Kd * de/dt,其中D为控制量,Kd为微分系数,de/dt为误差的变化率。

位置式PID控制算法的输出为PID控制量,即PID=P+I+D。

PID控制量经过执行机构(如电机)的作用,使被控对象达到设定值。

PID控制算法是一个迭代过程,通过不断调整PID系数,使控制系统的稳态误差趋于零,且响应时间和稳定性都符合要求。

在实际应用中,需要根据被控对象的特性和控制要求,调整PID控制算法的参数。

比例系数Kp决定了响应的敏感度,积分系数Ki决定了控制的稳定性,微分系数Kd决定了控制的平滑性。

通过合理调整这些参数,可以实现对被控对象位置的精确控制。

PID控制算法的实现可以通过编程语言来实现。

STM32实现电机的PID控制

STM32实现电机的PID控制

PID控制应该算是非常古老而且应用非常广泛的控制算法了,小到热水壶温度控制,大到控制无人机的飞行姿态和飞行速度等等。

在电机控制中,PID算法用得尤为常见。

一、位置式PID1.计算公式在电机控制中,我们给电机输出的是一个PWM占空比的数值。

话不多说,直接上位置式PID基本公式:控制流程图如下:上图中的目标位置一般我们可以通过按键或者开关等方式编程实现改变目标值,测量位置就是通过stm32 去采集编码器的数据。

目标位置和测量位置之间作差就是目前系统的偏差。

送入PID 控制器进行计算输出,然后再经过电机驱动的功率放大控制电机的转动去减小偏差,最终达到目标位置的过程。

2.C语言实现如何把我们以上的理论分析和控制原理图使用C 语言写出来呢,这是一个有趣且实用的过程。

位置式PID 具体通过C 语言实现的代码如下:int Position_PID (int Encoder,int Target){static float Bias,Pwm,Integral_bias,Last_Bias;Bias=Target- Encoder; //计算偏差Integral_bias+=Bias; //求出偏差的积分//PID基本公式Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);Last_Bias=Bias; //保存上一次偏差return Pwm; //输出}入口参数为编码器的位置测量值和位置控制的目标值,返回值为电机控制PWM(现在再看一下上面的控制框图是不是更加容易明白了)。

第一行是相关内部变量的定义。

第二行是求出位置偏差,由测量值减去目标值。

第三行通过累加求出偏差的积分。

第四行使用位置式PID 控制器求出电机PWM。

第五行保存上一次偏差,便于下次调用。

最后一行是返回。

二、增量式PID1.计算公式速度闭环控制就是根据单位时间获取的脉冲数(这里使用了M 法测速)测量电机的速度信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。

单片机PID算法程序精编版

单片机PID算法程序精编版

单片机P I D算法程序公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-51单片机P I D算法程序(二)位置式P I D控制算法由51单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。

51单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。

从而实现对系统的伺服控制。

位置式PID控制算法位置式PID控制算法的简化示意图上图的传递函数为:(2-1)在时域的传递函数表达式(2-2)对上式中的微分和积分进行近似(2-3)式中n是离散点的个数。

于是传递函数可以简化为:(2-4)其中u(n)——第k个采样时刻的控制;KP——比例放大系数;Ki——积分放大系数;Kd——微分放大系数;T ——采样周期。

如果采样周期足够小,则(2-4)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。

(2-4)表示的控制算法直接按(2-1)所给出的PID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法。

缺点:1)由于全量输出,所以每次输出均与过去状态有关,计算时要对e(k)(k=0,1,…n)进行累加,工作量大。

2)因为计算机输出的u(n)对应的是执行机构的实际位置,如果计算机出现故障,输出u(n)将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实际生产中是不允许的。

位置式PID控制算法C51程序具体的PID参数必须由具体对象通过实验确定。

由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。

这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。

PID控制实验报告

PID控制实验报告

实验二 数字PID 控制计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。

因此连续PID 控制算法不能直接使用,需要采用离散化方法。

在计算机PID 控制中,使用的是数字PID 控制器。

一、位置式PID 控制算法按模拟PID 控制算法,以一系列的采样时刻点kT 代表连续时间t ,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID 位置式表达式:∑∑==--++=⎪⎪⎭⎫ ⎝⎛--++=k j di p k j D I p T k e k e k T j e k k e k k e k e T T j e T T k e k k u 00)1()()()())1()(()()()( 式中,D p d I pi T k k T k k ==,,e 为误差信号(即PID 控制器的输入),u 为控制信号(即控制器的输出)。

在仿真过程中,可根据实际情况,对控制器的输出进行限幅。

二、连续系统的数字PID 控制仿真连续系统的数字PID 控制可实现D/A 及A/D 的功能,符合数字实时控制的真实情况,计算机及DSP 的实时PID 控制都属于这种情况。

1.Ex3 设被控对象为一个电机模型传递函数BsJs s G +=21)(,式中J=0.0067,B=0.1。

输入信号为)2sin(5.0t π,采用PD 控制,其中5.0,20==d p k k 。

采用ODE45方法求解连续被控对象方程。

因为Bs Js s U s Y s G +==21)()()(,所以u dt dy B dty d J =+22,另y y y y ==2,1,则⎪⎩⎪⎨⎧+-==/J)*u ((B/J)y y y y 12221 ,因此连续对象微分方程函数ex3f.m 如下 function dy = ex3f(t,y,flag,para)u=para;J=0.0067;B=0.1;dy=zeros(2,1);dy(1) = y(2);dy(2) = -(B/J)*y(2) + (1/J)*u;控制主程序ex3.mclear all;close all;ts=0.001; %采样周期xk=zeros(2,1);%被控对象经A/D转换器的输出信号y的初值e_1=0;%误差e(k-1)初值u_1=0;%控制信号u(k-1)初值for k=1:1:2000 %k为采样步数time(k) = k*ts; %time中存放着各采样时刻rin(k)=0.50*sin(1*2*pi*k*ts); %计算输入信号的采样值para=u_1; % D/AtSpan=[0 ts];[tt,xx]=ode45('ex3f',tSpan,xk,[],para); %ode45解系统微分方程%xx有两列,第一列为tt时刻对应的y,第二列为tt时刻对应的y导数xk = xx(end,:); % A/D,提取xx中最后一行的值,即当前y和y导数yout(k)=xk(1); %xk(1)即为当前系统输出采样值y(k)e(k)=rin(k)-yout(k);%计算当前误差de(k)=(e(k)-e_1)/ts; %计算u(k)中微分项输出u(k)=20.0*e(k)+0.50*de(k);%计算当前u(k)的输出%控制信号限幅if u(k)>10.0u(k)=10.0;endif u(k)<-10.0u(k)=-10.0;end%更新u(k-1)和e(k-1)u_1=u(k);e_1=e(k);endfigure(1);plot(time,rin,'r',time,yout,'b');%输入输出信号图xlabel('time(s)'),ylabel('rin,yout');figure(2);plot(time,rin-yout,'r');xlabel('time(s)'),ylabel('error');%误差图程序运行结果显示表1所示。

位置式PID控制原理

位置式PID控制原理

PID控制原理PID控制是一种在工业生产中应用最广泛的控制方联,其最大的优点是不需要了解被控对象清爾的数学模型,进斤复杂的理论廿算。

只需要在线根据祯控变量与给定值之间的嵋差以及怕差的变化率等简单参数,通11工程方法对比例系数K八稅分时同7;、徹分时同几三个参数进行坍整,就可以得到令人満意的控對效果。

PID控制算法可以分为位置型控胃算法和増量型控匍算法,本文主要置型控匍算。

1自动控制性能指标的相关樣念1.1系统的响应速度指控制系统对偏差信号做岀)5映的速度,也叫做系貌灵一般可以通ilift时间。

和峰值时间jjjH亍反应。

上升时间和间越姬,则系貌的响应速度越快。

1.2系统的调节速度系统的快速性主要由调节时间来反映,系缆的调节时间越短,则系统的快速性極好。

系统的快速性与哨应速度是两f不同的Hl念,喑应速度快的系统,其凋节时间不一定短;调节时间短的系统,其哨应速度不一定很高。

1.3系统的稳定性系统的稳定性一般用超圳量"%来反映,超说]量越小,系貌的稳定性越好;起调量強大,系统的稳定性強差。

系统的稳定性与系统的响应速度是一对? IS Ito2PID控制算法式的推导PID控制器的械分方程为:u(t) = K P[e(t) +式中:e⑴一给定值与被控变量的倫差Kp—比例系数刀一枳分时冋常数几一槪分时间常数/一从开始进行期节到输岀当前控制量所经过的时间间用"o—PID调节开始之前瞬间,执行器的输人控制信号,在调节过程中为固定IB对以上各式左右两址分别进行拉普拉祈变換可WPIDSM3的传迪函数为:U(s) _丽—比例0h u P(t) = K P e(t)枳分顶:心(r) = Kp13分顶:心(f) = K£響at对上武进行离散化可得数字武PID控制算式为:u p(n) = K p e(n)“沖)=心?亡e(j)1-0仆(n) = K P¥〔心)-e(“ -1)]式中:e(n)-当前采样时刻给定值与被控变量的偏差T-PID控制采样周期,也就是廿算Jia® e(“)和e(“一l)的时间同禍则位置式PID控翎在当前采样时刻输出至执行器的控制量计算式为:u(n) = Kp<2(”)一心一1)]汁“。

PID算法及参数

PID算法及参数

PID算法及参数整定知识1.位置表达式位置式表达式是指任一时刻PID控制器输出的调节量的表达式。

PID控制的表达式为式中的y(t)为时刻t控制器输出的控制量,式中的y(0)为被控制量没有偏差时控制器输出的控制量。

由于计算机进入了控制领域。

人们将模拟PID控制规律引入到计算机中来。

由于计算机控制是一种采样控制,它只能根据采样许可的偏差计算控制量,而不能象模拟控制那样连续输出控制量,进行连续控制。

由于这一特点,上面公式中的积分和微分项不能直接使用,必须进行离散化处理。

离散化处理的方法为:以T作为采样周期,k作为采样序号,则离散采样时间kT对应着连续时间 t,用求和的形式代替积分,用增量的形式代替微分,可作如下近似变换:上式中,为了表示方便,将类似于e(kT)简化成e k 形式就可以得到离散的PID表达式:或写成此公式即为位置式的PID表达式。

▪式中:k——采样序号,k=0,1,2,…▪y k ——第k 次采样时刻的计算机输出值▪ e k——第k 次采样时刻输入的偏差值▪e k −1——第k-1 次采样时刻输入的偏差值▪K I ——积分系数。

K I = K P*T/T I▪积分时间T I即为累积多少次/个T)▪K D——微分系数。

K D = K P*T D /T▪如果采样周期取得足够小,则以上近似计算可获得足够精确的结果,离散控制过程与连续控制过程十分接近。

2.增量式表达式利用上面的公式,可得出第k次采样、第k-1次采样时的输出调节量y k、y k-1,用y k-y k-1,即得增量式PID表达式,如下:3.PID参数的工程整定方法参数整定的方法很多,我们只介绍几种工程上最常用的方法。

最实用的是试凑法。

1)临界比例度法这是目前使用较广的一种方法,具体作法如下:先在纯比例作用下(把积分时间放到最大,微分时间放到零),在闭合的调节系统中,从大到小地逐渐地改变调节器的比例度,就会得到一个临界振荡过程,如图8所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)由于全量输出,所以每次输出均与过去状态有关,计算时要对
e(k)(k=0,1,…n)进行累加,工作量大。
2)因为计算机输出的u(n)对应的是来自行机构的实际位置,如果计算机出现
故障,输出u(n)将大幅度变化,会引起执行机构的大幅度变化,有可能 因此造成严重的生产事故,这在实际生产中是不允许的。
位置式PID控制算法程序
n(h)=K严(“)+K送e(fc)+Kde(n一1))
(2-4)
其中
KT
KT.
—亠
u(n)第k个采样时刻的控制;
Kp比例放大系数;K积分放大系数;Kd――微分放大系数;T――采样周期。
如果采样周期足够小,则(2-4)的近似计算可以获得足够精确的结果,离 散控制过程与连续过程十分接近。
(2-4)表示的控制算法直接按(2-1)所给出的PID控制规律定义进行计算 的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法 缺点:
Mai n Program主程序
double sen sor (void)// Dummy Sen sor Fun cti on
{
}
void actuator(double rDelta) // Dummy Actuator Function {
}
void ma in (void)
{
PID sPID; // PID Control Structure
PID计算部分
================================*/
double PIDCalc( PID *pp, double NextPoi nt )
{
double dError, Error;
Error = pp->SetPoi nt-NextPoi nt;//偏差
pp->SumError += Error;
//积分常数Integral Const
//微分常数Derivative Const
// Error[-1]
double PrevError;
double SumError;
} PID;
// Error[-2]
// Sums of Errors
/*===================================================================
具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和
ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,可大大提 高运算速度。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处 理部分。
/*===================================================================
double rOut; // PID Respo nse (Output)
double rIn; // PID Feedback (I nput)
PIDInit ( &sPID );// Initialize Structure
//积分项
+pp->Derivative * dError//
);
微分项
}
/*:
In itialize PID Structure PID
参数初始化
void PIDI nit (PID *pp)
{
memset ( pp,0,sizeof(PID));
}
/*===================================================================
typedef struct PID {
double SetPoi nt; double Proporti on; double In tegral;
double Derivative; double LastError;
//设定目标Desired value
//比例常数Proportional Const
//
积分
dError = Error-pp->LastError;
//当前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proporti on * Error
//比例项
+pp->ln tegral * pp->SumError
相关文档
最新文档