嵌入式系统综合实验设计
2017-09-03孙彦景王艳芬郑红党
李 松, 赵 庆, 孙彦景, 王艳芬, 郑红党
(1. 中国矿业大学 信息与控制工程学院,江苏 徐州 221116;2. 北京邮电大学 信息与通信工程学院, 北京 100876)
嵌入式系统综合实验设计
李 松1, 赵 庆2, 孙彦景1, 王艳芬1, 郑红党1
(1. 中国矿业大学 信息与控制工程学院,江苏 徐州 221116;2. 北京邮电大学 信息与通信工程学院, 北京 100876)
以基于Android的电池管理系统为例,阐述嵌入式系统综合实验设计流程,从需求分析、架构设计、上位机设计到Android APP设计。所设计的电池管理系统具备电池参数采集、异常报警等功能。电池管理系统由电池信息采集模块、电池管理系统上位机和基于Android的电池管理APP组成,可实现多组电池分布式信息采集与充放电控制。
电池管理系统; Android; 上位机; Java
在移动互联网、物联网、信息物理系统等技术发展的背景下[1-2],嵌入式系统在信息工程、电子科学与技术和计算机等相关专业的课程体系中占据着越来越重要的地位,其理论和实验教学内容与方法需要随新技术的出现不断更新、改进[3-4]。嵌入式系统实验作为嵌入式系统课程组的重要组成部分,包括验证性实验和设计性实验[5]。验证性实验一般在实验指导书中提供实验步骤,要求学生按步骤完成实验操作后,观察某种实验现象,难度较低。而设计性实验要求学生根据规定题目或自拟题目,综合运用计算机网络、C语言程序设计、数据库等课程知识,自主进行软硬件选型、方案设计。由于学生在学习嵌入式系统实验课程时往往不具备嵌入式系统设计经验,所以认为设计性实验难度较高。嵌入式系统由于处理器、开发平台、操作系统、开发工具种类较多,学生在进行方案设计时往往无所适从[6-7]。常用嵌入式操作系统包括Linux、Windows Mobile、VxWorks,Android等,其中Android操作系统已成为手机、平板电脑等移动设备的主流选择,各类互联网公司、消费电子公司等对于Android环境下程序设计的人才需求很大。因此有必要在嵌入式实验课程中加入Android环境的嵌入式系统实验题目[8-9]。本文以电池管理系统为例,介绍基于Android的嵌入式系统综合实验开发流程。
1 需求分析
需求分析阶段,需要对实验题目的功能性需求、非功能性需求进行定义,为系统架构设计部分硬件、软件平台的选择提供依据。
在电动汽车、不间断电源等需要电池提供电能的系统中,经常需要成组使用动力电池[10]。电池组内的各个电池在工作状态等方面各不相同,电池管理系统(battery management system,BMS)用于智能管理和维护电池组内的各个电池,监测各个电池的状态,避免电池出现过充电和过放电等异常情况,延长电池组内的各个电池的使用寿命[11-12]。本实验中所设计的电池管理系统应包括如下功能:
(1) 电池参数采集。参数采集功能的作用是监控电池组的工作状态,电池的主要技术参数包括电池单体电压、电池组充放电电流、电池组总电压和电池温度等。这一功能是电池管理系统最基础的功能。这些技术参数既用来监控电池是不是具有正常的热电工作状态,也是分析电池组的综合状态的重要参照数据。
(2) 电池工作状态估计。电池工作状态的2大重要参数为SOC和SOH,二者是电动汽车在功率匹配时最重要的技术参数。在电池组运行过程中,电池管理系统应当能随时给出电池组的这2个技术参数,以让工作人员能准确地把握电池组的剩余电量和工作时间,防止电池组发生过放电、欠压等异常情况。
(3) 充电管理。自动检测电池充电时的电量,并能够在电量充足的情况下切断充电过程,防止电池组内的各个电池出现过充电等异常情况。
(4) 数据通信。将监测到的数据通过一定的通信方式传送到控制中心,如服务器,这样,既能够通过服务器推送到手机APP上进行快捷方便的信息显示,也能建立一个电池组的长期数据汇总表,帮助技术人员分析电池组的宏观状态和电池管理系统的优劣性。
(5) 电池均衡。电池组内的各个电池内部都会存在差异,在工作过程中也可能会出现各个电池放电状态不同步等情况,导致电池组的单体电池电压互不相同。如果不对其进行修正,会越来越严重,甚至会缩短电池组的生命周期。所以,电池管理系统必须能够完成对单体电池电压的检测,并能据此判断电池组的均衡情况,自动进行相应的合理操作,降低对电池组的损伤。
(6) 异常报警。电池管理系统应能够根据检测到的数据进行一些常规判断,如提前预警电池电量即将使用完或者电池电压即将超过某一阈值,以提醒工作人员注意执行相关操作维护和管理电池。在某些紧急情况下,电池管理系统应当能自动执行一些电池保护操作,如在监测到电池电量过低时自动切断电池供电,以保护电池寿命。通过异常情况报警及处理这一功能,电池管理系统才更加智能化和实用化。
2 系统架构设计
系统架构设计阶段需要确定嵌入式设计的硬件平台、操作系统、编程语言和模块构成等。本实验中电池管理系统由电池信息采集模块、电池管理系统上位机和基于Android的电池管理APP构成。电池信息采集模块通过电压、温度等传感器采集电池信息,通过微控制器对多路采集的数据进行编码,通过串口、CAN总线或WiFi等方式传输至电池管理系统上位机(见图1)。由于本文的重点在于基于Android的程序设计,电池信息采集模块部分不做过多阐述。
图1 电池管理系统系统架构
电池管理系统上位机通过总线或局域网接收多个电池信息采集模块上传电池信息,将数据保存至数据库中,并且实现上位机和手机端电池管理APP间的数据传输。
本设计的核心功能就是实现电池管理系统上位机和基于Android的电池管理APP之间的信息传输。本设计采取Server/Client模式,因为上位机是数据的发送端和存储端,作为Server端,而手机端APP则作为Client。
3 服务器端设计
电池管理系统服务器端设计指在PC端进行上位机软件设计。上位机在Visual Studio 2012编程环境下使用C#语言编写,主要对锂电池组的运行状态进行在线监控、远程设置电池管理系统相关参数信息,以及实现与手机APP的通信。上位机软件通过串口采集锂电池组的电压、电流、温度、SOC、系统状态等信息,然后将采集的数据信息在上位机软件中实时显示,如图2所示。另外,上位机软件可以远程设置BMS相应的参数信息,例如过充(过放)保护值、过温保护值、过流保护值、低电量报警值等信息。
BMS上位机与电池采集模块通信时,首先需要设置波特率、数据位、校验位以及停止位,然后上位机通过定时器每隔1 s发送一次查询指令,下位机返回电池组数据信息。上位机将接收到的数据解析处理并显示,然后存入SQL数据库中,再通过搭建的服务器将电池信息传输到手机APP,实现上位机Server端与手机Client端的通信。
图2 电池管理系统上位机界面
为实现上位机和手机端APP通信,利用Wampserver在本地计算机上搭建了本地服务器,又通过安卓端编程实现了同一局域网内本地计算机对手机的文件传输和数据推送;为了让手机与本地计算机不在同一局域网内时,也可以实现对服务器数据的访问,通过花生壳的内网映射功能实现。利用花生壳对本地PC做了内网映射,获得了可以在外网直接访问的域名和端口号,搭建了本地服务器。
花生壳是一款具有内网映射功能的软件,注册一个花生壳账号即可自动得到一个固定的公网域名。使用花生壳作了内网映射。当开启内网映射功能后,每次开机时,花生壳都会自动将本机的内网地址与提供的公网域名对应起来。在公网环境下访问该域名时就可以直接访问到本地计算机,使得处于内网环境下的计算机也能够用作公网环境下可访问的服务器,而不是只能在同一局域网下访问的服务器。
在Wampserver集成的MySQL中建立数据库,名字为Battery,在Batter数据库中建立6个数据表,分别用于存储电压、温度、报警信息、保护状态、系统信息和系统状态等电池系统的运行数据和工作状态。利用PHP语言连接数据库中,并读取数据表中的数据,对电压、温度等数据进行编码,最后以JSON格式返回。
4 Android APP设计
基于Android的电池管理APP开发基于Eclipse环境,Eclipse是由IBM公司的IDE自由集成开发环境,具有源代码开放、可扩展等特征,是目前主流的Android系统集成开发工具之一。在Eclipse的基础上安装Android SDK和ADT,开发语言选择Java。Android SDK中包括模拟器、API文档、教程和示例代码等模块。
采用HttpClient进行Android端对服务器发出请求。服务器端返回一串包含有格式的HTML纯文本代码,利用Java提供的ReplaceAll()函数将HTML格式文本删除,留下所需要的JSON数据,再一一解析出电压、温度等值赋给对应的安卓控件变量。
由于电池管理系统APP需要实时显示电池状态,因此需要周期性向上位机发出请求,本文中将周期设为5 s。在本设计中,采用定时器来实现自动刷新的功能。
Android端APP的定位是显示电脑端发送的电池系统运行状态信息,由于信息比较多,因此分成了6个板块进行显示。Android开发包括Java代码编写和XML代码编写,其中XML代码控制界面和控件的位置等,Java代码控制Activity内控件的动作等。本设计的所有界面布局都采用相对布局,这样修改整个界面的控件位置时只需修改第一个控件的位置,其他控件的位置就会随之改变。电池管理系统APP界面如图3所示,包括主界面、电池电压温度界面、电池组状态界面。
图3 电池管理系统Android APP界面
单体电池电压温度Activity界面,如图3(b)所示,显示的信息是电压Activity和温度Activity显示信息的汇总,目的是为了简洁明了地给出电池组内每一个单体电池的全部信息,更好地方便相关技术人员做出科学合理的电池使用决策。
电压Activity运行截图如图3(c)、(d)所示。电压Activity界面显示8个电池的电压、电池电量等电池信息。其中,表示电池电量的控件是自定义控件,需要自己建立一个Java类文件,在其中设定如何绘制该自定义控件。当文本“电池”的背景为黄色时,说明该电池此时发生过压;当文本“电池”的背景为红色时,说明该电池此时发生欠压;当文本“电池x”的背景为白色时,说明该电池欠过压状态正常。
5 结语
嵌入式综合实验作为嵌入式系统课程组中的重要组成部分。本文以电池管理系统设计为例,阐述了基于Android的嵌入式系统设计过程。主要阐述了电池管理系统上位机和电池信息管理APP软件设计。实现了Android端周期性的读取上位机中的电池电压、温度等信息。在上位机和Android APP中,均可以对电池组中电池工作状态进行查看。
References)
[1] 邢海霞,索明何,刘长荣.物联网背景下嵌入式系统教学改革[J].物联网技术,2015(12):100-102.
[2] 何剑锋,叶志翔,蒋年德,等.面向卓越工程师培养的嵌入式系统创新实践教学模式研究[J].计算机教育,2015(8):59-61.
[3] 冯冈平,赵志鹏,林泽燕.建构主义的嵌入式创新课堂教学模式研究[J].高教学刊,2016(1):13-15.
[4] 郑广海,曲英伟.嵌入式系统课程群实践教学优化整合与知识融合的研究[J].软件工程师,2015(6):58-60.
[5] 许永花,赵俊颖,张喜海.嵌入式系统课程实验教学改革与实践[J].电脑知识与技术,2016(7):134-135.
[6] 杨继森,张静,朱革,等.基于 ARM Cortex平台的嵌入式系统课程虚拟实验平台设计[J].实验技术与管理,2014,31(7):97-101.
[7] 陈凯,魏文博,邓明.嵌入式系统教学实验板开发[J].实验技术与管理,2016,33(1):82-85.
[8] 邓招奇,郝亚茹,邓春健.面向嵌入式领域的Android教学方法探讨[J].计算机教育,2016(6):101-103
[9] 方巍,单滢滢,张俊杰.基于 Android 的云考勤系统设计与实现[J].计算机技术与发展,2016,26(9):61-64.
[10] 符晓玲,商云龙,崔纳新.电动汽车电池管理系统研究现状及发展趋势[J].电力电子技术,2011(12):12-20.
[11] 朱刚.电动汽车电池管理系统 (BMS) 现状分析[J].通信电源技术, 2016(5):54.
[12] 许守平,侯朝勇,胡娟,等.储能用锂电池电池管理系统研究[J].电网与清洁能源,2014(5):70-78.
Design of comprehensive experiment of embedded system
Li Song1, Zhao Qing2, Sun Yanjing1, Wang Yanfen1, Zheng Hongdang1
(1. School of Information and Control Engineering, China University of Mining and Technology, Xuzhou 221116, China; 2. School of Information and Communication Engineering, Beijing University of Posts and Telecommunications, Beijing 100876, China)
By taking the battery management system based on Android as an example, the design procedure of the comprehensive experiment of the embedded system is illustrated from the aspects of the demand analysis, the structure design, the host computer design and the Android APP design. The designed battery management system has the functions of battery parameter acquisition, abnormal alarm, etc. This system consists of a battery information acquisition module, a host computer with a battery management system, and the battery management APP based on Android, which can realize the distributed information collection, and charging and discharging control for multiple batteries.
battery management system; Android; host computer; Java
10.16791/j.cnki.sjg.2017.08.043
2017-02-06
中国矿业大学课程建设与教学改革项目(2014QN12);江苏省高等教育教改研究立项课题(2015JSJG275);全国工程专业学位研究生教育教改项目(2016-ZX-224)
李松(1985—),男,山东济宁,博士,讲师,主要从事嵌入式系统方面的科研和教学工作.E-mail:sdlisong85@163.com
TN85;G642.423
A
1002-4956(2017)08-0172-04