半个月已过去了,几经周折模糊PID终于搞定!效果比PID好点!有疑点/缺陷请高手多指点!
WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
#include <mega16.h> W1WW_P4LCJS_COM-PLC-技.术_网
#include<math.h>WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
#include<delay.h>WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
#include "lcdbn.h"W1WW_P4LCJS_COM-PLC-技.术_网
uchar data1[4]={0,0,7,0};WWW_P※LCJS_CO※M-PLC-技-.术_网
uchar data2[4]={0,0,0,0};P.L.C.技.术.网——可编程控制器技术门户
uchar j,key=0,counter=0;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
uchar chr[]="speed: ";WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
uchar *chr1[3]={"openc: ",WWW_PL※CJS_COM-PLC-技.术_网
"shutc: ",——可——编——程——控-制-器-技——术——门——户
"fuzzy: "} ;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
uchar counter1=0x86;plcjs.技.术_网
uchar counter2=0xc5;WWW_PLC※JS_COM-PmLC-技.术_网
uint timer=0;WWW_P※LCJS_COM-PLC-)技.术_网
uchar flag; //flag为开闭使能 WW.W_PLCJS_COM-PLC-技.术_网
int E1r,E2k=0;WWW_P※LCJS_COM-PLC-)技.术_网
signed char Ek=0,Ec=0;WW.W_PLC※JS_C,OM-PL,C-技.术_网
int E2r=0,E3r=0;WWW_PL※CJS_COM-PLC-技.术_网
uint speedr=10,c_r=0; WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
///////////////////////////////////////////WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
////// 模糊PID ////WWW_P※LCJS_COM-PLC-)技.术_网
////// 可通过E,EC量化后查规则表 ////W1WW_P4LCJS_COM-PLC-技.术_网
////// 得到控制量再转换成输出量u(k) ////WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
/////////////////////////////////////////////WWW_P※LCJS_CO※M-PLC-技-.术_网
const signed char rulelist[13][13]={WWW.PLCJS.COM——可编程控制器技术门户
//E -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 EcWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
{ 7 , 6 , 7 , 6 , 7 , 7 , 7 , 4 , 4 , 2 , 0 , 0 , 0 },//-6plcjs.技.术_网
{ 6 , 6 , 6 , 6 , 6 , 6 , 6 , 4 , 4 , 2 , 0 , 0 , 0 },//-5WW.W_PLCJS_COM-PLC-技.术_网
{ 7 , 6 , 7 , 6 , 7 , 7 , 7 , 4 , 4 , 2 , 0 , 0 , 0 },//-4——可——编——程——控-制-器-技——术——门——户
{ 7 , 6 , 6 , 6 , 6 , 6 , 6 , 3 , 2 , 0 , -1 , -1 , -1 },//-3WWW_PL※CJS_COM-PLC-技.术_网
{ 4 , 4 , 4 , 5 , 4 , 4 , 4 , 1 , 0 , 0 , -1 , -1 , -1 },//-2WWcW_PLCJS_COM-PLC-技.术_网
{ 4 , 4 , 4 , 5 , 4 , 4 , 1 , 0 , 0 , 0 , -3 , -2 , -1 },//-1WWW_PLCJS_COM-PLC-技.术_网
{ 4 , 4 , 4 , 5 , 1 , 1 , 0 , -1 , -1 , -1 , -4 , -4 , -4 },//0——可——编——程——控-制-器-技——术——门——户
{ 2 , 2 , 2 , 2 , 0 , 0 , -1 , -4 , -4 , -3 , -4 , -4 , -4 },//1——可——编——程——控-制-器-技——术——门——户
{ 1 , 2 , 1 , 2 , 0 ,-3 , -4 , -4 , -4 , -3 , -4 , -4 , -4 },//2WWW_PLC※JS_COM-PmLC-技.术_网
{ 0 , 0 , 0 , 0 , -3 ,-3 , -6 , -6 , -6 , -6 , -6 , -6 , -6 },//3WWW_PLCJS@_COM%-PLC-技.术_网
{ 0 , 0 , 0 , -2 , -4 ,-4 , -7 , -7 , -7 , -6 , -7 , -6 , -7 },//4WWcW_PLCJS_COM-PLC-技.术_网
{ 0 , 0 , 0 , -2 , -4 ,-4 , -6 , -6 , -6 , -6 , -6 , -6 , -6 },//5P.L.C.技.术.网——可编程控制器技术门户
{ 0 , 0 , 0 , -2 , -4 ,-4 , -7 , -7 , -7 , -6 , -7 , -6 , -7 } //6WW.W_PLC※JS_C,OM-PL,C-技.术_网
};WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
void init_intr(void)P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
{WWW_PL※CJS_COM-PLC-技.术_网
SREG=0x80;WW.W_PLC※JS_C,OM-PL,C-技.术_网
TIMSK=0x40;plcjs.技.术_网
//TCCR0=0x03; //64分频WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
TCCR2=0x06; //256分频WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
TCCR1A=0xe3; //A比较高电平,B比较低电平WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
TCCR1B=0x0b; WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
MCUCR=0x0f; ///外部INT1/0中断上升有效WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)