李 松, 趙 慶, 孫彥景, 王艷芬, 鄭紅黨
(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的嵌入式系統綜合實驗開發流程。
需求分析階段,需要對實驗題目的功能性需求、非功能性需求進行定義,為系統架構設計部分硬件、軟件平臺的選擇提供依據。
在電動汽車、不間斷電源等需要電池提供電能的系統中,經常需要成組使用動力電池[10]。電池組內的各個電池在工作狀態等方面各不相同,電池管理系統(battery management system,BMS)用于智能管理和維護電池組內的各個電池,監測各個電池的狀態,避免電池出現過充電和過放電等異常情況,延長電池組內的各個電池的使用壽命[11-12]。本實驗中所設計的電池管理系統應包括如下功能:
(1) 電池參數采集。參數采集功能的作用是監控電池組的工作狀態,電池的主要技術參數包括電池單體電壓、電池組充放電電流、電池組總電壓和電池溫度等。這一功能是電池管理系統最基礎的功能。這些技術參數既用來監控電池是不是具有正常的熱電工作狀態,也是分析電池組的綜合狀態的重要參照數據。
(2) 電池工作狀態估計。電池工作狀態的2大重要參數為SOC和SOH,二者是電動汽車在功率匹配時最重要的技術參數。在電池組運行過程中,電池管理系統應當能隨時給出電池組的這2個技術參數,以讓工作人員能準確地把握電池組的剩余電量和工作時間,防止電池組發生過放電、欠壓等異常情況。
(3) 充電管理。自動檢測電池充電時的電量,并能夠在電量充足的情況下切斷充電過程,防止電池組內的各個電池出現過充電等異常情況。
(4) 數據通信。將監測到的數據通過一定的通信方式傳送到控制中心,如服務器,這樣,既能夠通過服務器推送到手機APP上進行快捷方便的信息顯示,也能建立一個電池組的長期數據匯總表,幫助技術人員分析電池組的宏觀狀態和電池管理系統的優劣性。
(5) 電池均衡。電池組內的各個電池內部都會存在差異,在工作過程中也可能會出現各個電池放電狀態不同步等情況,導致電池組的單體電池電壓互不相同。如果不對其進行修正,會越來越嚴重,甚至會縮短電池組的生命周期。所以,電池管理系統必須能夠完成對單體電池電壓的檢測,并能據此判斷電池組的均衡情況,自動進行相應的合理操作,降低對電池組的損傷。
(6) 異常報警。電池管理系統應能夠根據檢測到的數據進行一些常規判斷,如提前預警電池電量即將使用完或者電池電壓即將超過某一閾值,以提醒工作人員注意執行相關操作維護和管理電池。在某些緊急情況下,電池管理系統應當能自動執行一些電池保護操作,如在監測到電池電量過低時自動切斷電池供電,以保護電池壽命。通過異常情況報警及處理這一功能,電池管理系統才更加智能化和實用化。
系統架構設計階段需要確定嵌入式設計的硬件平臺、操作系統、編程語言和模塊構成等。本實驗中電池管理系統由電池信息采集模塊、電池管理系統上位機和基于Android的電池管理APP構成。電池信息采集模塊通過電壓、溫度等傳感器采集電池信息,通過微控制器對多路采集的數據進行編碼,通過串口、CAN總線或WiFi等方式傳輸至電池管理系統上位機(見圖1)。由于本文的重點在于基于Android的程序設計,電池信息采集模塊部分不做過多闡述。

圖1 電池管理系統系統架構
電池管理系統上位機通過總線或局域網接收多個電池信息采集模塊上傳電池信息,將數據保存至數據庫中,并且實現上位機和手機端電池管理APP間的數據傳輸。
本設計的核心功能就是實現電池管理系統上位機和基于Android的電池管理APP之間的信息傳輸。本設計采取Server/Client模式,因為上位機是數據的發送端和存儲端,作為Server端,而手機端APP則作為Client。
電池管理系統服務器端設計指在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格式返回。
基于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”的背景為白色時,說明該電池欠過壓狀態正常。
嵌入式綜合實驗作為嵌入式系統課程組中的重要組成部分。本文以電池管理系統設計為例,闡述了基于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