pidss4复件.c

来自「51单片机PID计算程序」· C语言 代码 · 共 55 行

C
55
字号
#include "pid_s.h"
/*----------------------------------------------------
函数说明:主要用于PI运算通过给定和反馈计算出输出--------------
入口:ifin,give(反馈,给定)
出口: out
全局变量:lasterror,lastout;      
调用模块: 无  
---------------------------------------------*/
int idata lerror1,lastout;//,out_max,yout[5],lyrk,yrk,;
uchar xi,xp,xd;
char p;
uint ypid(unsigned int give,unsigned int feedback){
int error1,error2,out;
      error1=give-feedback;       //计算积分偏差
      error2=error1-lerror1;      //计算比例偏差
lerror1=error1;             //更新e(k-1)   
out=lastout+error1/xi+error2*xp; //计算PI控制值
  if(error1==0)out=out;            //计算不灵敏区的运算补偿
 else if(error1<8&&error1>-8){
      if(error1>0)out=out+1;
      else out=out-1;
                    }
else if(error1<16&&error1>-16){
  if(error1>0)out=out+2;
  else out=out-2;
                    }
   if(out>UPPER_LIMIT)out=UPPER_LIMIT;     //对输出值进行上限控制
      if(out<0)out=0;             //对输出值进行下限控制
lastout=out;               //更新out(k-1)
if(error1<xd&&error1>-xd)out=out+error1;
      return(out);          //返回最终运算结果
			  }
//-----------------------------------------
/*----------------------------------------------------
函数说明:clr_lastout()
功  能:将PID计算模块的上次输出改为指定的值
全局变量:      
调用模块: 无  
---------------------------------------------*/
void clr_lastout(uint value1){//PID运算从0开始
		lastout=value1;
		}
/*----------------------------------------------------
函数说明:initialize_pid_value()
功  能:初始化PID的比例系数,积分系数
全局变量:      
调用模块:   
---------------------------------------------*/
void initialize_pid_value(){
	xp=1;
	xi=8;
	xd=4;
	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?