朱浩翔1,郭為民2,楊寧1
?。?.上海電力學(xué)院 自動化工程學(xué)院,上海 200090;2.國網(wǎng)河南省電力公司電力科學(xué)研究院,河南 鄭州 450052)
摘要:充電樁通常采用工業(yè)總線與后臺通信。針對工業(yè)總線布網(wǎng)復(fù)雜、擴(kuò)展性差、易受干擾等缺點(diǎn),通過無線模塊設(shè)計(jì)了一個充電樁數(shù)據(jù)采集器,以ESP8266作為核心通信模塊,將充電樁的數(shù)據(jù)進(jìn)行采集并上傳到上位機(jī)。首先介紹了ESP8266硬件電路及其開發(fā)環(huán)境。接著根據(jù)采集數(shù)據(jù)的不同,提出了一種更高效率的采集方案。最后經(jīng)過實(shí)際應(yīng)用驗(yàn)證了該采集器的可行性。所設(shè)計(jì)的采集器具有一定的通用性,通過簡單修改配置,可以將此采集器應(yīng)用于不同設(shè)備的數(shù)據(jù)采集。
關(guān)鍵詞:充電樁;無線通信;ESP8266;采集方案
中圖分類號:TP23文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.09.027
引用格式:朱浩翔,郭為民,楊寧.基于ESP8266的充電樁數(shù)據(jù)采集器設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(9):92-94,99.
0引言
據(jù)國家發(fā)改委公布的數(shù)據(jù),截止到2016年,我國充電樁的數(shù)量不到 5 萬個,遠(yuǎn)遠(yuǎn)不能滿足國內(nèi)電動汽車發(fā)展的需要,明顯制約了電動汽車的普及。在“十三五”的規(guī)劃指導(dǎo)下,越來越多的汽車制造商和電力企業(yè)投入了大量的資源開展充電樁等電動汽車基礎(chǔ)設(shè)施的研究。但在積極推動電動汽車基礎(chǔ)設(shè)施建設(shè)的情況下,仍存在認(rèn)識不統(tǒng)一、配套政策不完善、協(xié)調(diào)推進(jìn)難度大、標(biāo)準(zhǔn)規(guī)范不健全等問題。其中充電樁后臺檢測是充電樁快速推廣發(fā)展的關(guān)鍵,要在充電站實(shí)現(xiàn)通信系統(tǒng),通常需要布置各類工業(yè)總線(RS485、RS232、CAN總線),其優(yōu)點(diǎn)是數(shù)據(jù)傳輸可靠、設(shè)計(jì)簡單[1];缺點(diǎn)是布網(wǎng)復(fù)雜、擴(kuò)展性差、施工成本高、靈活性差、通信容量低,并且在一般的電力環(huán)境中都會存在很大的電磁干擾[2],普通線纜布置的總線網(wǎng)絡(luò)常常會出現(xiàn)問題,另外對于早期投入建設(shè)但無良好通信功能的充電樁來說,在現(xiàn)場地下重新布置工業(yè)總線既不經(jīng)濟(jì)也不現(xiàn)實(shí)。因此,本文基于無線通信模塊設(shè)計(jì)了一個充電樁數(shù)據(jù)采集器,該采集器的工作是將充電樁的數(shù)據(jù)上傳到上位機(jī),具有成本低、擴(kuò)展性好、靈活性好等優(yōu)點(diǎn)。
工業(yè)常用的無線通信模塊有NRF905、CC1101、CC3200、SIM900、ESP8266等,前兩者通常需要額外的單片機(jī)對其進(jìn)行控制和數(shù)據(jù)處理;ESP8266模塊自帶GPIO與SPI等接口,可以獨(dú)立作為產(chǎn)品不需要額外的單片機(jī);而CC3200和SIM900模塊功能強(qiáng)大且包含了MCU,但其價格昂貴、功耗較大[36]。ESP8266不僅價格低廉,還有如下優(yōu)點(diǎn):同類產(chǎn)品一般不帶Flash,ESP826612F的Flash為4 MB、內(nèi)存為80 KB;其兼容性非常好,支持AT指令、C、Python、Lua、Javascript、Arduino等開發(fā)語言。因此ESP8266是業(yè)界一款里程碑式的WiFi芯片。
1原理設(shè)計(jì)
選擇ESP8266作為無線通信模塊,通過RS485串口與充電樁連接,將ESP8266連接到WiFi與上位機(jī)處在同一局域網(wǎng),實(shí)現(xiàn)局域網(wǎng)內(nèi)通信。上位機(jī)通過下發(fā)查詢報文采集充電樁的數(shù)據(jù)。充電樁只需轉(zhuǎn)發(fā)報文采集電能表數(shù)據(jù)。
1.1通信協(xié)議選擇
系統(tǒng)總體框圖如圖1所示。
ESP8266內(nèi)置了完整的TCP/IP協(xié)議棧,可以作為TCP的客戶端。固件提供了接口函數(shù),用戶可以不管TCP/IP底層代碼的實(shí)現(xiàn)。為了確保數(shù)據(jù)傳輸?shù)目煽亢桶踩x擇MODBUSTCP協(xié)議與上位機(jī)通信。其中上位機(jī)作為TCP服務(wù)器。
由于充電樁的數(shù)據(jù)由電能表提供,因此選擇電能表協(xié)議DLT6452007與ESP8266通信。
1.2硬件設(shè)計(jì)
由于ESP8266集成了射頻電路,內(nèi)置32位MCU,使得外圍電路設(shè)計(jì)十分容易。其硬件電路圖如圖2所示。
由圖2可以看出ESP8266的外圍電路非常簡單,ESP8266對電源穩(wěn)定性要求非常高,因此只需幾個電容用于電源濾波。3.3 V的電壓可以直接用LiPo電池供電。本采集器使用的型號是ESP826612E,該型號是ESP8266系列中最穩(wěn)定、最成熟的模塊。
充電樁的核心控制板M287是飛思卡爾的一塊工控核心板,M287通過RS485串口與ESP8266連接。
1.3軟件設(shè)計(jì)
1.3.1ESP8266 SDK與ESP8266 IDEEclipse IDE:它是由安可信發(fā)布的一款用于ESP8266二次開發(fā)的軟件平臺,由Eclipse集成了相關(guān)插件,相對于官方開發(fā)環(huán)境配置。Eclipse IDE簡易、方便,最重要的是可以在Windows下直接運(yùn)行[7],編譯過后能夠直接生成bin文件,通過燒寫工具ESP8266Flasher將bin文件燒入ESP8266即可。
ESP8266 SDK(Software Development Kit):用戶根據(jù)自己的ESP8266型號在樂鑫官網(wǎng)上下載需要的SDK。SDK包含了所有驅(qū)動,為用戶提供了一個非常簡單易用的平臺,雖然其底層代碼對用戶不透明,但都提供了接口函數(shù),用戶根據(jù)編程手冊可以直接調(diào)用[3]。
1.3.2采集程序設(shè)計(jì)
用戶應(yīng)用的初始化功能在user_init()實(shí)現(xiàn),user_init()是程序的入口函數(shù), ESP8266開機(jī)從該函數(shù)開始執(zhí)行。ESP8266主程序流程框圖如圖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); //設(shè)定連接的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服務(wù)器時必須確保WiFi已成功連接,因此設(shè)定了一個定時器test_timer,該定時器的作用是通過WiFi狀態(tài)接口函數(shù)wifi_station_get_connect_status()循環(huán)檢測WiFi是否連接成功,當(dāng)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);//遠(yuǎn)程IP設(shè)定
tcpclient.proto.tcp->remote_port = 8888; // 遠(yuǎn)程端口設(shè)定
tcpclient.proto.tcp->local_port = espconn_port(); //本地端口設(shè)定
espconn_connect(&tcpclient);//連接tcp 服務(wù)器
}
remote_ip可以選擇自動分配或固定IP,遠(yuǎn)程端口remote_port根據(jù)上位機(jī)選擇,通常選擇比較大的,小的端口通常被上位機(jī)一些系統(tǒng)服務(wù)占據(jù)。
2數(shù)據(jù)采集方案
根據(jù)充電樁電能表協(xié)議,需要采集的數(shù)據(jù)有變量數(shù)據(jù)、電能量數(shù)據(jù)、最大需量及發(fā)生時間數(shù)據(jù)、時間記錄數(shù)據(jù)。
根據(jù)采集頻率和是否需要實(shí)時顯示,將數(shù)據(jù)分為兩類,分別采用不同的方案采集。
第一類數(shù)據(jù):電能量數(shù)據(jù)、最大需量及發(fā)生時間數(shù)據(jù)、時間記錄數(shù)據(jù),比如:A相電壓失壓總次數(shù)和時間。此類數(shù)據(jù)非常多,并且是不需要實(shí)時顯示的,采集頻率很低,采用方案A。
第二類數(shù)據(jù):變量數(shù)據(jù),比如:A、B、C三相電壓、電流、功率等,此類數(shù)據(jù)是需要實(shí)時顯示的,其采集頻率很高。采用方案B。
2.1采集方案A
針對非實(shí)時更新數(shù)據(jù):比如事件記錄數(shù)據(jù)中的某條報文:A相失壓總次數(shù)和時間。上位機(jī)下發(fā)該條查詢報文,ESP8266解析該報文并下發(fā)給電能表,電能表響應(yīng)該報文并回復(fù)報文給ESP8266,ESP8266解析回復(fù)報文再上傳給上位機(jī)。采集方案A如圖4所示。具體程序流程圖如圖5所示。
2.2采集方案B
針對實(shí)時更新數(shù)據(jù):比如瞬時電壓、電流、功率。由ESP8266向電能表循環(huán)發(fā)送N條報文,電能表響應(yīng)每一條報文,ESP8066解析N條報文,得到數(shù)據(jù)存入自身內(nèi)存。上位機(jī)向ESP8266循環(huán)下發(fā)N條查詢報文,ESP8266取出內(nèi)存中的數(shù)據(jù)回復(fù)上位機(jī)。采集方案B如圖6所示。
具體程序流程圖如圖7所示。
2.3采集方案比較
對比分析方案A和方案B,由于方案B中的ESP8266與上位機(jī)和充電樁的通信是相互獨(dú)立的,因此在程序上更容易實(shí)現(xiàn)。并且由于方案B相互間的通信是同時進(jìn)行的,需要實(shí)時更新的數(shù)據(jù)已經(jīng)被采集并存放在ESP8266內(nèi)
存中,上位機(jī)在下發(fā)查詢報文時,ESP8266只需取出內(nèi)存中的數(shù)據(jù)直接回復(fù)即可,無需將MODBUSTCP報文格式轉(zhuǎn)化為DLT6452007報文格式,再下發(fā)到充電樁,最后才將充電樁回復(fù)的數(shù)據(jù)上傳到上位機(jī)。綜上所述,方案B的采集效率更高,因此數(shù)據(jù)的實(shí)時性也得到了提高。
兩套流程交替運(yùn)行,如果上位機(jī)準(zhǔn)備查詢的是非實(shí)時數(shù)據(jù),此時ESP8266通過判斷上位機(jī)下發(fā)的查詢報文,停止A方案,開始B方案。由于非實(shí)時數(shù)據(jù)采集頻率通常非常低,所以待一條非實(shí)時數(shù)據(jù)的報文得到正常響應(yīng)后,重新開始A方案,停止B方案。
3結(jié)論
本文基于ESP8266設(shè)計(jì)的無線數(shù)據(jù)采集器,成功地實(shí)現(xiàn)了充電樁的數(shù)據(jù)采集,針對不同數(shù)據(jù)類型使用不同采集方案提高了充電樁的數(shù)據(jù)采集效率。與傳統(tǒng)的充電樁有線數(shù)據(jù)采集器相比,該采集器具有方便安裝、易于維護(hù)、靈活擴(kuò)展等特點(diǎn)。該采集器具有一定的通用性,通過修改配置文件并增加所需通信協(xié)議,即可以作為通用的數(shù)據(jù)采集產(chǎn)品。
參考文獻(xiàn)
[1] 周春喜.電動汽車充電站遠(yuǎn)程監(jiān)管網(wǎng)絡(luò)系統(tǒng)研究[D].杭州:浙江大學(xué), 2012.
?。?] 劉嘉慧.我國可插電式電動汽車充電設(shè)備行業(yè)研究報告[D].成都:西南財經(jīng)大學(xué), 2014.
?。?] 霍濤, 賈振堂. 基于STM32和SIM900A的無線通信模塊設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子設(shè)計(jì)工程, 2014, 22(17):106-110.
?。?] 李美蓮. 基于SIM900B家用電器遠(yuǎn)程監(jiān)控系統(tǒng)的研究[J]. 微型機(jī)與應(yīng)用, 2013,32(24):31-33.
[5] 齊華, 王秋娟, 劉軍. 基于CC2430的無線條碼數(shù)據(jù)采集器的設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用, 2011, 37(2):120-122.
?。?] 李春杰,劉瑞霞.基于一種新型嵌入式系統(tǒng)級芯片的無線數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù), 2006, 29(3):36-38.
?。?] 范興隆. ESP8266在智能家居監(jiān)控系統(tǒng)中的應(yīng)用[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2016, 16(9):52-56.