主页 > 案例大全 > 论文方法介绍-智能冷却系统运行状态远程监测

论文方法介绍-智能冷却系统运行状态远程监测

2021-05-29 15:14:00

近些年来,随着发动机升功率的逐步提升,与发动机转速相耦合的传统冷却系统已经越来越满足不了现代发动机对散热性能的需求了,因此,智能化、电控化的智能冷却系统的开发对于在动力性和经济性上有着更高要求的发动机来说有着极为重要的意义。

在智能冷却系统的研发过程当中,部件选型、仿真计算、控制策略制定都需要大量的冷却系统运行状态数据,而且在开发后期也离不开一次次的试验来进行校正,这些试验在不同的地点和时间进行,为了最大化的共享试验数据提高团队协作的能力,就需要对数据进行集中统一管理以方便查询,以便工程师在远端就可以进行参数的调整、技术的改进。

本文的研究目的在于,利用手机Android平台的应用从远端对智能冷却系统的运行状态进行实时监测。首先,通过对数据采集平台的传感器选型以及NI CompactRIO硬件设计和LabVIEW平台软件开发,从智能冷却系统中采集到发动机进出口冷却水温度、散热器进出口冷却水温度、冷却水流速、流量等物理量的数据。随后将数据通过LabVIEW SQL Toolkit数据库接口工具包上传到MySQL数据库中。最后再利用Android Studio软件对手机端Android应用进行开发,并通过向服务器发送请求,调出冷却系统的实时数据及历史数据,展示在研究人员面前。经过整车试验验证后发现这一套系统是切实可行的,达到了研究目标并取得了良好的成效。

近些年来,发动机升功率随着发动机技术的飞快进步而逐步提高,与此同时带来的热负荷问题也就越来越严重,因此发动机对冷却系统的要求就越来越高。与发动机转速相耦合的传统冷却系统已经越来越满足不了现代发动机性能的需要。因此,智能化、电控化的智能冷却系统的开发对于在动力性和经济性上有着更高要求的发动机来说有着极为重要的意义。

智能冷却系统到目前为止仍有极大的开发空间。为了使其在不同工况环境下都能稳定运行,整个车载智能冷却系统的研发过程当中,部件选型、仿真计算、控制策略制定都需要大量的冷却系统运行状态数据,而且在开发后期也离不开一次次的试验来进行校正。这就要求冷却系统试验测试数据集中处理储存,方便查询和引用。然而冷却系统试验包括零部件试验、台架试验、车载试验等,这些试验在不同的地点和时间进行,为了最大化的共享试验数据提高团队协作的能力,就需要对数据进行集中统一管理以方便查询,以便工程师在远端就可以进行参数的调整、技术的改进。尤其是在以后的无人驾驶汽车研究中,冷却系统的数据更需要实时进行传输,以供工程师进行控制策略的设计和优化。

目前,互联网(Internet)能够实现信息最大限度的共享,由于Internet高效且快速的特性,基于Internet的远程监控系统应运而生,在农业自动化,工业自动化等方面都有大量的应用。所以,在智能冷却系统的研发过程中应用Internet进行数据的传递、储存和查询可以大大的减少研发的时间。Web 技术是Internet 的核心技术之一,以HTTP 技术为基础,具有简单、高效、跨平台等优点,是信息网络中最普遍应用的信息交互平台。

1.1.1智能冷却系统

智能冷却系统是由ECU按照一定的控制策略,对冷却调节装置的电子化控制,从而实现对零部件的温度调节,使零部件在不同发动机工况下均工作在最佳温度范围,以满足发动机工作温度、功耗等性能指标最优[1]。另外,智能冷却系统除了要解决零部件过热的问题,还要根据使用情况实现对发动机零部件进行加热和保温的功能。

目前智能冷却系统中主要包括:将传统的石蜡节温器改为利用电加热引起记忆合金变形而实现自控的电控节温器,冷却风扇由曲轴驱动改为电动机驱动,传统水泵改为利用单片机对节温器、导风板和冷却风扇实行智能控制等[2]。

1.1.2基于Web 的远程监控技术

Web 技术是 Internet/Intranet 的核心技术之一,以HTTP 技术为基础,具有简单、高效、跨平台等优点,是信息网络的一种最普遍应用的信息交互平台。借助 Web 服务器和浏览工具,可以实现底层控制网络与上层网络之间数据信息的动态交互[3]。控制网络中的状态信息通过 Web 服务器以网页的形式发布出去,远程用户通过 Web 浏览器查看这些信息,还能以表单的形式向 Web 服务器提交请求,从而实现对控制网络的远程控制。

1.2已往的研究

目前国内外在远程监控系统上的应用已十分广泛,在工业、农业等方面都需要远程监控系统的配合监测。与此同时,远程通讯技术也是层出不穷,目前已有基于Web、ZigBee 等等的方法。

1.2.1智能冷却系统

国外方面,2011年,奥迪(Audi)公司开发的第二代EA888发动机提出了创新型热管理系统ITM[4], 采用电控旋转滑阀替代传统的蜡式节温器。并配备集成的排气冷却系统,用一个独立的电子水泵把排气废热引入到车厢内。

2015年,奥迪(Audi)第三代EA888发动机进一步升级,提出多功能热管理系统TMM 的概念[5]。该系统在暖机过程中完全关闭水套循环或将循环保持在一个较小流量,进一步缩短暖机时间。同时该热管理模块对冷却液温度控制更加精确,节油率和减排效果均有所提升。而排气歧管以及排气冷却系统嵌入在缸盖内部,整体结构更加紧凑。

国内方面,浙江大学俞小莉团队自2005年以来先后建立了工程机械热管理系统试验平台、开式风洞试验装置、发动机热平衡试验系统等。2010年,进一步开发了发动机冷却系统模块化试验平台,并开展了大量研究。2011年,该团队韩松、尹旭、刘波等人通过仿真与试验相结合的手段,建立了仿真平台和台架试验系统[6-8], 开展智能冷却系统控制策略的研究,验证智能冷却系统在降低发动机功耗、减少排放,以及改善发动机可靠性等方面的提升效果。

1.2.2远程监控技术

国外从上个世纪90年代就已经开始了对远程监控的研究,其中以美国、日本、德国等国的高校和科研组织最为踊跃,目前对远程监控的研究已经覆盖了工业、农业以及天气等各个领域。

日本京都大学农业院在2013年开发出了一套用于监测为应对农民人数下降及老龄化的农业机器人的系统,如图1.1所示。他们将这一系统的数据传输方式设计为基于网页的,这样的好处是工程师们可以通过个人电脑以及手机来获取监测信息而不需要特定的软件。这套系统的原理是:首先,农业机器人中的电脑收集机器人的状态、精确的位置以及运转速度等等的信息;随后,电脑将收集好的数据每隔一秒通过蓝牙以二进制码数据集合的方式发送给手机;接着,手机检查数据并接受后,使用HTTP PUT 通过3G移动网络将数据发送到数据库的服务器上;最后,用户即可以在特定网页上浏览农业机器人的信息了[9]。这样做的好处是用户不需要出门即可在远端监控机器人,但由于数据传输步骤繁琐,数据在传输过程中出错的可能性就会上升,而且3G网络在传输时也存在着一定得数据延迟现象。

图1.1 系统框架示意图

日本日立公司在2013年开发出一种改善了蜂窝网络传输中数据延迟的方案,用来在分析社会基础设施(轨道交通、功能系统、工厂等)中能量损耗时优化信息传输,并由此发现节能的最优方案。具体系统框架如图1.2所示,无线传感器节点(WSN)从设施收集诸如其能量消耗的操作数据,并将它们传送到网关路由器(GW)。 在路由器接收到数据之后进行处理并创建重组的数据,并且经由蜂窝网络将它们转发到监控中心[10]。在传输时,依据数据优先级以及通讯速率来控制传输速率,具体方法是:路由器按优先级从高到低发送数据,同时保持传输速率低于通信速率。如果通信速率低于传感器数据和每秒生成的传感器状态的总速率的话,则在当前帧期间不发送较低优先级的数据,并在下一帧时依次作为最高级别的数据优先传送。由此即可降低传输延迟。

图1.2 系统框架示意图

国内方面, 2012年武汉理工大学的胡瑶等人设计出了一套基于CAN 总线和GPRS 技术的电动汽车远程监控系统。该系统由车载终端和远程监控平台两部分组成。每一辆电动汽车上配有一部车载终端,通过CAN 总线获取电动汽车运行状态、电池电压、电流、温度等数据,微控制器MCU 将以上数据加密打包,通过GPRS 网络发送至指定IP 的监控中心平台上。数据在运营商服务器和Internet 间进行交换。在远端的监控中心通过Internet 可以获取每一辆汽车发送来的数据,并显示在监控平台端PC 机上,完成监控中心对车辆的监测功能[11]。

2013年江苏大学的李慧等人利用物联网技术基于Android平台,设计出一款可以对水产养殖全程监控的手机软件。采用手机无线通讯的方式对水质及其环境进行实时监控、跟踪。用户可以在任何具备网络覆盖的地方从手机上浏览数据,系统多手机用户客户端可以共享一台服务器[12]。服务器模块主要用于接收数据并通过无线网与Android 手机客户端进行网络通信;Android 手机客户端主要完成同服务器的数据交互,以及自身的数据库管理、网络通信等功能。

1.3 最新研究成果

1.3.1车联网技术

上述的远程监控技术目前的最新研究成果即是在汽车和交通上的具体应用——车联网(Internet of Vehicle)。自上世纪 90 年代初,欧美国家等发达国家相继提出了智能交通系统(Intelligent Transportation System)和车联网等概念。具体实现方法是:利用信息通信、控制以及定位等技术,将所有车辆和道路状态集成到统一的信息系统中,这样可根据不同道路的实时流量信息对汽车的行车线路进行有效优化,减少交通事故,提高汽车运输效率,增加道路的交通容量[13]。

通过网络通讯技术,汽车将所采集到的数据上传到车联网中心服务器;通过计算机技术,将这些汇聚到中心服务器的信息进行分析和处理,为各个车辆计算出最佳路线,向相关车辆及时汇报所在道路的路况,甚至根据路况安排信号灯的周期。车联网是互联网技术和汽车技术融合发展的产物,是实现智能交通的重要途径,并将在未来智慧城市中发挥重要作用[14]。在这样的趋势下,发达国家以及一些新兴发展中国家在汽车的远程监控领域加大了研发投入,使其成为了实现智能交通系统和车联网的重要环节。

2016年,休斯顿大学和佛罗伦萨大学的团队合作提出了两种新颖的基于匹配的信息交互的方法,以实现车与车、车与基础设施之间的信息交互[15]。一种是簇类关联,在道路上互联时,指定一辆车为簇头,其他车为普通节点直接与簇头共享信息,而不是都连接到互联网,来给无线通讯网络降载,以提高传输效率。另一种是独立用户关联,为解决簇类关联的簇头通信瓶颈问题,信息共享时令其中每个节点可以与其他节点建立多个独立链路,而不需要它们的对象在它们之间相关或连接。这种V2X链路比传统形式中的多对多关系更灵活和独立。

1.4 本文主要研究内容

本文的主要研究内容是将汽车智能冷却系统的试验数据通过Internet 技术进行处理、储存、查询和引用,即时读取到手机安卓应用上以便对冷却系统运行状态进行实时监测。

1.首先需要学习并了解智能冷却系统远程监测的相关背景、国内外研究现状及最新研究成果。

2.智能冷却系统的特性研究。掌握智能冷却系统的运行原理和特性,提出智能冷却系统运行过程中的特征性数据,如车速、发动机转速、发动机负荷、发动机冷却液进出口温度、风扇转速、冷却液流量等,并选取与参数对应的传感器。估算试验系统每秒钟的数据量。

3.信号采集系统软硬件方案设计。根据采集参数类型以及试验平台传感器选型来确定信号采集系统的硬件选型以及上位机的软件设计。

4.数据储存方案设计。根据冷却系统运行过程中的特征数据和每秒钟的数据量选择合适的数据打包方法和数据传输方法。选取一款数据库软件对数据进行上传和在云端的储存,以供之后对试验数据的调用。

5.数据接收软件开发。根据日常应用频率和随时随地对运行状态进行查看的要求,选取安卓手机作为数据接收端,开发一款可以随时调用实时运行状态数据的安卓应用,以供研究人员进行查看。

6.实车测试。在整车上对智能冷却系统运行状态实时监测平台进行测试,验证系统是否可行。

第二章 远程监测系统总体方案设计

2.1 总体设计框图

智能冷却系统运行状态远程监测系统的总体方案设计如图2.1所示。系统主体由三部分组成。第一部分是车载测试系统,车载测试系统的结构为上下位机结构,上位机采用Windows7操作系统的计算机。一方面将上位机通过CAN/USB通信模块与测试、控制单元进行通信,以读取发动机的相关参数;另一方面上位机连接至CDAQ,通过A/D卡读取温度、流量等传感器信号。软件部分在LabVIEW平台进行开发,运用LabVIEW图形语言,可进行数据的采集、本地储存和上传。第二部分是云虚拟主机,云虚拟主机中又可分为两小部分,分别是数据库和服务器。数据库采用MySQL数据库,应用SQL语言对数据库进行操作,进行数据的云存储。服务器运用PHP语言编译服务器地址,以供之后在手机端对数据进行调用。第三部分是手机端的应用(APP),在Android Studio软件中运用Java语言进行编程,设计出一款对智能冷却系统运行状态进行实时监测的手机安卓应用。

智能冷却系统的实时运行数据经过这三步之后便可实现随时随地的供研究人员查看和监测。

图2.1 远程监测系统总体设计框图

2.2 数据传输手段

如图2.1所示,数据在车载测试系统向数据库的存储和手机应用从服务器端的调用都需要进行数据传输,这里选用4G网络进行传输,协议选用HTTP协议。

本次试验一共选取了11个智能冷却系统运行参数进行采集和储存,分别为发动机冷却液进、出口温度、冷却液流速、冷却液流量、散热器进、出口温度、车速、发动机负荷、发动机转速、电子水泵PMW值、电子风扇输出电压,另外还有时间,一共是12个参数。数据更新为每2秒钟一次,而数据最多的字节为8 Byte,12个数据就是96字节,即48 Byte/s的传输量,远小于4G网络的传输速度,因此利用4G网络对数据进行传输完全符合要求。

2.3 数据库的选取

目前市场上主流的数据库主要有以下几种:ORACLE、DB2、SQL Server、Sybase、MySQL、Access等。

在这里选用MySQL数据库。MySQL是一种开放源代码的关系型数据库,MySQL数据库系统使用最常用的数据库管理语言——结构化查询语言(SQL)对数据库进行操作和管理。

MySQL是一个快速的、多线程、多用户的SQL数据库服务器。与其他数据库管理系统相比,MySQL具有以下优势:

  (1)MySQL是一个关系数据库管理系统。

  (2)MySQL是开源的。

  (3)MySQL服务器是一个快速的、可靠的和易于使用的数据库服务器。

  (4)MySQL服务器工作在客户/服务器或嵌入系统中。

  (5)有大量的MySQL软件可以使用。

2.4 本章小结

本章对智能冷却系统远程监测系统的总体结构进行了介绍。主要由车载测试系统、数据库、服务器和手机端应用组成。在接下来的三章当中将对这几部分一一进行介绍。另外,在数据传输时选用4G网络完全可以达到对传输速度的要求,数据库选用的则是MySQL数据库,具有开源、易于操作等优点。

第三章 车载测试系统硬件设计

图3.1所示即为智能冷却系统车载测试平台示意图,可以将其分成两个子系统:测试系统和控制系统。测试系统主要用于进行数据的采集。而控制系统主要进行电子水泵和电子风扇的控制。下面将分别介绍这两个子系统。

图3.1 车载测试平台示意图

3.1测试系统

3.1.1需获取的参数

智能冷却系统运行状态的主要参数有:发动机冷却液进、出口温度、冷却液流速、冷却液流量、散热器进、出口温度、车速、发动机负荷、发动机转速、水泵PMW值、电子风扇输出电压。

用以上参数作为传感器选择的主要依据。

3.1.2 传感器的选型

用于采集以上各参数数据的测试系统包括:热电偶、涡轮流量计等传感器和与发动机ECU通讯的OBD模块。具体选型如下:

采用OBD模块与发动机ECU进行通讯,如图3.1所示,用其采集的数据为发动机转速、发动机负荷、车速等参数。

图3.1 OBD模块

采用LGWY-15型涡轮流量计测量冷却液流量,精度高,稳定性好,如图3.2所示。根据发动机冷却液的流量范围选用公称通径为15mm的涡轮流量计,测量范围是(0.6~6)m3/h,最大误差为0.5%。

冷却液进出口温度和散热器进出口温度的测量选用了OMEGA公司生产的T型热电偶,正负极分别为铜和铜镍。特点是响应迅速,精度高,如图3.3所示。测量范围:-40.0~350.0℃,分辨率0.1℃,误差范围±(0.4%+0.5℃)。本次试验的测量温度范围大概在-20.0~120.0℃左右,因此T型热电偶可以很好地满足测试需求。

图3.2 涡轮流量计 图3.3 T型热电偶

3.2控制系统

控制系统中,电子水泵和电子节温器通过一块多路驱动板卡进行驱动,电子风扇单独采用一个电机驱动模块进行驱动。统一通过NI CompactRIO控制器对驱动器进行控制,在上位机上进行发动机工作状态的实时监控[16]。

控制系统包括NI CRIO-9036集成机箱以及NI 9203,NI 9221,NI 9214,NI 9423,NI 9265,NI 9263等输入输出板卡,AQMD6030NS电机调速/驱动器,BTN7971电机驱动器等部件。

如图3.4所示,NI CRIO-9036高性能控制器将1.33 GHz Intel Atom双核处理器、Xilinx Kintex-7 FPGA和8个用于C系列I/O模块的插槽做成集成机箱,并安装了高性能监测和控制系统,使其能够在较恶劣的环境下工作。此控制器支持双电源输入,直流电源9V~30V,能够保证任务的稳定进行;支持所有NI CompactRIO输入/输出模块,并与LabVIEW软件关联,可以自动生成控制信号处理与控制的电路。

图3.4 NI CompactRIO集成控制器

采用AQMD6030NS直流有刷电机调速器/驱动器驱动电子风扇。电源输入电压DC 9V~60V,电机额定电流范围0.5A~35A,模拟信号电压范围0~10V, PWM频率为18kHz,PWM分辨率可达到0.1%。CompactRIO通过NI 9263模拟输出板卡输出0~10V模拟电压给AQMD6030NS,并转换成0~100%的PWM信号,输出给电子风扇,进行无极调速。

BTN7971电机驱动器用于驱动电子水泵和电子节温器,如图3.5所示。兼容7.2V~24V直流电源,输出电压5V,输出电流峰值可达到70A,双通道输出。12V供电时,输出功率最大可到120W,满足电子水泵和电子节温器的驱动需求。

图3.5 电子水泵和电子节温器驱动模块

3.3本章小结

在本章中,对智能冷却系统车载测试系统的硬件部分进行了介绍。其主要分为两大部分,分别是测试系统和控制系统。测试系统当主要包括了对不同的冷却系统运行状态参数进行采集的传感器以及OBD模块;控制系统包括了NI CompactRIO控制器、电机驱动器和固态继电器等设备。在下一章节中将介绍智能冷却系统车载测试系统的软件部分——LabVIEW采集系统开发。

第四章 车载测试系统软件开发

4.1 LabVIEW简介

在LabVIEW软件平台进行数据采集系统的程序化设计。LabVIEW是美国NI公司开发的图形化编程语言,是一种以“图标”代替“写程序文本”的全新程序编程方法,集数据采集、运算、分析、显示、存储为一体。

LabVIEW 程序经过编译,生成可执行程序的表现形式和功能,实际上是基于实际设备仪器的仿真,即用户在前面板上完成虚拟仪器界面的布局,通过操纵各种按钮,控制程序的执行,而执行结果又返回到前面板上[17]。LabVIEW编程环境和NI CompactRIO 硬件系统无缝连接,通过LabVIEW程序直接访问底层硬件,快速建立数据采集系统和控制系统。

4.2 LabVIEW的数据库访问技术

4.2.1 SQL语言简介

SQL(Structured Query Language)语言是一种高度非过程化语言,是专为数据库而建立的操作命令集。该语言是一个综合的、通用的关系数据库语言。SQL不仅功能强大、容易上手, 且SQL工具使用起来也很方便,SQL语言已经成为了数据库操作的基础,主要操作有数据定义、数据操纵、数据控制以及嵌入式 SQL 语言的使用[18]。

4.2.2 LabVIEW SQL Toolkit简介

利用LabVIEW SQL Toolkit数据库接口工具包可以实现对数据库的访问功能,该工具包集成了一系列的高级功能模块,这些模块封装了大多数数据库的操作和一些高级的数据库访问功能[19]。LabVIEW SQL Toolkit支持ADO所支持的所有数据库引擎且具有高度的可移植性,用户通过改变DB Tools Open Connection的输入参数就可以更换数据库。用户可以使用LabVIEW SQL Toolkit在LabVIEW中支持ODBC的本地或远程数据库,例如Microsoft Access,Microsoft SQL Server等[20]。

4.3 基于LabVIEW的软件模块化设计

LabVIEW数据采集系统主要分为两个模块,分别是数据采集模块和数据存入模块。数据采集模块主要完成启动数据采集前,数据传输时一些参数的初始化,和将接收到的数据以文件的形式在计算机的磁盘中保存起来。数据存入管理模块主要完成数据库的初始化以及在数据库中对数据的存入、更新等操作。整个LabVIEW数据采集系统的结构如图4.1所示。

图4.1 LabVIEW数据采集系统结构图

4.3.1 数据采集模块

数据采集存储模块主要完成两大功能,即数据采集系统依次进行数据的采集和本地存储。

数据的采集已在第二章中进行了介绍,包括板卡以及各个物理量传感器的选型,这里不再赘述。

另外在LabVIEW中搭建了针对数据的本地存储程序,首先运行图4.2所示程序框图创建本地数据储存文件并初始化表头,即将十二项参数作为表头,文件名初始化为coolingsystem[试验时间].xls,并将表格文件存入本地。随后,如图4.3所示程序将所要求数据依次存入已创建的Excel表格文件。最终数据储存格式如图4.4所示。

图4.2创建储存文件并初始化表头

图4.3 数据存入本地(.xls)文件

图4.4 本地数据储存表

4.3.2数据存入模块

数据存入模块包括了数据库初始化和数据存入的功能。本设计中用到的数据库是MySQL 数据库,MySQL 是一个关系数据库管理系统,具有开源、体积小,可运行在多种平台等优点。

首先,需要将LabVIEW连接到MySQL数据库。这里需要用到应用程序MySQL ODBC Connector,如图4.5所示。在主机上完成MySQL ODBC Connector 的安装后,用 ODBC (Open Database Connectivity)创建一个 DSN,有了DSN,LabVIEW 才可以通过LabVIEW SQL Toolkit工具包里的控件访问 MySQL 数据库。程序在最初界面启动的时候,便连接到数据库,以最高权限登陆数据库,打开默认表。在这其中,连接数据库的程序如图4.6所示,通过运行程序连接到主机上的 MySQL 数据库,并且打开默认数据库和默认表,得到当前数据库中的表,并在界面上显示出来。

图4.5 ODBC

图4.6 连接数据库程序

4.3.2.1上传本地历史数据

图4.7为本地历史数据上传到数据库的流程图。

图4.7 数据存入流程图

从程序流程图中可以看出,在连接到数据库之后,数据库会首先查找已经上传到了数据库的文件并显示在树型控件的前面板上,随后会在本地查找所有之前在本地存储过的数据文件,在与已经上传的文件进行对比之后,保留目前还仍未上传的数据文件并显示在前面板上。树型控件的前面板为图4.8所示。其中,目前包含了两个系统,分别是cooling system 和solar system,分别对应了在智能冷却系统中的不同子系统。目前,在cooling system中已经添加了五张表,分别对应了不同日期和不同时间进行试验的试验数据。可以在旁边名为传输状态的一栏中看到,目前有两张表已经完成上传,存储在了数据库当中,但仍有三张表只是储存在了本地还未上传。

图4.8 树型控件前面板

在树型控件中双击其中一个表头,则会进入到执行双击树型控件的程序,如图4.9所示。从图4.7的流程图中可以看出,在双击后,会进入到目前的表是否已上传的判断中,若是还未上传,则会将该数据写入表格当中,随后在MySQL数据库中创建对应的数据表并将所有数据插入。若程序在执行过程的过程当中不存在错误的话,数据将成功地从本地存入到数据库中并且在树型控件中的传输状态处会更新为已上传。

图4.9 双击响应程序

4.3.2.2上传实时数据

另外,实时数据上传的程序如图4.10所示。

如图所示,将十二项参数的实时数据写入表realtime当中,并运用PHP语言自动生成访问地址,以供之后从服务器调用数据时使用,生成SQL语句如图4.11所示。

图4.10 实时数据上传程序

图4.11 生成的SQL语句

4.4 数据的远程调用

不同的客户端均可以通过超文本传输协议(HTTP)向远程服务器发送请求,服务器接收到正确的访问请求后以JSON格式返回所需的数据。服务器使用PHP语言和SQL语言相结合对数据库进行操作。以调用实时数据的程序为例,客户端向远程服务器发www.egreatcar.online/egreatcar/getrealtime.php?name=realtime的请求,服务器执行下列代码,返回所需数据。

error_reporting(0); // 关闭错误提示

$name = $_GET["name"];

if (strlen($name) != 0) {

// connect to mysql

$con = mysqli_connect("bdm257248316.my3w.com", "bdm257248316", "cyl199203", "bdm257248316_db");// 连接到MySQL数据库

if (mysqli_connect_errno($con)) {

echo "link fail";

break;}

$query = 'SELECT * FROM ‘. $name . ’ order by id desc limit 1';// 按id倒序排列取第一个值

$result = mysqli_query($con, $query);

if (! $result) {

printf("valves erro1");

exit();}

$jarr = array();

while ($rows = mysqli_fetch_array($result, MYSQL_ASSOC)){

$count = count($rows);

for ($i = 0; $i < $count; $i ++) {

unset($rows[$i]); }

array_push($jarr, $rows);}

echo $str = json_encode($jarr);// 利用json——encode()方法对变量进行JSON编码,以返回JSON格式的数据

exit();

} else { echo "valves erro";}

?>

在代码中,首先利用mysqli_connect()方法连接到MySQL数据库[21]。采用order by id desc limit 1语句调取realtime表中的最后一条数据,即为实时数据。最后再利用json_encode()方法对数据进行JSON编码,以返回JSON格式的数据。

JSON是一种轻量级的数据交换格式。它采用完全独立于编程语言的文本格式来存储和表示数据。JSON具有简洁和清晰的层次结构,且易于人阅读和编写,同时也易于机器解析和生成,有效地提升网络传输效率。

数据以JSON格式返回后,根据不同的系统、试验日期、参数或是实时数据而生成不同的网址,在日后的Android应用开发中,直接用不同网址向服务器发送请求即可调用到不同的数据。这些会在下一章中进行介绍。

4.5 本章小结

在本章中,对智能冷却系统车载测试系统软件平台部分的开发进行了简要的介绍。首先对用于开发软件平台的LabVIEW软件和与其相关的LabVIEW SQL Toolkit数据库接口工具包进行了简短的介绍,利用LabVIEW SQL Toolkit即可对数据库进行访问和操作。随后将LabVIEW数据采集系统分为了两个大模块进行分别介绍,分别是数据采集模块和数据存入模块。数据采集模块主要完成将接收到的数据以文件的形式在计算机的磁盘中保存起来的工作。数据存入管理模块主要完成数据库的初始化以及在数据库中对数据的存入、更新等操作。最后,对数据从数据库中的调用进行了介绍。在下一章中将介绍本论文的重点研究和设计部分——对智能冷却系统进行实时监测的手机安卓应用开发。

第五章 Android平台数据接收软件开发

手机是每个人生活的必须品,使用便捷、携带方便,因此这也是研究人员随时随地查询智能冷却系统历史和实时数据,对其进行实时监测最好的平台。而目前就手机这一移动终端上来说,Android系统占据了大半江山,17年1月的市场研究显示:16年第四季度中国的Android系统的市场份额接近80%[22]。因此,本研究设计了一款基于Android平台的手机应用,根据研究人员的需求,向服务器发送http请求,服务器根据请求调用和处理数据库中的相关数据后将数据发回给Android手机应用,供研究人员对智能冷却系统进行实时监测。接下来将对该设计进行详细介绍。

5.1 Android Studio简介

本文中,应用Android Studio软件对手机端应用进行开发。

在2013年的谷歌开发者大会上,谷歌推出了一款全新的Android开发工具——Android Studio。Android Studio开发平台基于IntelliJ IDEA,在很多方面都已实现了对eclipse的超越[23]。主要优点有:

(1)启动和响应的速度更快

(2)UI界面更加人性化更加漂亮

(3)整合了Gradle构建工具

(4)实现了多屏预览,且颜色、图片在布局和代码中可实时预览

(5)随时都可以录制模拟器视频

(6)增加了智能保存功能

(7)支持各种插件,如Git、Markdown、Gradle等等

本次开发所应用的版本为目前的最新版本Android Studio Version 2.4,如图5.1所示。

图5.1 Android Studio 2.4版本

5.2 基于Android平台的智能冷却系统实时监测系统设计基本要求

本应用是以智能冷却系统为研究对象,智能冷却系统开发人员是使用者,整个应用的设计主要目标是供开发人员在开发过程中进行测试和试验时,对智能冷却系统一系列运行状态参数进行实时监测,以及将实时数据和历史数据在研发团队间进行信息共享。

因此应用在功能设计上要求能够达到目标所要求实现的功能。此应用在设计基本要求上主要分为三个方面,分别为界面设计方面、功能设计方面以及人机交互设计方面,如图5.2所示。在界面设计上主要强调简介明了,对布局的应用要得当,背景图和按键图的选取要使人愉悦。

在具体功能设计上主要强调简单实用、严格契合研发人员的需要,另外应确保得到数据的实时性。主要应具备以下功能:

1.首先在打开应用后应先进入登录界面,以确保只有登记过的研发人员才能对冷却系统进行监测。

2.应具备从数据库中调取数据的功能并将调取的JSON格式数据解析为字符串显示在屏幕上。

3.应具备在不同试验系统、日期和参数的历史数据之间进行选择和切换查看的功能。

4.应具备将大量的历史数据绘成图表的功能,更直观的将数据的变化趋势等信息展现给研发人员。

5.应具备后台实时更新功能,以确保每次查看到的是实时数据。

在人机交互设计上,要求对按下按钮时的活动跳转熟练运用,以便研发人员能够最快的找到需要的试验数据。总而言之,此应用应在最大程度上为研发人员能够随时随地实时监测智能冷却系统的运行状态提供便利。

图5.2 智能冷却系统监测APP设计基本要求

5.3 应用总体设计和结构

结合基于Android平台智能冷却系统运行状态远程监测APP的设计目标和要求,设计出该APP的基本流程图,如图5.3所示。

图5.3 智能冷却系统远程监测APP流程图设计

在打开应用后的第一个界面就是登陆界面,供登记过的研究人员用其账号和密码进行登陆,若是账号密码对应不正确则返回登录界面,正确则进入应用主界面。主界面上可选择查看历史数据或是实时数据。若进入历史数据,则依据想查看的系统、试验日期以及试验参数找到对应的数据绘成的图表。此时可选择按返回键返回主界面或是点击Home键打开弹出的菜单选择查看其他系统、日期或参数的图表。若进入实时数据,则会打开实时数据的数字显示界面,更新时间为半秒钟,因此可以看到实时变化的数据,按返回键返回主界面。接下来针对各具体功能进行一一介绍。

5.4 具体功能的实现

本应用得以实现主要是依靠于以下九个子功能的逐一实现。分别是:界面设计、登录功能、解析JSON数据、用碎片遍历参数、用Hello Chart编写表格、获取必应每日一图当作背景图、手动更新、切换参数、后台自动更新。

5.4.1 界面设计

在Android Studio软件中,界面的设计是依靠编写res/layout布局文件夹当中的XML文件来完成的,而按键的图标和应用的图标则是放在res/drawable图片文件夹中,如图5.4所示。

图5.4 布局XML文件和按键图标及所在文件夹

其中ic_zju图片为本应用选择的应用图标,为浙大校徽。另外,以本应用的主界面为例,其对应的布局文件为activity_first_sight.xml文件,采用了Linear Layout线性布局,在界面中添加了一行text控件用以显示Welcome语句,另外还有两个button按键控件,分别对应了跳转到历史数据和实时数据两个界面,该XML文件主代码如下。在模拟器上运行代码,可在模拟器屏幕上看到主界面代码所对应的布局效果如图5.5所示。

????android:orientation="vertical"

????android:layout_width="match_parent"

????android:layout_height="match_parent">

????

????????android:layout_width="wrap_content"

????????android:layout_height="wrap_content"

????????android:layout_margin="70dp"

????????android:textSize="50sp"

????????android:text="Welcome"

????????android:textColor="#FF7F50"

????????android:layout_gravity="center_horizontal" />

????

????????android:id="@+id/history_data"

????????android:layout_width="200dp"

????????android:layout_height="70dp"

???????android:layout_gravity="center_horizontal"

????????android:text="History Data"

????????android:textSize="20sp"

????????android:textColor="#191970" />

……

图5.5 主界面布局效果

5.4.2 登录功能

登陆功能是为了确保只有登记过的人员才可以对智能冷却系统数据进行查看。在布局文件中加入横向排列的Linear Layout布局,使得显示输入内容的TextView控件和输入账号密码的EditText控件在一行上显示,另外加入一个Button控件用以在输入正确的账号和密码后点击来进入主界面。登录界面如图5.6所示。

图5.6 登录界面 图5.7 登录账号密码不匹配

另外,在登陆功能的活动LoginActivity当中添加代码,在登陆按钮的点击事件中对输入的账号和密码进行判断,如果账号是li,并且密码是0000,就认为登陆成功并且跳转到主界面活动FirstSight,若是账号密码不匹配,则跳出Toast控件提示用户账号或密码错误,如图5.7所示。判断账号密码的代码如下所示。

public void onClick(View v) {

String account=accountEdit.getText().toString();

String password=passwordEdit.getText().toString();

if(account.equals("li")&&password.equals("0000")){

Intent intent=new Intent(LoginActivity.this,FirstSight.class);

startActivity(intent);

finish();

}else{

Toast.makeText(LoginActivity.this,"account or password is invalid", Toast. LENGTH_SHORT).show();}

}

5.4.3 解析JSON数据

在传输数据时,采用JSON(JavaScript Object Notation)数据格式打包。JSON是一种轻量级的数据交换格式。它采用完全独立于编程语言的文本格式来存储和表示数据。JSON具有简洁和清晰的层次结构,且易于人阅读和编写,同时也易于机器解析和生成,有效地提升网络传输效率。

在Android Studio当中就需要对JSON数据格式的数据进行解析,从而提取出其中的有用信息显示在界面上。解析JSON数据的方法主要有两种,一种是使用谷歌官方提供的JSONObject,或者使用谷歌的开源库GSON。在这里选用JSONObject的方法[24]。下列就是一组实时数据的JSON格式数据。

[{"id":"2347","time":"16:20:48","T(engine_out)":"75.1","T(engine_in)":"400.0","T(rad_out)":"59.5","T(rad_in)":"70.0","flow":"2.64","toatlFlow":"73.57","engine_speed":"0.0","engine_load":"0.0","car_speed":"0.0","pump_PWM":"30.00","fan_output":"0.00"}]

其中需要得到的数据和该数据的参数是一一对应的。代码如下:

??????????????????????????????????

??JSONArray jsonArray;

????????????????????????????????????jsonArray = new JSONArray(responseText);

????????????????????????????????????JSONObject jsonObject = jsonArray.getJSONObject(0);

????????????????????????????????????time = jsonObject.getString("time");

????????????????????????????????????time_1.setText(time);

????????????????????????????????????tEngineout = jsonObject.getString("T(engine_out)");

????????????????????????????????????tEngineOut_1.setText(tEngineout);

????????????????????????????????????tEnginein = jsonObject.getString("T(engine_in)");

????????????????????????????????????tEngineIn_1.setText(tEnginein);

????????????????????????????????????……

????????????????????????????????swipeRefresh.setRefreshing(false);?

其中,首先将服务器返回的数据传到一个JSONArray对象中,然后循环遍历这个对象,从中取出的每一个元素都是一个JSONObject对象,每个JSONObject对象中又会包含id、参数和数据,接下来只需要调用getString( )方法将数据取出,并用setText方法将其赋予TextView即可将数据显示在界面上。

5.4.4 用碎片遍历参数

在查询历史数据时,需要选择想要查看的系统、试验日期和试验参数,将遍历系统、日期、参数的功能写进一个碎片而不是写进活动,这样的话以后在需要时直接在布局当中引用碎片即可,降低了工作量。在遍历系统时,利用querySystem( )方法将头布局标题设为“系统”,将返回按钮隐藏起来,因为系统列表已经不能返回了,然后利用php语言编写出的地址,调用queryFromServer方法从服务器上查询数据。遍历日期和参数的queryDate( )、queryParameter( )方法都与遍历系统相似,这里不再赘述。querySystem()方法代码如下:

public??void querySystems(){

????titleText.setText("系统");

????backButton.setVisibility(View.GONE);

????systemList= DataSupport.findAll(System.class);

????if (systemList.size()>0){

????????dataList.clear();

????????for(System system:systemList){

????????????dataList.add(system.getSystemName());?}

????????adapter.notifyDataSetChanged();

????????listView.setSelection(0);

????????currentLevel=LEVEL_SYSTEM;

????}else {

????????String address="http://www.egreatcar.online/egreatcar/getdata.php?name= system";

????????queryFromServer(address, "system");?}}

queryFromServer()方法会调用sendOkHttpRequest( )方法向服务器发送请求,相应的数据回调到onResponse()方法中,再利用handleSystemResponse()方法来解析和处理服务器返回的数据。

在点击了某个系统时,会进入到ListView的onItemClick()方法,这时会根据当前级别是日期还是参数判断调用queryDate( )还是queryParameter( )方法。

最后还需要将碎片添加到活动当中,即可显示在界面上。碎片的界面如图5.8、5.9、5.10所示。

图5.8 系统界面 图5.9 试验日期界面 图5.10 试验参数界面

5.4.5 Hello Chart编写图表

由于历史数据数量较为庞大,若是将数据逐一列出,即不直观也很繁琐,更看不出数据变化的趋势。因此在这里选用图表的方式将测得的历史数据展示在研究人员面前。Android Studio开源库中有很多图表库,其中HelloChart的性能更好,功能更完善,UI风格更美观,坐标轴更精细[25]。因此选用HelloChart对数据点进行处理。选择折线图LineChart,首先对LineChart进行初始化设置,再分别对x轴、y轴的文字、个数等参数进行设置,再定义一些需要的行为属性,像缩放、平移等功能。数据的x轴为时间,y轴为参数的数据,分别将数据库中调出的数据赋予x、y即可绘出漂亮的图表,如图5.11、5.12所示。

图5.11 HelloChart图表 图5.12 背景图

5.4.6 背景图的选择(获取必应每日一图)

在图表页面,为了让界面变得更加美观,而不是一成不变过于单调,在这里加入了一个功能,从微软开发的搜索引擎——必应网站获取它的每日一图作为图表界面的背景图,并将图表底板设为半透明,浮于背景之上。必应的一大特色就是它每天都会在首页展示一张精美的背景图片,正好符合对背景图的需求。

获取的方法是首先尝试从SharedPreferences中读取缓存的背景图片,如果有缓存则直接用Glide来加载图片,若是没有则调用loadBingPic()方法来请求今日的必应背景图。与获取数据时类似,也是利用sendOkHttpRequest()方法从获取必应每日一图的接口调用每天更换的图片。另外,在请求数据的代码中加入loadBingPic()方法即可在每次刷新数据时同时刷新背景图片。背景图效果可参考图5.11、5.12。

5.4.7 手动更新

由于历史数据后台自动更新时间设定为了1小时,因此在研发人员查看数据时还需要添加手动更新的功能。采用下拉刷新的方式触发更新功能。首先需要在hello_chart布局中添加这一功能的布局,代码如下所示。

????android:id="@+id/swipe_refresh"

????android:layout_width="match_parent"

????android:layout_height="match_parent">

……

随后在ChartActivity当中添加这一功能,引入新参数mAddress表示刷新时访问的地址,在setOnRefreshListener()方法引入requestSheet()方法重新引入一次数据,即可达到更新的效果。不过在此之前需要首先利用clear()方法将先前的数据抹去,否则会出现重叠的现象。代码如下所示。

swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener () {

????@Override

????public void onRefresh() {

????????mPointValues.clear();

????????mAxisXValues.clear();

????????mAddress = getIntent().getStringExtra("address");

????????requestSheet(mAddress);?}});

5.4.8切换系统、日期、参数

在查看完一个参数的数据图表之后,若是想切换到其他参数的图标,此时就需要实现切换这一功能。因此需要在界面上再一次引入遍历系统、日期、参数的碎片。但若是直接引入碎片到界面上,则会将图表界面遮挡住,因此采取将碎片放入滑动菜单当中的方法,这样几乎不占据任何主界面的空间,切换时只需要利将主菜单从左侧滑出即可,或者是点击Home图标按钮令主菜单滑出。同样,在hello_chart布局中添加滑动菜单的布局,并且将碎片的布局添加到主菜单布局之中,用于遍历参数,代码如下所示。

????android:id="@+id/drawer_layout"

????android:layout_width="match_parent"

????android:layout_height="match_parent">

……

????android:id="@+id/choose_para_fragment"

????android:name="coolingsystem.com.coolingsystem.ChooseParaFragment"

????android:layout_width="match_parent"

????android:layout_height="match_parent"

????android:layout_gravity="start"/>

随后只需要在ChartActivity当中引入Button和DrawerLayout,利用openDrawer()的方法来打开滑动菜单即可。效果如图5.13所示。

图5.13 弹出主菜单切换参数

5.4.9 后台自动更新

既然是用来读取实时数据的应用,那么就一定需要具备自动更新的功能。新建一个Service服务,叫做RealtimeUpdate,同样利用sendOkHttpRequest()方法从数据库调取实时数据,将刷新时间设为2秒钟,与LabVIEW中数据间隔2秒钟上传的时间相同,这样就可以实时读取最新的数据。另外,与自动刷新实时数据相同,也需要在后台自动刷新历史数据,只不过时间间隔不需要那么短,设为1小时,道理和前者相同。

5.5 本章小结

在这一章中,对本研究最核心的设计做了详细介绍。首先介绍了智能冷却系统运行状态远程监测APP所应用的开发平台——Android Studio软件。随后依据这款APP所需要的功能,对其设计要求进行了阐述。然后依据设计要求,对APP首先进行了总体结构与流程设计。最后,针对如何实现APP总体结构中的每一个子功能,进行了详细的介绍。至此,智能冷却系统运行状态远程监测APP的开发也就结束了。本款APP切实符合了设计要求,可以为研发人员对冷却系统的监测提供极大的便利。当然,本款APP还有进步的空间,比如在实现了监测之后,如何能够通过手机端对冷却系统进行控制,达到实时监控的目的,这仍需要在日后的研究中进行完善。在下一章节中将对包含了测试采集平台、软件、手机端应用的整体的智能冷却系统监测系统进行整车上的试验测试,以检测在完成了理论设计后,能否达到实际功能的应用。

第六章 整车应用试验验证

在上述工作都完成后,智能冷却系统运行状态实时监测的系统也就准备就绪了,接下来进入到整车试验验证环节当中。试验对象为某国产小型乘用车,如图6.1所示。

图5.1 智能冷却系统远程监测试验车

在整车试验前,先将已经搭建好的测试系统放在副驾驶位置上,如图6.2所示,包括板卡、AQMD6030NS直流有刷电机调速器/驱动器、BTN7971电机驱动器等设备。将传感器接线与板卡连接好,接通电源。

图6.2 测试系统连接

启动发动机,将试验车开到校园主道路上,并保持车速在5-25km/h之间,将水泵PMW控制在50%-100%之间,风扇输出电压控制在5-8V,在LabVIEW上可读取到实时数据,LabVIEW界面如图6.3所示,另外数据会实时上传到数据库,可在远端利用手机Android应用读取到实时数据

如图6.4所示。完成了对智能冷却系统运行状态进行实时监测的预期目标。

图6.3 LabVIEW显示界面

图6.4 Android应用实时读取数据

在试验完成后将全部实验数据上传到数据库后,即可通过历史数据界面查看本次试验不同参数的数据图表,如图6.5-6.8所示。