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