温度控制的PID算法程序如何编写
问题描述
- 精选答案
-
#include<stdlib.h>
#include
"global_varible.h
"
voidPID_Math(void)
{
signedlongee1;//偏差一阶
//signedlongee2;//偏差二阶
signedlongd_out;//积分输出
if(!Flag_PID_T_OK)
return;
Flag_PID_T_OK=0;
Temp_Set=3700;//温度控制设定值37.00度
PID_e0=Temp_Set-Temp_Now;//本次偏差
ee1=PID_e0-PID_e1;//计算一阶偏差
//ee2=PID_e0-2*PID_e1+PID_e2;//计算二阶偏差
if(ee1>500)//一阶偏差的限制范围
ee1=500;
if(ee1<-500)
ee1=-500;
PID_e_SUM+=PID_e0;//偏差之和
if(PID_e_SUM>200)//积分最多累计的温差
PID_e_SUM=200;
if(PID_e_SUM<-200)
PID_e_SUM=-200;
PID_Out=PID_kp*PID_e0+PID_kd*ee1;//计算PID比例和微分输出
if(abs(PID_e0)<200)//如果温度相差小于1.5度则计入PID积分输出
{
if(abs(PID_e0)>100)//如果温度相差大于1度时积分累计限制
{
if(PID_e_SUM>100)
PID_e_SUM=100;
if(PID_e_SUM<-100)
PID_e_SUM=-100;
}
d_out=PID_ki*PID_e_SUM;//积分输出
if(PID_e0<-5)//当前温度高于设定温度0.5度时积分累计限制
{
if(PID_e_SUM>150)
PID_e_SUM=150;
if(PID_e_SUM>0)//当前温度高于设定温度0.5度时削弱积分正输出
d_out>>=1;
}
PID_Out+=d_out;//PID比例,积分和微分输出
}
else
PID_e_SUM=0;
PID_Out/=100;//恢复被PID_Out系数放大的倍数
if(PID_Out>200)
PID_Out=200;
if(PID_Out<0)
PID_Out=0;
if(PID_e0>300)//当前温度比设定温度低3度则全速加热
PID_Out=200;
if(PID_e0<-20)//当前温度高于设定温度0.2度则关闭加热
PID_Out=0;
Hot_T_Run=PID_Out;//加热时间控制输出
PID_e2=PID_e1;//保存上次偏差
PID_e1=PID_e0;//保存当前偏差
}
////////////////////////////////////////////////////////////voidPID_Math()end.
- 其他回答
-
IDpara.d_mode = LCPID_D_MODE_E ;
微分模式:对偏差值进行微分计算(标准PID控制);
X模式:对实际值进行微分计算(一般选次方式)PIDpara.calc_mode= LCPID_CALC_MODE_EXACT ;
计算模式:精确(所有计算为双精度浮点型, 如无舍入错误和CPU计算次数过长)(一般选次方式)PIDpara FUB LCPIDpara() ;
调用PID参数功能块循环程序中程序如下,此程序只对P、I、D三个参数由变量进行输值,变量可在pid程序运行中实时修改,如果大家还需要某些参数实时修改,方法相同:(* cyclic program *)PIDpara.。
猜你喜欢内容
-
简单网:构建全网教育数据枢纽,让知识检索化繁为...
简单网:构建全网教育数据枢纽,让知识检索化繁为“简”回答数有0条优质答案参考
-
去三亚有什么好玩的地方
去三亚有什么好玩的地方回答数有1条优质答案参考
-
石狮一日游必去景点推荐
石狮一日游必去景点推荐回答数有1条优质答案参考
-
电气工程师的证书考取条件是什么
电气工程师的证书考取条件是什么回答数有1条优质答案参考
-
房地产估价师的具体报考条件有啥
房地产估价师的具体报考条件有啥回答数有1条优质答案参考
-
房产经纪人的工作内容具体包含什么
房产经纪人的工作内容具体包含什么回答数有1条优质答案参考
-
学习小提琴都有哪些难点
学习小提琴都有哪些难点回答数有1条优质答案参考
-
企业行政管理证书的含金量怎么样
企业行政管理证书的含金量怎么样回答数有1条优质答案参考
-
初学者要怎么入门小提琴
初学者要怎么入门小提琴回答数有1条优质答案参考
-
报考珠宝鉴定师要啥条件
报考珠宝鉴定师要啥条件回答数有1条优质答案参考
















