91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

一個模糊PID溫度控制算法源代碼 (親測可用)

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?“pid_fuzzy.h“

//注1:自適應模糊pid最重要的就是論域的選擇,要和你應該控制的對象相切合
//注2:以下各閥值、限幅值、輸出值均需要根據具體的使用情況進行更改
//注3:因為我的控制對象慣性比較大,所以以下各部分取值較小
//論域e:[-55]??ec:[-0.50.5]

//誤差的閥值,小于這個數值的時候,不做PID調整,避免誤差較小時頻繁調節引起震蕩
#define?Emin?0.0
#define?Emid?0.08
#define?Emax?0.6
//調整值限幅,防止積分飽和
#define?Umax?5
#define?Umin?-5

//輸出值限幅
#define?Pmax?7200
#define?Pmin?0

#define?NB?0
#define?NM?1
#define?NS?2
#define?ZO?3
#define?PS?4
#define?PM?5
#define?PB?6

int?kp[7][7]=?{??{PBPBPMPMPSZOZO}
????{PBPBPMPSPSZOZO}
????{PMPMPMPSZONSNS}
????{PMPMPSZONSNMNM}
????{PSPSZONSNSNMNM}
????{PSZONSNMNMNMNB}
????{ZOZONMNMNMNBNB}
};

int?kd[7][7]=?{??{PSNSNBNBNBNMPS}
????{PSNSNBNMNMNSZO}
????{ZONSNMNMNSNSZO}
????{ZONSNSNSNSNSZO}
????{ZOZOZOZOZOZOZO}
????{PBNSPSPSPSPSPB}
????{PBPMPMPMPSPSPB}
};

int?ki[7][7]=?{??{NBNBNMNMNSZOZO}
????{NBNBNMNSNSZOZO}
????{NBNMNSNSZOPSPS}
????{NMNMNSZOPSPMPM}
????{NMNSZOPSPSPMPB}
????{ZOZOPSPSPMPBPB}
????{ZOZOPSPMPMPBPB}
};

/**************求隸屬度(三角形)***************/
float?FTri(float?xfloat?afloat?bfloat?c)//FuzzyTriangle
{
????if(x<=a)
????????return?0;
????else?if((a????????return?(x-a)/(b-a);
????else?if((b????????return?(c-x)/(c-b);
????else?if(x>c)
????????return?0;
????else
????????return?0;
}
/*****************求隸屬度(梯形左)*******************/
float?FTraL(float?xfloat?afloat?b)//FuzzyTrapezoidLeft
{
????if(x<=a)
????????return?1;
????else?if((a????????return?(b-x)/(b-a);
????else?if(x>b)
????????return?0;
????else
????????return?0;
}
/*****************求隸屬度(梯形右)*******************/
float?FTraR(float?xfloat?afloat?b)//FuzzyTrapezoidRight
{
????if(x<=a)
????????return?0;
????if((a????????return?(x-a)/(b-a);
????if(x>=b)
????????return?1;
????else
????????return?1;
}
/****************三角形反模糊化處理**********************/
float?uFTri(float?xfloat?afloat?bfloat?c)
{
????float?yz;
????z=(b-a)*x+a;
????y=c-(c-b)*x;
????return?(y+z)/2;
}
/*******************梯形(左)反模糊化***********************/
float?uFTraL(float?xfloat?afloat?b)
{
????return?b-(b-a)*x;
}
/*******************梯形(右)反模糊化***********************/
float?uFTraR(float?xfloat?afloat?b)
{
????return?(b-a)*x?+a;
}
/**************************求交集****************************/
float?fand(float?afloat?b)
{
????return?(a}
/**************************求并集****************************/
float?forr(float?afloat?b)
{
????return?(a}
float?ec;
/*==========???PID計算部分???======================*/
int?PID_realize(PID?*structpiduint16_t?suint16_t?in)
{
????float?pwm_var;//pwm調整量
????float?iError;//當前誤差
????float?setinput;

????//計算隸屬度表
????float?es[7]ecs[7]e;
????float?form[7][7];
????int?i=0j=0;
????int?MaxX=0MaxY=0;


評論

共有 條評論