实现电力采集终端软件通用化设计的硬件接口层研究
扫描二维码
随时随地手机看文章
引言
由于电力采集终端间的多平台硬件存在差异,为此需设计针对性的硬件接口,此时就难以保证多个平台采用同一套软件。硬件接口层的抽炼及规范可以很好地梳理出公共点及差异点,而基于硬件接口层设计的软件平台具有比较良好的可移植性。硬件接口层就好比桩子,保证了软件平台的稳定。
1硬件接口层设计
1.1总体设计思路概述
首先,要设计出较为稳定的硬件接口层,需遵循两点原则:(1)全面性:(2)模块化。全面性保证了硬件接口层能够较好地兼容各个硬件平台之间的移植,模块化则使硬件接口层有更好的可阅读性及可维护性。
为此,针对Ⅰ型集中器、Ⅱ型集中器、Ⅲ型专变进行全面梳理,共同存在的硬件有:ADC、停抄电池、RTC、串口、ESAM、EEPROM、FLASH、USB、GPIO、遥信门节点、以太网及看门狗:差异项如下:I型集中器有载波、按键、LCD,Ⅱ型集中器有485-3,Ⅲ型专变存在控制模块、按键、LCD等等。
梳理硬件接口层的模块划分如图1所示。
1.2硬件接口层设计约定
为了能够保证硬件接口层存在较为良好的版本管控功能及可阅读性,需梳理硬件接口层必须对外提供的版本信息,包括:软件编译日期(内部开发人员版本管控)、软件版本及发布日期(对外发布正式软件的版本日期)、硬件版本(上层所需进行判断的硬件版本由硬件接口层统一发布)及硬件版本日期。同时,为了保证硬件接口层软件设计具有相同的编码风格,对硬件接口层的接口编写做如下约定:
(1)接口头部应进行注释,列出接口的概要、输入参数、输出参数、返回值、实现细节等。
(2)接口头部注释应放在源码文件中的接口上部,在声明文件中可以不注释或简单注释,譬如以下注释风格:
1.3硬件接口层具体模块设计
针对上述模块,设计的关键在于梳理各模块所需提供的功能,要求如下:
(1)电源管理模块需涵盖备用电池充放电、法拉电容充放电及时钟芯片电池电压检测功能。
(2)遥信、脉冲、门节点、遥控模块需支持脉冲门节点输入检测以及与控制模块通信功能。
(3)EEPROM、nandflaSh模块需提供初始化、擦、写、读、检验数据接口。
(4)ESAM模块需提供与安全模块收、发以及异步的读写接口。
(5)GPIO模块需提供更为底层的直接操作硬件IO读写的接口,以及支持IO检测中断触发的钩子函数。
(6)按键模块需提供按下、释放的检测接口以及实时读取键值的功能。
(7)液晶模块需支持液晶初始化、刷屏、画点、设置背光、调整占空比、清理缓存及更新部分区域的操作方法。
(8)LED模块需提供任务式的持续点亮LED接口,包含闪烁、占空比输出及正常开关功能。
(9)MISC模块为辅助工作模块,其需要提供主工作电源检测、设备电源控制、设备复位控制及SIM卡加热接口。
(10)PHY模块需提供寄存器检测、link灯控制、网线接入检测以及MAC、IP、GateWay等参数的设置接口。
(11)时钟芯片模块需提供硬件时间判断的正确性、RTC芯片初始化、设置读取硬件时钟、秒脉冲输出及RTC温度获取接口。
(12)SPI模块需提供初始化、更改片选、更改速率、收发以及保护总线的上锁/解锁接口。
(13)串口模块需提供串口收发、驱动打开、参数更新以及波特率自适应接口。
(14)USS模块需提供设置USS工作模式、开关USS工作电源、USS总线重启功能以及获取正在连接的USS设备类型。
(15)BWD模块需提供软狗初始化、硬狗初始化、设置看门狗超时时间以及软硬狗的喂狗操作。
(16)同时,为了保证硬件功能可靠,需提供各模块的硬件接口测试功能。
1.4硬件接口层动态库封装
为了保证硬件接口层的可共享性,将硬件接口层封装为动态库,提供给多个进程调用,以降低代码冗余,提高代码的维护性,减少代码空间。
2硬件接口层更改成果
发布硬件接口层以后,即保证了多个硬件平台的软件通用性,也能够减少2600+行冗余代码,提高系统的稳定性。同时,动态库的设计保证了硬件接口层由专人即可维护,提高了可迭代性。并且,全面的白盒测试以及现场多台区的挂网运行测试验证了硬件接口层稳定性远超未归纳硬件接口层的软件版本,效果显著。
3结语
总之,电力采集终端的产品迭代十分频繁,且硬件平台众多,这就意味着抽象出中间层非常重要,能起到分离上位软件和下层硬件的作用:并且将硬件接口层封装成动态库进行共享,提高了资源的利用率,减少了空间的浪费。需要注意的是,更改后必须经过全面的白盒、黑盒测试以及多台区的挂网运行测试,验证其稳定性后才能上线。