基于DSP和μC/OS-II操作系统的双CPU架构实现微机保护装置的设计

处理器/DSP

892人已加入

描述

微机保护装置对电力系统的安全稳定运行起着至关重要的作用。随着电力网络的日趋庞大,尤其是算法的日趋复杂,一般的微型计算机很难满足速度上的要求,此外随着电力系统自动化水平的提高,网络的通信和前沿的监测都需要保护装置来承担,从而对保护装置的CPU要求越来越高。本文介绍一种基于DSP和ARM的双CPU架构的微机保护平台。将DSP强大的数据处理能力和ARM出色的控制能力结合起来,并且通过CPLD实现两CPU间的数据交换,以此保证继电保护装置的可靠运行。

1 硬件设计

本装置适用于35 kV变电站及其以下电压等级的厂站系统,实现保护、测量、控制、通信监控、故障记忆、自诊断、人机交互等功能。装置内部采用插件结构,各插件之间实现电气联系,装置内部包含五块插件:显示插件、CPU插件、模拟量采集插件、开入量与电源插件,以及开出量插件。系统框图如图1所示。

cpu

该硬件平台采用双CPU结构,且CPU间不分主从各自独立运行,每个CPU有单独的电源供电,各模块系统相关性少,工作运行独立。其中ARM主要用来实现人机界面、电能计量、时钟较准以及通信等功能。DSP利用其自身运算速度快、擅长数字处理的特点,主要实现模拟量的采集、滤波、继电保护算法以及出口控制等功能。

模拟量采集模块共采样12路模拟量,从现场互感器的二次侧将电信号引入装置内部互感器,经过调理滤波、多路转换开关CD4053和模数转换器AD7656转换成数字信号,然后实现FFT运算和各种保护算法。测量信号通过调理电路直接输入ADE7758。

开关量及电源模块。接口电路一律采用光耦隔离,避免外界干扰进入CPU模块。电源模块采用两级供电的方式,首先经一层AC/DC将220 V电压转换成直流5 V、7.5 V、24 V的电压,然后再经过一层DC/DC,将电压转换成+3.3 V和+1.8 V供器件使用。

看门狗电路以及存储器模块。本装置采用双CPU单独复位。看门狗采用CAT1161,因其无上电复位功能,所以在复位端应另加RC复位电路。此外给DSP和ARM分别外扩了一片512 K的RAM和一片256 K的铁定存储器FM31256。其中铁定存储器为I2C接口,因其非易失性用来存储一些设定值和故障录播数据,FM31256内部具有时钟伴侣功能同时为系统提供实时时钟。

通信模块,装置包括两个以太网接口,一路485和一路CAN接口。一路以太网实现与站控层连接,另外一路可以单独组网构成故障信息传输专网。在一些网络环境较差,距离较短的场合下可直接使用485,CAN总线实现与变电站的通信。此外为了减少时间误差,确保装置的可靠性,不同场站的各台装置都装设GPS对时接口。

装置除以上各模块以外还有人机交互模块和电能计量模块,人机界面采用320×240大屏幕彩色LCD显示器,配有3×2的按键。同时还有6个LED显示灯来反应装置的运行情况。电能模块采用ADE7758,采用SPI接口,通过校准可直接读出有功、无功和视在功率。

2软件设计

2.1 ARM部分软件设计

ARM部分采用嵌入式操作系统μC/OS-II作为软件平台,μC/OS-II是一种源码公开的实时操作系统,具有易移植、可靠稳定等特点。图2为ARM部分软件框图。

cpu

μC/OS-II的移植非常简单,只需修改下面3个文件:

OS_CPU.H文件:定义数据类型和堆栈增长方向,这一部分与所使用的编译器有关。

OS_CPU_C.C文件:该文件定义在堆栈增长方向上寄存器保存的位置,该文件还需要实现几个操作系统所规定的hook函数。通常都设计为空函数。

OS_CPU A.S文件:该文件由汇编语言实现,主要负责任务切换、临界区指令定义以及时钟中断函数的处理。

一个任务与其他任务或者中断服务程序之间信息的交换有两种途径,一是通过全局变量另一个是采用消息队列或者消息邮箱。用全局变量时,必须保证每个任务或者中断服务子程序独享该变量。中断服务中保证独享的唯一办法就是关中断。如果两个任务共享某变量,各任务实现独享的方法可以是先关中断再开中断或者是使用信号量。任务只能通过全局变量与中断服务程序之间通信,而任务并不知道何时全局变量被中断,服务程序修改了,除非中断服务程序以信号量方式向任务发信号,或者该任务不断地周期性地查询该变量。为避免这种情况,可考虑使用邮箱和消息队列。任务或中断服务程序通过内核服务,把一则消息(一个指针)放到邮箱里,一个或多个任务可以接收到该消息(指针指向的内容就是该消息)。消息队列实际上是邮箱阵列,遵循先进先出原则,当任务等待某个消息一定时限后,该任务自动进入就绪态并开始运行,同时返回错误代码。

各任务的切换通过内核来调度,内核的调度一般是基于优先级的,CPU总是让处于就绪态且任务优先级最高的任务运行。任务的优先级一般根据各任务间的关联性、任务的关键性以及任务执行频繁性来选定。在系统运行的过程中可能发生任务调度的时机有:

(1)对任务操作时,包括创建或删除任务、挂起或恢复任务,改变任务的优先级。

(2)任务主动使用OSTimeDly函数延时时。

(3)发送(或等待)信号量、邮箱、消息时。

(4)中断函数返回时,优先级最高的任务进入运行状态。

本系统总共有5个任务,各任务之间的关系如图2所示,任务功能如表1所示,系统通过定时中断服务程序释放信号量定时扫描显示任务和电度采样任务。因为LCD显示的是BCD码,所以定值设定好以后系统通过消息队列通知数据处理任务将BCD码转换成二进制数传送给DSP,ARM接收到DSP传送的信息以及ADE7758所测的电度值和上位机下发的数据包后也要通过数据处理任务解包并转换成BCD码显示。当系统发生故障时,DSP发送故障信息,ARM接收到故障信息以后通过信号量,主动进行录播、上传以及显示故障信息。运行人员可通过键盘输入利用全局变量来设置通信端口的IP地址、MAC地址、波特率以及装置地址等。

cpu

2.2 DSP部分软件设计

DSP部分因任务较少采用前后台程序,运行速度快。图3为DSP部分软件框图。本套装置充分利用了DSP强大的中断功能和高效的数据处理能力。在程序开始时,DSP向ARM请求定值和时间。设置采样周期,每个周期采样32点,以工频50 Hz为例,采样周期为0.625 ms。一个周期内必须完成模拟量的采集、fft运算、算法判断、开关量的读入以及与ARM的通信等功能。

cpu

2.3双CPU通信部分软件设计

双CPU间的通信是本系统实现的关键,两CPU虽然独立运行,但运行时需要大量的数据进行交换。因为两CPU的运行速度不一致,而数据在传输过程中必须要保持同步,两CPU间数据交换和通信是影响整个系统正常工作的重要环节。

CPU间的通信大致可分为:并行通信和串行通信。本装置对实时性要求较高且数据传输量较大,所以采用的是一种基于CPLD的并行通信。如图4所示,在CPLD内部实现一对D触发器(74HC74),其中DSP_H1端接DSP的GPIO口,ARM_H2接ARM的一个中断引脚。系统在初始化或者复位后,DSP和ARM各空读一次,使得DSP_H2(DSP的输入缓冲器满信号,图中未画出)和ARM_H2无效(低电平)。当DSP开始写时,写选通经过反相器后形成一个上升沿触发D触发器,引起ARM_H2状态改变通知ARM写操作完成,可以开始读数据,同时在写完时使DSP_H1变低,为下一次写操作做准备。ARM开始读,当ARM将一次数据读走后,ARM的读选通端形成一个上升沿,触发D触发器,使DSP_H1状态改变(变为高电平)通知DSP读操作完成,同时将ARM_H2变低为下一次读操作做准备。ARM向DSP传输数据时的握手信号原理同上。

cpu

接收数据通过中断来实现如图5所示。当进入中断服务程序后,CPU应先关中断将外部中断引脚设置成GPIO口,通过查询方式接收数据以避免因多次中断造成的系统崩溃。数据接收完后,再将GPIO口设置为中断引脚,开放中断。如果CRC校验码验证错误,接收方重新发送请求命令。发送数据是通过查询输出缓冲器状态来发送数据,发送数据时如果发送方输出缓冲器在20个指令周期内无效,则退出发送程序。

cpu

CPU间数据传输时,先发送命令字,高字节为数据类型如表2所示,低字节为数据长度,数据发送完后,发一个字的CRC校验码。如图6所示。

cpu

cpu

无论数据接收方还是发送方均采用循环队列作为缓冲区,这样可以避免CPU在处理数据时被新的数据冲掉,使数据交换更加可靠,其数据结构如下:

struct CPU_IN_OUT

{

struct CPU_IN_OUT *next;

uint16 com_len;//命令字

uint16 data[120]; //数据区

uint16 CRC; //CRC校验码

};

上述方法在软硬件上均已实现,各种试验表明本文所介绍的双CPU间的通信方法,传输数据稳定可靠。从现场运行的状况来看各种功能基本实现,动作可靠、灵敏度高、抗干扰能力强,具有极好的推广价值。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分