基于MATLAB的蓄电池充放电监测系统
3.1 MCU程序
为协调各个功能的实现,本文参考了多任务调度算法和时间片轮转算法。多任务调度算法,是按照实际要求将单片机要实现的功能划分成多个任务模块,并规定优先级别,由一个任务调度模块统一控制执行顺序。CPU的控制权按不同优先级分配给不同的任务模块,各个模块分别在自己的执行时间内访问CPU,形成微观上轮流执行,宏观上并发运行的多任务效果,如图3所示。本文引用地址:https://www.eepw.com.cn/article/177783.htm
本系统中的几个任务对时间要求比较敏感,单纯使用多任务调度不能满足需求。结合时间片轮转算法,在任务分配时考虑时间限制,并将任务区分优先级。优先级高的任务先执行。为保证采样周期的稳定,A/D转换和启动温度转换的优先级较高,串口发送晚几十毫秒不会造成不良影响,所以优先级较低。程序简要流程如图4所示。
其中,任务调度模块包含各任务的时间信息,如A/D转换0.1s一次,启动温度检测1s一次,读温度则40ms一次,串口发送0.1s一次。若任务中包含多个子功能快,借鉴有限状态机(FSM)算法,每次执行一个子功能,直到本任务执行完成。
评论