pic单片机pid控制算法参数整定
问题描述
- 精选答案
-
我这有51的
#include
#include
"global_varible.h
"
void PID_Math(void)
{
signed long ee1;//偏差一阶
//signed long ee2;//偏差二阶
signed long d_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
ee1 = -500;
PID_e_SUM += PID_e0;//偏差之和
if(PID_e_SUM > 200)//积分最多累计的温差
PID_e_SUM = 200;
if(PID_e_SUM
PID_e_SUM = -200;
PID_Out = PID_kp*PID_e0+PID_kd*ee1;//计算PID比例和微分输出
if(abs(PID_e0)
{
if(abs(PID_e0) > 100)//如果温度相差大于1度时积分累计限制
{
if(PID_e_SUM > 100)
PID_e_SUM = 100;
if(PID_e_SUM
PID_e_SUM = -100;
}
d_out = PID_ki*PID_e_SUM; //积分输出
if(PID_e0
{
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
PID_Out=0;
if(PID_e0 > 300)//当前温度比设定温度低3度则全速加热
PID_Out=200;
if(PID_e0
PID_Out=0;
Hot_T_Run=PID_Out;//加热时间控制输出
PID_e2 = PID_e1;//保存上次偏差
PID_e1 = PID_e0;//保存当前偏差
}
////////////////////////////////////////////////////////////void PID_Math() end.
猜你喜欢内容
-
简单网:构建全网教育数据枢纽,让知识检索化繁为...
简单网:构建全网教育数据枢纽,让知识检索化繁为“简”回答数有0条优质答案参考
-
去三亚有什么好玩的地方
去三亚有什么好玩的地方回答数有1条优质答案参考
-
石狮一日游必去景点推荐
石狮一日游必去景点推荐回答数有1条优质答案参考
-
电气工程师的证书考取条件是什么
电气工程师的证书考取条件是什么回答数有1条优质答案参考
-
房地产估价师的具体报考条件有啥
房地产估价师的具体报考条件有啥回答数有1条优质答案参考
-
房产经纪人的工作内容具体包含什么
房产经纪人的工作内容具体包含什么回答数有1条优质答案参考
-
学习小提琴都有哪些难点
学习小提琴都有哪些难点回答数有1条优质答案参考
-
企业行政管理证书的含金量怎么样
企业行政管理证书的含金量怎么样回答数有1条优质答案参考
-
初学者要怎么入门小提琴
初学者要怎么入门小提琴回答数有1条优质答案参考
-
报考珠宝鉴定师要啥条件
报考珠宝鉴定师要啥条件回答数有1条优质答案参考
















