μC/OSⅡ的分布式应急电源控制系统设计
另外,uC/OS- II在F2407上的移植和配置的方法如下:
(1)在OS_ CPU.H中定义相关的宏,声明能够识别的数据类型和堆栈增长方向。OS_ CPU C.C中定义以下6个函数:OSTaskStklnit ( ) 、OSTaskCreateHook()、OSTaskSwHOok()、OSTW_lefook()、OSTaskStatHook()、OST3meT5ckHook()。实际上真正需要定义的只有OSTaskStklnit(),其余5个只需声明,不一定要有实际内容,这5个函数都是需要由用户定义的接口函数。
(2)在OS_CPU_A.ASM中修改以下几个汇编函数:OSStartHighRdy、OSCtxSw, OS1ntCtxSw,、OSTickISR。OSStarthighRdy的功能是运行优先级最高的就绪任务,该函数由OSStartp函数调用,OSStart()的调用是建立在OSInit()的调用并且至少已经建立一个任务的墓础上的;OSCtxSw是一个任务级的任务切换函数,该函数在任务中调用;OSIntCtxSw是一个中断级的任务切换函数;OSCtxSw为时钟中断服务函数,时钟中断程序负责处理所有与定时相关的工作,如任务的延时、等待等,在时钟中断中将查询处于等待状态的任务,判断是否延时结束,则将重新进行任务调度。
(3)在主头文件INCLUDES.H中增加OS_CPU.H , OS_CPU_C.C和OS_ CPU_A.ASM。因为INCLUDES.H是主头文件,它将被所有后级名为.C的文件所包含。在移植时,需要对该文件进行改写,在文件末尾增加以下头文件:
#include
#include
#include
(4)在配置文件OS_CFG.H中,定义最大事件数,最多内存分块数,最多消息队列数,最多任务数,最低任务优先级,是否允许信号使能,是否允许邮箱使能,是否允许消息队列使能,时钟节拍数以及其他的一些配置。通过修改这些设置,可对uC/OS- II进行裁剪,使之适应本系统的具体需要。
系统采用中断方式接收上位机的指令,采用查询方式发送。当上位机发出读数、启动或停止操作命令后,嵌入式系统将产生中断,并发送应答信号,然后根据收到的命令类型进行相应操作。
5 功率变换算法
本系统脉冲宽度计算采用规则采样法,计算公式如式(1):
(1)
其中Usm为正弦波的幅值,Utm为三角波的幅值,N为载波比。[1]
交变电源的高次谐波幅值为:
(2)
由(2)式可以看出N越大,高次谐波幅值越小。基于IGBT的器件特性,N不能无限大,取N=400, 则高次谐波幅值Um(n)很容易被滤波器滤去。考虑到处于开关工作状态中的IGBT管从开通转为截止状态时,容易产生较长的“拖尾”现象,并进而导致IGBT因瞬时功耗偏大而影响EPS逆变器的可靠性,因此,在用公式(1)计算方波的脉宽时,,在系统中加入了反馈环节,把实际输出的电压经采样送回控制器,用PI调节消除系统的静态误差,增加系统的稳定性。
6 结论
本文结合TMS320LF2407芯片和μC/OS-II实时操作系统内核的优点,设计出基于DSP和μC/OS-II的应急电源控制系统。通过在DSP 上移植μC/OS-II,系统设计的周期得以减少,软件的可读性得以提高,从而节省了系统开发和维护的费用。目前,该系统工程样机运行平稳可靠。
- STM32激光电源控制系统设计(12-09)
- 基于数字电源控制器UCD3138的一种新的输入电流检测方法(二)(12-08)
- 基于数字电源控制器UCD3138的一种新的输入电流检测方法(一)(12-08)
- 10A备份电源控制器IC用于提供不间断电源(12-08)
- 脉冲直流磁控溅射电源控制器试验分析(12-07)
- 扩展电源控制环路带宽改善负载瞬态响应(12-07)