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