软中断函数的实现: void SWI_Exception(int SWI_Num, int *Regs) { /*根据不同Num 值(功能号)跳转到不同的底层服务函数地址,如:*/ case 0x00:任务切换函数OS_TASK_SW;} (3)修改OS_CPU_A.S:包括4 个简单的汇编语言函数:OSStartHighRdy():使就绪态任务中优先级最高的任务开始运行;OSCtxSw():实现任务级的任务切换功能;OSIntCtxSw():在中断级实现任务间的切换;OSTickISR():时钟节拍中断服务子程序。 (5) μC/OS-II主程序框架:调用任何服务之前,μC/OS-II 要求首先调用系统函数OSInit()初始化所有变量和数据结构,同时建立一个空闲任务。多任务的启动通过OSStart()实现,但启动前至少需建立一个应用任务。当调用OSStart()时,OSStart()从任务就绪表中找出用户建立的优先级最高任务的任务控制块,然后调用任务启动函数,接下来就完全交给实时操作系统来管理,实时内核不断地对任务进行切换调度,管理各个应用任务和系统资源。系统主程序清单如下:
5 实验结果 根据前述控制系统设计,成功研制了一台3.75KVAUPS 样机。以下为该样机实时性、可靠性、稳定性测试运行情况,测试设备与仪表包括:泰克TDS3043B 数字示波器、Gad-2016 失真度测试仪、FLUKE189 数字万用表、FLUKE36 钳型电流表、红外线温度计、负载三相3KW 灯泡(约3.75KW炉丝)。 (1)市电输入380V,负载变化:输出相电压稳定度220V±1%,U 相频率稳定度50Hz±0.4%,波形失真度<2%,其他两相与U 相基本相同,任何两相相位差120°±1°。图5 为空载与满载逆变输出波形。
(a) 空载
(b) 满载 图5 U相输出逆变电压波形。 (2)市电逆变互切,切换时间及可靠性测试:市电输入384V,电池电压490V,3.75KW额定负载运行,市电断电或按下"强起"按钮,逆变器带负载正常启动,启动时间约60ms.市电、逆变切换时间经多次反复试验,均小于120ms.图6 所示为市电到逆变的切换波形,切换时间约60ms,图中波形经检测变压器隔离降压;市电来电,逆变器立即停止工作。
图6 市电到逆变的切换波形 (3)逆变应急长时间工作,输出电压情况测试与系统稳定性验证:电池513V开始放电,带3.75KW炉丝额定负载,运行约80分钟,IGBT及散热器温度始终低于32℃,系统工作正常且稳定,测试参数如表2所示。 表2 逆变运行温升测试
6 结论 本文针对数字化UPS,给出了基于LF2407A 的系统总体设计结构,实现了实时操作系统μC/OS-II在LF2407A 上的移植,对UPS系统任务进行设计和实现调度,给出了部分参数设定和主程序清单。该设计方案已经成功应用于青岛创统3.75KVA 数字化UPS 的设计项目中。实践证明,μC/OS-II 在嵌入式UPS 控制系统中的应用有效地提高了系统控制的实时性以及系统整体可靠性与稳定性。 |