增量式PID的程序设计
增量式PID的整型算法
对于PID控制的程序算法,很多书上都讲了。但是,最近真正要用PID算法的时候,发现书上的代码在我们51单片机上来实现还不是那么容易的事情。简单的说来,就是不能直接调用。仔细分析你可以发现,教材上的、网上现行的PID实现的C语言代码几乎都是用浮点型的数据来做的,可以想象,如果我们的计算使用浮点数据,那我们的51单片机来运行的话会有多痛苦。所以,本人自己琢磨着弄了一个整型变量来实现了PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了。关于系数和采样电压全部是放大10倍处理的。所以精度不是很高,但是也不是那么低,大部分的场合都够用了。实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了。
以下是具体的程序代码:
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_Uint16[UFADCH] )//给定大于反 {
Temp[0] = ADPool.Value_Uint16[UINADCH] - ADPool.Value_Uint16[UFADCH];//计算Ek[0]
if( Temp[0] > PID.B_Uint8 )
{
//数值移位
PID.Ek_Uint32[2] = PID.Ek_Uint32[1];
增量式pid的算法程序1[1]_信息与通信_工程科技_专业资料。MATLAB#include <stdio.h> #include<math.h> struct _pid { int pv; /*integer that contains ...
增量式 PID 控制算法 当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去 驱动步进电动机)时,需要用 PID 的“增量算法”。 增量式 PID 控制算法可以...
51单片机PID算法程序(三)增量式PID控制算法_工学_高等教育_教育专区。hao...而将所有参数全部用整数,运算 到最后再除以一个 2 的 N 次方数据(相当于移位...
增量式PID控制算法代码_计算机软件及应用_IT/计算机_专业资料。增量式PID控制算法代码/**增量式PID控制算法代码**/ #include<stdio.h> #include<string.h> #...
Keywords: Temperature Sensor; High Precision Temperature Control System; Incremental PID Algorithm 基于增量式 PID 算法的高精度温控系统的设计魏丽君湖南铁道职业...
增量式 PID 控制算法程序 ;***增量式 PID 控制算法程序*** ;T、TD、TI、KP...FTB1: CLR A ;查表,找到一个比待转换浮点数大的整数幂。 MOVC A,@A+...
PID算法-增量(详细)_机械/仪表_工程科技_专业资料。PID ?在过程控制中,按偏差的比例(P)、积分(I) 和微分(D)进行控制的PID控制器(亦称PID 调节器)是应用最...
增量式PID算法程序 //Description:给出一个误差增量 //Input: PID的P、I控制常数和之前的误差量(PID *pp)& 当前误差量(ThisError) //Return: 误差增量templ ...
在许多情况下,DDC 系统控制信号是控制步进电机的,为了增加可靠性,常采用增量式 PID 控制规 律,即只计算控制量的变化量,即: (2-5) 我们将位置式算法和增量式...
增量式PID 控制算法 被控对象为 ,,PID 控制参数为:kp=8,ki=0.10,kd=10。 %Increment PID Controller clear all;close all;clc ts=0.001; sys=tf(400,[...
热门文档