欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
避免過沖的PID算法 控制對象是溫度
[打印本頁]
作者:
wlw5651
時間:
2021-4-14 08:29
標題:
避免過沖的PID算法 控制對象是溫度
這是一個避免過沖的PID算法,控制對象是溫度
單片機源程序如下:
#include "pid.h"
PID pid; //存放PID算法所需要的數據
void PID_Calc() //pid計算
{
float DelEk;
float ti,ki;
// float Iout;
// float Pout;
// float Dout;
float td;
float kd;
float out;
if(pid.C10ms<(pid.T)) //計算周期未到
{
return ;
}
pid.Ek=pid.Sv-pid.Pv; //得到當前的偏差值
pid.Pout=pid.Kp*pid.Ek; //比例輸出
pid.SEk+=pid.Ek; //歷史偏差總和
DelEk=pid.Ek-pid.Ek_1; //最近兩次偏差之差
ti=pid.T/pid.Ti;
ki=ti*pid.Kp;
pid.Iout=ki*pid.SEk*pid.Kp; //積分輸出
td=pid.Td/pid.T;
kd=pid.Kp*td;
pid.Dout=kd*DelEk; //微分輸出
out= pid.Pout+ pid.Iout+ pid.Dout;
//////////////////////////////////////////////////////////
if(out>pid.pwmcycle)
{
pid.OUT=pid.pwmcycle;
}
else if(out<0)
{
pid.OUT=pid.OUT0;
}
else
{
pid.OUT=out;
}
//pid.OUT+=; //本次的計算結果
pid.Ek_1=pid.Ek; //更新偏差
pid.C10ms=0;
}
void PID_Calc_overshoot() //pid計算-過沖處理?
{
float DelEk;
float ti,ki;
// float Iout;
// float Pout;
// float Dout;
float td;
float kd;
float out;
float SvSave;
if(pid.C10ms<(pid.T)) //計算周期未到
{
return ;
}
//判斷Sv
SvSave=pid.Sv;
if(pid.Pv<(SvSave*0.55))//溫度達到計數開始 66度
{
pid.times=0;
}
if(pid.times<=60)//3分鐘 72度 100s
{
pid.Sv=SvSave*0.6;
}
if((pid.times>60)&&(pid.times<=100))//3分鐘 96度 100s
{
pid.Sv=SvSave*0.8;
}
if((pid.times>100)&&(pid.times<=200))//2分鐘 102度 100s
{
pid.Sv=SvSave*0.85;
}
if((pid.times>200)&&(pid.times<=300))//2分鐘 108度 100s
{
pid.Sv=SvSave*0.9;
}
if((pid.times>300)&&(pid.times<=400))//2分鐘 114度 100s
{
pid.Sv=SvSave*0.95;
}
if(pid.times>400)
{
pid.Sv=SvSave;
}
//////////////////////////////////
pid.Ek=pid.Sv-pid.Pv; //得到當前的偏差值
pid.Pout=pid.Kp*pid.Ek; //比例輸出
pid.SEk+=pid.Ek; //歷史偏差總和
DelEk=pid.Ek-pid.Ek_1; //最近兩次偏差之差
ti=pid.T/pid.Ti;
ki=ti*pid.Kp;
pid.Iout=ki*pid.SEk*pid.Kp; //積分輸出
td=pid.Td/pid.T;
kd=pid.Kp*td;
pid.Dout=kd*DelEk; //微分輸出
out= pid.Pout+ pid.Iout+ pid.Dout;
//////////////////////////////////////////////////////////
if(out>pid.pwmcycle)
{
pid.OUT=pid.pwmcycle;
}
else if(out<0)
{
pid.OUT=pid.OUT0;
}
else
{
pid.OUT=out;
}
//pid.OUT+=; //本次的計算結果
pid.Ek_1=pid.Ek; //更新偏差
pid.C10ms=0;
pid.Sv=SvSave;
}
復制代碼
51hei.png
(4.54 KB, 下載次數: 84)
下載附件
2021-4-14 17:40 上傳
所有資料51hei提供下載:
PID 避免過沖.zip
(1.58 KB, 下載次數: 82)
2021-4-14 08:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
紫色的云
時間:
2021-4-14 18:44
謝謝樓主的資料學習了,能講解一下就改好了
作者:
usaboy
時間:
2021-4-15 06:18
Thank you so much!
作者:
地方的紛紛擾擾
時間:
2021-6-2 12:31
紫色的云 發表于 2021-4-14 18:44
謝謝樓主的資料學習了,能講解一下就改好了
放在main函數哪里呀
作者:
woyaodwn
時間:
2021-12-28 10:07
這個函數能直接使用嗎
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1