访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
基于μC/OS-II的备用电源自动投入装置设计
内容导读:

摘要 备自投装置是电力系统中常用的一种安全自动装置,在发电厂和变电站及配电网络中得到广泛的应用。本文引入嵌入式操作系统μC/OS-II,将它移植到以TMS320F240 DSP和Xilinx CPLD为核心设计的新型备自投装置的硬件平台上,并详细介绍该装置的任务划分和任务调度。

关键词 μC/OS-II 电源投切装置 任务划分 任务调度 移植

引言

  备用电源自动投入装置是当工作电源因故障断开以后,能自动而迅速地将备用电源投入到工作或将用户切换到备用电源上去,从而使用户不至于被停电的一种自动装置,简称备自投。

  备自投装置作为电力系统中常用的一种安全自动装置,其发展与继电保护装置一样经过了电磁(整流)型、晶体管型、集成电路型和微机型四个主要阶段。究其本质,各阶段的主要技术区别在于对采集量(电流量、电压量、开关量)的运算方式和逻辑功能的实现方式上有所不同。目前,以微机型备用电源自投装置为应用主流,它将电流量、电压量等模拟量通过VFC(压频变换器)元件或ADC元件转换为数字量送到装置的数据总线上,通过预设程序对数字量和开关量进行综合逻辑分析,并根据分析结果作用于相关断路器,从而实现自动切换功能。

  DSP芯片也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。

  本文采用μC/OS-II作为软件平台的操作系统,它是一种优先级占先式内核,具有多任务的实时调度能力,更加适合管理DSP丰富的外设资源,从而更好地发挥其高效的运算性能,满足备自投装置实时性、可靠性等要求。

1  μC/OS-II的移植与配置

  为了方便移植,大部分μC/OS-II的代码是用C语言编写的,但底层与处理器硬件相关的少量代码仍使用汇编语言编写。这是因为μC/OS-II在读写处理器寄存器时,只能通过汇编语言。图1说明了μC/OS-II的结构以及与硬件的关系。

  首先,修改与TMS320F240相关的文件OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C,再加上其公开的系统源代码,将它们一起拷入指定的文件目录,系统的移植就完成了。系统移植成功后,需要对操作系统进行裁剪,把用不到的功能去掉,以最大限度地节省存储空间。这项工作是通过OS_CFG.H中的宏定义进行的,本文用到多任务管理、信号量、互斥量等功能。在本应用中,μC/OS-II内核经过剪裁后只有2 KB左右,相对TMS320F240的16 KB内部程序Flash只用了不到八分之一。下面是测试内核能否正常工作的应用程序。测试结果如图2所示,表明移植成功。

图1  μC/OS-II硬件和软件体系结构

图2  测试结果

#include"os_cpu.h"
#include"os_cfg.h"
#include"ucosII.h"
#include"register.h"
#include"stdio.h"
#define TASK_STACK_SIZE512
OS_STK TestTaskStk[TASK_STACK_SIZE];
OS_STK TaskStk[TASK_STACK_SIZE];
OS_STK Task1Stk[TASK_STACK_SIZE];
OS_STK Task2Stk[TASK_STACK_SIZE];
OS_EVENT*AckMbox;
OS_EVENT*TxMbox;
void main(void) {
  HardwareInit();
  T2PInit();//硬件初始化
  OSInit();
  printf("Inital End.\n");
  OSTaskCreate(TestTask,(void *)0,&TestTaskStk[0],0);
  printf("MultiTask Start...\n");
  OSStart();
}
void TestTask(void *pdata) {
  pdata=pdata;
  *T2CON =0x0040;//使能TIMER2
  AckMbox=OSMboxCreate((void *)0);
  //创建两个邮箱用于任务间同步与通信
  TxMbox=OSMboxCreate((void *)0);
  OSTaskCreate(Task1,(void *)0,&Task1Stk[0],2);//创建任务1
  OSTaskCreate(Task2,(void *)0,&Task2Stk[0],3);//创建任务2
    printf("I am taskStart!\n");
  OSTimeDly(2);
  }
voidTask1(void *pdata) {//任务1
  unsigned char *err;
  char txmsg;
  pdata=pdata;
  txmsg='A';
  for(;;){
  while(txmsg<='Z'){
    OSMboxPost(TxMbox,(void*)&txmsg);
    //发送消息给任务2
    printf("I am task1!tsmsg=%c\n",txmsg);
    OSMboxPend(AckMbox,0,err);//等待任务2的确认
    txmsg++;
  }
}
}
void Task2(void *pdata) {
  unsigned char *err;
  char *rxmsg;
  pdata=pdata;
  for(;;){
    rxmsg=(char*)OSMboxPend(TxMbox,0,err);
    //等待任务1的消息
    printf("I am task2!tsmsg=%c\n",*rxmsg);
    OSTimeDly(1);
    OSMboxPost(AckMbox,(void*)1);
    //告知任务1已经得到消息
  }
}

2  新型背自投动作逻辑的运行背景与硬件平台

  该动作逻辑适用的接线方式是:2条进线、分段母线带内桥和2台三圈变压器。具体如图3所示。

图3  主接线图

  其中U1ab反映进线1有无电压,I1反映进线1有无电流,U1AB、U1BC反映母线1段有无电压,U1CA反映主变1有无电压;U2ab反映进线2有无电压,I2反映进线2有无电流,U2AB、U2BC反映母线2段有无电压,U2CA反映主变2有无电压。

  根据动作逻辑和其自适应性,本装置需要采集8路开入量:断路器1的KKJ位置和TWJ位置;断路器2的KKJ位置和TWJ位置;断路器3的KKJ位置和TWJ位置;主变1保护动作信号量ACT1;主变2保护动作信号量ACT2。同时,需要5路开出量:断路器1的跳闸命令和合闸命令;断路器2的跳闸命令和合闸命令;断路器3的合闸命令。

  本装置以TMS320F240 DSP和Xilinx CPLD为核心设计其硬件平台,根据备自投装置的要求,系统要实现以下功能:键盘输入、参数显示、模拟量采集、开关量输入输出、看门狗单元以及通信等。

表1  备自投装置任务划分与优先级分配表

  装置采集进线和主变的8路电压量和2路电流量以及继电器和主变保护的开关位置状态,并跟踪变电站系统当前的运行方式,自动判断是否满足充电、放电及动作条件,之后发跳合闸命令,完成动作逻辑。通过现场二次互感器引入各路电压电流模拟信号量,并采集现场的位置开关和节点信号。其继电器动作信号输出端与现场控制线路开关投切的继电器连接。系统运行过程中实时显示电流、电压、开关量等参数,并可以通过键盘对控制器进行参数在线设定。装置结构框图如图4所示。

图4  装置硬件结构框图

3  任务划分与任务调度

3.1  任务划分

  由于μC/OS-II是抢占式任务调度方式,并且要求每个任务的优先级唯一,所以在进行任务划分、任务优先级确定的时候,必须仔细衡量各任务之间对共享资源的操作要求,避免产生优先级反转或系统死锁的问题。另外,正确的任务划分和优先级分配可以充分体现嵌入式操作系统任务调度算法的效率,从而提高整个程序的实时性能。根据任务分解规则和装置系统功能的特点,可以将装置任务模块分解为以下几个任务,如表1所列。

  考虑到数据定时采样和开关量输入任务是数据处理和准确动作判断的基础,实时性要求很高,所以在DSP硬件定时中断中完成,程序具体实现如下:

interrupt void int2(void) {/*通用定时器1启动A/D转换*/
  if (*EVIVRA==0x0027) {
    asm("setc INTM");/*关中断*/
    *IFR =0x0002 ;/*清除IFR的中断标志位*/
    *EVIFRA = 0x07ff;/*清除定时器1的中断标志位,为下一次中断做好准备*/
    ADConvert(); /*数据采样任务*/
    asm("clrc INTM");/*开中断*/
  }
  return;
}

图5  基于μC/OS-II的备自投的任务状态和任务切换示意图

3.2  任务调度

  μC/OS-II中,每个任务都处于休眠态、就绪态、运行态、挂起态和中断态5种状态之一。如图5所示,当前运行的是开关量输出任务,数据处理动作判断任务因为等待数据定时采样任务发出的信号量sem1而处于挂起态。当数据定时采样中断发生时,内核进行任务切换,就绪态任务中数据定时采样任务优先级最高,所以进入运行态。当完成采样时,发出信号量sem1给数据处理动作判断任务,使其就绪,并且成为就绪态任务中优先级最高的任务,转入运行态。此时,开关量输出任务等待信号量sem2处于挂起态,当数据处理完毕后,发信号量sem2,开关量输出任务得到该信号量后进入就绪态。因为当前运行任务的优先级低于开关量输出任务,所以立即运行开关量输出任务。

结语

  本装置投入运行以来,一直很稳定,取得了良好的运行效果,显示了高可靠性、安全性和实时性。多任务操作系统思想的运用改变了传统的嵌入式开发过程,使备自投装置具有足够的通用性和可扩展性。同时,这种应用嵌入式操作系统作为软件平台的设计对其他微机控制保护装置也有一定的借鉴意义。

参考文献

1  Jean Labrosse. μC/OSII—源代码公开的实时嵌入式操作系统.邵贝贝等译.北京:中国电力出版社,2001
2  Jean Labrosse. 嵌入式实时操作系统μC/OSII. 第2版.邵贝贝等译. 北京:北京航空航天大学出版社,2003
3  杨麟祥,岳继光,苏永清.实时内核μC/OSII在TMS320F240上的移植.计算机工程与应用,2004
4  邓洁清. 嵌入式实时操作系统在中低压综合测控保护装置的应用研究. 电力自动化设备, 2004(6)
5  宁改娣,杨拴科. DSP控制器原理及应用. 北京:科学出版社,2002

 
标签:
来源:单片机与嵌入式系统应用 作者:东南大学 徐金玲 郑建勇 时间:2006/2/12 0:00:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐