APP下载

一种新型太阳能热水控制器的设计与实现

2020-04-02姜周曙黄国辉

太阳能 2020年2期
关键词:热水太阳能服务器

李 响,姜周曙,黄国辉

(杭州电子科技大学自动化学院,杭州 310018)

0 引言

太阳能作为可再生能源,具有储量巨大、清洁环保的特点。目前,对于太阳能的利用主要是在太阳能发电和太阳能热利用方面,太阳能热水因转换率高成为太阳能热利用的普遍形式之一。由于太阳能具有不稳定性,相对于常规能源热水系统,太阳能热水系统的自动控制显得更为重要[1]。传统太阳能热水控制器多采用单片机实现,功能单一,交互性差,其控制程序与硬件高度耦合,导致其拓展性差,开发难度高。这类控制器的本地硬件资源较少,大量运行数据未被保存,无法远程通信,也给开发人员进一步研究带来了一定的阻碍[2-5]。

本文提出了一种新型太阳能热水控制器,硬件是基于Cortex-A9平台开发,资源丰富,与设备间采用RS485总线方式连接,提升了控制器系统的灵活性和可拓展性;软件上嵌入Android系统,利用Android系统在UI和生态方面的优势,在此基础上开发出一套功能丰富的监控软件,具有良好的人机交互界面,实现了远程数据传输。

1 控制器系统硬件结构

太阳能热水工程随着实际现场的变化,形式多样,测量点与所控制的设备数量不好确定。为了控制器的通用性,对控制器的设计采用RS485总线结构,并可根据实际工程大小和需求进行拓展。控制器系统硬件结构及其他设备框图如图1所示,图中,左侧为控制器硬件部分;右侧分别为高精度采集板和开关量控制板,以及其他支持RS485通信的设备;控制器硬件与各设备间通过RS485总线连接。

高精度采集板对现场温度、液位等模拟量进行实时采集和滤波后,等待控制器读取;开关量控制板接收控制器通过RS485总线发来的信号,改变继电器状态,进而控制水泵等设备。由于实际工程中测量点和控制点很多,因此可以把高精度采集板和开关量控制板拓展为多个,并为其设置不同的地址,总线上最多支持256个设备。

图1 控制器系统硬件结构及其他设备框图Fig.1 Block diagram of hardware structure of controller system and other equipment

本新型太阳能热水控制器硬件部分由最小系统板、网络通信模块、人机接口模块、调试模块、报警模块和RS485通信模块6部分构成。最小系统板搭载基于Cortex-A9架构的三星Exynos4412四核处理器,保证了其对数据的高速并行处理能力;配备了2 GB双通道DDR3内存,16 GB EMMC存储空间,使其能在实际运行中保存更多的数据;使用了三星S5M8767电源管理芯片,为处理器提供了比外围设备更加稳定的电压。最小系统板上的USB总线集线器也可以将一个USB接口扩展为多个,大幅提升了控制器系统的灵活性及可拓展性。

控制器有GPRS和以太网2种网络通信方式,可以应用于不同场合。人机接口模块采用7寸LCD触摸一体屏,由SN75LVDS83BDGG芯片驱动,低压差分信号传输,具有噪声低、功耗低、兼容性好等特点,提升了抗干扰性。RS485通信模块采用SN65HVD3082收发器,由处理器的通用输入输出(GPIO)引脚和通用异步收发器(UART)共同控制;GPIO引脚控制RS485通信模块的数据收发,UART的信号经过电平转换,转换成RS485通信模块的差分电平。

2 操作系统的裁剪及驱动移植

整体硬件搭建好之后,需要对操作系统进行适配。操作系统选用基于处理器 Exynos4412的Android 4.4.4系统,内核版本为Linux 3.0.15。此系统内部已经集成很多常用的标准驱动及接口程序,在此基础上进行系统裁剪和驱动移植。

2.1 系统裁剪

在Ubuntu12.04环境下对Android系统裁剪,使其占用更少的空间,运行更流畅,裁剪可分为内核的裁剪和Android上层的裁剪。

内核方面的裁剪借助基于文本菜单的配置工具Menuconfig,如图2所示。仅选择与本工程相关的驱动,最终生成“.config”文件。配置完成后,用交叉编译工具arm-2009q3编译,生成内核镜像。

图2 Menuconfig配置界面Fig.2 Menuconfig configuration diagram

Android上层的裁剪主要是删除不必要的系统服务,以及修改系统启动时读取的配置文件“init.rc”,去除与本工程无关的服务。详细实现过程不再赘述。

2.2 驱动移植

Android系统是基于Linux内核的,通过裁剪保留了工程必须的内核驱动。但是对于RS485通信模块和报警模块这种非标准设备,Android系统上层未对其支持,因此,不仅要在 Linux 内核中添加驱动模块,还必须在Android系统上层添加对应的支持[6]。由于RS485通信模块与报警模块的驱动实现过程类似,这里只针对Android系统的RS485通信模块驱动程序进行架构分析[7],如图3所示。

图3 RS485通信模块驱动程序架构Fig.3 RS485 communication module driver architecture

太阳能热水控制器软件运行在Android系统的Dalvik虚拟机上,采用Java语言编写,可以看到,其实现与硬件无关。Linux内核中的RS485驱动仅提供少量的接口,具体是在Android系统提供的硬件抽象层实现,是以 Linux共享库(*.so)的形式存在,采用C/C++语言编写。Dalvik虚拟机支持了Java语言的JNI(Java Native Interface)特性,使应用层Java代码通过虚拟机调用本地共享库,充当Java与C/C++之间的桥梁[8]。

对RS485通信模块在硬件抽象层的程序按照JNI的声明方法编写,使用Android系统提供的NDK工具编译,生成库文件。应用层的监控软件在使用该功能时加载该库文件,即可使用对应的Java接口,简化了应用层软件设计的流程。

3 应用程序软件设计

控制器应用程序软件需要实现太阳能热水工程运行状态的实时监控、运行数据的保存查询、相关参数的设置,以及与服务器间的远程通信等功能。需实现的这些功能较为复杂,涉及前台的Activity组件、后台的Service组件、数据库,以及多线程等知识。为降低程序开发的难度,采用模块化设计,将软件框架分为前台的人机交互界面、后台的监控服务和后台的网络服务3个部分。

3.1 人机交互设计

人性化的设计和友好的界面是控制器应用程序软件设计的前提。主界面以工程中常用的单水箱、作为辅助热源的空气源热泵为例,动态显示了集热器出口温度T1、水箱温度T2、回水温度T3、环境温度T4、液位,以及热泵循环泵、供水增压泵的开启情况。Android系统平台其他线程不能刷新主界面的数据,因此,主界面数据动态显示需通过Handler的消息传递机制来实现。软件主界面如图4所示。

图4 应用程序软件主界面Fig.4 Main interface of application software

考虑到用户切换至每个界面的便携性,在上方导航栏加入了参数设置、网络设置、历史数据及报警查询按钮,点击不同按钮可进入相应的界面。参数设置中有强制开关、定温补水、温差循环、热泵辅助加热、低水位补水、高温防炸管循环、防冻循环等常用控制策略选项[9-10]。网络设置保存有服务器IP地址及端口号。历史数据和报警信息界面在打开时读取SQLite3数据库,并将读取到的数据以表格和列表的形式显示出来,供用户查看。为防止由于数据过多而出现卡顿现象,采用了分页加载的方法。

3.2 监控服务设计

监控服务是控制器后台运行的核心部分,会启动采集线程和控制线程2个线程。采集线程主要负责定时对现场传感器、仪表等的数据进行采集,然后进行相应处理,把处理后的数据存入SQLite3数据库中,并通知控制线程。控制线程会读取参数设置里的配置信息,根据采集来的数据,逻辑运算后对现场设备进行控制。为保证数据的实时性和稳定性,数据采样时间应尽量小,经测试,采样时间设置为1 s较为合适。

在实际工程应用中,由于存在环境干扰和仪表故障,会导致通信异常。为保证控制器与现场仪表设备之间通信稳定、可靠,需要对每一次通信进行校验[11],如CRC16校验和求和校验,如果发现通信异常,则需要做出相应的处理(记录或者报警)。

3.3 网络服务设计

控制器网络服务主要包括建立连接、本地数据传输、心跳包保活3个部分。为保证数据安全,控制器与服务器之间的通信均采用AES(Advanced Encryption Standard)加密算法进行加密[12]。

控制器与服务器建立TCP连接后,发送身份认证请求,服务器会返回一串随机数列,再根据收到的随机数列和本地密钥计算出MD5值后再发送给服务器,若服务器验证此MD5值成功,则连接成功;反之,控制器重新发起建立连接请求。当监测到当前处于连接状态,则进入下一步,根据发送状态标志位读取SQLite3数据库中未发送的数据,结合参数设置中设置的发送周期,向服务器发送本地采集信息;发送成功后,把数据库中发送状态标志位置1;发送周期设置在1~10 min之内。

控制器和服务器之间如果发送周期过长,运营商网络监测到长时间无数据传输会切断此连接节点;或者网络状况不好,控制器掉线,服务器无法区别,不会释放该连接所占用的资源。为保证连接的有效性,引入心跳包机制,建立连接完成后启动心跳包保活线程,以固定的时间间隔向服务器发送心跳包。

4 控制器系统测试

新型太阳能热水控制器系统完成设计后,以实际工程环境作为本系统的测试环境,对控制器的性能进行测试,验证系统是否满足设计要求[13]。

4.1 系统整体测试

系统整体测试内容主要包括:

1)人机交互界面的反应是否及时。

2)控制逻辑是否正确,各项功能是否正常,如温差、低水位补水等测试。

3)通过服务器查询实时数据,分析数据是否正确。

4)观察控制器在一段时间内持续运行是否会出现异常现象。

经过测试,控制器系统界面运行正常,控制逻辑正确,监测值与采集值一致,如表1所示。控制器与服务器之间保持稳定的网络连接,并且在测试过程中系统未出现异常现象。

表1 监测与采集的信息Table 1 Monitored and collected information

4.2 RS485通信测试

对控制器RS485通信功能的稳定性测试主要体现在数据收发的成功率。控制器有一套容错机制,可以保证采集到的数据的准确性,对接收的每一帧数据进行校验,成功则计数加1。在控制器的RS485总线上接入上位机,对控制器发送的每一帧数据进行校验,成功则计数加1。

在确保现场仪表传感器正常工作的情况下,分别对上述2项性能进行测试,结果如表2所示。

表2 RS485通信数据收发成功率Table 2 Success rate of RS485 communication data sending and receiving

测试结果表明,控制器RS485通信功能稳定,满足设计需求。

4.3 网络通信测试

对控制器网络通信功能的稳定性测试主要体现在数据传输成功率和系统状态发生变化时掉线重连的能力。在服务器正常工作且网络正常的情况下,分别对上述2项性能进行测试,结果如表3、表4所示。

表3 网络通信成功率Table 3 Success rate of network communication

表4 网络通信连接测试Table 4 Network communication connection test

测试结果表明,控制器在以太网与GPRS两种通信方式下数据传输成功率较高;当系统状态发生变化时,控制器仍能和服务器保持稳定的连接。

5 结论

本文针对传统太阳能热水控制器交互差、拓展性差等问题,基于Cortex-A9平台,开发出一种新型太阳能热水控制器。该控制器能够保存更多的数据,支持远程通信;采用RS485总线结构,可以根据实际工程需求拓展更多的设备;引入Android系统,控制程序与硬件之间能够完全解耦,降低了开发难度;监控软件按照模块化设计,集成了参数设置、数据查询等多种功能,具有良好的交互界面。测试结果表明,新型太阳能热水控制器能够稳定运行,满足设计需求。

猜你喜欢

热水太阳能服务器
应用广泛的太阳能无人机
一壶热水
高层建筑的热水供暖系统设计
多喝热水
和让你“多喝热水”的男孩结婚
通信控制服务器(CCS)维护终端的设计与实现
太阳能可以这样玩
得形忘意的服务器标准
太阳能虚拟窗
计算机网络安全服务器入侵与防御