基于_C_OS_II的备用电源自动投入装置设计
56 200519
基于μ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 只用了不到八分之一。下面是测试
图 1 μC/ OS II硬件和软件体系结构
200519 Microcontrollers & Embedded Systems 57
内核能否正常工作的应用程序。测试结果如图 2 所示 ,表
明移植成功。
图 2 测试结果
# include "os_cpu. h"
# include "os_cfg. h"
# include " ucos II. h"
# include " register. h"
# include " stdio. h"
# define TASK_STACK_SIZE 512
OS_STK Test TaskStk[ TASK_STACK_SIZE] ;
OS_STK TaskStk[ TASK_STACK_SIZE] ;
OS_STK Task1Stk[ TASK_STACK_SIZE] ;
OS_STK Task2Stk[ TASK_STACK_SIZE] ;
OS_EVEN T 3 AckMbox ;
OS_EVEN T 3 TxMbox ;
void main(void) {
HardwareInit () ;
T2PInit () ; / / 硬件初始化
OSInit () ;
printf (" Inital End. \ n") ;
OSTaskCreate( Test Task , (void 3 ) 0 , &Test TaskStk[0 ] ,0) ;
printf (" Multi Task Start. . . \ n") ;
OSStart () ;
}
void Test Task(void 3 pdata) {
pdata = pdata ;
3 T2CON| = 0x0040 ; / / 使能 TIMER2
AckMbox = OSMboxCreate( (void 3 ) 0) ;
/ / 创建两个邮箱用于任务间同步与通信
TxMbox = OSMboxCreate( (void 3 ) 0) ;
OSTaskCreate (Task1 ,(void 3 )0 , &Task1Stk[0] ,2) ;/ / 创建任务 1
OSTaskCreate (Task2 ,(void 3 )0 , &Task2Stk[0] ,3) ;/ / 创建任务 2
printf (" I am taskStart ! \ n") ;
OSTimeDly(2) ;
}
void Task1 (void 3 pdata) { / / 任务 1
unsigned char 3 err ;
char txmsg ;
pdata = pdata ;
txmsg =' A' ;
for ( ; ;) {
while (txmsg < =' Z') {
OSMboxPost ( TxMbox ,(void 3 ) &txmsg) ;
/ / 发送消息给任务 2
printf (" I am task1 ! tsmsg = %c\ n" ,txmsg) ;
OSMboxPend(AckMbox ,0 ,err) ; / / 等待任务 2 的确认
txmsg + + ;
}
}
}
void Task2 (void 3 pdata) {
unsigned char 3 err ;
char 3 rxmsg ;
pdata = pdata ;
for ( ; ;) {
rxmsg = (char 3 ) OSMboxPend( TxMbox ,0 ,err) ;
/ / 等待任务 1 的消息
printf (" I am task2 ! tsmsg = %c\ n" , 3 rxmsg) ;
OSTimeDly(1) ;
OSMboxPost (AckMbox , (void 3 ) 1) ;
/ / 告知任务 1 已经得到消息
}
}
2 新型背自投动作逻辑的运行背景与硬件平台
该动作逻辑适用的接线方式是 :2 条进线、分段母线
带内桥和 2 台三圈变压器。具体如图 3 所示。
图 3 主接线图
其中 U1ab 反映进线 1 有无电压 ,I1 反映进线 1 有无
电流 ,U1AB、U1BC 反映母线 1 段有无电压 ,U1CA 反映
58 200519
主变 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 备自投装置任务划分与优先级分配表
序号 任务划分 优先级 说 明
1 数据定时采样
和开关量输入 2 实时性要求很高 ,在 DSP 硬件定时中断中完成 ;
POST(sem1) ,发信号量 1 给数据处理任务
2 数据处理和
动作判断 1 PEND(sem1) ,由数据采样任务发来的信号量来触发 ;
POST(sem2) ,发信号量 2 给开关量输出任务
3 开关量输出 0 PEND(sem2) ,根据动作判断模块的判断结果输出开关
量 ,从而达到保护电力系统设备的目的 ,其优先级最高
4 通信 3 采用了信号量触发机制 ,平时处于休眠状态 ,等待通信
中断服务子程序发出信号量 ;如果得到信号量则执行
5 人机接口 4 其优先级较低 ,利用系统函数 OSTimeDly() 每隔一段时
间运行一次
6 自检 5 其优先级最低 ,在 CPU 空闲时间运行
装置采集进线和主变的 8 路电压量
和 2 路电流量以及继电器和主变保护的
开关位置状态 ,并跟踪变电站系统当前的
运行方式 ,自动判断是否满足充电、放电
及动作条件 ,之后发跳合闸命令 ,完成动
作逻辑。通过现场二次互感器引入各路
电压电流模拟信号量 ,并采集现场的位置
开关和节点信号。其继电器动作信号输
出端与现场控制线路开关投切的继电器
连接。系统运行过程中实时显示电流、电
压、开关量等参数 ,并可以通过键盘对控
制器进行参数在线设定。装置结构框图
如图 4 所示。
图 4 装置硬件结构框图
3 任务划分与任务调度
3. 1 任务划分
由于μC/ OS II 是抢占式任务调度
方式 ,并且要求每个任务的优先级唯一 ,
所以在进行任务划分、任务优先级确定
的时候 ,必须仔细衡量各任务之间对共
享资源的操作要求 ,避免产生优先级反
转或系统死锁的问题。另外 ,正确的任
务划分和优先级分配可以充分体现嵌入
式操作系统任务调度算法的效率 ,从而
提高整个程序的实时性能。根据任务分
解规则和装置系统功能的特点 ,可以将
装置任务模块分解为以下几个任务 ,如
表 1 所列。
考虑到数据定时采样和开关量输入
任务是数据处理和准确动作判断的基础 ,实时性要求很
高 ,所以在 DSP 硬件定时中断中完成 , 程序具体实现
如下 :
interrupt void int2 (void) { / 3 通用定时器 1 启动 A/ D 转换 3 /
if ( 3 EVIVRA = = 0x0027) {
asm(" setc IN TM") ; / 3 关中断 3 /
3 IFR = 0x0002 ; / 3 清除 IFR 的中断标志位 3 /
3 EVIFRA = 0x07ff ;
/ 3 清除定时器 1 的中断标志位 ,为下一次中断做好准备 3 /
ADConvert () ; / 3 数据采样任务 3 /
asm("clrc IN TM") ; / 3 开中断 3 /
}
return ;
}
200519 Microcontrollers & Embedded Systems 59
图 5 基于μC/ OS II的备自投的任务状态和任务切换示意图
3. 2 任务调度
μC/ OS II 中 ,每个任务都处于休眠态、就绪
态、运行态、挂起态和中断态 5 种状态之一。如图 5
所示 ,当前运行的是开关量输出任务 ,数据处理动
作判断任务因为等待数据定时采样任务发出的信
号量 sem1 而处于挂起态。当数据定时采样中断发
生时 ,内核进行任务切换 ,就绪态任务中数据定时
采样任务优先级最高 ,所以进入运行态。当完成采
样时 ,发出信号量 sem1 给数据处理动作判断任务 ,
使其就绪 ,并且成为就绪态任务中优先级最高的任
务 ,转入运行态。此时 ,开关量输出任务等待信号
量 sem2 处于挂起态 ,当数据处理完毕后 ,发信号量
sem2 ,开关量输出任务得到该信号量后进入就绪态。因
为当前运行任务的优先级低于开关量输出任务 ,所以立即
运行开关量输出任务。
结 语
本装置投入运行以来 ,一直很稳定 ,取得了良好的运
行效果 ,显示了高可靠性、安全性和实时性。多任务操作
系统思想的运用改变了传统的嵌入式开发过程 ,使备自投
装置具有足够的通用性和可扩展性。同时 ,这种应用嵌入
式操作系统作为软件平台的设计对其他微机控制保护装
置也有一定的借鉴意义。
参考文献
1 Jean Labrosse. μC/ OS II —源代码公开的实时嵌入式操作
系统. 邵贝贝等译. 北京 :中国电力出版社 ,2001
2 Jean Labrosse. 嵌入式实时操作系统μC/ OS II. 第 2 版. 邵
贝贝等译. 北京 :北京航空航天大学出版社 ,2003
3 杨麟祥 ,岳继光 ,苏永清. 实时内核μC/ OS II 在 TMS320F240
上的移植. 计算机工程与应用 ,2004
4 邓洁清. 嵌入式实时操作系统在中低压综合测控保护装置的
应用研究. 电力自动化设备 , 2004 (6)
5 宁改娣 ,杨拴科. DSP 控制器原理及应用. 北京 :科学出版
社 ,2002
(收稿日期 :2005204205)
55
Msw_Mail_Receive 等来使用邮件交换系统。使用邮件交
换系统的前提是系统至少有一个空闲的动态缓存区。在
初始化邮件系统时 ,函数占据编号最高的动态缓存区。
(3) 软件编程
软件编程的主要功能是 :电子标签在通信器的监测范
围内被检测 ,生成标签记录 ,通信器将标签记录以邮件的
形式发给主机 ;主机处理接收到的邮件 ,将处理的结果储
存在主机数据库中 ,数据库选用 SQL Server2000 , 并在大
屏幕中显示。
在该系统中 ,利用 CONFIDEN T 软件库提供的邮件
交换系统实现通信器 S1513 与主机的通信。主要功能是
主机接收到通信器发送来的标签事件后 ,处理邮件内容 ,
并将与标签对应的矿井工人的个人基本信息、位置、时间
放到主机 SQL Server2000 数据库中。为了避免主机和通
信器同时控制串行口而产生矛盾 ,系统规定每当空格键被
按下时 ,改变通信器的安静模式。通信器在安静模式时阅
读标签事件 ,并将标签数据通过邮件发送给主机 ,主机通
过邮件将通信器设置为非安静模式 ,并在通信器为非安静
模式时读取标签数据邮件。在程序实现时 ,利用定时器事
件 ,主机应用程序每隔 30 s 自动输入空格键来达到此
目的。
3 对系统的必要说明
本系统重点是确保出现矿井事故时 ,能够第一时间知
道矿工较准确的位置 ,所以可以在阅读器电路扩展 USB
接口 ,矿工可以通过插入即插即用设备 ,以便求救。
参考文献
1 彭月平 ,等. 基于通信器 S1503 的门禁系统的设计. 电子技
术应用 ,2003 (3)
2 彭月平 ,等. 长距离通信器 S1503 的应用编程原理. 单片机
与嵌入式系统应用 ,2003 (1)
3 TagMaster AB. S1513 XL R 阅读器
4 TagMaster AB. 04 018 01 PS S1255 简介
孙丽娜 ,硕士研究生 ,研究方向电磁兼容。
(收稿日期 :2005204218)
基于_C_OS_II的备用电源自动投入装置设计.pdf