朱浩翔,郭為民,楊 寧
(1.上海電力學院 自動化工程學院,上海 200090;2.國網河南省電力公司電力科學研究院,河南 鄭州 450052)
基于ESP8266的充電樁數據采集器設計*
朱浩翔1,郭為民2,楊 寧1
(1.上海電力學院 自動化工程學院,上海 200090;2.國網河南省電力公司電力科學研究院,河南 鄭州 450052)
充電樁通常采用工業總線與后臺通信。針對工業總線布網復雜、擴展性差、易受干擾等缺點,通過無線模塊設計了一個充電樁數據采集器,以ESP8266作為核心通信模塊,將充電樁的數據進行采集并上傳到上位機。首先介紹了ESP8266硬件電路及其開發環境。接著根據采集數據的不同,提出了一種更高效率的采集方案。最后經過實際應用驗證了該采集器的可行性。所設計的采集器具有一定的通用性,通過簡單修改配置,可以將此采集器應用于不同設備的數據采集。
充電樁;無線通信;ESP8266;采集方案
據國家發改委公布的數據,截止到2016年,我國充電樁的數量不到 5 萬個,遠遠不能滿足國內電動汽車發展的需要,明顯制約了電動汽車的普及。在“十三五”的規劃指導下,越來越多的汽車制造商和電力企業投入了大量的資源開展充電樁等電動汽車基礎設施的研究。但在積極推動電動汽車基礎設施建設的情況下,仍存在認識不統一、配套政策不完善、協調推進難度大、標準規范不健全等問題。其中充電樁后臺檢測是充電樁快速推廣發展的關鍵,要在充電站實現通信系統,通常需要布置各類工業總線(RS485、RS232、CAN總線),其優點是數據傳輸可靠、設計簡單[1];缺點是布網復雜、擴展性差、施工成本高、靈活性差、通信容量低,并且在一般的電力環境中都會存在很大的電磁干擾[2],普通線纜布置的總線網絡常常會出現問題,另外對于早期投入建設但無良好通信功能的充電樁來說,在現場地下重新布置工業總線既不經濟也不現實。因此,本文基于無線通信模塊設計了一個充電樁數據采集器,該采集器的工作是將充電樁的數據上傳到上位機,具有成本低、擴展性好、靈活性好等優點。
工業常用的無線通信模塊有NRF905、CC1101、CC3200、SIM900、ESP8266等,前兩者通常需要額外的單片機對其進行控制和數據處理;ESP8266模塊自帶GPIO與SPI等接口,可以獨立作為產品不需要額外的單片機;而CC3200和SIM900模塊功能強大且包含了MCU,但其價格昂貴、功耗較大[3-6]。ESP8266不僅價格低廉,還有如下優點:同類產品一般不帶Flash,ESP8266-12F的Flash為4 MB、內存為80 KB;其兼容性非常好,支持AT指令、C、Python、Lua、Javascript、Arduino等開發語言。因此ESP8266是業界一款里程碑式的WiFi芯片。
選擇ESP8266作為無線通信模塊,通過RS485串口與充電樁連接,將ESP8266連接到WiFi與上位機處在同一局域網,實現局域網內通信。上位機通過下發查詢報文采集充電樁的數據。充電樁只需轉發報文采集電能表數據。
1.1 通信協議選擇
系統總體框圖如圖1所示。

圖1 系統框圖
ESP8266內置了完整的TCP/IP協議棧,可以作為TCP的客戶端。固件提供了接口函數,用戶可以不管TCP/IP底層代碼的實現。為了確保數據傳輸的可靠和安全,選擇MODBUS-TCP協議與上位機通信。其中上位機作為TCP服務器。
由于充電樁的數據由電能表提供,因此選擇電能表協議DLT645-2007與ESP8266通信。
1.2 硬件設計
由于ESP8266集成了射頻電路,內置32位MCU,使得外圍電路設計十分容易。其硬件電路圖如圖2所示。

圖2 硬件電路圖
由圖2可以看出ESP8266的外圍電路非常簡單,ESP8266對電源穩定性要求非常高,因此只需幾個電容用于電源濾波。3.3 V的電壓可以直接用LiPo電池供電。本采集器使用的型號是ESP8266-12E,該型號是ESP8266系列中最穩定、最成熟的模塊。
充電樁的核心控制板M287是飛思卡爾的一塊工控核心板,M287通過RS485串口與ESP8266連接。
1.3 軟件設計
1.3.1 ESP8266 SDK與ESP8266 IDE
Eclipse IDE:它是由安可信發布的一款用于ESP8266二次開發的軟件平臺,由Eclipse集成了相關插件,相對于官方開發環境配置。Eclipse IDE簡易、方便,最重要的是可以在Windows下直接運行[7],編譯過后能夠直接生成bin文件,通過燒寫工具ESP8266Flasher將bin文件燒入ESP8266即可。
ESP8266 SDK(Software Development Kit):用戶根據自己的ESP8266型號在樂鑫官網上下載需要的SDK。SDK包含了所有驅動,為用戶提供了一個非常簡單易用的平臺,雖然其底層代碼對用戶不透明,但都提供了接口函數,用戶根據編程手冊可以直接調用[3]。
1.3.2 采集程序設計
用戶應用的初始化功能在user_init()實現,user_init()是程序的入口函數, ESP8266開機從該函數開始執行。ESP8266主程序流程框圖如圖3所示。

圖3 主程序流程圖
主程序user_init()部分代碼如下:
void user_init()
{
uart_init(BIT_RATE_115200,BIT_RATE_115200);
//串口初始化
user_set_station_config();
//esp8266 WiFi信息配置
}
void user_set_station_config()
{
struct station_config stationconfig;
os_memset(&stationconfig.ssid, 0, 32);
os_memset(&stationconfig.password, 0, 64);
os_memcpy(&stationconfig.ssid, "WIFINAME", 8);
//設定連接的WiFi
os_memcpy(&stationconfig.password, "passward.", 8);
//WiFi密碼
stationconfig.bssid_set=0;
wifi_station_set_config(&stationconfig);
os_timer_disarm(&test_timer);
os_timer_setfn(&test_timer,(os_timer_func_t*)user_check_ip, NULL);
os_timer_arm(&test_timer, 2000, 1);
}
最后配置TCP客戶端信息,這里需要注意連接TCP服務器時必須確保WiFi已成功連接,因此設定了一個定時器test_timer,該定時器的作用是通過WiFi狀態接口函數wifi_station_get_connect_status()循環檢測WiFi是否連接成功,當WiFi連接成功后配置TCP客戶端信息。下面為建立TCP連接的程序:
user_check_ip()
{
tcpclient.type=ESPCONN_TCP;
//tcp連接方式
tcpclient.state = ESPCONN_NONE;
tcp_server_ip.addr = 0;
const char esp_server_ip[4] = {x,x,x,x};
os_memcpy(tcpclient.proto.tcp->remote_ip, esp_server_ip, 4);
//遠程IP設定
tcpclient.proto.tcp->remote_port = 8888;
// 遠程端口設定
tcpclient.proto.tcp->local_port = espconn_port();
//本地端口設定
espconn_connect(&tcpclient);
//連接tcp 服務器
}
remote_ip可以選擇自動分配或固定IP,遠程端口remote_port根據上位機選擇,通常選擇比較大的,小的端口通常被上位機一些系統服務占據。
根據充電樁電能表協議,需要采集的數據有變量數據、電能量數據、最大需量及發生時間數據、時間記錄數據。
根據采集頻率和是否需要實時顯示,將數據分為兩類,分別采用不同的方案采集。
第一類數據:電能量數據、最大需量及發生時間數據、時間記錄數據,比如:A相電壓失壓總次數和時間。此類數據非常多,并且是不需要實時顯示的,采集頻率很低,采用方案A。
第二類數據:變量數據,比如:A、B、C三相電壓、電流、功率等,此類數據是需要實時顯示的,其采集頻率很高。采用方案B。
2.1 采集方案A
針對非實時更新數據:比如事件記錄數據中的某條報文:A相失壓總次數和時間。上位機下發該條查詢報文,ESP8266解析該報文并下發給電能表,電能表響應該報文并回復報文給ESP8266,ESP8266解析回復報文再上傳給上位機。采集方案A如圖4所示。具體程序流程圖如圖5所示。

圖4 方案A框圖
2.2 采集方案B
針對實時更新數據:比如瞬時電壓、電流、功率。由ESP8266向電能表循環發送N條報文,電能表響應每一條報文,ESP8066解析N條報文,得到數據存入自身內存。上位機向ESP8266循環下發N條查詢報文,ESP8266取出內存中的數據回復上位機。采集方案B如圖6所示。具體程序流程圖如圖7所示。
2.3 采集方案比較
對比分析方案A和方案B,由于方案B中的ESP8266與上位機和充電樁的通信是相互獨立的,因此在程序上更容易實現。并且由于方案B相互間的通信是同時進行的,需要實時更新的數據已經被采集并存放在ESP8266內

圖5 方案A程序流程圖
存中,上位機在下發查詢報文時,ESP8266只需取出內存中的數據直接回復即可,無需將MODBUS-TCP報文格式轉化為DLT645-2007報文格式,再下發到充電樁,最后才將充電樁回復的數據上傳到上位機。綜上所述,方案B的采集效率更高,因此數據的實時性也得到了提高。
兩套流程交替運行,如果上位機準備查詢的是非實時數據,此時ESP8266通過判斷上位機下發的查詢報文,停止A方案,開始B方案。由于非實時數據采集頻率通常非常低,所以待一條非實時數據的報文得到正常響應后,重新開始A方案,停止B方案。

圖6 方案B框圖

圖7 方案B程序流程圖
本文基于ESP8266設計的無線數據采集器,成功地實現了充電樁的數據采集,針對不同數據類型使用不同采集方案提高了充電樁的數據采集效率。與傳統的充電樁有線數據采集器相比,該采集器具有方便安裝、易于維護、靈活擴展等特點。該采集器具有一定的通用性,通過修改配置文件并增加所需通信協議,即可以作為通用的數據采集產品。
[1] 周春喜.電動汽車充電站遠程監管網絡系統研究[D].杭州:浙江大學, 2012.
[2] 劉嘉慧.我國可插電式電動汽車充電設備行業研究報告[D].成都:西南財經大學, 2014.
[3] 霍濤, 賈振堂. 基于STM32和SIM900A的無線通信模塊設計與實現[J]. 電子設計工程, 2014, 22(17):106-110.
[4] 李美蓮. 基于SIM900B家用電器遠程監控系統的研究[J]. 微型機與應用, 2013,32(24):31-33.
[5] 齊華, 王秋娟, 劉軍. 基于CC2430的無線條碼數據采集器的設計[J]. 電子技術應用, 2011, 37(2):120-122.
[6] 李春杰,劉瑞霞.基于一種新型嵌入式系統級芯片的無線數據采集系統的設計[J].現代電子技術, 2006, 29(3):36-38.
[7] 范興隆. ESP8266在智能家居監控系統中的應用[J]. 單片機與嵌入式系統應用, 2016, 16(9):52-56.
Design of data collector for charging piles based on ESP8266
Zhu Haoxiang1,Guo Weimin2,Yang Ning1
(1.School of Automation Engineering, Shanghai University of Electric Power, Shanghai 200090, China;2.Electric Power Research Institute of State Grid Henan Electric Power Company, Zhengzhou 450052, China)
Charging pile usually adopts industrial bus for background communications. According to industrial bus complex, poor extension, vulnerable to jamming and other problems, this paper designed a charging pile data collector using ESP8266 as the core module. Collecting the data of charging piles and uploading to the host computer . Firstly, the development and application of ESP8266 and its hardware circuit are introduced. Secondly,according to the difference of the collected data, the paper puts forward a more efficient collection scheme. Finally, the feasibility of the collector is verified by practical application. In this paper, the design of the data collector has a certain commonality that can apply to the data collector for different equipment through a simple modification of the configuration.
charging pile; wireless communication; ESP8266; collection method
國家自然科學基金青年基金項目(21607111)
TP23
A
10.19358/j.issn.1674- 7720.2017.09.027
朱浩翔,郭為民,楊寧.基于ESP8266的充電樁數據采集器設計[J].微型機與應用,2017,36(9):92-94,99.
2016-12-07)
朱浩翔(1992-),男,碩士研究生,主要研究方向:充電樁數據通信,開關電源控制策略。
郭為民(1971-),男,學士,高級工程師,主要研究方向:源網協調及電力系統分析與控制。
楊寧(1976-),男,博士,教授,主要研究方向:電網運行中設備測量與控制、車輛導航與調度和智能算法研究。