微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 一种基于实时操作系统μC/OS-II的嵌入式UPS系统控制方案

一种基于实时操作系统μC/OS-II的嵌入式UPS系统控制方案

时间:12-08 来源:互联网 点击:

来区分各函数。其定义格式如下:

  __swi (0x00) void OS_TASK_SW(void);//任务切换函数

  其中,swi 为软中断标志,0x00 是分配的中断号,OS_TASK_SW 是函数名,两个void 分别表示返回类型和参数类型。其它的底层函数接口定义与此相似。

  (2)修改OS_CPU_C.C:初始化任务堆栈函数和软中断函数的实现。修改OSTaskStkInit()函数,代码如下:

  OS_STK *OSTaskStkInit (void (*task)(void*pd), void *pdata, OS_STK *ptos, INT16U opt)

  { 模拟带参数(pdata)的函数调用;定义任务堆栈;使用满栈递减方式初始化任务堆栈结构;返回堆栈结构;}

  软中断函数的实现:

  void SWI_Exception(int SWI_Num, int *Regs)

  { /*根据不同Num 值(功能号)跳转到不同的底层服务函数地址,如:*/ case 0x00:任务切换函数OS_TASK_SW;}

  (3)修改OS_CPU_A.S:包括4 个简单的汇编语言函数:OSStartHighRdy():使就绪态任务中优先级最高的任务开始运行;OSCtxSw():实现任务级的任务切换功能;OSIntCtxSw():在中断级实现任务间的切换;OSTickISR():时钟节拍中断服务子程序。  4 数字化UPS任务设计及调度

  控制软件主程序流程图如图3 所示。通过对UPS控制系统结构与功能的分析,各部分控制功能划分为不同优先级的任务,由μC/OS-II实时内核进行调度,实现多任务并行执行。

图 3 主程序流程图

  (1)数字化UPS 任务设计:如表1 所示,采用层次化、模块化的设计思想,根据各个任务的重要性和实时性,把用户程序分成9 个不同优先级的任务,包括数据采集及PWM 波计算、锁相同步、通信处理、系统参数计算、系统状态检测及处理、键盘扫描、键盘处理、液晶显示、空闲任务。任务越重要,实时性越强,任务优先级越高。空闲任务不执行任何功能,一直处于就绪状态,只有其他任务空闲时才执行。

表1 数字化UPS任务功能及其描述

  (2) μC/OS-II 任务调度:完成任务在运行态、就绪态、挂起态、休眠态以及中断态之间的转换,是实时多任务操作系统运作的核心功能,流程如图4所示。μC/OS-II 的任务调度是基于优先级的抢占式调度算法,系统共有9个任务和3个中断。系统在任务控制块(OS_TCB)中分配一个字(OSTCBPrio)来表示每个任务的优先级,数值越小优先级越高。当发生任务调度时,系统通过任务就绪表查找到优先级最高的任务后,调用函数OS_TASK_SW()完成任务切换。

  (3) 数字化UPS 中断:设计3 个硬件中断,一个是AD 采样中断,优先级最高,采用自适应频率方式每周期采样32 个点;另一个是系统时钟节拍中断,优先级次之,每10ms中断一次作为系统时钟;最后是通信中断,优先级低,当接收到外部数据时,便发生中断并对接收的数据进行处理。

  (4)任务间通信与同步:采用访问共享数据资源的方式实现多任务间的通信,采用信号量进行任务间的同步。为实现任务间的同步,本软件系统建立了3个信号量:

  数据计算信号量OSPWMCntSem,用于任务1和数据采集PWM 波计算子程序通信。每完成一次中断采样便发出这个信号量,告诉任务1对 采集数据和PWM波进行计算处理。

图4 任务调度流程图。

  通信信号量OSComSem,用于任务3 和通信中断子程序进行通信。一旦接收到上位机发过来的信号,中断子程序就发出这个信号量,告诉任务4对接收数据进行处理。

  键盘信号量OSKeySem,用于任务6 和任务7 通信,一旦扫描到有键按下则发出该信号量告诉任务7做键盘处理。

  (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额定负载运

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top