文档库 最新最全的文档下载
当前位置:文档库 › 也谈C51实现PID算法

也谈C51实现PID算法

也谈C51实现PID算法
也谈C51实现PID算法

也谈C51实现PID算法

手心发表于 2006-12-18 20:21:00

推荐

关于PID的算法实现,很多书上都讲了。

但是,最近真正要用PID算法的时候,发现书上的代码在我们51上来实现还不是那么容易的事情。简单的说来,就是不能直接调用。仔细分析你可以发现,教材上的、网上现行的PID实现的C语言代码几乎都是用浮点型的数据来做的,可以想象,如果我们的计算使用浮点数据,那我们的51单片机来运行的话会有多痛苦。

所以,本人自己琢磨着弄了一个整型变量来实现了PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了。关于系数和采样电压全部是放大10倍处理的。所以精度不是很高,但是也不是那么低,大部分的场合都够用了。实在觉得精度不够,可以再放大10倍或者1 00倍处理,但是要注意不超出整个数据类型的范围就可以了。

本人做的是带死区控制的PID算法。

具体的参考代码参见下面:

typedef struct PIDValue

{

uint32 Ek_Uint32[3]; //差值保存,给定和反馈的差值

uint8 EkFlag_Uint8[3]; //符号,1则对应的Ek[i]为负数,0为对应的Ek[i]为正数

uint8 KP_Uint8;

uint8 KI_Uint8;

uint8 KD_Uint8;

uint8 B_Uint8; //死区电压

uint8 KP; //显示修改的时候用

uint8 KI; //

uint8 KD; //

uint8 B; //

uint16 Uk_Uint16; //上一时刻的控制电压

}PIDValueStr;

PIDValueStr xdata PID;

/*******************************

**PID = Uk + (KP*E(k) - KI*E(k-1) + KD*E(k-2));

********************************/

void PIDProcess(void)

{

uint32 idata Temp[3]; //

uint32 idata PostSum; //正数和

uint32 idata NegSum; //负数和

Temp[0] = 0;

Temp[1] = 0;

Temp[2] = 0;

PostSum = 0;

NegSum = 0;

if( ADPool.Value_Uint16[UINADCH] > ADPool.Value_Uint1 6[UFADCH] ) //给定大于反馈,则EK为正数

{

Temp[0] = ADPool.Value_Uint16[UINADCH] - ADPool.V alue_Uint16[UFADCH]; //计算Ek[0]

if( Temp[0] > PID.B_Uint8 )

{

//数值移位

PID.Ek_Uint32[2] = PID.Ek_Uint32[1];

PID.Ek_Uint32[1] = PID.Ek_Uint32[0];

PID.Ek_Uint32[0] = Temp[0];

//符号移位

PID.EkFlag_Uint8[2] = PID.EkFlag_Uint8[1];

PID.EkFlag_Uint8[1] = PID.EkFlag_Uint8[0];

PID.EkFlag_Uint8[0] = 0; //当前EK为正数

Temp[0] = (uint32)PID.KP_Uint8 * PID.Ek_Ui nt32[0]; // KP*EK0

Temp[1] = (uint32)PID.KI_Uint8 * PID.Ek_Ui nt32[1]; // KI*EK1

Temp[2] = (uint32)PID.KD_Uint8 * PID.Ek_Ui nt32[2]; // KD*EK2

}

}

else //反馈大于给定

{

Temp[0] = ADPool.Value_Uint16[UFADCH] - ADPool.Va lue_Uint16[UINADCH]; //计算Ek[0]

if( Temp[0] > PID.B_Uint8 )

{

//数值移位

PID.Ek_Uint32[2] = PID.Ek_Uint32[1];

PID.Ek_Uint32[1] = PID.Ek_Uint32[0];

PID.Ek_Uint32[0] = Temp[0];

//符号移位

PID.EkFlag_Uint8[2] = PID.EkFlag_Uint8[1];

PID.EkFlag_Uint8[1] = PID.EkFlag_Uint8[0];

PID.EkFlag_Uint8[0] = 1; //当前EK为负数

Temp[0] = (uint32)PID.KP_Uint8 * PID.Ek_Ui nt32[0]; // KP*EK0

Temp[1] = (uint32)PID.KI_Uint8 * PID.Ek_Ui nt32[1]; // KI*EK1

Temp[2] = (uint32)PID.KD_Uint8 * PID.Ek_Ui nt32[2]; // KD*EK2

}

}

/*以下部分代码是讲所有的正数项叠加,负数项叠加*/

if(PID.EkFlag_Uint8[0]==0)

{

PostSum += Temp[0]; //正数和

}

else

{

NegSum += Temp[0]; //负数和

} // KP*EK0

if(PID.EkFlag_Uint8[1]!=0)

{

PostSum += Temp[1]; //正数和

}

else

{

NegSum += Temp[1]; //负数和

} // - kI * EK1

if(PID.EkFlag_Uint8[2]==0)

{

PostSum += Temp[2]; //正数和

}

else

{

NegSum += Temp[2]; //负数和

} // KD * EK2

PostSum += (uint32)https://www.wendangku.net/doc/3616140110.html,_Uint16; //

if( PostSum > NegSum ) // 是否控制量为正数

{

Temp[0] = PostSum - NegSum;

if( Temp[0] < (uint32)ADPool.Value_Uint16[UMAX ADCH] ) //小于限幅值则为计算值输出

{

https://www.wendangku.net/doc/3616140110.html,_Uint16 = (uint16)Temp[0];

}

else

{

https://www.wendangku.net/doc/3616140110.html,_Uint16 = ADPool.Value_Uint16[UMAXAD CH]; //否则为限幅值输出

}

}

else //控制量输出为负数,则输出0

{

https://www.wendangku.net/doc/3616140110.html,_Uint16 = 0;

}

}

(完整版)数字PID及其算法

数字PID 及其算法 主要内容:1、PID 算法的原理及数字实现 2、数字PID 调节中的几个实际问题 3、几种发展的PID 算法 4、PID 参数的整定方法 一、概述 几个概念: 1、程序控制:使被控量按照预先规定的时间函数变化所作 的控制,被控量是时间的函数。 2、顺序控制:是指控制系统根据预先规定的控制要求,按 照各个输入信号的条件,使过程的各个执行机构自动地按预 先规定的顺序动作。 3、PID 控制:调节器的输出是输入的比例、积分、微分的 函数。 4、直接数字控制:根据采样定理,先把被控对象的数学模 型离散化,然后由计算机根据数学模型进行控制。 5、最优控制:是一种使控制过程处在某种最优状态的控制。 6、模糊控制:由于被控对象的不确定性,可采用模糊控制。 二、PID 算法的原理及数字实现 PID 调节的实质:根据系统输入的偏差,按照PID 的函数 关系进行运算,其结果用以控制输出。 PID 调节的特点:PID 的函数中各项的物理意义清晰,调节灵活,便于程序化实现。 三、 PID 算法的原理及数字实现 PID 调节器是一种线性调节器,他将设定值w 与实际值y 的偏差: 按其比例、积分、微分通过线性组合构成控制量 1、比例调节器:比例调节器的微分方程为:)(*y t e Kp = y 为调节器输出,Kp 为比例系数,e(t)为调节器输入偏差。由上式可以看出比例调节的特点:调节器的输出与输入偏差成正比。只要偏差出现,就能及时地产生与之成比例的调节作用,使被控量朝着减小偏差的方向变化,具有调节及时 的特点。但是,Kp 过大会导致动态品质变坏,甚至使系统不稳定。比例调节器的阶跃响应特性曲线如下图 y w e -=s d *K s Ki p K 对象 w e + - + + + u y

数字PID控制算法

第三章、计算机测控系统设计与实现 一、参考书目: 书名:《计算机控制系统》 章节:第六章 页号:P140-156 二、主要学习内容: 1.数字PID 控制算法 PID 控制规律的基本输入/输出关系可用微分方程表示: ()()()??????++=?dt t de T dt t e T t e K Y D I P 1 在模拟调节系统中,PID 控制算法的模拟表达式为: ()()()()??????++=?dt t de T dt t e T t e K t Y D I P 1 2.对标准PID 算法的改进 1、微分项的改进 不完全微分型PID 算法传递函数 ????? ? ??++???? ??+=1111)(S K T S T S T K S G D D D I P C

2、积分项的改进 抗积分饱和 积分作用虽能消除控制系统的静差,但它也有一个副作用,即会引起积分饱和。在偏差始终存在的情况下,造成积分过量。当偏差方向改变后,需经过一段时间后,输出u(n)才脱离饱和区。这样就造成调节滞后,使系统出现明显的超调,恶化调节品质。这种由积分项引起的过积分作用称为积分饱和现象。 克服积分饱和的方法: 1、积分限幅法 积分限幅法的基本思想是当积分项输出达到输出限幅值时,即停止积分项的计算,这时积分项的输出取上一时刻的积分值。其算法流程如图3-2-4所示。 2、积分分离法 积分分离法的基本思想是在偏差大时不进行积分,仅当偏差的绝对值小于一预定的门限值ε时才进行积分累积。这样既防止了偏差大时有过大的控制量,也避免了过积分现象。其算法流程如图3-2-5。 三、知识点: 1、为什么要用PID调节器 1、经典控制方法,可靠成熟。 2、相比两位式控制,控制精度大大提高。 3、算法成熟,资源丰富。 2、数字PID控制算法的比例、积分、微分的作用特点和不足 PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写。PID调节实际上是由比例、积分、微分三种调节方式组成,它们各自的作用如下: 比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。 积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取

51单片机PID算法程序

51单片机PID算法程序(二)位置式PID控制算法 由51单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。51单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。从而实现对系统的伺服控制。 位置式PID控制算法 位置式PID控制算法的简化示意图 上图的传递函数为: (2-1) 在时域的传递函数表达式 (2-2)

对上式中的微分和积分进行近似 (2-3)式中n是离散点的个数。 于是传递函数可以简化为: (2-4)其中 u(n)——第k个采样时刻的控制; K P ——比例放大系数; K i ——积分放大系数; K d ——微分放大系数; 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次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位

51单片机PID的算法实现程序

51单片机PID的算法实现程序 用整型变量来实现PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了,关于系数和采样电压全部是放大10倍处理的.所以精度不是很高. 但是也不是那么低,大部分的场合都够了. 实在觉得精度不够, 可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分.当偏差>10度全速加热,偏差在10度以内为PID计算输出. 具体的参考代码参见下面:*/ //================================================================ // pid.H // Operation about PID algorithm procedure // C51编译器Keil 7.08 //================================================================ // 作者:zhoufeng // Date :2007-08-06 // All rights reserved. //================================================================ #include #include typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long int uint32; /**********函数声明************/ void PIDOutput (); void PIDOperation (); /*****************************/ typedef struct PIDValue { uint32 Ek_Uint32[3]; //差值保存,给定和反馈的差值 uint8 EkFlag_Uint8[3]; //符号,1则对应的为负数,0为对应的为正数uint8 KP_Uint8; uint8 KI_Uint8; uint8 KD_Uint8; uint16 Uk_Uint16; //上一时刻的控制电压 uint16 RK_Uint16; //设定值 uint16 CK_Uint16; //实际值 }PIDValueStr; PIDValueStr PID; uint8 out ; // 加热输出 uint8 count; // 输出时间单位计数器 /********************************* PID = Uk + KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)-2E(k-1)+E(k-2)];(增量型PID算式) 函数入口: RK(设定值),CK(实际值),KP,KI,KD 函数出口: U(K) //PID运算函数

数字PID的补偿算法的设计..

数字PID调节器纯滞后的补偿算法设计 摘要 对于无滞后或滞后比较小的系统,通常采用PID控制。对于纯滞后系统,PID控制效果并不好,需要另加补偿,因此提出了Smith预估补偿控制系统。而 Smith 预估算法则在模型匹配时具有好的性能指标 ,但是由于这种算法严重依赖模型的精确匹配 ,而在实际中这是很难做到的。 本文研究的重点是设计与实现纯滞后系统的控制过程的控制规律和控制算法,并比较传统的数字PID控制算法与加入Smith预估器的控制算法的不同。具体讨论了纯滞后系统的Smith预估器的实现方法,着重对这种控制算法进行了较深入的讨论,而且还通过仿真对设计和改进的结果进行了分析。仿真实验中,若采用PID控制算法,系统会出现较大的超调量,采用史密斯预估器补偿控制超调量大大较少,系统更加稳定。 关键字:Matlab;纯滞后;数字PID;Smith 预估控制器;Simulink

Abstract For the system with no or less delay, usually adopts PID control. For pure delay system, PID control effect is not good, need additional compensation, so the proposed Smith predictor control system. But Smith pre estimation algorithm has good performance index in the model matching, but because an exact match this algorithm heavily depends on the model, but in fact it is very difficult to do. This paper is focused on the control and implementation of rules and the control algorithm to control the process of pure lag system design, and compare the traditional digital PID control algorithm with the addition of Smith predictive control algorithm for different. Discussed the specific time delay system Smith prediction method is, focuses on the control algorithm are discussed in depth, but also analyzed through simulation design and improvement of the results. The simulation experiment, if the PID control algorithm, the system will have a large overshoot, Smith predictor is used to compensate control overshoot is greatly reduced, the system more stable. Keywords: Matlab; delay; digital PID; Smith controller; Simulink

(完整版)基于单片机的PID温度控制毕业设计

以下文档格式全部为word格式,下载后您可以任意修改编辑。 前言 温度是表征物体冷热程度的物理量。在很多生产过程中,特别是在冶金、化工、建材、食品、机械、石油等工业中,温度的测量和控制都直接和安全生产、提高生产效率、保证产品质量、节约能源等重大技术经济指标相联系。因此,温度的测量与控制在国民经济各个领域中均受到了相当程度的重视。 单片机系统的开发应用给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。将单片机控制方法运用到温度控制系统中,可以克服温度控制系统中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和控制精度。现代自动控制越来越朝着智能化发展,在很多自动控制系统中都用到了工控机,小型机、甚至是巨型机处理机等,当然这些处理机有一个很大的特点,那就是很高的运行速度,很大的内存,大量的数据存储器。但随之而来的是巨额的成本。在很多的小型系统中,处理机的成本占了系统成本的比例高达20%,而对于这些小型的系统来说,配置一个如此高速的处理机没有任何必要,因为这些小系统追求经济效益,而不是最在乎系统的快速性,所以用成本低廉的单片机控制小型的,而又不是很复杂,不需要大量复杂运算的系统中是非常适合的。 随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。现在完

全可以运用单片机和电子温度传感器对某处进行温度检测,而且可以很容易地做到多点的温度检测,如果对此原理图稍加改进,还可以进行不同地点的实时温度检测和控制。

1绪论 1.1研究的目的和意义 温度是工业生产中主要被控参数之一,温度控制自然是生产的重要控制过程。工业生产中温度很难控制,对于要求严格的的场合,温度过高或过低将严重影响工业生产的产质量及生产效率,降低生产效益。这就需要设计一个良好温度控制器,随时向用户显示温度,而且能够较好控制。单片机具有和普通计算机类似的强大数据处理能力,结合PID,程序控制可大大提高控制效力,提高生产效益[9]。 例如钢铁生产过程中,按照工艺条件的规定保持一定的温度才能保证产品质量和设备的安全。对电气设备进行温度的监控,例如高压开关、变压器的出线套管等,判断可能存在的热缺陷,进而能及时发现、处理、预防重大事故的发生。因此研究温度控制仪具有重要的意义[10]。 在单片机温度测量系统中的关键是测量温度、控制温度和保持温度,温度测量是工业对象中主要的被控参数之一。因此,单片机温度测量则是对温度进行有效的测量,并且能够在工业生产中得到了广泛的应用,尤其在电力工程、化工生产、机械制造、冶金工业等重要工业领域中,担负着重要的测量任务。在日常生活中,也可广泛实用于地热、空调器、电加热器等各种家庭室温测量及工业设备温度测量场合[16]。 目前市场上热水器的控制系统大多存在功能单一、操作复杂、控制不方便等问题,很多控制器只具有温度和水位显示功能,不具有温度控制功能.即使热水器具有辅助加热功能。也可能由于加热时间不能控制而产生过烧,从而浪费电能。本文设计的热水器控制系统以51单片机为检测控制中心单元,具有温度设定与控制功能。该控制器和以往显示仪相比具有性

数字PID控制算法

计算机测控系统 读书笔记 《数字PID控制算法》 2017年10月

一、参考文献 《计算机测控系统设计与应用》李正军机械工业出版社 百度文库 二、知识目录 1、主要内容: 数字PID控制算法 对标准PID算法的改进 PID调节器的参数选择 2、重点内容: 为什么要用PID调节器 数字PID控制算法的比例、积分、微分的作用特点和不足 PID控制算法数字化前提条件 两种算法表达式及相互比较 对标准PID算法的改进——“饱和”作用的抑制 采样周期的选择依据 三、主要内容学习 1、数字PID控制算法 P(比例)I(积分)D(微分) 位置式PID算法 由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,因此式子

中的计分和微分项不能直接准确计算,只能用数值计算的方法逼近。在采样时刻t=iT(T为采样周器),模拟PID调节规律可通过下数值公式近似计算 上式的控制算法提供了执行机构的位置U i(如阀门开度),所以称之为位置式PID控制算法。 增量式PID算法 相减就可以导出下面的公式 上式称为增量式PID控制算法。也可以将其进行进一步改写。 其中 图1给出了位置式与增量式PID算法的结构比较。 图1 位置式与增量式PID控制算法的简化示意图 (a)位置式(b)增量式

增量式PID算法与位置式相比,存在下列优点: ①位置式算法每次输出与整个过去状态有关,计算式中要用到过去偏差的累加值,容易产生较大的累计误差。而增量式只需计算增量,当存在计算误差或精度不足时,对控制量计算的影响较小。 ②控制从手动切换到自动时,必须首先将计算机的输出值设置为原始阀门开度u0,才能保证无冲击切换。如果采用增量算法,则由于算式中不出现u0项,易于实现手动到自动的无冲击切换。此外,在计算机发生故障时,由于执行装置本身有寄存作用,故可仍然保持在原位。 因此,在实际控制中,增量式算法要比位置式算法应用更为广泛。图2给出了增量式PID控制算法子程序的流程。在初始化时,应在内存固定单元置入调节参数d0,d1,d2和设定值w,并设置误差初值ei=ei-1=ei-2=0。

51单片机PID算法程序(二)位置式PID控制算法

由51单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。51单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。从而实现对系统的伺服控制。 位置式PID控制算法 位置式PID控制算法的简化示意图 上图的传递函数为: (2-1) 在时域的传递函数表达式 (2-2)对上式中的微分和积分进行近似 (2-3)式中n是离散点的个数。

于是传递函数可以简化为: (2-4)其中 u(n)——第k个采样时刻的控制; ——比例放大系数; K P ——积分放大系数; K i ——微分放大系数; K d 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算法的基本架构,没有包含输入输出处理部分。 ===================================================================== ================================*/ #include #include //C语言中memset函数头文件

PID控制算法控制算法

第五章 PID控制算法控制算法 5.1 PID控制原理与程序流程 5.1.1过程控制的基本概念 过程控制――对生产过程的某一或某些物理参数进行的自动控制。 一、模拟控制系统 图5-1-1 基本模拟反馈控制回路 被控量的值由传感器或变送器来检测,这个值与给定值进行比较,得到偏差,模拟调节器依一定控制规律使操作变量变化,以使偏差趋近于零,其输出通过执行器作用于过程。 控制规律用对应的模拟硬件来实现,控制规律的修改需要更换模拟硬件。 二、微机过程控制系统 图5-1-2 微机过程控制系统基本框图 以微型计算机作为控制器。控制规律的实现,是通过软件来完成的。改变控制规律,只要改变相应的程序即可。 三、数字控制系统DDC 图5-1-3 DDC系统构成框图 DDC(Direct Digital Congtrol)系统是计算机用于过程控制的最典型的一种系统。微型计算机通过过程输入通道对一个或多个物理量进行检测,并根据确定的控制规律(算法)进行计算,通过输出通道直接去控制执行机构,使各被控量达到预定的要求。由于计算机的决策直接作用于过程,故称为直接数字控制。 DDC系统也是计算机在工业应用中最普遍的一种形式。

5.1.2 模拟PID 调节器 一、模拟PID 控制系统组成 图5-1-4 模拟PID 控制系统原理框图 二、模拟PID 调节器的微分方程和传输函数 PID 调节器是一种线性调节器,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制。 1、PID 调节器的微分方程 ?????? ++=?t D I P dt t de T dt t e T t e K t u 0)()(1)()( 式中 )()()(t c t r t e -= 2、PID 调节器的传输函数 ?? ????++==S T S T K S E S U S D D I P 11)()()( 三、PID 调节器各校正环节的作用 1、比例环节:即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器 立即产生控制作用以减小偏差。 2、积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分 时间常数TI ,TI 越大,积分作用越弱,反之则越强。 3、微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太 大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。 5.1.3 数字PID 控制器 一、模拟PID 控制规律的离散化 二、数字PID 控制器的差分方程

基于单片机的pid算法温度控制技术代码

//PID算法温控C语言2008-08-17 18:58 #include #include #include #include struct PID { unsigned int SetPoint; // 设定目标Desired Value unsigned int Proportion; // 比例常数Proportional Const unsigned int Integral; // 积分常数Integral Const unsigned int Derivative; // 微分常数Derivative Const unsigned int LastError; // Error[-1] unsigned int PrevError; // Error[-2] unsigned int SumError; // Sums of Errors }; struct PID spid; // PID Control Structure unsigned int rout; // PID Response (Output) unsigned int rin; // PID Feedback (Input) sbit data1=P1^0; sbit clk=P1^1; sbit plus=P2^0; sbit subs=P2^1; sbit stop=P2^2; sbit output=P3^4; sbit DQ=P3^3; unsigned char flag,flag_1=0; unsigned char high_time,low_time,count=0;//占空比调节参数unsigned char set_temper=35; unsigned char temper; unsigned char i; unsigned char j=0; unsigned int s; /*********************************************************** 延时子程序,延时时间以12M晶振为准,延时时间为30us×time ***********************************************************/ void delay(unsigned char time) { unsigned char m,n; for(n=0;n

51单片机PID算法程序(三)增量式PID控制算法要点

51单片机PID算法程序(一)PID算法 (原创文章,转载请注明出处https://www.wendangku.net/doc/3616140110.html,/tengjingshu) 比例,积分,微分的线性组合,构成控制量u(t),称为:比例(Proportional)、积分(Integrating)、微分(Differentiation)控制,简称PID控制 图1 控制器公式 在实际应用中,可以根据受控对象的特性和控制的性能要求,灵活地采用不同的控制组合,构成 比例(P)控制器 比例+积分(PI)控制器

比例+积分+微分(PID)控制器 式中 或 式中 控制系统中的应用 在单回路控制系统中,由于扰动作用使被控参数偏离给定值,从而产生偏差。自动控制系统的调节单元将来自变送器的测量值与给定值相比较后产生的偏差进行比例、积分、微分(PID)运算,并输出统一标准信号,去控制执行机构的动作,以实现对温度、压力、流量、也为及其他工艺参数的自动控制。 比例作用P只与偏差成正比;积分作用I是偏差对时间的积累;微分作用D 是偏差的变化率; 比例(P)控制 比例控制能迅速反应误差,从而减少稳态误差。除了系统控制输入为0和系统过程值等于期望值这两种情况,比例控制都能给出稳态误差。当期望值有一个变化时,系统过程值将产生一个稳态误差。但是,比例控制不能消除稳态误差。比例放大系数的加大,会引起系统的不稳定。

图2比例(P)控制阶跃响应 积分(I)控制 在积分控制中,控制器的输出与输入误差信号的积分成正比关系。 为了减小稳态误差,在控制器中加入积分项,积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即使误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减少,直到等于零。 积分(I)和比例(P)通常一起使用,称为比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。如果单独用积分(I)的话,由于积分输出随时间积累而逐渐增大,故调节动作缓慢,这样会造成调节不及时,使系统稳定裕度下降。

基于单片机的pid控制器设计论文毕设论文

中国矿业大学徐海学院本科生毕业论文 学院:徐海学院 专业:自动化 论文题目:基于单片机的PID控制器设计

中国矿业大学徐海学院毕业论文任务书 任务下达日期:2011年12月14日 毕业论文日期: 2011年12月20日至2012年6月5日 毕业论文题目:基于单片机的PID控制器设计 毕业论文专题题目: 毕业论文主要内容和要求: 1、基于单片机的PID控制器整体方案设计 2、硬件电路设计,包括电源、显示、按键、A/D、D/A转换等外围电 路设计 3、软件设计,包括参数设置程序、显示程序、按键程序、PID算法 程序等 4、应用PROTEUS、Keil C51软件进行设计及仿真 指导教师签字:

郑重声明 本人所呈交的毕业论文,是在导师的指导下,独立进行研究所取得的成果。所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本毕业论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本论文属于原创。本毕业论文的知识产权归属于培养单位。 本人签名:日期:

指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点; ⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等): 成绩:指导教师签字: 年月日

评阅教师评语(①选题的意义;②基础理论及基本技能的掌握;③综合运用所学知识解决实际问题的能力;④工作量的大小;⑤取得的主要成果及创新点;⑥写作的规范程度;⑦总体评价及建议成绩;⑧存在问题;⑨是否同意答辩等): 成绩:评阅教师签字: 年月日

基于单片机的pid控制程序

Jesse Rei 的51 温度PID经典算法 #include #include #include #include struct PID { unsigned int SetPoint; // 设定目标Desired V alue unsigned int Proportion; // 比例常数Proportional Const unsigned int Integral; // 积分常数Integral Const unsigned int Derivative; // 微分常数Derivative Const unsigned int LastError; // Error[-1] unsigned int PrevError; // Error[-2] unsigned int SumError; // Sums of Errors }; struct PID spid; // PID Control Structure unsigned int rout; // PID Response (Output) unsigned int rin; // PID Feedback (Input) sbit data1=P1^0; sbit clk=P1^1; sbit plus=P2^0; sbit subs=P2^1; sbit stop=P2^2; sbit output=P3^4; sbit DQ=P3^3; unsigned char flag,flag_1=0; unsigned char high_time,low_time,count=0;//占空比调节参数 unsigned char set_temper=35; unsigned char temper; unsigned char i; unsigned char j=0; unsigned int s; void delay(unsigned char time) { unsigned char m,n; for(n=0;n>i; temp=temp&1; write_bit(temp); } delay(7); // TR0=1; EA=1; } unsigned char read_bit() { unsigned char i,value_bit; EA=0; DQ=0; _nop_(); _nop_(); DQ=1; for(i=0;i<2;i++){} value_bit=DQ; EA=1;

PID控制原理与控制算法

PID控制原理与控制算法 5.1 PID控制原理与程序流程 5.1.1过程控制的基本概念 过程控制――对生产过程的某一或某些物理参数进行的自动控制。 一、模拟控制系统 图5-1-1 基本模拟反馈控制回路 被控量的值由传感器或变送器来检测,这个值与给定值进行比较,得到偏差,模拟调节器依一定控制规律使操作变量变化,以使偏差趋近于零,其输出通过执行器作用于过程。 控制规律用对应的模拟硬件来实现,控制规律的修改需要更换模拟硬件。 二、微机过程控制系统 图5-1-2微机过程控制系统基本框图 以微型计算机作为控制器。控制规律的实现,是通过软件来完成的。改变控制规律,只要改变相应的程序即可。 三、数字控制系统DDC 图5-1-3DDC系统构成框图 DDC(Direct Digital Congtrol)系统是计算机用于过程控制的最典型的一种系统。微型计算机通过过程输入通道对一个或多个物理量进行检测,并根据确定的控制规律(算法)进行计算,通过输出通道直接去控制执行机构,使各被控量达到预定的要求。由于计算机的决策直接作用于过程,故称为直接数字控制。 DDC系统也是计算机在工业应用中最普遍的一种形式。

5.1.2 模拟PID 调节器 一、模拟PID 控制系统组成 图5-1-4 模拟PID 控制系统原理框图 二、模拟PID 调节器的微分方程和传输函数 PID 调节器是一种线性调节器,它将给定值r(t)与实际输出值c (t )的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制。 1、PID 调节器的微分方程 ?? ? ?? ?++ =? t D I P dt t de T dt t e T t e K t u 0 )()(1)()( 式中 )()()(t c t r t e -= 2、PID 调节器的传输函数 ?? ????++==S T S T K S E S U S D D I P 1 1)()()( 三、P ID调节器各校正环节的作用 1、比例环节:即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节 器立即产生控制作用以减小偏差。 2、积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分 时间常数T I,TI 越大,积分作用越弱,反之则越强。 3、微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大 之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。 5.1.3 数字P ID 控制器 一、模拟PID 控制规律的离散化 模拟形式 离散化形式 )()()(t c t r t e -= )()()(n c n r n e -= dT t de ) ( T n e n e ) 1()(-- ?t dt t e 0 )( ∑∑===n i n i i e T T i e 0 )()( 二、数字PID 控制器的差分方程

电机伺服控制和PID算法简介

电机伺服控制和PID 算法简介 1 电机伺服控制技术简介 所谓伺服控制,通常也就是指闭环控制,即通过反馈环节,测量被控制对象的变化,用以修正电机输出的控制技术。 对于要求不高的应用,通常采用简单的开环控制。例如,给直流有刷电机的两根引线通电,电机就会旋转;施加的电压越高,电机转速越高,力量越大。但是在很多需要精密控制的场合,仅仅这种方式还是不够的,还需要依靠一定的反馈装置,将电机的转速或位置信息反馈给微控制器或其他的机械装置,通过一定的算法变成可以调节电机控制信号的输出,从而使电机的实际转速、位置等参数与我们所希望的一致。机器人控制是一个精度要求比较高的领域,例如,基于以下的一些考虑,机器人平台需要使用闭环控制。 a) 开环控制情况下,移动机器人在爬坡时,电机速度会下降。更糟糕的是,当双轴独立驱动的移动机器人以一定的角度接近斜坡时。每一个车轮转速的下降值将会不同,结果是机器人的实际运动轨迹是沿着一条曲线而不是直线行进。 路线。 速差。 一一定的计算方法(如PID 算法)调整相应的电压供给,如此反复,直到达到给定转速。 b) 不平坦的地面会造成移动机器人的两个车轮转速之间的差异。如果转速较低的车轮的驱动电机没有得到相应的电压补给,移动机器人将偏移既定的c) 由于安装工艺、负载不完全均衡等原因,即使是完全匹配的两个电机,并在相同的输入电压条件下,他们的速度有时仍会产生不同,即转d) 如果采用的是PWM 控制,即使在PWM 信号占空比不变的条件下,随着电池电压的逐渐下降,电机供给电压也会随之降低,从而导致电机的转速与给定值不完全致。 综合以上的一些考虑,必须选择闭环控制的方式,其工作流程如下图所示:闭环系统中加上了反馈环节(通常机器人的驱动电机使用的是增量式光学编码器)。在闭环控制系统中,速度指令值通过微控制器变换到功放驱动电路,功放驱动电路再为电机提供能量。光学编码器用于测量车轮速度的实际值并将其回馈给微控制器。基于实际转速与给定转速的差值,即“偏差” ,驱动器按照 闭环控制模型示意图

数字PID控制算法的研究

北华航天工业学院 题目:数字PID控制算法的研究 学生姓名:王鋆鑫 专业:测控技术与仪器 班级: B13241 指导教师:李晓颖 完成日期: 2016/6/03

实验四 数字PID 控制算法的研究 一.实验目的 1.学习并掌握常规数字PID 及积分分离PID 控制算法的原理和应用。 2.学习并掌握数字PID 控制算法参数整定方法。 3.学习并掌握数字控制器的混合仿真实验研究方法。 二.实验内容 1.利用实验设备,设计并构成用于混合仿真实验的计算机闭环控制系统。 2.采用常规数字PID 控制,并用扩充响应曲线法整定控制器的参数。 3.采用积分分离PID 控制,并整定控制器的参数。 三.实验步骤 1.设计并连接模拟二阶被控对象的电路,并利用C8051F060构成的数据采集系统完成计算机控制系统的模拟量输入、输出通道的设计和连接。利用上位机的虚拟仪器功能对此模拟二阶被控对象的电路进行测试,根据测试结果调整电路参数,使它满足实验要求。 2.在上位机完成常规数字PID 控制器的计算与实验结果显示、记录,并用扩充响应曲线法整定PID 控制器的参数,在整定过程中注意观察参数变化对系统动态性能的影响。 3.在上位机完成积分分离PID 控制器的计算与实验结果显示、记录,改变积分分离值,观察该参数变化对系统动态性能的影响。 4.对实验结果进行分析,并完成实验报告。 四.附录 1 构成 递函数为 5()(1)G s s = +它可以用图的方框图如图

1 (){()()[()(1)]}d p i i u k K e k e i e k e k T T ==+ + --∑ 简记为 1 ()()()[() (1)] k i u k P e k I e i D e k e k ==++--∑ 这里P 、I 、D 参数分别为 p P K =, p i T I K T =, d p T D K T = 采用增量式形式有: ()(1)[()(1)]()[()2(1)(2)]u k u k P e k e k Ie k D e k e k e k =-+--++--+- 3.积分 分离PID 控制算法 设积分分离值为EI ,则积分分离PID 控制算法可表达为下式: ()()() |()|()()() |()|p I D p D u k u k u k e k EI u k u k u k e k EI ++?? 其中 ()()P u k Pe k = ()(1)()I I u k u k Ie k =-+ ()[()(1)]D u k D e k e k =-- 4.数字PID 控制器的参数整定 (1)按扩充阶跃响应曲线法整定PID 参数 在模拟控制系统中,参数整定方法较多,常用的实验整定方法有:临界比例度法、阶跃响应曲线法、试凑法等。数字控制时也可采用类似方法,如扩充的临界比例度法、扩充的阶跃响应曲线法与试凑法等等。下面简要介绍扩充阶跃响应曲线法。 扩充阶跃响应曲线法只适用于含多惯性环节的自平衡系统。用扩充响应曲线法整定PID 参数的步骤如下: (a )数字控制器不接入控制系统,让系统处于开环工作状态下,将被调量调节到给定值附近,并使之稳定下来。

51单片机PID算法程序_三_增量式PID控制算法

51单片机PID算法程序(三)增量式PID控制算法 当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID 的“增量算法”。 增量式PID控制算法可以通过(2-4)式推导出。由(2-4)可以得到控制器的第k-1个采样时刻的输出值为: (2-5) 将(2-4)与(2-5)相减并整理,就可以得到增量式PID控制算法公式为: (2-6) 其中 由(2-6)可以看出,如果计算机控制系统采用恒定的采样周期T,一旦确定A、B、C,只要使用前后三次测量的偏差值,就可以由(2-6)求出控制量。 增量式PID控制算法与位置式PID算法(2-4)相比,计算量小得多,因此在实际中得到广泛的应用。 位置式PID控制算法也可以通过增量式控制算法推出递推计算公式: (2-7) (2-7)就是目前在计算机控制中广泛应用的数字递推PID控制算法。 增量式PID控制算法C51程序 /*==================== ===================================================== PID Function The PID (比例、积分、微分) function is used in mainly control applications. PIDCalc performs one iteration of the PID algorithm. While the PID function works, main is just a dummy program showing a typical usage. ==========================================================================*/ typedef struct PID { int SetPoint; //设定目标 Desired Value long SumError; //误差累计

相关文档