温度控制的PID算法程序如何编写

问问题描述

温度控制的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.

答其他回答(1条)

  • 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.。

本文来自作者[金拱门御用三星大厨]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/276491.html

赞 (0)

发表回复

本站作者后才能评论

评论列表(4条)

  • 金拱门御用三星大厨
    金拱门御用三星大厨 2026年09月30日

    我是公众科技网的签约作者“金拱门御用三星大厨”!

  • 金拱门御用三星大厨
    金拱门御用三星大厨 2026年09月30日

    希望本篇文章《温度控制的PID算法程序如何编写》能对你有所帮助!

  • 金拱门御用三星大厨
    金拱门御用三星大厨 2026年09月30日

    本站[公众科技网]内容主要涵盖:教育咨询,知识百科

  • 金拱门御用三星大厨
    金拱门御用三星大厨 2026年09月30日

    本文概览:#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;//计

联系我们

联系:143 0457 151

工作时间:周一至周五,9:30-18:30,节假日休息

关注我们