黃新星
基于電動船鋰電池組的遠程監(jiān)控系統(tǒng)設(shè)計
黃新星
(武漢長海高新技術(shù)有限公司,武漢 430074)
針對新能源電動船載動力、機電設(shè)備在船舶位置不定的情況下,售后維護成本高以及供應商難以及時分析現(xiàn)場設(shè)備運行狀況等現(xiàn)實問題,研制了一種船載鋰電池設(shè)備遠程監(jiān)控系統(tǒng),實現(xiàn)遠程電池組狀態(tài)監(jiān)測、電池組數(shù)據(jù)云端存儲及分析、電池組相關(guān)設(shè)備控制。該系統(tǒng)為電池組相關(guān)應用人員提供遠程實時獲取鋰電池組運行狀態(tài)信息和遠程管理鋰電池組的接口,有效降低設(shè)備售后成本和提高設(shè)備運維效率,同時有效解決現(xiàn)場BMS硬件計算資源有限、數(shù)據(jù)存儲能力有限、無法應用更高精度更加復雜的SOC估算等算法的問題。
電動船鋰電池組;TDengine;WebService;MQTT
隨著新能源在船舶領(lǐng)域的應用,電池動力船作為新的船型大力發(fā)展起來。電池及其配套的電池管理系統(tǒng)成為電池動力船的核心部件。隨著4G、WiFi等無線技術(shù)的興起,各種智能傳感器、控制器、嵌入式設(shè)備等通過移動通信技術(shù)接入互聯(lián)網(wǎng),方便人員遠程實時監(jiān)控設(shè)備的運行情況,對業(yè)務(wù)進行預測和預警,幫助企業(yè)進行科學決策、節(jié)約成本并創(chuàng)造新的價值[1]。本項目設(shè)計一套針對電動船鋰電池組的遠程監(jiān)控系統(tǒng),實時監(jiān)測船用鋰電池組狀態(tài)數(shù)據(jù)并通過4G網(wǎng)絡(luò)上傳服務(wù)器,便于人員遠程對電池組運行狀況進行實時查看分析,同時人員通過電腦或手機可以下發(fā)控制指令給遠程電池組管理系統(tǒng),實現(xiàn)遠程電池組數(shù)據(jù)監(jiān)測管理、電池組數(shù)據(jù)云端存儲及分析、電池組相關(guān)設(shè)備控制。該系統(tǒng)實際使用所積累的動力鋰電池組的大數(shù)據(jù),將為船載電池管理系統(tǒng)研發(fā)改進、電芯優(yōu)化設(shè)計提供很大便利。
船用鋰電池組遠程監(jiān)控系統(tǒng)組成如圖1所示。
圖1 系統(tǒng)組成
船用鋰電池組遠程監(jiān)控系統(tǒng)包含船載控制器及軟件、服務(wù)器端軟件和客戶端軟件。船載控制器基于Linux系列ARM核心板,包含CAN、RS485、以太網(wǎng)等通訊接口,支持4G、wifi等無線通信,支持位置定位和外接存儲設(shè)備。該系統(tǒng)中控制器通過CAN總線與船載電池組設(shè)備連接,實時監(jiān)測電池運行狀態(tài)數(shù)據(jù)幀并壓縮后上傳至ECS服務(wù)器;同時訂閱MQTT控制指令消息并通過CAN總線下發(fā)。
服務(wù)器選用阿里云的ECS服務(wù)器,部署FTP服務(wù)器、MQTT服務(wù)器和時序數(shù)據(jù)庫,運行數(shù)據(jù)分析服務(wù)和WebService服務(wù)。服務(wù)端接收到數(shù)據(jù)后,通過數(shù)據(jù)分析服務(wù)對報文進行解析分類解包、組包將數(shù)據(jù)高并發(fā)寫入TDengine時序庫??蛻舳税l(fā)送請求內(nèi)容,WebService服務(wù)收到客戶端請求后查詢TDengine時序庫,遵循SOAP協(xié)議通過XML封裝數(shù)據(jù),然后由Http協(xié)議來傳輸數(shù)據(jù)給客戶端顯示。客戶端通過MQTT協(xié)議發(fā)送控制指令到MQTT服務(wù)器,設(shè)備端從MQTT服務(wù)器訂閱相應的控制指令消息,實現(xiàn)對相關(guān)設(shè)備的控制。
客戶端通過電腦以及手機移動端可以遠程查看電動船鋰電池組狀態(tài)及下發(fā)控制指令。
系統(tǒng)架構(gòu)如圖2所示。
圖2 系統(tǒng)架構(gòu)
WebService技術(shù)向外界提供一個可以通過web進行調(diào)用的API,是分布式的服務(wù)組件,可通過互聯(lián)網(wǎng)上的標準協(xié)議(如HTTP、XML和SOAP)為不同企業(yè)提供數(shù)據(jù)和業(yè)務(wù)邏輯服務(wù),是一種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術(shù)[2]。WebService采用可擴展的標記語言XML表示數(shù)據(jù)的基本格式,保證無論何種數(shù)據(jù)都可以被自動轉(zhuǎn)換成XSD類型而與平臺無關(guān);數(shù)據(jù)傳輸采用HTTP POST方式;數(shù)據(jù)傳輸格式采用簡單對象訪問協(xié)議(SOAP)調(diào)用遠程服務(wù),SOAP協(xié)議定義了其消息格式以及通過HTTP協(xié)議的使用方法;使用WebService描述語言WSDL描述WebService及其函數(shù)、參數(shù)和返回值。通過WSDL說明書,就可以描述WebService服務(wù)端對外發(fā)布的服務(wù)名稱、接口方法名稱、接口參數(shù)、方法返回值等[3]。
gSOAP通過C/C++實現(xiàn)基于soap協(xié)議的WebService服務(wù)。在Linux系統(tǒng)下通過configure、make、make install的簡易安裝過程得到soapcpp2工具。主要開發(fā)步驟如下:
1)編寫服務(wù)接口API頭文件mysoap.h
#include
intns__selectData(std::string devname,std::string startts,std::string endts, int curpage, int pagesize, std::string& result);
2)使用soapcpp2工具和服務(wù)接口頭文件生成API源代碼和wsdl文件
WSDL文件中包含WebService對外地址、提供的方法接口、方法參數(shù)和方法返回值信息??蛻舳送ㄟ^url地址(如http://192.168.1.120: 23410/ns? wsdl)訪問Web服務(wù)器上的WSDL文件。
3)服務(wù)端的實現(xiàn)
除上述生成的依賴文件外,服務(wù)端的實現(xiàn)與服務(wù)接口頭文件中聲明的函數(shù)相同,僅多了一個當前的soap連接的參數(shù)。
/// ns__selectData 接口函數(shù)名稱
/// param soap 當前的soap連接
/// param devname 接口參數(shù)
/// param startts接口參數(shù)
/// param endts接口參數(shù)
/// param curpage接口參數(shù)
/// param pagesize接口參數(shù)
/// param result接口返回值
int ns__selectData(struct soap *soap,std::string devname,std::string startts,std::string endts, int curpage, int pagesize, std::string& result);
4)客戶端訪問
服務(wù)端將wsdl文件的地址提供給客戶端,客戶端的XML請求格式如下:
MQTT(Message?Queuing?Telemetry?Transport,消息隊列遙測傳輸)是一種根據(jù)發(fā)布/訂閱(publish/subscribe)模式的輕量級通訊協(xié)議,該協(xié)議工作在 TCP/IP 協(xié)議族上。MQTT 協(xié)議是為硬件性能低下的遠程設(shè)備以及網(wǎng)絡(luò)狀況不好的情況下而設(shè)計的發(fā)布/訂閱型消息協(xié)議,最大特點是能夠以很少的代碼和有限的帶寬,為遠程設(shè)備供給實時可靠的消息傳輸。MQTT使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應用程序耦合[4]。MQTT提供三種消息發(fā)布服務(wù)質(zhì)量:“至多一次”,會發(fā)生消息丟失或者重復;“至少一次”,確保消息到達,但消息重復可能發(fā)生;“只有一次”,確保消息到達一次。
本系統(tǒng)選擇開源MQTT服務(wù)器emqx。在ECS服務(wù)器端采取二進制包安裝方式安裝部署emqx服務(wù),簡要步驟如下:
1) unzip emqx-ubuntu16.04-4.3.11-amd64
2) cd emqx
3) ./bin/emqx start
基于系統(tǒng)控制指令數(shù)據(jù)傳輸、MQTT 協(xié)議的特點,設(shè)計了系統(tǒng)控制指令傳輸流程:用戶通過客戶端界面將控制指令發(fā)布到 MQTT服務(wù)器,MQTT服務(wù)器根據(jù)設(shè)備端訂閱的情況將控制指令推送給設(shè)備端進行處理。MQTT傳輸架構(gòu)如圖3所示。
圖3 MQTT傳輸架構(gòu)
在不同的地點分布著多個監(jiān)控設(shè)備,系統(tǒng)需對各種監(jiān)控的數(shù)據(jù)匯總,進行計算和分析。每個監(jiān)控設(shè)備監(jiān)測的數(shù)據(jù)都很規(guī)則,每一條記錄都有設(shè)備ID、時間戳、監(jiān)測的物理量,還有與每個設(shè)備相關(guān)的靜態(tài)標簽(如設(shè)備ID)。每個設(shè)備監(jiān)測的數(shù)據(jù)點是時序的,是一個數(shù)據(jù)流。該監(jiān)測系統(tǒng)所產(chǎn)生的數(shù)據(jù)數(shù)據(jù)具有明顯的特征:1)數(shù)據(jù)是時序的,一定帶有時間戳;2)數(shù)據(jù)是結(jié)構(gòu)化的;3)數(shù)據(jù)極少有更新或刪除操作;4)無需傳統(tǒng)數(shù)據(jù)庫的事務(wù)處理;5)相對互聯(lián)網(wǎng)應用,寫多讀少;6)用戶關(guān)注的是一段時間的趨勢;7)數(shù)據(jù)是有保留期限的;8)數(shù)據(jù)的查詢分析是基于時間段和設(shè)備的;9)數(shù)據(jù)量巨大,一天監(jiān)測的數(shù)據(jù)就可以超過5億條。由于數(shù)據(jù)記錄條數(shù)巨大,數(shù)據(jù)的實時寫入無法達到要求,查詢分析無法實時響應,導致用戶體驗度降低。
TDengine 是一款專門解決物聯(lián)網(wǎng)大數(shù)據(jù)市場需求和技術(shù)難題而推出的高性能時序數(shù)據(jù)庫,融合集成了數(shù)據(jù)庫、消息隊列、緩存、流式計算等,不用再集成第三方應用軟件,使得應用開發(fā)和數(shù)據(jù)庫維護變得更加容易,降低了成本[5]。為提高壓縮和查詢效率,TDengine 采用列式存儲?;跁r序數(shù)據(jù)特點,TDengine 將每一個監(jiān)測點的數(shù)據(jù)作為數(shù)據(jù)庫中的一張獨立的表來存儲。由于不同數(shù)據(jù)監(jiān)測設(shè)備產(chǎn)生數(shù)據(jù)的過程完全獨立,每個設(shè)備只產(chǎn)生屬于自己的數(shù)據(jù),一張表只有一個寫入者,就可以采用無鎖方式來寫入一張表的數(shù)據(jù),就能大幅提升寫入速度。分析本項目特點和數(shù)據(jù)使用方式,進行了以下優(yōu)化設(shè)計方法:
1)包含模擬量,數(shù)字量,報警,系統(tǒng)日志等類型數(shù)據(jù),同類型使用一個超級表集合;
2)單個設(shè)備數(shù)據(jù)點對應單個表存儲;
3)批量數(shù)據(jù)寫入,最大化SQL字符串拼接,提高數(shù)據(jù)寫入效率;
4)采用多線程并發(fā)寫入數(shù)據(jù)表方式,進一步提高數(shù)據(jù)寫入速度。
TDengine數(shù)據(jù)庫建模大致方法如下:
(1)數(shù)據(jù)庫的創(chuàng)建
create database testdb keep 365 update 1;
keep:數(shù)據(jù)保持最長天數(shù),超過期限數(shù)據(jù)庫會自動刪除數(shù)據(jù)。update:是否更新相同時間戳數(shù)據(jù)。若為0,若需插入的數(shù)據(jù)的時間戳已存在,則該條需插入的數(shù)據(jù)被廢棄。保留update功能,方便后期對壞數(shù)據(jù)做二次處理。
數(shù)據(jù)庫參數(shù)配置如圖4所示。
圖4 數(shù)據(jù)庫參數(shù)
(2)超級表結(jié)構(gòu)的設(shè)計
為了更好的管理一個設(shè)備一張表,設(shè)計了超級表。TDengine是結(jié)構(gòu)化的數(shù)據(jù)庫,需要提前設(shè)計表結(jié)構(gòu)。設(shè)備很多或動態(tài)接入的時候,無法提前為每個設(shè)備創(chuàng)建表結(jié)構(gòu)。因此同種設(shè)備創(chuàng)建一個超級表模板。
use testdb;
CREATE TABLE if not exists stest(ts timestamp, param1 double,param2 double,param3 double) TAGS(devID binary(20));
(3)子表插入語句
INSERT INTO dev01 USING stest TAGS ('dev01') VALUES ('2021-10-10 22:37:36.100',240,5,1000);
采用超級表模板的方式不需要提前創(chuàng)建設(shè)備子表,當有數(shù)據(jù)產(chǎn)生時,TDengine會自動創(chuàng)建設(shè)備子表。
該系統(tǒng)成功部署后,電池組應用相關(guān)人員通過電腦即可遠程查看電動船電池組運行狀態(tài)。通過對電池組工況、溫度及SOC等的分析統(tǒng)計,得到電動船的電池電流工況;掌握電池溫度信息,提高船舶運行的安全性;掌握電池SOC跳變的數(shù)據(jù),有助于電池算法的完善和優(yōu)化。
圖5 電池組溫度分析
圖6 電池組電流工況分析
圖7 電池組SOC工況分析
圖8 SOC跳變
[1] 榮雪琴, 劉勇, 劉昊, 等. 基于時序數(shù)據(jù)庫的電力運維系統(tǒng)關(guān)鍵技術(shù)研究[J]. 電測與儀表, 2018, 55(9): 15-51, 83.
[2] 閔建. 基于WebService的智能電測儀器HMI實現(xiàn)信[J]. 息化研究, 2020, 46(6): 68-74.
[3] 衛(wèi)祥, 羅發(fā)政, 楊浩, 等. 基于WebService的企業(yè)采購業(yè)務(wù)架構(gòu)的設(shè)計與實現(xiàn)[J]. 自動化技術(shù)與應用, 2020, 39(2): 33-40, 44.
[4]葉康林, 鐘瑾瑞, 焦冠文, 等. 基于MQTT協(xié)議的生產(chǎn)實時數(shù)據(jù)傳輸技術(shù)應用研究[J]. 信息系統(tǒng)工程, 2021(11): 65-68.
[5] 董雪, 高遠, 敖炳. 基于TDengine的智能電網(wǎng)監(jiān)控系統(tǒng)數(shù)據(jù)存儲方法研究[J]. 電氣應用, 2021, 40(8): 68-74.
Design of remote monitoring system based on lithium battery pack of electric ship
Huang Xinxing
(Wuhan Great Sea Hi-Tech Co.,LTD., Wuhan 430074, China)
U674.92
A
1003-4862(2024)03-0032-04
2023-06-18
黃新星(1984-),女,碩士。研究方向:計算機應用。E-mail: 24450133@qq.com