摘要:随着硬件技术的快速发展,嵌入式软件的复杂性也随之增加,并且要求缩短软件开发周期。软件组件模型已经在桌面系统得到了广泛的应用,嵌入式系统也同样可以用这种有效的方法解决快速的软件需求。本文重点研究嵌入式软件模型在电能质量分析领域的应用,提出了一种有效的方法解决非功能需求。
1. 引言
消费电子随着硬件的发展,已经具备了处理能力和存储能力。过去几年,一些很明显的现象如下:
(1) 软件的复杂性和规模在个人消费品中快速增加。嵌入式软件几乎遵循摩尔定理,其规模每两年翻一倍;
(2) 产品的多样性和软件需求快速增加;
(3) 要求缩短开发周期。[3]
基于组件的软件工程技术是一个解决软件复杂性,降低开发时间和提高重用性的有效方法。这些基于组件的技术在桌面环境已经得到了广泛的发展和使用,如COM,DCOM,COM+,但是由于嵌入式系统的能源受限和不同的硬件体系结构,上述组件模型技术很难运用到嵌入式系统。
本文基于嵌入式组件模型技术,对电能质量分析领域进行分析,提出了一种新的组件模型,PQACM(Power Quality Analysis Component Model)。该模型可以有效的实现电能质量分析领域的各种算法,并且通过这种方法,可以提高软件的重用性。
2. 嵌入式组件模型的发展
嵌入式系统和桌面系统由于资源受限和系统的体系结构的不同,没有通用的组件模型技术同时适用于它们。现有的嵌入式组件模型有Koala 模型[5],RUBUS 模型,PECT 模型,PECOS模型,ROBOCOP 模型[4]等,其中一些模型是通过对桌面的组件模型进行裁剪,如ROBOCOP模型,通过对COM 模型进行裁剪,使得占用很少的嵌入式资源;还有一些模型是采用新的组件技术,如Koala 模型,是Philips 研究室为消费类电子软件定制的一个嵌入式组件模型,已经成功的应用在电视机领域。
电能质量分析系统具有很大的共同点:所需要的硬件模块基本相同。整个处理的数据流程可以分为三个部分:数据采集,数据处理,以及数据显示(包括声光报警、远程通信等)。硬件上分别可以表示为:采集硬件模块、处理硬件模块以及显示硬件模块。一个完整的电能质量分析软件可以由这三部分的功能模块通过有效的方式组合。这些模块由于硬件的不同具有不同的实现方式,例如在数据采集阶段可以使用不同的AD 芯片进行采样,不同的AD 芯片具有不同的驱动方式和采样精度。如果采用组件的方式来实现AD 芯片的驱动,那么只需要为每种芯片写一个组件,就可以直接调用组件来驱动各种AD 芯片,减少了开发过程中的重复编码。下图为基于组件的电能质量分析的系统结构图。
图 1.基于组件的电能质量分析系统结构图
3. PQACM
PQACM 是基于电能质量分析领域提出的一种新的组件模型,它的原型来自于Koala 模型。过去,人们总是重新开发一种新的应用系统去适应硬件的发展,但是随着嵌入式处理能力和存储能力的不断提高,慢慢的可以屏蔽底层硬件的异构性,让复杂的软件可以运行在嵌入式设备上。由于组件库可以快速的减少开发的复杂性和时间需求,因此提高了软件的利用率,降低了开发的复杂性。组件模型技术是组件库的关键,通过该技术可以通过有效的方法构建一个完整的应用程序,但是在嵌入式系统中,暂时没有一个通用的组件模型,主要是以下三点原因:
(1) 有限的系统资源(CPU , memory ,等);
(2) 典型的环境条件;
(3) 尤其是目标系统的不一样。[5]
因为本文研究的外部环境特征相同,所以主要研究其他两个方面。由于嵌入式受到资源的限制,所以组件模型中应该比桌面上的组件模型多一些关于硬件资源的信息。例如:时间,队列,消息等。并且组件模型一般具有三个特征:提供和需求接口,以及绑定接口[5]。
在本文中,需要一些支持:
(1)组件间可添加一些灰色代码;
(2)根据参数设置可以定义和允许一些代码优化;
(3)已有一个可以进行组合和通信的实时组件框架。
通过上述分析,PQACM 提供4 种方法与外部环境连接:配置、资源、输入参数和输出参数,这些通过接口来封装。这四种方法可以保证组件很好的适应外部环境。由于输入参数和输出参数只是与功能连接而不是与环境连接,所以PQACM 模型使用一个特殊的接口(IRsource Interface)与外部环境的组件通信,通过这个方法可以获得环境的资源信息。
其中CODE_size 为所需的程序段代码存储空间的大小,DATA_size 为constant 等常量数据所需存储空间的大小,RAM_size 为整个模块运行所需的中间寄存器的最大值,STACK_size 为运行时所需要栈的最大值,time_in_need 表示执行的所需系统的周期数,iPrersent()则表示是否指向该接口。
借鉴COM模型: IUNKOWN 接口为组件库提供搜索ID。所有组件都继承了IUNKOWN接口,该接口包含三种方法:QueryInterface,AddRef 和Release。QueryInterface 提供一个自由地把指针在一个对象的几个接口之间移动的功能;AddRef 和Release 控制对象的生命期,它们往往发生在多任务处理环境。嵌入式系统一般都是单线程的,不需要AddRef 和Release 接口,只需要一个IUNKOWN 接口。通过 IUKNOWN 接口可获得组件的唯一标识号。当查询组件时,需要为每个组件定义一个全局的ID,但必须保证名字的唯一性。PQACM模型如下图所示:
4. 组件模型实例
FFT 算法被广泛使用于数字信号分析领域,在电能质量分析领域也有很重要的应用。FFT算法根据精度的要求分为很多类型:128 点、512 点、1024 点等。而不同的精度对处理能力又有不同的要求,它们需要知道硬件的特性,从而更好的达到高实时的要求。FFT 算法根据输入还可以分为:实数输入和复数输入。所以,就一个FFT 算法而言就有很多中不同的实现方法。
图 3 是电能质量分析领域谐波检测系统的体系结构图。我们用组件为例来展示这些细节的信息。在这个系统中有5 个组件,分别使用了512 点的FFT 模块、AD 采样模块、LCD驱动模块、RS232 通信模块和显示模块。
5. 相关工作
学习 Koala 模型和一些其他的嵌入式组件模型,可以发现虽然在嵌入式系统中很难找到一个通用的组件模型,但是可以在特定的领域中找到适用的组件模型。研究的大部分工作是找出硬件资源的共同点,开发一系列的功能组件。这已成功运用在谐波检测系统中。工作的难点是测试PQACM 组件的有效性,由于没有开发框架存在,组件的编写和组合都是在TI 公司的CCS 环境下进行。PQACM 可以为工程师带来便利,他们不必要从头到尾的开发一个软件,只需要选择需要实现的几个功能,通过有效的调用、组合就可以完成软件的开发。
6. 结论
本文在电能质量分析这一领域提出一个新的组件模型,该组件模型通过资源接口得到组件对硬件的需求,很好的解决了硬件的异构性以及非功能需求,同时提高了软件的复用性。但还有一些问题尚未解决,如动态绑定和严格的实时需求。将来,还有很多的工作需要完成,因为基于组件技术的软件开发不仅仅是组件模型技术还包括组件库,开发框架和代码自动产生技术等。
本文的创新点:本文通过分析了一些现有的嵌入式组件模型,提出了一种适合于电能分析领域的组件模型。该模型提高了软件代码的复用性,并且通过增加一个资源接口,很好的解决了硬件的异构性和非功能的需求。