基于MATLAB的蓄電池充放電監測系統
3.1 MCU程序
為協(xié)調各個(gè)功能的實(shí)現,本文參考了多任務(wù)調度算法和時(shí)間片輪轉算法。多任務(wù)調度算法,是按照實(shí)際要求將單片機要實(shí)現的功能劃分成多個(gè)任務(wù)模塊,并規定優(yōu)先級別,由一個(gè)任務(wù)調度模塊統一控制執行順序。CPU的控制權按不同優(yōu)先級分配給不同的任務(wù)模塊,各個(gè)模塊分別在自己的執行時(shí)間內訪(fǎng)問(wèn)CPU,形成微觀(guān)上輪流執行,宏觀(guān)上并發(fā)運行的多任務(wù)效果,如圖3所示。本文引用地址:http://dyxdggzs.com/article/177783.htm
本系統中的幾個(gè)任務(wù)對時(shí)間要求比較敏感,單純使用多任務(wù)調度不能滿(mǎn)足需求。結合時(shí)間片輪轉算法,在任務(wù)分配時(shí)考慮時(shí)間限制,并將任務(wù)區分優(yōu)先級。優(yōu)先級高的任務(wù)先執行。為保證采樣周期的穩定,A/D轉換和啟動(dòng)溫度轉換的優(yōu)先級較高,串口發(fā)送晚幾十毫秒不會(huì )造成不良影響,所以?xún)?yōu)先級較低。程序簡(jiǎn)要流程如圖4所示。
其中,任務(wù)調度模塊包含各任務(wù)的時(shí)間信息,如A/D轉換0.1s一次,啟動(dòng)溫度檢測1s一次,讀溫度則40ms一次,串口發(fā)送0.1s一次。若任務(wù)中包含多個(gè)子功能快,借鑒有限狀態(tài)機(FSM)算法,每次執行一個(gè)子功能,直到本任務(wù)執行完成。
評論