物聯網網關是實現感知網絡與通(tōng)信網絡,以及不同類型感知網絡之間(jiān)的協議轉換的網關設備,既可(kě)以實現局域互聯,也可(kě)以實現廣域互聯。而電(diàn)力物聯網網關需要支持電(diàn)力系統常用通(tōng)信協議如IEC 104協議與各類通(tōng)用工業通(tōng)信協議之間(jiān)的轉換,實現可(kě)靠高(gāo)速的電(diàn)力大(dà)數(shù)據采集處理(lǐ),為(wèi)“雙碳”戰略背景下電(diàn)力系統大(dà)量新能源的接入調控提供數(shù)據基礎。
目前應用最為(wèi)廣泛的電(diàn)力遠動通(tōng)信協議IEC 104協議多(duō)采用阻塞通(tōng)信方式實現,通(tōng)信效率較低(dī)。所謂阻塞是指會(huì)占用I/O資源的任務,比如從網絡中獲取數(shù)據或處理(lǐ)請(qǐng)求、讀寫文件內(nèi)容或者到數(shù)據庫中訪問數(shù)據,在數(shù)據還(hái)沒有(yǒu)準備好時(shí),CPU會(huì)存在一段等待,在數(shù)據準備好時(shí),CPU才可(kě)以繼續執行(xíng)之後的程序。這種任務可(kě)以抽象成一個(gè)連續執行(xíng)的任務中插入了一段阻塞(Blocking)。通(tōng)信的過程通(tōng)常包括讀取數(shù)據、數(shù)據解析和(hé)計(jì)算(suàn)等多(duō)個(gè)任務,阻塞通(tōng)信的實現流程示意圖如下圖所示:
阻塞通(tōng)信的原理(lǐ)
上(shàng)圖所示通(tōng)信過程中,一個(gè)同步線程先執行(xíng)了Task1,然後執行(xíng)了Task2和(hé)Task3。Task1中存在一段阻塞,可(kě)以用于類比一個(gè)從網絡中讀取數(shù)據的操作(zuò),而Task2和(hé)Task3可(kě)以看作(zuò)是數(shù)據解析和(hé)計(jì)算(suàn)等其他的任務。在整個(gè)通(tōng)信任務中,Task1中的阻塞讓CPU處于空(kōng)閑狀态,浪費了CPU的寶貴資源。因為(wèi)上(shàng)一個(gè)請(qǐng)求的數(shù)據還(hái)沒處理(lǐ)完,如果此時(shí)又有(yǒu)新的數(shù)據到達,可(kě)能造成數(shù)據隊列的堆積。
在連接數(shù)較多(duō)或連續發送的報文量較大(dà)的情況下,阻塞I/O的實現方式會(huì)造成數(shù)據的延遲和(hé)資源的浪費,在某些(xiē)情況下還(hái)有(yǒu)可(kě)能影(yǐng)響整個(gè)系統的運行(xíng)狀态。在未來(lái)新型電(diàn)力系統大(dà)量分布式新能源接入及用戶側海量資源被喚醒的趨勢下,采用阻塞通(tōng)信方式存在效率不足、對硬件性能、成本要求高(gāo)的不足。
随着網絡通(tōng)信技(jì)術(shù)的迅速發展,非阻塞通(tōng)信可(kě)解決阻塞通(tōng)信帶來(lái)的通(tōng)信延遲和(hé)資源浪費,以滿足大(dà)規模通(tōng)信并發和(hé)充分利用CPU計(jì)算(suàn)資源。非阻塞下,某個(gè)任務的阻塞不會(huì)使線程阻塞,而是立即返回,這個(gè)返回值可(kě)能是一個(gè)非法的值,這時(shí)線程就可(kě)以去執行(xíng)其他的任務,等到阻塞處有(yǒu)了合法的返回結果後,再去處理(lǐ)結果,繼續向下運行(xíng)。
極簡物控團隊采用異步非阻塞技(jì)術(shù)實現電(diàn)力物聯網網關通(tōng)信協議,顯著提升通(tōng)信效率。異步非阻塞采用異步的方法,在多(duō)任務并行(xíng)的基礎上(shàng)實現。這需要異步運行(xíng)時(shí)來(lái)對用戶設定的任務進行(xíng)調度,如果某個(gè)任務發生(shēng)了阻塞,則安排其他任務線程上(shàng)執行(xíng)。阻塞處不需要進行(xíng)輪詢查看,而是采用中斷的方式。當I/O的數(shù)據準備好時(shí),操作(zuò)系統內(nèi)核會(huì)直接将數(shù)據傳遞到線程,并引發中斷,提醒線程數(shù)據已經準備好,可(kě)以進行(xíng)後續操作(zuò)。
異步非阻塞通(tōng)信的原理(lǐ)
如上(shàng)圖所示,線程Thread1執行(xíng)Task1,遇到阻塞的I/O請(qǐng)求時(shí),将其交給系統內(nèi)核後就安排執行(xíng)Task2。I/O得(de)到數(shù)據後,将數(shù)據拷貝到線程。此時(shí)Task2已經執行(xíng)完,可(kě)以繼續執行(xíng)Task1的剩餘部分以及後續的任務Task3。
異步非阻塞通(tōng)信的實現難度較大(dà),異步程序編寫複雜,而且需要操作(zuò)系統底層的I/O支持。但(dàn)從實現方式上(shàng)看,異步非阻塞是充分利用CPU資源、支持大(dà)規模并發通(tōng)信的最佳方案。它能夠利用等待數(shù)據準備好的空(kōng)閑去執行(xíng)其他任務,也能通(tōng)過異步運行(xíng)時(shí)的調度,實現多(duō)個(gè)數(shù)據請(qǐng)求的處理(lǐ),而且不會(huì)帶來(lái)額外的開(kāi)銷。
針對當前基于阻塞I/O技(jì)術(shù)的通(tōng)信難以适應新型電(diàn)力系統海量數(shù)據采集處理(lǐ)的問題,極簡物控團隊完全自主獨立研發實現了基于非阻塞通(tōng)信技(jì)術(shù)的各類常用工業通(tōng)信協議,如下表所示,用戶在使用時(shí)可(kě)以根據需要方便地選擇配置,實現高(gāo)可(kě)靠、高(gāo)效率的通(tōng)信。
研發的電(diàn)力物聯網網關支持多(duō)種通(tōng)信協議配置
通(tōng)訊協議 | 介紹 | 可(kě)配置項 | |
Modbus通(tōng)訊協議 | Modbus TCP/IP服務端 | Modbus是一種串行(xíng)通(tōng)訊協議,已經成為(wèi)工業領域通(tōng)信協議的業界标準。而Modbus TCP/IP是基于以太網TCP的Modbus網絡通(tōng)信協議。當通(tōng)訊設備作(zuò)為(wèi)從站(zhàn)時(shí),采用ModBus TCP/IP服務端通(tōng)信協議,從站(zhàn)有(yǒu)多(duō)個(gè),對主站(zhàn)請(qǐng)求給予相應。 | 1)通(tōng)道(dào)名稱;2)連接個(gè)數(shù);3)服務端口;4)連接名稱;5)測點個(gè)數(shù);6)客戶端IP;7)客戶端端口;8)slave id;9)通(tōng)信協議: XA;10)一次讀寄存器(qì)數(shù)上(shàng)限;11)一次讀開(kāi)關數(shù)上(shàng)限;12)一次寫寄存器(qì)上(shàng)限;13)一次寫開(kāi)關數(shù)上(shàng)限;14)輪詢周期和(hé)超時(shí)時(shí)間(jiān);15)通(tōng)道(dào)狀态測點号 |
Modbus TCP/IP客戶端 | 當設備采用TCP網絡通(tōng)信且作(zuò)為(wèi)主站(zhàn)時(shí),采用ModBus TCP/IP客戶端通(tōng)信協議。主站(zhàn)唯一,向各從站(zhàn)發送請(qǐng)求幀,主動建立通(tōng)訊連接。 | 1)連接名稱;2)測點個(gè)數(shù);3)服務端IP;4)服務端端口;5)slave id;6)通(tōng)信協議: XA;7)一次讀寄存器(qì)數(shù)上(shàng)限;8)一次讀開(kāi)關數(shù)上(shàng)限;9)一次寫寄存器(qì)上(shàng)限;10)一次寫開(kāi)關數(shù)上(shàng)限;11)輪詢周期和(hé)超時(shí)時(shí)間(jiān);12)通(tōng)道(dào)狀态測點号 | |
Modbus RTU Over TCP/IP服務端 | 當設備采用TCP網絡通(tōng)信且作(zuò)為(wèi)主站(zhàn)時(shí),采用ModBus TCP/IP客戶端通(tōng)信協議。主站(zhàn)唯一,向各從站(zhàn)發送請(qǐng)求幀,主動建立通(tōng)訊連接。 | 1)通(tōng)道(dào)名稱;2)連接個(gè)數(shù);3)服務端口;4)連接名稱;5)測點個(gè)數(shù);6)客戶端IP;7)客戶端端口;8)slave id;9)通(tōng)信協議: ENCAP;10)一次讀寄存器(qì)數(shù)上(shàng)限;11)一次讀開(kāi)關數(shù)上(shàng)限;12)一次寫寄存器(qì)上(shàng)限;13)一次寫開(kāi)關數(shù)上(shàng)限;14)輪詢周期和(hé)超時(shí)時(shí)間(jiān);15)通(tōng)道(dào)狀态測點号 | |
Modbus RTU Over TCP/IP客戶端 | 當設備使用TCP層傳輸Modbus-RTU報文通(tōng)信且作(zuò)為(wèi)主站(zhàn)時(shí),采用Modbus RTU Over TCP/IP客戶端通(tōng)信協議。主站(zhàn)唯一,向各從站(zhàn)發送請(qǐng)求幀,主動建立通(tōng)訊連接。 | 1)連接名稱;2)測點個(gè)數(shù);3)服務端IP;4)服務端端口;5)slave id;6)通(tōng)信協議: ENCAP;7)一次讀寄存器(qì)數(shù)上(shàng)限;8)一次讀開(kāi)關數(shù)上(shàng)限;9)一次寫寄存器(qì)上(shàng)限;10)一次寫開(kāi)關數(shù)上(shàng)限;11)輪詢周期和(hé)超時(shí)時(shí)間(jiān);12)通(tōng)道(dào)狀态測點号 | |
ModBus RTU服務端 | Modbus RTU是采用RTU報文的Modbus串口通(tōng)信協議。當通(tōng)訊數(shù)據量大(dà)而且是二進制(zhì)數(shù)值時(shí),多(duō)采用該協議。當設備作(zuò)為(wèi)從站(zhàn)時(shí),采用ModBus RTU服務端通(tōng)信協議,每個(gè)從站(zhàn)都有(yǒu)唯一編号(即設備地址),對主站(zhàn)請(qǐng)求給予響應。 | 1)通(tōng)道(dào)名稱;2)測點個(gè)數(shù);3)文件路徑;4)波特率;5)slave id;6)通(tōng)信協議: RTU;7)一次讀寄存器(qì)數(shù)上(shàng)限;8)一次讀開(kāi)關數(shù)上(shàng)限;9)一次寫寄存器(qì)上(shàng)限;10)一次寫開(kāi)關數(shù)上(shàng)限;11)輪詢周期和(hé)超時(shí)時(shí)間(jiān);12)通(tōng)道(dào)狀态測點号 | |
ModBus RTU客戶端 | 當設備采用RTU串口通(tōng)信且作(zuò)為(wèi)主站(zhàn)時(shí),采用ModBus RTU客戶端通(tōng)信協議。主站(zhàn)唯一,通(tōng)過單播和(hé)廣播兩種方式向從站(zhàn)發出請(qǐng)求。 | 1)通(tōng)道(dào)名稱;2)連接個(gè)數(shù);3)波特率;4)文件地址;5)連接名稱;6)測點個(gè)數(shù);7)描述;8)優先級;9)slave id;10)通(tōng)信協議: RTU;11)一次讀寄存器(qì)數(shù)上(shàng)限;12)一次讀開(kāi)關數(shù)上(shàng)限;13)一次寫寄存器(qì)上(shàng)限;14)一次寫開(kāi)關數(shù)上(shàng)限;15)輪詢周期和(hé)超時(shí)時(shí)間(jiān);16)通(tōng)道(dào)狀态測點号 | |
IEC 104通(tōng)訊協議 | IEC 104服務端 | IEC 60870-5-104規約,簡稱IEC 104,由國際電(diàn)工委員會(huì)制(zhì)定,該标準為(wèi)遠動信息的網絡傳輸提供了通(tōng)信規約依據。設備作(zuò)為(wèi)服務端采用IEC 104服務端通(tōng)訊協議。 | 1)通(tōng)道(dào)名稱;2)連接個(gè)數(shù);3)服務端口;4)連接名稱;5)測點個(gè)數(shù);6)客戶端IP;7)客戶端端口;8)通(tōng)道(dào)狀态點号 |
IEC 104客戶端 | 設備作(zuò)為(wèi)客戶端采用IEC 104客戶端通(tōng)訊協議。 | 1)通(tōng)道(dào)名稱;2)服務端口;3)連接名稱;4)測點個(gè)數(shù);5)服務端IP;6)通(tōng)道(dào)狀态點号 | |
DL /T645通(tōng)信協議 | DL /T 645是多(duō)功能電(diàn)能表與數(shù)據終端設備進行(xíng)數(shù)據交換式的物理(lǐ)連接和(hé)協議的規範和(hé)标準。 | 1)通(tōng)道(dào)名稱;2)連接個(gè)數(shù);3)服務端口;4)文件地址;5)數(shù)據位;6)停止位;7)校(xiào)驗位;8)連接名稱;9)測點個(gè)數(shù);10)slave id;11)客戶端端口;12)通(tōng)道(dào)狀态點号;13)輪詢周期;14)超時(shí)時(shí)間(jiān);15)通(tōng)道(dào)狀态測點号 | |
MQTT通(tōng)訊協議 | MQTT協議是一種消息列隊傳輸協議,采用訂閱、發布機制(zhì),既保證了必要的數(shù)據的交換,又避免了無效數(shù)據造成的儲存與處理(lǐ),在工業物聯網中得(de)到廣泛的應用。 | 1)通(tōng)道(dào)名稱;2)服務端IP;3)服務端端口;4)測點個(gè)數(shù);5)通(tōng)道(dào)狀态測點号;6)讀主題;7)寫主題 |
以IEC 104協議的非阻塞實現為(wèi)例,團隊将IEC 104規約分為(wèi)TCP/IP層、應用層、用戶進程的三層結構進行(xíng)設計(jì)。以Tokio異步框架為(wèi)基礎,設計(jì)非阻塞I/O的網絡通(tōng)信框架,包括客戶端的連接和(hé)服務端的監聽(tīng)與連接,完成讀寫的方法設計(jì),能夠實現與下層TCP/IP連接的數(shù)據交互。通(tōng)過異步通(tōng)道(dào),設計(jì)了應用層和(hé)用戶進程兩個(gè)任務之間(jiān)的信息共享和(hé)命令傳輸。在應用層的設計(jì)中,采用異步和(hé)狀态機的設計(jì)思想,實現了IEC 104協議的鏈路傳輸規則、報文的解析和(hé)組裝、應用功能等。另外,還(hái)設計(jì)了支持用戶使用表格方式簡便配置IEC 104規約的方法。
IEC 104總體(tǐ)結構與數(shù)據流向
經一緻性測試、性能測試和(hé)實地測試結果證明(míng),所研發的IEC 104協議實現了除文件傳輸以外的所有(yǒu)應用功能,各項參數(shù)和(hé)功能符合IEC 104協議的規定,具有(yǒu)占用內(nèi)存小(xiǎo)、吞吐量大(dà)、延遲低(dī)的優勢,能夠充分利用自身硬件資源。通(tōng)信軟件集成于電(diàn)力物聯網網關後能夠與商業軟件完成通(tōng)信,可(kě)以在實地穩定運行(xíng)。下圖為(wèi)所研發網關通(tōng)信與傳統方案的性能對比。
與傳統方案的延遲率對比
如上(shàng)圖所示,當通(tōng)信負載較高(gāo)時(shí),所研發網關的延遲率顯著低(dī)于傳統方案。采用的異步非阻塞技(jì)術(shù)使得(de)物聯網網關性能得(de)以發揮至極緻,即使在硬件資源受限的條件下,該物聯網網關也可(kě)以有(yǒu)效發揮其功效,保證通(tōng)信數(shù)據的準确性與實時(shí)性。在該技(jì)術(shù)的支持下,極簡物控開(kāi)發出的物聯網網關最小(xiǎo)産品僅僅不超過一隻手機大(dà)小(xiǎo),其可(kě)以完全支持各類通(tōng)信協議下每秒(miǎo)2000測點的實時(shí)通(tōng)信。
基于異步非阻塞通(tōng)信技(jì)術(shù)的高(gāo)性能電(diàn)力物聯網網關
以ARM-V7架構的小(xiǎo)型電(diàn)力物聯網網關為(wèi)例,其基本硬件配置如下表所示:
CPU/主頻 | Cortex-A71/1.2GHz |
內(nèi)存 | 150MB |
外存 | 4GB |
操作(zuò)系統 | Armv7l GNU/Linux |
使用該網關通(tōng)過Modbus TCP協議對5000待采集測點以2s為(wèi)周期進行(xíng)數(shù)據采集,其CPU使用率僅達60%,內(nèi)存使用率65%,在持續運行(xíng)的60天中,其CPU及內(nèi)存使用率基本保持穩定,無大(dà)幅波動。
團隊研制(zhì)的電(diàn)力物聯網網關已在廣州從化明(míng)珠工業園區(qū)、國電(diàn)南自微網、阿裏數(shù)據中心等多(duō)個(gè)工程項目中穩定、可(kě)靠、高(gāo)效運行(xíng),在實際應用中能夠滿足用戶實時(shí)監控、多(duō)能互補、故障檢測等諸多(duō)需求,幫助企業園區(qū)轉型升級、降本增效。
儲能電(diàn)站(zhàn)項目
展望
基于團隊研發的異步非阻塞通(tōng)信技(jì)術(shù),可(kě)以實現IEC 104、IEC61850、Modbus、DLT645、MQTT等常用工業通(tōng)信協議,團隊所研制(zhì)的電(diàn)力物聯網網關中已集成了以上(shàng)協議,并可(kě)支持不同協議的轉換發送。在多(duō)個(gè)實際工程中的應用效果表明(míng)所研發的電(diàn)力物聯網網關能夠提高(gāo)電(diàn)力工業通(tōng)信各模塊之間(jiān)信息交互的速度和(hé)效率,節約更多(duō)的系統資源,實現了電(diàn)力物聯網網關性能更強的進一步突破,有(yǒu)效應對新型電(diàn)力系統海量數(shù)據帶來(lái)的挑戰。