嵌入式软件自动化开发模式的研究

2023-12-14 12:16唐政清
自动化仪表 2023年11期
关键词:代码生成控制点代码

唐政清

(珠海格力电器股份有限公司,广东 珠海 519000)

0 引言

在万物互联的时代,物联网技术高速发展。随着越来越多的物件产生控制需求,嵌入式软件呈现指数增长态势。传统的基于生命周期的软件开发模式面临日益严峻的挑战。软件自动化开发模式成为研究的热点。在此背景下,研究嵌入式控制系统软件开发模式,探寻1种高效、快捷的开发方式具有重要意义。

软件自动化开发模式的关键技术为自动代码生成技术。国内外相关研究多数在计算机领域开展,而嵌入式软件也有部分研究。嵌入式软件自动代码生成技术的研究主要包括:使用Matlab平台的基于模型自动代码生成工具的研究[1-3];使用高安全性应用开发环境(security-critical application develoment environment,SCADE)平台软件,将SCADE模型转换为软件代码的研究[4-6]。这2种方案均高度依赖国外平台软件。本文探索自主平台软件实现代码生成的方案,对组合式空调嵌入式控制系统软件进行基于模板的代码生成技术研究,以实现订单需求到订单软件的自动生成,从而解决控制系统软件重复开发的问题。

组合式空调是1种提供多种功能段组合的暖通设备。功能段多达24个,包括进风段、排风段、混合段等,可根据用户需求进行功能组合。组合式空调支持客户需求定制。其系统结构简单、节省空间、安装维护方便,故广泛应用于工业性场所、商用民用大中型公共建筑场所,包括电子仪表厂、精密机械制造厂、纺织厂、化工厂、展览中心、体育馆、写字楼、公共交通枢纽建筑等。组合式空调机组中的每个工程都会根据实际需求灵活选择若干个功能段。同一工程中不同位置的空调的功能段也会不同。组合式空调机组控制系统需要根据每个工程的实际情况进行定制非标开发。考虑到控制系统非标订单开发量大、从接单到交货的时间短,通常可采用可编程逻辑控制器(programmable logic controller,PLC)以及直接数字控制器(direct digital controller,DDC)等进行开发,利用其内置的采样、比例微分积分等控制模块开发相应的功能段控制软件代码[7]。即使如此,由于每个组合式空调订单的控制软件均需要进行人工编程,必须投入大量的人力才能满足订单的开发需求,开发模式亟需革新。

1 软件开发模式的探索

在需求特点上,组合式空调控制系统的基本功能和常规空调类似,有供冷、供热、通风、自动4种运行模式。但是,组合式空调可能包含24个功能段中的若干功能段,且每个功能段可能存在若干数量的负载和传感器。负载可能包含风机、水阀、风阀、电加热、加湿器、联动外机空调、过滤器和其他开关型负载。每种负载也可能存在不同类型,如:风机可能是送风机、排风机或回风机;接口可能是定速风机、变频风机或者多档位风机。传感器除了温度、湿度、风压、频率等类型不同外,接口也可能存在负温度系数电阻、0~10 V、4~20 mA、开关量检测等多种形式。上述接口品类繁多,覆盖了主流的工业标准接口[8]。负载和传感器的数量、类型、接口均随具体工程需求的变化而变化,存在海量的组合情况。

1.1 生命周期软件开发模式

软件的常规开发模式是生命周期软件开发模式。例如,瀑布模型就是非常有效的基础软件开发管理模式。每个工程组合式空调的需求存在差异。但是对于具体的工程,其组合式空调控制需求是比较明确和清晰的,采用基础瀑布模型软件开发模式就能满足项目需要。为了加快订单产品的推出,通常采用DDC进行控制软件开发。DDC可以配置负载和传感器的类型,可以集成采样模块、比例微分积分过程控制模块等,还可以通过软件开发编程,较快完成产品开发。其开发过程为:针对工程订单需求,项目经理进行需求分析,编写功能书;开发人员进行DDC软件开发编程;测试人员进行软件测试,并在测试合格后完成订单产品的开发。

但是,订单需求多样化的特性决定了负载和传感器之间互相组合的情况存在非常多的不确定性,降低了DDC软件的兼容性和代码的可重用性。每个不同的订单需求都要进行1次软件开发,并重复1次瀑布模型开发过程。这使得开发的资源耗费随订单数量的增加而倍增。

1.2 自动化开发模式的探索

针对组合式空调控制系统订单需求的特点,本文探索软件自动化开发模式,以解决订单软件开发海量耗费问题。自动化开发的思路是开发1个平台软件作为代码生成器,对订单需求进行分析,从而提炼出订单特征信息并输出到平台软件中。平台软件自动生成该订单对应的软件代码。

目前,自动代码生成技术主要有基于模型、基于模板、基于对象关系映射、基于文档注释和基于动态代理这5种。其中,基于模型和基于模板为主流的代码生成技术[9]。基于模型的代码生成方法是先对业务逻辑建立模型,再通过软件工具将模型转换为代码。基于模板的代码生成方法是将业务逻辑需求设计成模板代码文件,通过软件工具将变化的个性需求作为元数据转换到模板文件中。组合式空调是1个非线性系统,具有输入变量多、相互耦合强的特点。组合式空调控制系统需求特点适合采用基于模板的自动代码生成技术,把软件需求分为相对固定部分和随外部输入变化的个性化部分。相对固定部分开发作为平台软件的模板。个性化部分通过平台软件自动生成所需要的软件代码。

2 软件自动代码生成

软件自动代码生成过程为:首先,进行需求划分和转换,得到共性需求和个性需求;然后,设计分层结构框架和代码生成方案;最后,实现代码自动生成。

2.1 需求划分和转换

自动代码生成的前提是需求的划分和转换,即通过需求迭代进行划分和转换。需求迭代是分别对不同的订单需求进行需求分析,并迭代到软件模板功能书中,同时生成和该订单需求对应的控制点表,从而将需求划分和转换为共性需求软件模板功能书和个性需求控制点表。控制点表定义了负载和传感器的数量、类型和接口等个性化信息。需求迭代过程如图1所示。

图1 需求迭代过程示意图

2.2 分层结构框架

根据嵌入式软件及组合式空调特点,设计分成6层软件结构框架。软件结构框架由下至上依次为硬件抽象层、微内核层、设备驱动层、控制层、逻辑层和交互层。软件结构框架的各层具体内容如下。

①硬件抽象层定义了基于嵌入式硬件的配置。

②微内核层是基于嵌入式系统的实时内核,可以作为1个小型嵌入式操作系统,负责嵌入式内核管理、调控,以及对操作系统任务和进程的调度。

③设备驱动层负责提供输入/输出(input/out,I/O)、文件系统、网络等设备的驱动程序。

④控制层包括负载控制模块和传感器控制模块。负载控制模块执行对特定负载的输出动作。传感器控制模块执行特定传感器的采样和检测。

⑤逻辑层包括空调运行模式模块和功能段模块。空调运行模式模块执行供冷、供热、通风、自动这4种基本运行模式逻辑。功能段模块执行组合式空调特定功能段逻辑。

⑥交互层包括人机交互模块、远程交互模块和控制点表交互模块。人机交互模块接收人员操作指令,并显示、反馈设备相关状态。远程交互模块接收远端联网设备的控制指令,并反馈设备相关状态到远端联网设备。控制点表交互模块负责处理个性化需求。

2.3 代码自动生成

代码自动生成方案是根据设计的分层结构框架,定义模板和元数据(即输入数据模型),开发平台软件,并将元数据转换成模板能识别匹配的程序代码。

在模板方面,通过需求迭代转换和分层结构框架,将相对固定部分需求模板功能书分解到交互层、逻辑层和控制层中,并设计成模板文件。设备驱动层、微内核层和硬件抽象层是嵌入式软件和硬件设备相关部分,可以编写底层驱动程序,封装成驱动函数库[10],并直接设计成模板文件。代码文件结构如图2所示。

图2 代码文件结构示意图

元数据是描述其他数据的数据。其对数据通用属性进行抽象和标准化,具有唯一的身份元素信息[11]。元数据在代码自动生成中用于表述代码生成的内容,由个性化需求抽象而成。控制点表包含负载和传感器的数量、类型和接口等信息,代表了个性化需求。项目中控制点表的每个负载和传感器都看作1个基本元素。数字化和数据接口标准化并对象化后,可作为元数据。以传感器为例,其对象化后可以作为扩展标记语言(extensible markup language,XML)数据。XML数据示例如下。

...

平台软件作为代码生成器,包含定义好的模板文件和元数据转换功能。平台软件将元数据转换成交互层控制点表模块,将元数据插入到模板中,生成对应的代码。例如,对于传感器元数据,平台软件从元数据库XML文件读入传感器数据,通过预定义的结构体将其生成控制点表模块代码文件。预定义的结构体是元数据的1种代码模板,是元数据库XML文件中传感器数据的代码表现形式,通过平台软件实例后即生成传感器数据的代码。

//预定义结构体,可根据实际功能预定义

typedef struct

{

unsigned char *Name[2];

unsigned char Gateway;

unsigned char Type;

signed int Minimum;

signed int Maximum;

signed int SetValue;

signed int Value;

}SenseUnit;

3 测试验证及应用

测试验证主要分为模板验证、元数据验证和模拟使用验证。模板验证要求保证完备性和逻辑性,确认是否包含模板功能书的全部内容、是否满足需求的逻辑功能。元数据验证要求不同的元数据能正确转换,以及元数据插入到模板的逻辑对应关系正确。元数据验证是测试验证的重点,至少应包括以下内容。

①各类负载对象验证测试。负载包括风机、水阀、风阀、电加热、加湿器、联动外机空调、过滤器和其他开关型负载。每个负载对象由不同的负载类型、不同的负载接口验证测试。不同的负载组合、负载数量需分别验证测试。

②各类传感器对象验证测试。传感器包括温度、湿度、风压、频率等。每个传感器对象的各种类型、接口需分别验证测试。不同的传感器组合、传感器数量需分别验证测试。

③负载对象和传感器各种组合测试验证。

本文根据历史订单的需求进行模拟使用验证,以验证需求迭代、需求分解和代码生成全过程是否存在漏洞。验证完成后,就可以进行工程应用。接到新的组合式空调工程订单后,开发人员直接从订单需求提取出控制点表,以抽象化后数据作为元数据,并通过平台软件生成该订单的软件代码。

工程应用流程如图3所示。

图3 工程应用流程图

本文以某县发展中心和某市党校新区工程项目订单为例,分析工程应用过程。资源耗费对比如表1所示。

表1 资源耗费对比

工程应用结果表明:本文研究的嵌入式软件自动开发模式能够快速自动生成订单软件代码,大幅降低代码开发耗费;在平台软件已经验证充分的前提下,应用测试仅需复核控制点表模块的接口部分,可有效减少代码测试资源的耗费。

4 结论

本文对组合式空调仪控系统软件自动化开发模式进行研究和探索。根据组合式空调控制需求特点,采用基于模板的自动代码生成技术,以自主平台软件作为代码生成器,设计分层结构框架和代码生成方案。该代码生成方案通过平台软件将共性需求模板功能书设计成模板代码,将个性需求转换成交互层控制点表模块代码,以生成项目最终软件代码。该研究实现了订单需求到订单软件代码的自动生成,并将测试验证和应用到工程订单中,有效解决了组合式空调仪控系统软件的重复开发耗费问题。

基于组合式空调的控制软件自动化开发模式的实践,有效解决了嵌入式软件的重复开发问题。本文研究了中小项目自主开发平台软件实现自动代码生成及工程应用,为国产自主仪控系统软件自动化开发提供了借鉴。

猜你喜欢
代码生成控制点代码
Lustre语言可信代码生成器研究进展
创世代码
创世代码
创世代码
创世代码
NFFD控制点分布对气动外形优化的影响
基于风险管理下的项目建设内部控制点思考
代码生成技术在软件开发中的应用
相似材料模型中控制点像点坐标定位研究
基于XML的代码自动生成工具