📄 pidss4复件.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -