DSP/BIOS在电能质量监测终端中的应用
发布时间:2008/5/27 0:00:00 访问次数:513
摘要 电能质量监测终端系统采用dsp/bios作为系统的实时内核,以任务线程的形式安排各个子功能模块,并为之分配系统资源,最终完成对电网电能质量的实时监测。本文在以dsp/bios作为系统核心的基础上,对系统的实现方法进行了详细的分析和设计。
关键词 tms320f2812 dsp/bios 电能质量 监测终端
dsp(数字信号处理器)在现今的工程应用中使用越来越频繁。其原因主要有三点:第一,它具有强大的运算能力,能够胜任fft、数字滤波等各种数字信号处理算法;第二,各大dsp厂商都为自己的产品设计了相关的ide(集成开发环境),使得dsp应用程序的开发如虎添翼;第三,具有高性价比,相对于它强大的性能,不高的价格有着绝对的竞争力。
ti为本公司的dsp设计了集成可视化开发环境ccs(code composer studio),而dsp/bios是ccs的重要组成部分。它实质上是一种基于tms320系列dsp平台的实时操作系统内核,也是ti公司实时软件技术——express dsp技术的核心部分。dsp/bios主要包含三方面的内容:多线程内核、实时分析工具、外设配置库。
1 系统功能需求
电能质量监测终端主要功能是对电网(三相电压、电流)的电能质量进行实时监测与分析。其主要监测量有:电压、电流有效值,有功、无功功率,电压频率,三相不平衡,各次谐波电压、电流含有率,功率因素,相移功率因素,电压波动,长时间、短时间闪变。
系统选用ti公司的高性能dsp芯片tms320f2812作为处理核心,其150 mips的处理速度足以满足本系统的实时性要求。按照系统需求,将本系统分成以下功能模块:引导自检模块、采集任务执行模块、电能质量数据预处理模块、电能质量分析运算模块、数据存储模块、通信模块、人机交互模块。按照传统的编程方式,这些功能模块将以顺序结构形式组织在一起,各模块之间的调用和切换都由各模块自身的代码来完成,使得应用程序各模块之间处于一种耦合状态。如果要添加新的功能模块或者修改已有的功能模块,不但要修改与之相关模块的调用代码,而且新增模块也会明显影响到原有系统的时间响应特性,使得升级、维护起来相当麻烦。dsp/bios的出现提供了另外一种组织应用程序各功能模块的机制。它将各功能模块作为任务线程来看待,通过可配置的内核服务使各任务线程在系统调度器的安排下按照优先级的高低分时复用cpu资源,各个任务线程之间通过同步、通信、数据交换等进行协调。这种机制使得应用程序可维护性提高,并且提供了更方便、更高级的谪试手段。根据以上特点,本系统采用dsp/bios作为实时内核,并以此为基础对整个系统进行设计。
图1为系统在dsp/bios下的功能模块分类。
2 基于dsp/bios的软件设计
2.1 执行线程规划
系统的实时运行中,一些功能函数由外部控制信号驱动或者按既定周期运行,所以,函数的驱动方式和执行周期对实时系统非常重要。dsp/bios支持多线程应用,线程可以定义为不同的优先级。高优先级线程可以中断低优先级的线程,而且不同的线程之间可以实现交互,比如阻塞、通信和同步,线程分为以下4种类型(优先级由高到低):硬件中断(hwi)、软件中断(swi)、任务(tsk)、后台线程(idl)。按照电能质量监测终端系统的功能需求,将系统各子功能模块分为以上4种类型线程。
首先,安排硬件中断线程(hwi)。一般情况下,系统的主要程序代码放在软件中断或任务中;但是,与外部设备密切相关、实时性要求很高的功能模块程序代码必须放置在硬件中断中。本系统按照上述要求,将以下几个子功能模块设置为硬件中断线程:a/d采集任务模块和通信模块(接收)。a/d采集是本系统的重要基础,并且与系统底层硬件紧密相连,所以将它设置为硬件中断线程(hwi)。其主要流程是:a/d芯片以一定的频率采集电网的实时数据,然后与dsp的mcpsp口进行通信。dsp接收a/d芯片采集的数据,并存储在片内ram的特定区域,为其他线程的运算作好准备。通信模块采用rs485与上位机通信,其与系统的底层硬件密切相关,而且dsp本身的sci接口只有最大16个字的fifo,如不及时对接收数据进行处理,将会造成数据丢失。
下面介绍hwi模块在dsp/bios中的参数设置。mcbsp串口的接收中断放在hwi模块的hwi_int6位置上,并且将接收中断的isr函数ad_rx_isr()填写到hwi_int6中断的函数调用项中;同时选择使用dsp/ri-os的hwi调度功能,当响应mcbsp串口接收中断时,系统将自动调用ad_rx_isr()函数。mcbsp串口接收中断设置如图2所示。与mcbsp串口接收中断设置类似,设置scia接收中断为通信接收中断,将其isr函数scia_rx_isr()填写到hwi_int9中断的函数调用项中。响应接收中断时,系统调用scia_rx_isr()函数进行处理。clk线程也属于hwi硬件中断线程之一,它为整个系统的运行提供了时间基准,为用户周期性
摘要 电能质量监测终端系统采用dsp/bios作为系统的实时内核,以任务线程的形式安排各个子功能模块,并为之分配系统资源,最终完成对电网电能质量的实时监测。本文在以dsp/bios作为系统核心的基础上,对系统的实现方法进行了详细的分析和设计。
关键词 tms320f2812 dsp/bios 电能质量 监测终端
dsp(数字信号处理器)在现今的工程应用中使用越来越频繁。其原因主要有三点:第一,它具有强大的运算能力,能够胜任fft、数字滤波等各种数字信号处理算法;第二,各大dsp厂商都为自己的产品设计了相关的ide(集成开发环境),使得dsp应用程序的开发如虎添翼;第三,具有高性价比,相对于它强大的性能,不高的价格有着绝对的竞争力。
ti为本公司的dsp设计了集成可视化开发环境ccs(code composer studio),而dsp/bios是ccs的重要组成部分。它实质上是一种基于tms320系列dsp平台的实时操作系统内核,也是ti公司实时软件技术——express dsp技术的核心部分。dsp/bios主要包含三方面的内容:多线程内核、实时分析工具、外设配置库。
1 系统功能需求
电能质量监测终端主要功能是对电网(三相电压、电流)的电能质量进行实时监测与分析。其主要监测量有:电压、电流有效值,有功、无功功率,电压频率,三相不平衡,各次谐波电压、电流含有率,功率因素,相移功率因素,电压波动,长时间、短时间闪变。
系统选用ti公司的高性能dsp芯片tms320f2812作为处理核心,其150 mips的处理速度足以满足本系统的实时性要求。按照系统需求,将本系统分成以下功能模块:引导自检模块、采集任务执行模块、电能质量数据预处理模块、电能质量分析运算模块、数据存储模块、通信模块、人机交互模块。按照传统的编程方式,这些功能模块将以顺序结构形式组织在一起,各模块之间的调用和切换都由各模块自身的代码来完成,使得应用程序各模块之间处于一种耦合状态。如果要添加新的功能模块或者修改已有的功能模块,不但要修改与之相关模块的调用代码,而且新增模块也会明显影响到原有系统的时间响应特性,使得升级、维护起来相当麻烦。dsp/bios的出现提供了另外一种组织应用程序各功能模块的机制。它将各功能模块作为任务线程来看待,通过可配置的内核服务使各任务线程在系统调度器的安排下按照优先级的高低分时复用cpu资源,各个任务线程之间通过同步、通信、数据交换等进行协调。这种机制使得应用程序可维护性提高,并且提供了更方便、更高级的谪试手段。根据以上特点,本系统采用dsp/bios作为实时内核,并以此为基础对整个系统进行设计。
图1为系统在dsp/bios下的功能模块分类。
2 基于dsp/bios的软件设计
2.1 执行线程规划
系统的实时运行中,一些功能函数由外部控制信号驱动或者按既定周期运行,所以,函数的驱动方式和执行周期对实时系统非常重要。dsp/bios支持多线程应用,线程可以定义为不同的优先级。高优先级线程可以中断低优先级的线程,而且不同的线程之间可以实现交互,比如阻塞、通信和同步,线程分为以下4种类型(优先级由高到低):硬件中断(hwi)、软件中断(swi)、任务(tsk)、后台线程(idl)。按照电能质量监测终端系统的功能需求,将系统各子功能模块分为以上4种类型线程。
首先,安排硬件中断线程(hwi)。一般情况下,系统的主要程序代码放在软件中断或任务中;但是,与外部设备密切相关、实时性要求很高的功能模块程序代码必须放置在硬件中断中。本系统按照上述要求,将以下几个子功能模块设置为硬件中断线程:a/d采集任务模块和通信模块(接收)。a/d采集是本系统的重要基础,并且与系统底层硬件紧密相连,所以将它设置为硬件中断线程(hwi)。其主要流程是:a/d芯片以一定的频率采集电网的实时数据,然后与dsp的mcpsp口进行通信。dsp接收a/d芯片采集的数据,并存储在片内ram的特定区域,为其他线程的运算作好准备。通信模块采用rs485与上位机通信,其与系统的底层硬件密切相关,而且dsp本身的sci接口只有最大16个字的fifo,如不及时对接收数据进行处理,将会造成数据丢失。
下面介绍hwi模块在dsp/bios中的参数设置。mcbsp串口的接收中断放在hwi模块的hwi_int6位置上,并且将接收中断的isr函数ad_rx_isr()填写到hwi_int6中断的函数调用项中;同时选择使用dsp/ri-os的hwi调度功能,当响应mcbsp串口接收中断时,系统将自动调用ad_rx_isr()函数。mcbsp串口接收中断设置如图2所示。与mcbsp串口接收中断设置类似,设置scia接收中断为通信接收中断,将其isr函数scia_rx_isr()填写到hwi_int9中断的函数调用项中。响应接收中断时,系统调用scia_rx_isr()函数进行处理。clk线程也属于hwi硬件中断线程之一,它为整个系统的运行提供了时间基准,为用户周期性