欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

用C51實現PID算法

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011/2/18

關于PID的算法實現,很多書上都講了。
 
但是,最近真正要用PID算法的時候,發現書上的代碼在我們51上來實現還不是那么容易的事情。簡單的說來,就是不能直接調用。仔細分析你可以發現,教材上的、網上現行的PID實現的C語言代碼幾乎都是用浮點型的數據來做的,可以想象,如果我們的計算使用浮點數據,那我們的51單片機來運行的話會有多痛苦。
 
所以,本人自己琢磨著弄了一個整型變量來實現了PID算法,由于是用整型數來做的,所以也不是很精確,但是對于很多的使用場合,這個精度也夠了。關于系數和采樣電壓全部是放大10倍處理的。所以精度不是很高,但是也不是那么低,大部分的場合都夠用了。實在覺得精度不夠,可以再放大10倍或者100倍處理,但是要注意不超出整個數據類型的范圍就可以了。
 
    本人做的是帶死區控制的PID算法。
 
具體的參考代碼參見下面:
 
typedef struct PIDValue
{
    uint32 Ek_Uint32[3];         //差值保存,給定和反饋的差值
    uint8  EkFlag_Uint8[3];     //符號,1則對應的Ek[i]為負數,0為對應的Ek[i]為正數
    uint8   KP_Uint8;
 uint8   KI_Uint8;
 uint8   KD_Uint8;
 uint8   B_Uint8;     //死區電壓
 
 uint8   KP;      //顯示修改的時候用
 uint8   KI;      //
 uint8   KD;      //
 uint8   B;       //
 uint16  Uk_Uint16;    //上一時刻的控制電壓
}PIDValueStr;
 
PIDValueStr xdata PID;
/*******************************
**PID = Uk + (KP*E(k) - KI*E(k-1) + KD*E(k-2));
********************************/
void    PIDProcess(void)
{
 uint32 idata Temp[3];  //
 uint32 idata PostSum;  //正數和
 uint32 idata NegSum;   //負數和
 Temp[0] = 0;
    Temp[1] = 0;
    Temp[2] = 0;
 PostSum = 0;
 NegSum = 0;
 if( ADPool.Value_Uint16[UINADCH] > ADPool.Value_Uint16[UFADCH] )  //給定大于反饋,則EK為正數
 {
     Temp[0] = ADPool.Value_Uint16[UINADCH] - ADPool.Value_Uint16[UFADCH];   //計算Ek[0]
        if( Temp[0] > PID.B_Uint8 )
        {
      //數值移位
            PID.Ek_Uint32[2] = PID.Ek_Uint32[1];
            PID.Ek_Uint32[1] = PID.Ek_Uint32[0];
            PID.Ek_Uint32[0] = Temp[0];
            //符號移位
   PID.EkFlag_Uint8[2] = PID.EkFlag_Uint8[1];
   PID.EkFlag_Uint8[1] = PID.EkFlag_Uint8[0];
   PID.EkFlag_Uint8[0] = 0;                       //當前EK為正數
            Temp[0] = (uint32)PID.KP_Uint8 * PID.Ek_Uint32[0];    // KP*EK0
            Temp[1] = (uint32)PID.KI_Uint8 * PID.Ek_Uint32[1];    // KI*EK1
            Temp[2] = (uint32)PID.KD_Uint8 * PID.Ek_Uint32[2];    // KD*EK2
        }
 }
 else   //反饋大于給定
 {
     Temp[0] = ADPool.Value_Uint16[UFADCH] - ADPool.Value_Uint16[UINADCH];   //計算Ek[0]
        if( Temp[0] > PID.B_Uint8 )
        {
      //數值移位
            PID.Ek_Uint32[2] = PID.Ek_Uint32[1];
            PID.Ek_Uint32[1] = PID.Ek_Uint32[0];
            PID.Ek_Uint32[0] = Temp[0];
            //符號移位
   PID.EkFlag_Uint8[2] = PID.EkFlag_Uint8[1];
   PID.EkFlag_Uint8[1] = PID.EkFlag_Uint8[0];
   PID.EkFlag_Uint8[0] = 1;                       //當前EK為負數
            Temp[0] = (uint32)PID.KP_Uint8 * PID.Ek_Uint32[0];    // KP*EK0
            Temp[1] = (uint32)PID.KI_Uint8 * PID.Ek_Uint32[1];    // KI*EK1
            Temp[2] = (uint32)PID.KD_Uint8 * PID.Ek_Uint32[2];    // KD*EK2
        }
 }
 
/*以下部分代碼是講所有的正數項疊加,負數項疊加*/
    if(PID.EkFlag_Uint8[0]==0)
    {
        PostSum += Temp[0];   //正數和
 }
    else
 {
        NegSum += Temp[0];    //負數和
 }                         // KP*EK0
    if(PID.EkFlag_Uint8[1]!=0)    
    {
        PostSum += Temp[1];   //正數和
 }
 else
 {
        NegSum += Temp[1];    //負數和
 }                         // - kI * EK1
    if(PID.EkFlag_Uint8[2]==0)
    {
        PostSum += Temp[2];   //正數和
    }
 else
 {
        NegSum += Temp[2];    //負數和
 }                         // KD * EK2
    PostSum += (uint32)PID.Uk_Uint16;        //
    if( PostSum > NegSum )             // 是否控制量為正數
    {
        Temp[0] = PostSum - NegSum;
        if( Temp[0] < (uint32)ADPool.Value_Uint16[UMAXADCH] )   //小于限幅值則為計算值輸出
  {
            PID.Uk_Uint16 = (uint16)Temp[0];
  }
  else
  {
            PID.Uk_Uint16 = ADPool.Value_Uint16[UMAXADCH];    //否則為限幅值輸出
     }
    }
    else               //控制量輸出為負數,則輸出0
    {
        PID.Uk_Uint16 = 0;
    }
}

Tags:c51,pid,算法  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人
久久精品av麻豆的观看方式| 久久久久国产精品人| 成人伦理片在线| 国产精品自在欧美一区| 久久99精品国产.久久久久久| 天天操天天综合网| 免费在线观看视频一区| 五月开心婷婷久久| 日韩av高清在线观看| 美腿丝袜在线亚洲一区| 国产一区二区三区| 成人激情小说网站| 在线一区二区三区| 欧美精品久久天天躁| 欧美tk—视频vk| 国产精品污网站| 一区二区三区在线高清| 日韩avvvv在线播放| 精品午夜一区二区三区在线观看| 国产精品系列在线观看| 97精品国产97久久久久久久久久久久| 色综合久久久久综合99| 日韩一区二区三区电影在线观看 | 亚洲女人小视频在线观看| 亚洲免费资源在线播放| 偷偷要91色婷婷| 丁香激情综合五月| 欧美三级一区二区| www成人在线观看| 亚洲男人天堂av| 免费成人性网站| 99视频精品全部免费在线| 欧美猛男男办公室激情| 国产日韩欧美激情| 日韩—二三区免费观看av| 国产精品99久久久久久宅男| 欧美午夜精品免费| 国产欧美一区二区三区沐欲| 亚洲成国产人片在线观看| 国产精品一区久久久久| 欧美精品一卡两卡| 国产精品第四页| 精品一区二区三区久久| 色8久久人人97超碰香蕉987| 久久久精品综合| 免费在线看成人av| 欧美日韩一区高清| 中文字幕亚洲区| 国产一区二区视频在线| 欧美日韩精品一区二区三区四区 | 久久久99久久精品欧美| 五月综合激情日本mⅴ| 成人激情图片网| 久久精品欧美一区二区三区不卡 | 日韩色视频在线观看| 亚洲精品国产一区二区精华液| 国产精品一色哟哟哟| 在线综合+亚洲+欧美中文字幕| 亚洲欧美日韩久久精品| 东方aⅴ免费观看久久av| 欧美va亚洲va| 久久机这里只有精品| 欧美日本乱大交xxxxx| 亚洲黄色av一区| 色香蕉成人二区免费| 中文字幕亚洲综合久久菠萝蜜| 成人一级片在线观看| 欧美国产成人精品| 粉嫩13p一区二区三区| 欧美国产禁国产网站cc| 成人性生交大合| 欧美高清在线视频| 高清不卡在线观看| 国产精品久久久久影院| 成人深夜在线观看| 中文字幕在线不卡国产视频| av在线这里只有精品| 亚洲欧美激情视频在线观看一区二区三区| proumb性欧美在线观看| 一区二区三区小说| 欧美精品久久久久久久多人混战 | 国产精品一区专区| 欧美极品美女视频| 99精品国产热久久91蜜凸| 亚洲摸摸操操av| 欧美精品777| 激情久久久久久久久久久久久久久久| 精品国产成人系列| 国产激情视频一区二区在线观看| 中文字幕二三区不卡| 91福利精品第一导航| 日韩精品福利网| 国产网站一区二区三区| 99精品视频在线免费观看| 亚洲午夜视频在线| 久久亚洲影视婷婷| 91在线视频官网| 日本91福利区| 国产精品国产自产拍高清av王其| 99久久婷婷国产综合精品| 三级欧美在线一区| 欧美国产日韩精品免费观看| 精品视频资源站| 国产精品一区二区在线观看网站 | 亚洲国产精品黑人久久久| 91一区一区三区| 理论电影国产精品| 一区二区三区电影在线播| 91精品福利在线一区二区三区 | 开心九九激情九九欧美日韩精美视频电影| 精品国产精品一区二区夜夜嗨| 色综合一区二区| 国产美女娇喘av呻吟久久| 亚洲国产精品久久不卡毛片| 欧美精品一区在线观看| 在线视频国内一区二区| 精品无人区卡一卡二卡三乱码免费卡| 亚洲欧美一区二区三区国产精品| 精品国产伦一区二区三区观看方式 | 五月婷婷久久综合| 国产精品护士白丝一区av| 欧美成人精品福利| 欧美日韩美女一区二区| 成人性色生活片| 激情文学综合丁香| 青青草国产成人av片免费| 亚洲激情综合网| 国产精品水嫩水嫩| 久久久噜噜噜久久中文字幕色伊伊 | 免费观看日韩av| 亚洲国产色一区| 亚洲精品高清视频在线观看| 国产日产精品1区| 欧美videos中文字幕| 欧美人xxxx| 欧美精品色一区二区三区| 在线视频亚洲一区| 91丨porny丨中文| 成人av免费在线播放| 国产69精品久久777的优势| 精品一区二区三区免费视频| 蜜桃精品在线观看| 日韩精品电影在线观看| 免费日本视频一区| 久久精品久久精品| 久久91精品久久久久久秒播| 天堂av在线一区| 日韩精品一级二级 | 国产成人精品aa毛片| 国产在线不卡一卡二卡三卡四卡| 免费欧美日韩国产三级电影| 日本伊人午夜精品| 激情深爱一区二区| 高清成人免费视频| www.视频一区| 95精品视频在线| 欧美专区亚洲专区| 欧美乱熟臀69xxxxxx| 欧美一区二区三区在线看| 26uuu国产一区二区三区| 欧美一区二区三区性视频| 日韩视频免费观看高清在线视频| 精品国产三级电影在线观看| 久久久99久久| 亚洲精品免费一二三区| 日韩精品欧美成人高清一区二区| 久久精品99久久久| 99精品一区二区三区| 欧美色图在线观看| 亚洲精品在线免费播放| 国产精品不卡在线观看| 丝袜美腿高跟呻吟高潮一区| 九九热在线视频观看这里只有精品| 国产麻豆精品theporn| 91美女福利视频| 欧美一区二区三区婷婷月色| 国产调教视频一区| 一区二区三区欧美激情| 日韩成人精品视频| 99热精品国产| 欧美一区二区三区四区视频| 欧美国产禁国产网站cc| 午夜欧美电影在线观看| 岛国精品一区二区| 日韩欧美国产高清| 亚洲视频一区在线| 国精产品一区一区三区mba视频| av中文字幕不卡| 欧美电影免费观看高清完整版 | 欧美日韩视频第一区| 久久精品男人天堂av| 日韩精彩视频在线观看| 成人精品小蝌蚪| 精品国产伦一区二区三区观看体验| 亚洲人成网站精品片在线观看| 久久国产成人午夜av影院| 欧美亚洲日本一区| 国产精品久久久久久久浪潮网站| 麻豆精品一区二区av白丝在线| 91丝袜国产在线播放|