丁宏林,周立忠,周桐,王筠韻,張晟愷,李亞東
(國網(wǎng)陜西省電力有限公司商洛供電公司,陜西商洛 726000)
智能設(shè)備已經(jīng)廣泛應(yīng)用于電力系統(tǒng)[1],設(shè)備的功能越強(qiáng)大,操作也就越簡單便捷?,F(xiàn)在幾乎所有的電力設(shè)備都具備了通信功能,有相應(yīng)的通信接口[2],但是設(shè)備的用途、分類各不相同,廠家的技術(shù)水平也各有高低,導(dǎo)致除國家強(qiáng)制要求的接口外,特別是一些專用設(shè)備,其接口不統(tǒng)一,例如電能表現(xiàn)場校驗儀就有232 接口、網(wǎng)口、USB 等不同硬件接口的設(shè)備。隨著國家電網(wǎng)信息化要求的不斷提升,需要將這些設(shè)備也納入到信息化應(yīng)用中[3],以往的做法都是由廠家提供對應(yīng)的連接線纜和PC 端的應(yīng)用程序,實現(xiàn)設(shè)備的通信,這種方式導(dǎo)致的后果就是設(shè)備的專有性太強(qiáng),一旦更換其他廠家的設(shè)備,整個流程和應(yīng)用軟件就全部需要調(diào)整,而且設(shè)備的更新?lián)Q代速度很快,導(dǎo)致這些設(shè)備的數(shù)字化應(yīng)用一直未能有效實現(xiàn)。
為了解決計量設(shè)備驗收工作的自動化、信息化問題,應(yīng)用無線通信技術(shù),實現(xiàn)不同規(guī)約和硬件接口檢驗設(shè)備的數(shù)據(jù)訪問,設(shè)計了“關(guān)口計量設(shè)備一鍵式驗收及故障診斷裝置”項目,對電能表現(xiàn)場校驗儀、電壓互感器校驗儀、電流互感器校驗儀、二次回路接線、負(fù)荷檢測儀、標(biāo)準(zhǔn)電能表等多種設(shè)備完成數(shù)據(jù)采集[4],最終在手持終端(安卓平臺)進(jìn)行展示。
“關(guān)口計量設(shè)備一鍵式驗收及故障診斷裝置”項目需要解決的主要問題是與現(xiàn)場使用的不同廠家、不同硬件接口和規(guī)約的設(shè)備進(jìn)行通信并讀取數(shù)據(jù)。如果這些工作全部由軟件實現(xiàn)會使項目不可控,因為在不考慮硬件接口的情況下,每種設(shè)備的通信規(guī)約和數(shù)據(jù)均不相同,必須針對每種設(shè)備開發(fā)專門的接口程序,雖然采用模塊化設(shè)計可以有效地降低工作量,但是每加入一種新的設(shè)備都需要軟件人員再次進(jìn)行開發(fā),而軟件項目的開發(fā)都需要一個團(tuán)隊的合作,要求有明確的目標(biāo),以最高的效率來完成,這樣可以有效降低成本,不可能針對某項功能提供長期的反復(fù)開發(fā)和設(shè)計[5],否則項目的周期和成本將顯著增加,最終失控。
因此該項目設(shè)計使用硬件接口裝置將應(yīng)用APP的開發(fā)和底層硬件分開,針對每類設(shè)備,確定其需要交互的數(shù)據(jù),并考慮一定的擴(kuò)展需求。先確定APP與接口裝置的連接方式,明確通信協(xié)議,則APP 的開發(fā)與硬件就可以獨立進(jìn)行,將硬件設(shè)備的接入交由接口裝置來實現(xiàn),這樣軟件開發(fā)人員可以集中精力在軟件的功能和設(shè)計上,直接啟動軟件的開發(fā),提升效率。
針對不同的設(shè)備,從便攜性和易用性考慮,決定將整個接口裝置再分為轉(zhuǎn)換裝置和接口模塊。這樣的好處是連接的端口單一,電路的設(shè)計簡化,代碼簡化,可靠性提升,可以使裝置的體積比較小,設(shè)想裝置和模塊最終組合的成品類似一個U 盤,需要采集數(shù)據(jù)時連接到設(shè)備上,即插即用,用完即走。且所連接的設(shè)備基本為低速設(shè)備,傳遞的數(shù)據(jù)量小,傳輸時間短,這樣裝置的工作時間也短,可以優(yōu)先考慮電池供電,進(jìn)一步提升便攜性。接口模塊獨立也便于后期的維護(hù)和二次開發(fā),對于新的設(shè)備,僅需要對接口模塊進(jìn)行調(diào)整,匹配對應(yīng)設(shè)備的規(guī)約,即可實現(xiàn)接入。項目的功能結(jié)構(gòu)圖如圖1 所示。
圖1 功能結(jié)構(gòu)圖
接口轉(zhuǎn)換裝置部分主要實現(xiàn)各個設(shè)備的接入,并與APP按預(yù)定的協(xié)議實現(xiàn)數(shù)據(jù)的交互,各種設(shè)備的接入由對應(yīng)的接口模塊來實現(xiàn),與接口裝置之間也定義標(biāo)準(zhǔn)的硬件通信接口和協(xié)議,主要實現(xiàn)硬件之間的數(shù)據(jù)交互,并可以緩存部分?jǐn)?shù)據(jù),確保通信的可靠。
因為APP 最終的運行環(huán)境為安卓平臺的掌機(jī),為此必須選擇易于在安卓平臺上實現(xiàn)的接口,所以裝置的上行接口采用藍(lán)牙和WiFi 雙通道,該項目中采用樂鑫的ESP32 模組[6]來實現(xiàn),該模組支持藍(lán)牙和WiFi[7],是成熟穩(wěn)定的產(chǎn)品,成本低,可靠性高,而且其接口豐富,有SPI 接口、串口,還有有線網(wǎng)絡(luò)接口,便于實現(xiàn)與接口模塊的連接。
項目中選擇使用串口來實現(xiàn)與接口模塊的本地連接,主要考慮到使用的設(shè)備對數(shù)據(jù)通信的實時性要求不高,且串口結(jié)構(gòu)簡單、成本低、可靠性好,ESP32 模組內(nèi)置串口最高速率可達(dá)5 Mbps,支持硬件流控,完全滿足需要。
接口模塊的功能是實現(xiàn)與各個設(shè)備的硬件連接,根據(jù)設(shè)備接口的不同,匹配不同的接口模塊,可以為232 接口、485 接口、有線網(wǎng)口或USB 接口等,該項目中先實現(xiàn)各種硬件接口的連接,匹配對應(yīng)的設(shè)備,后期可以安排專人進(jìn)行維護(hù),對新設(shè)備僅需完成相應(yīng)通信協(xié)議的二次開發(fā),不用再次開發(fā)硬件,有效地減少工作量,降低維護(hù)成本。
轉(zhuǎn)換裝置與APP 通信協(xié)議的設(shè)計是該項目的重點,因為要接入不同的設(shè)備,設(shè)備的種類不同,讀寫的數(shù)據(jù)類型、數(shù)據(jù)項、數(shù)據(jù)長度等各不相同,不能每接入一種設(shè)備就修改一次通信協(xié)議或者上層的軟件,必須使其具有強(qiáng)大的兼容性和擴(kuò)展性[8]。
協(xié)議設(shè)計首先是對設(shè)備的操作流程和傳遞的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,這是實現(xiàn)不同設(shè)備兼容的關(guān)鍵,結(jié)合相關(guān)設(shè)備的具體使用場景,設(shè)備操作流程如圖2所示。
圖2 設(shè)備操作流程圖
針對交互的數(shù)據(jù),按所有設(shè)備最大信息量進(jìn)行設(shè)計,此外預(yù)留部分?jǐn)U展字段,可以通過軟件進(jìn)行調(diào)整,增加程序的靈活性。
協(xié)議設(shè)計以上述標(biāo)準(zhǔn)化流程為基礎(chǔ),首先按功能對命令進(jìn)行劃分,具體分為控制、讀取、設(shè)置(寫入)三種。其中控制命令主要實現(xiàn)對設(shè)備的管理,包括上電、復(fù)位、啟動等操作;讀取命令即對設(shè)備數(shù)據(jù)進(jìn)行訪問,可以是設(shè)備描述符、檢測數(shù)據(jù),也可以是相關(guān)參數(shù);設(shè)置命令主要對設(shè)備的運行參數(shù)進(jìn)行設(shè)置,這幾種操作使用命令字的方式來區(qū)分。
針對數(shù)據(jù)的傳遞,規(guī)約中確定每項數(shù)據(jù)傳遞都必須同時傳遞數(shù)據(jù)的類型和長度,具體為一個字節(jié)的數(shù)據(jù)類型,一個字節(jié)的數(shù)據(jù)長度,后續(xù)為具體的數(shù)據(jù),規(guī)約中包含數(shù)組和結(jié)構(gòu)體兩種類型,數(shù)組類型為多個相同類型數(shù)據(jù)的集合,而結(jié)構(gòu)體則可以是不同數(shù)據(jù)類型的集合,提升了整體的靈活性。
規(guī)約中幀格式的定義如表1 所示,其中控制字實現(xiàn)了功能的劃分。
表1 幀格式定義
規(guī)約中數(shù)據(jù)區(qū)定義如表2 所示,其中數(shù)據(jù)標(biāo)識給出數(shù)據(jù)的定義,數(shù)據(jù)類型說明數(shù)據(jù)的格式,數(shù)據(jù)長度說明有多少個相同類型的數(shù)據(jù),可以看到靈活性很高,只需要定義新的數(shù)據(jù)標(biāo)識以及數(shù)據(jù)類型,即可引入新的數(shù)據(jù)項,便于后期進(jìn)行擴(kuò)展。
表2 數(shù)據(jù)區(qū)定義
裝置設(shè)計了電源管理部分,采用鋰電池作為電源,使用鋰電的充放電管理芯片TP5400[9],電源管理部分原理圖如圖3 所示。下行模塊的接口使用具備硬件流控的串口實現(xiàn),同時設(shè)計了模塊插入檢測和硬件復(fù)位引腳,檢測到模塊插入后,才開始對模塊進(jìn)行供電,同時可以對模塊的硬件進(jìn)行復(fù)位,提升其可靠性。
裝置本身充電接口設(shè)計為TYPE-C 接口,并使用FDTI232RL 轉(zhuǎn)換芯片連接模組的本地調(diào)試接口,使用電腦方便充電的同時也可實現(xiàn)對模組的監(jiān)控、調(diào)試和升級,增強(qiáng)了設(shè)備的易用性,接口部分原理圖如圖4 所示。
ESP32模組本身支持FreeRTOS嵌入式系統(tǒng)[10],支持多任務(wù),因此軟件的設(shè)計采用多任務(wù)的方式實現(xiàn),接口轉(zhuǎn)換裝置初始化流程圖如圖5 所示。當(dāng)裝置上電后,首先完成初始化操作,接著開啟兩個任務(wù),一個為上行通信任務(wù),一個是下行通信任務(wù),下行通信任務(wù)首先檢查下行轉(zhuǎn)換模塊的連接情況,當(dāng)檢測到轉(zhuǎn)換模塊后,讀取模塊的設(shè)備描述符,了解具體的設(shè)備類型,匹配對應(yīng)的數(shù)據(jù)項和數(shù)據(jù)內(nèi)容,做好數(shù)據(jù)傳遞的準(zhǔn)備,此時等待上行通信任務(wù)的進(jìn)一步操作;上行通信任務(wù)檢測到與APP 連接后,主動上報設(shè)備的類型和支持的數(shù)據(jù)項,APP 此時即可開始對設(shè)備數(shù)據(jù)的訪問和控制。
接口模塊的設(shè)計思路主要是低成本,易實現(xiàn),因為與轉(zhuǎn)換裝置的接口為串口,這樣基本所有的嵌入式平臺都滿足需要,只需要針對設(shè)備的硬件接口,使用成熟的方案,實現(xiàn)接口和規(guī)約的轉(zhuǎn)換即可。
圖3 電源管理部分原理圖
圖4 充電及調(diào)試接口原理圖
圖5 轉(zhuǎn)換裝置初始化流程圖
實際應(yīng)用中同樣使用ESP32 模組實現(xiàn)了232 接口、485 接口、有線網(wǎng)口、藍(lán)牙[11]等設(shè)備的接入。針對USB 接口的設(shè)備,使用STM32 平臺進(jìn)行了連接[12];針對CAN 總線設(shè)備,應(yīng)用Microchip 平臺進(jìn)行連接[13],因為硬件均為成熟的電路,此處不做詳細(xì)描述。
設(shè)計中需要考慮的是與APP 連接斷開的情況,因為轉(zhuǎn)換裝置與APP 之間為無線連接,設(shè)備的故障或者意外均有可能導(dǎo)致連接失效的情況。采取措施如下:1)應(yīng)用硬件設(shè)計的流控機(jī)制對下行數(shù)據(jù)傳輸進(jìn)行管理;2)在規(guī)約的設(shè)計中增加了斷點恢復(fù)重傳的功能,同時增加轉(zhuǎn)換裝置的緩存,可以將一次的試驗數(shù)據(jù)完整地保存在內(nèi)存,必要時保存到閃存中,連接恢復(fù)后重新傳輸?shù)绞謾C(jī)端,提升可靠性。
轉(zhuǎn)換裝置和接口模塊的設(shè)計均支持OTA 升級[14],在APP 中預(yù)留接口,這樣可以針對不同的設(shè)備,現(xiàn)場直接更改對應(yīng)的固件,減少硬件的數(shù)量。
在實際工作中,使用裝置連接了山西互感器電測設(shè)備有限公司的HLE1-F 型電流互感器現(xiàn)場檢定裝置、山西互感器電測設(shè)備有限公司的HYE1-C 型電壓互感器現(xiàn)場檢定裝置、秦皇島海納電測儀器有限公司的HN-2K01B1 電壓互感器現(xiàn)場校驗裝置、浙江涵普電力科技有限公司的HPU-3030B 型電能表現(xiàn)場校驗儀、保定新云達(dá)電力設(shè)備有限責(zé)任公司的WDX-2NH 型智能電表校驗儀、武漢南電至誠電力設(shè)備有限公司的LYPT-C 型無線二次壓降及負(fù)荷測試儀,均實現(xiàn)了檢測數(shù)據(jù)的正常訪問,并使用APP 完成了對應(yīng)的驗收工作。
該項目的設(shè)計思路與以往的嵌入式開發(fā)不同,以往出于成本考慮,總是盡量將嵌入式系統(tǒng)潛力發(fā)掘出來,一個平臺既實現(xiàn)上行通信,同時又匹配下行的各種接口[15],硬件的復(fù)雜程度高,編程的工作量較大,但隨著技術(shù)的進(jìn)步,嵌入式系統(tǒng)的成本和復(fù)雜程度大大降低,如今嵌入式芯片的集成度越來越高,外圍電路有效簡化,很多芯片只需要幾個元件,并提供電源即可正常工作[16]。這也是該項目的設(shè)計來源,不采用單一的平臺來實現(xiàn)全部的功能,而是由不同的平臺各完成部分的功能,硬件的開發(fā)工作也因此進(jìn)行了分解,可以由多人同步完成,有效提升了工作效率,所有的工作在接口上進(jìn)行統(tǒng)一??此葡到y(tǒng)的結(jié)構(gòu)變得復(fù)雜了,但是每個模塊的工作卻簡化了,難度降低也意味著可靠性的提升,可以由不同的人員同時完成,效率得到有效的提升,更適合大型項目的需求。