婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片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 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 97国产在线播放| 韩国无码av片在线观看网站| 91黄色小网站| 一级黄色高清视频| 国产av人人夜夜澡人人爽麻豆 | 日本中文字幕在线不卡| 青青草原国产免费| 国产二区视频在线| 日韩国产精品毛片| 91黄色在线看| 国产乱码一区二区三区四区| 黄页网站在线观看视频| 欧美日韩亚洲国产成人| 福利视频免费在线观看| 日韩久久久久久久久久久久| 男女视频网站在线观看| 爱情岛论坛vip永久入口| 异国色恋浪漫潭| 男女啪啪免费视频网站| 三级在线免费看| 国产成人综合一区| 性一交一乱一伧国产女士spa| 日韩免费毛片视频| 国产精品视频一二三四区| 中文字幕欧美人妻精品一区| 色偷偷中文字幕| 久热精品在线播放| 国产在线观看欧美| www.久久com| 亚洲 欧美 日韩系列| 欧美深夜福利视频| 欧美丰满熟妇bbbbbb百度| 成年人黄色在线观看| 亚洲一二区在线观看| 制服丝袜综合网| 性刺激的欧美三级视频| 国产无套粉嫩白浆内谢的出处| 久久99久久99精品| a天堂资源在线观看| 无码人妻精品一区二区三区99v| 免费看啪啪网站| 中文字幕第50页| 国产精品欧美激情在线观看| 制服丝袜综合网| 911福利视频| 欧美 日本 亚洲| 男人天堂av片| 久久综合九色综合88i| youjizz.com亚洲| 欧美牲交a欧美牲交| www.日本久久| 99re精彩视频| 久久综合伊人77777麻豆最新章节| 99热都是精品| 三级黄色片播放| 青青草原国产在线视频| 激情综合网俺也去| 成人毛片一区二区| 播放灌醉水嫩大学生国内精品| 国产成人强伦免费视频网站| 免费国产成人av| 黄在线观看网站| 国产成人无码精品久久久性色| 妞干网视频在线观看| 免费拍拍拍网站| av电影一区二区三区| 九九热精品在线播放| 三级一区二区三区| www.色就是色.com| 中文字幕精品一区二区三区在线| 欧美一区二区激情| 成年人午夜免费视频| 又大又硬又爽免费视频| 毛片av免费在线观看| 三年中文高清在线观看第6集| 日本丰满少妇xxxx| 又粗又黑又大的吊av| 亚洲中文字幕无码一区二区三区| 美女少妇一区二区| 在线能看的av网站| 99re8这里只有精品| 日本成人性视频| 伊人再见免费在线观看高清版| 欧美日韩久久婷婷| 国产黄色片免费在线观看| 人妻无码久久一区二区三区免费| 久久www视频| 在线免费视频a| 三年中国中文在线观看免费播放 | 成年人三级黄色片| 水蜜桃色314在线观看| 路边理发店露脸熟妇泻火| 国产精品无码专区av在线播放 | www.日日操| 蜜臀视频一区二区三区| 国产男女无遮挡| 国产无限制自拍| 成年人网站大全| 中文字幕日本最新乱码视频| 一卡二卡三卡视频| 丁香六月激情婷婷| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产日韩欧美精品在线观看| 欧美三级午夜理伦三级| www.日日操| 日本人妻伦在线中文字幕| 麻豆传媒网站在线观看| 免费国产黄色网址| 中文字幕有码av| 日韩视频 中文字幕| 鲁一鲁一鲁一鲁一色| www.亚洲高清| 欧美国产日韩激情| 天天碰免费视频| 成人免费在线视频播放| 亚洲少妇第一页| 国产精品88久久久久久妇女| 成年人观看网站| 三年中文高清在线观看第6集 | 少妇人妻在线视频| xxww在线观看| 9l视频白拍9色9l视频| 热99这里只有精品| 国产一区二区三区小说| 国产精品久久久久久久av福利| 国产91对白刺激露脸在线观看| 国产又大又黄又粗的视频| 日日橹狠狠爱欧美超碰| 黄色影视在线观看| 五月天色婷婷综合| 欧美成人三级在线播放| 欧美伦理视频在线观看| 乱妇乱女熟妇熟女网站| 偷拍盗摄高潮叫床对白清晰| 免费男同深夜夜行网站| 国产一级不卡视频| 日韩在线xxx| 成人不卡免费视频| 在线观看av免费观看| 国产精品99久久久久久大便| 欧美日韩久久婷婷| 日韩a级黄色片| 免费黄色福利视频| 亚洲福利精品视频| 欧美一级爱爱视频| 国产高清精品在线观看| 亚洲性图一区二区| 2025韩国大尺度电影| 男人插女人视频在线观看| 可以在线看的黄色网址| 伊人五月天婷婷| 欧美日韩亚洲一| 爱豆国产剧免费观看大全剧苏畅| 色婷婷.com| 成人一区二区免费视频| 日本美女高潮视频| 91黄色在线看| 久久黄色片网站| av之家在线观看| 黑人巨大国产9丨视频| 亚洲中文字幕无码不卡电影| 玖玖爱视频在线| 国产视频九色蝌蚪| 免费毛片网站在线观看| 99精品一级欧美片免费播放| 91激情视频在线| 800av在线免费观看| 成人短视频在线观看免费| 国产三级三级看三级| 欧美在线aaa| 中文精品无码中文字幕无码专区 | 妺妺窝人体色www在线小说| 高清在线观看免费| 17c国产在线| 91好吊色国产欧美日韩在线| 三级在线视频观看| 久久这里只有精品18| 国内自拍视频一区| 五月激情婷婷在线| 国产精品无码专区av在线播放| www.超碰97.com| 国产精品50p| 黄色一级视频播放| 日韩欧美国产片| 国产精品免费入口| 国产主播在线看| 国产精品成人久久电影| heyzo国产| 高潮一区二区三区| 国风产精品一区二区| 日韩人妻无码精品久久久不卡| 国产h视频在线播放| 日韩 欧美 高清| 国产成人三级视频| 亚洲精品视频导航| 中文字幕av导航| 国产精品无码专区av在线播放| www.cao超碰| 欧美aⅴ在线观看| 麻豆传媒网站在线观看|