戚爾江,彭道剛,王丹豪,王宜雪,汪皓然
(上海電力學(xué)院自動(dòng)化工程學(xué)院,上海發(fā)電過(guò)程智能管控工程技術(shù)研究中心,上海 200090)
智能制造、工業(yè)物聯(lián)網(wǎng)和工業(yè)4.0等行業(yè)發(fā)展需求表明,工業(yè)以太網(wǎng)在現(xiàn)場(chǎng)總線基礎(chǔ)上已經(jīng)廣泛應(yīng)用于工業(yè)、能源和樓宇自動(dòng)化等行業(yè)。工業(yè)以太網(wǎng)是基于IEEE802.3通信協(xié)議規(guī)范,可以將現(xiàn)場(chǎng)側(cè)傳感器數(shù)據(jù)與互聯(lián)網(wǎng)相連接,同時(shí)也是物聯(lián)網(wǎng)發(fā)展的必然趨勢(shì)。工業(yè)以太網(wǎng)種類較多,行業(yè)中較為常用的工業(yè)以太網(wǎng)協(xié)議主要有Modbus/TCP、HSE、Profinet和Ethernet/IP等。從目前技術(shù)發(fā)展來(lái)看,采用SPE(single pair ethernet,雙線以太網(wǎng))技術(shù)實(shí)現(xiàn)工業(yè)以太網(wǎng)通信更具行業(yè)發(fā)展趨勢(shì)。雙線以太網(wǎng)是采用一對(duì)雙絞線替換傳統(tǒng)的四對(duì)雙絞線。目前SPE技術(shù)較多應(yīng)用在汽車行業(yè),主要有IEEE802.3bw,通信帶寬為100 Mbit/s,最長(zhǎng)通信距離為15 m。另一種為IEEE802.3bp,通信帶寬為1 000 Mbit/s,最長(zhǎng)通信距離為15 m。近期行業(yè)內(nèi)又推出一種IEEE802.3cg,遵循IEEE802.3cg,10BASE-T1L通信標(biāo)準(zhǔn),通信帶寬為10 Mbit/s,最長(zhǎng)通信距離為1 000 m。前兩種滿足汽車行業(yè)需求,而IEEE802.3cg是為工業(yè)通信量身定做的一款通信方案[1-2]。
目前雙線以太網(wǎng)在汽車工業(yè)領(lǐng)域廣泛應(yīng)用,如圖1所示,為雙線以太網(wǎng)進(jìn)入市場(chǎng)時(shí)間表[1]。從圖1可以看出2015年雙線以太網(wǎng)技術(shù)開始在汽車工業(yè)領(lǐng)域應(yīng)用。2022年開始在流程工業(yè)中有所涉及,2025年將在鐵道運(yùn)輸行業(yè)和機(jī)器人、工業(yè)自動(dòng)化領(lǐng)域應(yīng)用,2028年將在樓宇自動(dòng)化行業(yè)應(yīng)用。
圖1 雙線以太網(wǎng)進(jìn)入市場(chǎng)時(shí)間表
根據(jù)雙線以太網(wǎng)的發(fā)展趨勢(shì),在將來(lái)必然會(huì)有大量雙線以太網(wǎng)遠(yuǎn)程I/O設(shè)備或者雙線以太網(wǎng)傳感器等邊緣終端設(shè)備進(jìn)入工業(yè)領(lǐng)域。而較多辦公電腦、交換機(jī)、路由器和網(wǎng)關(guān)等設(shè)備由于成本、性能和時(shí)間問(wèn)題,難以短時(shí)間進(jìn)行更新?lián)Q代,仍然維持四對(duì)雙絞線的常規(guī)以太網(wǎng)接口設(shè)計(jì)。所以僅支持雙線以太網(wǎng)的邊緣終端設(shè)備接入網(wǎng)絡(luò),需要雙線以太網(wǎng)網(wǎng)關(guān)進(jìn)行轉(zhuǎn)換。另一方面,隨著大數(shù)據(jù)和邊緣計(jì)算的需求,網(wǎng)關(guān)系統(tǒng)能同時(shí)支持多平臺(tái)的性能要求尤為重要。不同公司之間需要進(jìn)行合作,現(xiàn)場(chǎng)側(cè)邊緣終端的數(shù)據(jù)需要實(shí)時(shí)共享??紤]到不同公司的平臺(tái)接口差異性,單一接口的網(wǎng)關(guān)設(shè)備很難滿足公司之間的合作需求。如果沒有支持多接口轉(zhuǎn)發(fā)能力的網(wǎng)關(guān)轉(zhuǎn)換設(shè)備,則需要合作公司進(jìn)行平臺(tái)硬件升級(jí),花費(fèi)更多的成本。本系統(tǒng)研究的網(wǎng)關(guān)設(shè)備支持通信協(xié)議為Modbus/TCP的邊緣終端接入,可以擴(kuò)展為CAN輸出、RS485輸出、串口輸出、MQTT對(duì)接阿里云物聯(lián)網(wǎng)云平臺(tái)輸出等[3]。網(wǎng)關(guān)設(shè)備可以將接收的數(shù)據(jù)針對(duì)不同通信接口進(jìn)行直接轉(zhuǎn)發(fā),有效避免不同平臺(tái)從數(shù)據(jù)庫(kù)共享數(shù)據(jù)的延遲性和復(fù)雜性,提升網(wǎng)絡(luò)通信的安全性。
因此,本文研究基于雙線以太網(wǎng)技術(shù)的Modbus/TCP網(wǎng)關(guān)系統(tǒng),具有非常重要的實(shí)用價(jià)值和研究?jī)r(jià)值,是未來(lái)工業(yè)應(yīng)用的必然趨勢(shì)。
本文所研究的Modbus/TCP雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)作為Modbus/TCP協(xié)議[4]Client客戶端,配有傳感器的邊緣終端設(shè)備作為Modbus/TCP協(xié)議Server服務(wù)器端。Server端可以實(shí)時(shí)采集傳感器數(shù)據(jù),網(wǎng)關(guān)系統(tǒng)Client端用于建立連接,從Server端讀取寄存器數(shù)據(jù)。網(wǎng)關(guān)系統(tǒng)采用Modbus/TCP協(xié)議讀取邊緣終端采集的數(shù)據(jù),并對(duì)接收的數(shù)據(jù)進(jìn)行緩存和轉(zhuǎn)發(fā)。
圖2為Modbus/TCP網(wǎng)關(guān)系統(tǒng)框圖。雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)采用Cortext-A7內(nèi)核芯片作為網(wǎng)關(guān)系統(tǒng)核心控制器。Modbus/TCP協(xié)議物理層通信PHY采用雙線以太網(wǎng)技術(shù),實(shí)現(xiàn)單對(duì)雙絞線傳輸Modbus/TCP協(xié)議幀數(shù)據(jù),系統(tǒng)兼容常規(guī)以太網(wǎng)PHY。支持雙線以太網(wǎng)接口PHY和常規(guī)以太網(wǎng)接口PHY無(wú)縫切換,PHY芯片與主控制器之間采用通用RMII接口,切換PHY芯片時(shí)內(nèi)核驅(qū)動(dòng)自動(dòng)切換??梢越邮罩С蛛p線以太網(wǎng)接口或者常規(guī)以太網(wǎng)接口的邊緣終端設(shè)備傳感器數(shù)據(jù)。
圖2 網(wǎng)關(guān)系統(tǒng)框圖
網(wǎng)關(guān)系統(tǒng)可以將接收的傳感器數(shù)據(jù)轉(zhuǎn)發(fā)到相應(yīng)接口的平臺(tái),支持轉(zhuǎn)發(fā)的平臺(tái)包括串口接口平臺(tái)、RS485接口的平臺(tái)、CAN總線協(xié)議接口的管理平臺(tái)和MQTT協(xié)議接口的阿里云物聯(lián)網(wǎng)云平臺(tái)[5]。電源模塊采用3.3 V電源供電,電路較簡(jiǎn)單,不作為本文研究重點(diǎn)。CAN總線通信接口芯片采用TJA1050高速CAN總線收發(fā)器[6-8]。RS485和串口通信接口采用TTL電平轉(zhuǎn)RS485和TTL轉(zhuǎn)串口方式設(shè)計(jì),采用的芯片分別為SP3485和SP3232芯片設(shè)計(jì)。MQTT協(xié)議接口和Modbus/TCP協(xié)議接口共用一個(gè)PHY網(wǎng)絡(luò)通信接口,可以選擇常規(guī)以太網(wǎng)接口PHY芯片或者雙線以太網(wǎng)接口PHY芯片所設(shè)計(jì)的通信模塊。常規(guī)以太網(wǎng)接口芯片采用LAN8720A PHY芯片設(shè)計(jì),雙線以太網(wǎng)芯片采用最新研發(fā)的SPE PHY芯片設(shè)計(jì)。
邊緣終端將各通道傳感器數(shù)據(jù)采集到邊緣終端并存儲(chǔ)到寄存器中,初始狀態(tài)下邊緣終端并不主動(dòng)對(duì)外發(fā)送數(shù)據(jù)。由于通信協(xié)議采用Modbus/TCP協(xié)議,數(shù)據(jù)提供方一般作為Server端,考慮將提供數(shù)據(jù)的邊緣終端設(shè)備作為Modbus/TCP Server端。基于Cortex-A7內(nèi)核主控芯片所設(shè)計(jì)的網(wǎng)關(guān)數(shù)據(jù)來(lái)源是通過(guò)Modbus/TCP協(xié)議所讀取的邊緣終端設(shè)備數(shù)據(jù),負(fù)責(zé)從終端設(shè)備獲取傳感器數(shù)據(jù),將網(wǎng)關(guān)設(shè)備設(shè)計(jì)成Client端。Modbus/TCP具備讀線圈、寫單個(gè)線圈、寫多個(gè)線圈、讀離散量輸入、讀寫單個(gè)或者多個(gè)輸入寄存器和保持寄存器等功能。網(wǎng)關(guān)設(shè)備作為Modbus/TCP協(xié)議Client端,需要根據(jù)Server端存儲(chǔ)數(shù)據(jù)的寄存器種類和幀格式讀取相應(yīng)的寄存器數(shù)據(jù)。Server端將讀取的數(shù)據(jù)轉(zhuǎn)發(fā)到串口或者RS485、CAN接口,同時(shí)可以打包成MQTT協(xié)議傳輸?shù)桨⒗镌莆锫?lián)網(wǎng)云平臺(tái)??梢杂行Ы鉀Q雙線以太網(wǎng)類型邊緣終端兼容性問(wèn)題,增強(qiáng)平臺(tái)擴(kuò)展性。
網(wǎng)關(guān)系統(tǒng)硬件主要包括系統(tǒng)電源模塊、常規(guī)以太網(wǎng)模塊、雙線以太網(wǎng)模塊、串口/RS485模塊、CAN通信模塊、Boot啟動(dòng)項(xiàng)設(shè)置模塊和SD卡模塊等[9],各通信模塊之間根據(jù)需求進(jìn)行Modbus/TCP協(xié)議數(shù)據(jù)轉(zhuǎn)發(fā)。SD卡模塊配合Boot啟動(dòng)項(xiàng)用于設(shè)置不同啟動(dòng)方式,方便系統(tǒng)應(yīng)用和驅(qū)動(dòng)程序調(diào)試。
圖3為網(wǎng)關(guān)系統(tǒng)網(wǎng)絡(luò)通信接口框圖。網(wǎng)絡(luò)通信接口配有雙線以太網(wǎng)PHY接口和常規(guī)以太網(wǎng)PHY接口,2種網(wǎng)絡(luò)通信接口根據(jù)接入網(wǎng)關(guān)設(shè)備的邊緣終端接口類型進(jìn)行二選一即可。雙線以太網(wǎng)PHY接口采用單對(duì)雙絞線,用于接收雙線以太網(wǎng)接口的邊緣終端數(shù)據(jù),網(wǎng)關(guān)兼容常規(guī)以太網(wǎng)接口的以太網(wǎng)邊緣終端設(shè)備。本文研究的網(wǎng)關(guān)設(shè)備系統(tǒng)中,常規(guī)以太網(wǎng)PHY和雙線以太網(wǎng)PHY均采用RMII接口與Cortex-A7內(nèi)核主控制器MAC相連接。網(wǎng)絡(luò)通信接口是Modbus/TCP通信協(xié)議的物理層載體,是基于TCP/IP通信協(xié)議的一種應(yīng)用層通信方式。實(shí)現(xiàn)網(wǎng)絡(luò)通信需要PHY和MAC 2部分,PHY芯片主要將外部模擬電氣信號(hào)進(jìn)行解碼,然后通過(guò)RMII接口發(fā)送至MAC外設(shè)。本文所研究的網(wǎng)關(guān)設(shè)備內(nèi)部已經(jīng)集成了MAC外設(shè),無(wú)需集成MCA和PHY為一體的網(wǎng)絡(luò)通信芯片,有效降低網(wǎng)絡(luò)通信部分電路設(shè)計(jì)復(fù)雜度。
圖3 網(wǎng)關(guān)系統(tǒng)雙網(wǎng)口設(shè)計(jì)框圖
RMII接口主要負(fù)責(zé)Cortex-A7內(nèi)核控制與PHY之間數(shù)據(jù)傳輸,而PHY芯片在傳輸數(shù)據(jù)之前需要對(duì)內(nèi)部寄存器進(jìn)行相應(yīng)的配置,還需要MDIO控制接口配合,MIDO控制接口由2根線構(gòu)成,其中一根用來(lái)讀取PHY芯片內(nèi)部寄存器數(shù)據(jù)的線為MDIO,另一根用來(lái)同步PHY芯片寄存器讀取時(shí)序的時(shí)鐘線為MDC。通過(guò)RMII接口和MIDO接口相互配合實(shí)現(xiàn)Modbus/TCP網(wǎng)關(guān)和邊緣終端設(shè)備之間數(shù)據(jù)傳遞。
圖4為Modbus/TCP雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)雙網(wǎng)口設(shè)計(jì)電路原理圖。圖4(a)為常規(guī)以太網(wǎng)模塊設(shè)計(jì)電路原理圖[10],可以看出PHY芯片與MAC直接主要連接的數(shù)據(jù)線包括TXD0、TXD1、RXD0、RXD1、MDIO和MDC等。圖4(b)為雙線以太網(wǎng)模塊設(shè)計(jì)電路原理圖,與MAC之間的通信連接同樣采用RMII接口,和常規(guī)以太網(wǎng)的電路連接較相似,主要差異在于PHY芯片的地址線設(shè)置。2片PHY芯片時(shí)鐘均由主控制器提供50 MHz時(shí)鐘信號(hào),所以在設(shè)置接口電路時(shí)應(yīng)將兩者均設(shè)置為Master模式。
(a)常規(guī)以太網(wǎng)設(shè)計(jì)電路原理圖
網(wǎng)絡(luò)通信接口硬件電路可以用作Modbus/TCP通信和MQTT協(xié)議通信,本文研究的網(wǎng)關(guān)系統(tǒng)以阿里云物聯(lián)網(wǎng)云平臺(tái)為例進(jìn)行MQTT協(xié)議轉(zhuǎn)發(fā)研究。
CAN(controller area network,控制局域網(wǎng)絡(luò))通信已經(jīng)在汽車行業(yè)、新能源充電樁、船舶領(lǐng)域、醫(yī)療領(lǐng)域和智能家居等較多領(lǐng)域廣泛使用,為使邊緣終端接入支持CAN通信接口的平臺(tái)。本文所研究的網(wǎng)關(guān)設(shè)備需要支持CAN通信,網(wǎng)關(guān)系統(tǒng)控制器已經(jīng)集成CAN外設(shè)。不同CAN網(wǎng)絡(luò)通信速率可能存在差異,在進(jìn)行數(shù)據(jù)傳遞時(shí)需要通過(guò)速率轉(zhuǎn)換網(wǎng)關(guān)設(shè)備進(jìn)行網(wǎng)絡(luò)內(nèi)部速率轉(zhuǎn)換。
圖5為網(wǎng)關(guān)系統(tǒng)CAN總線轉(zhuǎn)發(fā)圖。CAN-125 kbps和CAN-150 kbps屬于2個(gè)不同的CAN網(wǎng)絡(luò),2個(gè)網(wǎng)路之間交換數(shù)據(jù)時(shí)需要通過(guò)網(wǎng)關(guān)設(shè)備1進(jìn)行速率轉(zhuǎn)換。同樣,CAN-500kbps網(wǎng)絡(luò)和CAN-125kbps之間有數(shù)據(jù)交換時(shí)也需要通過(guò)網(wǎng)關(guān)設(shè)備2進(jìn)行速率轉(zhuǎn)換。僅支持雙線以太網(wǎng)技術(shù)的Modbus/TCP協(xié)議邊緣終端設(shè)備如果需要接入CAN網(wǎng)絡(luò)系統(tǒng)平臺(tái),就需要設(shè)計(jì)Modbus/TCP協(xié)議轉(zhuǎn)CAN網(wǎng)絡(luò)協(xié)議的雙線以太網(wǎng)網(wǎng)關(guān)轉(zhuǎn)換設(shè)備,并且雙線以太網(wǎng)網(wǎng)關(guān)轉(zhuǎn)換設(shè)備需要根據(jù)接入的CAN網(wǎng)絡(luò)速率進(jìn)行速率匹配設(shè)定。
圖5 網(wǎng)關(guān)系統(tǒng)CAN總線轉(zhuǎn)發(fā)圖
圖6為CAN模塊原理圖,CAN總線TX和RX引腳分別是CAN接口接收和發(fā)送引腳,2個(gè)引腳需要和Cortex-A7主控制器對(duì)應(yīng)CAN引腳相連接,實(shí)現(xiàn)Modbus/TCP協(xié)議轉(zhuǎn)CAN協(xié)議接口數(shù)據(jù)收發(fā)。在CAN接口輸出端需要接入一個(gè)匹配電阻,一般為120 Ω,CAN總線芯片供電電壓5 V。
圖6 網(wǎng)關(guān)系統(tǒng)CAN通信電路原理圖
網(wǎng)關(guān)系統(tǒng)也可以通過(guò)串口模塊或者RS485模塊,將Modbus/TCP協(xié)議幀格式數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)進(jìn)行傳輸,對(duì)接到支持串口或者RS485通信接口的平臺(tái)。
圖7為網(wǎng)關(guān)系統(tǒng)RS485/串口電路原理圖。網(wǎng)關(guān)系統(tǒng)串口模塊和RS485模塊數(shù)據(jù)來(lái)源均為Cortex-A7內(nèi)核主控制器所引出的UART3_TXD和UART3_RXD管腳,通過(guò)圖中標(biāo)示為“485_232”的接口跳線帽進(jìn)行串口或者RS485通信接口選擇。由于共用一個(gè)串口接口,同一時(shí)刻可以選擇串口或者RS485中的一種電氣接口作為通信接口。
圖7 網(wǎng)關(guān)系統(tǒng)RS485/串口電路原理圖
圖8為網(wǎng)關(guān)系統(tǒng)軟件用例圖。網(wǎng)關(guān)系統(tǒng)軟件主要實(shí)現(xiàn)網(wǎng)關(guān)的各功能:包括接收邊緣終端設(shè)備數(shù)據(jù)上傳功能、CAN總線接口轉(zhuǎn)發(fā)功能、MQTT阿里云平臺(tái)數(shù)據(jù)轉(zhuǎn)發(fā)功能和RS485/串口接口轉(zhuǎn)發(fā)功能等。
圖8 網(wǎng)關(guān)系統(tǒng)軟件用例圖
首先邊緣終端和網(wǎng)關(guān)建立連接,進(jìn)行數(shù)據(jù)上傳。網(wǎng)關(guān)通過(guò)Modbus/TCP協(xié)議接收邊緣終端設(shè)備上傳的數(shù)據(jù),然后通過(guò)Modbus/TCP協(xié)議接口、CAN總線接口、MQTT協(xié)議阿里云物聯(lián)網(wǎng)接口和RS485/串口接口進(jìn)行轉(zhuǎn)發(fā),分別接入支持Modbus/TCP協(xié)議接口管理平臺(tái)、CAN總線接口的管理平臺(tái)、阿里云物聯(lián)網(wǎng)管理平臺(tái)和RS485/串口接口管理平臺(tái)。
由于網(wǎng)關(guān)系統(tǒng)作為Modbus/TCP客戶端,邊緣終端系統(tǒng)作為Modbus/TCP服務(wù)端[11],故由網(wǎng)關(guān)系統(tǒng)首先發(fā)起連接請(qǐng)求。網(wǎng)關(guān)系統(tǒng)采用Linux操作系統(tǒng),支持多線程任務(wù)運(yùn)行。為充分發(fā)揮Linux系統(tǒng)多線程通信的優(yōu)勢(shì),網(wǎng)關(guān)系統(tǒng)采用多線程技術(shù)實(shí)現(xiàn)Modbus/TCP通信、CAN總線通信、RS485/串口通信、MQTT通信等。
網(wǎng)關(guān)系統(tǒng)控制器內(nèi)核程序自帶CAN總線驅(qū)動(dòng),在系統(tǒng)設(shè)備樹中啟用驅(qū)動(dòng)程序即可使用CAN總線通信。RS485/串口共用一個(gè)片內(nèi)外設(shè)輸出,外部接口采用RS485和SP3232進(jìn)行電氣轉(zhuǎn)換,驅(qū)動(dòng)為內(nèi)核自帶驅(qū)動(dòng),同一時(shí)刻只可二選一進(jìn)行通信。圖9為網(wǎng)關(guān)系統(tǒng)軟件流程圖。網(wǎng)關(guān)系統(tǒng)首先手動(dòng)初始化CAN總線通信頻率,通信頻率根據(jù)需要接入的CAN總線平臺(tái)進(jìn)行設(shè)定,將網(wǎng)關(guān)系統(tǒng)中CAN通信的頻率和待接入的CAN總線平臺(tái)設(shè)為相同的通信頻率。然后啟動(dòng)網(wǎng)關(guān)程序,網(wǎng)關(guān)程序?qū)儆贛odbus/TCP客戶端,需要通過(guò)IP地址和端口號(hào)連接Modbus/TCP服務(wù)端。網(wǎng)關(guān)程序啟動(dòng)時(shí)通過(guò)外部參數(shù)輸入Modbus/TCP服務(wù)端IP和端口號(hào),服務(wù)端和客戶端連接成功之后才可以順利進(jìn)行數(shù)據(jù)讀寫等操作。
圖9 網(wǎng)關(guān)系統(tǒng)軟件流程圖
初始化程序中主要進(jìn)行Modbus/TCP服務(wù)器程序線程和阿里云云平臺(tái)SDK包接口線程啟動(dòng)。
err=pthread_create(&ntid,NULL,modbusTCPServer_
thread_exe,(void*)pModbusTcpData);
err=pthread_create(&ntid,NULL,
iot_ali_thread_exe,(void *)pModbusTcpData);
ModbusTCPServer_thread_exe和iot_ali_thread_exe為具體的線程初始化程序,主要進(jìn)行連接初始化和參數(shù)初始化等任務(wù)。ModbusTCPServer_thread_exe線程中主要實(shí)現(xiàn)服務(wù)端連接程序初始化、Modbus/TCP線圈和保持寄存器等專有寄存器使用C語(yǔ)言方式實(shí)現(xiàn)地址映射。iot_ali_thread_exe初始化線程中主要實(shí)現(xiàn)阿里云物聯(lián)網(wǎng)平臺(tái)登錄SDK包初始化、MQTT客戶端初始化、服務(wù)器地址和端口初始化和三元組初始化。阿里云物聯(lián)網(wǎng)平臺(tái)三元組包括product_key、device_name和device_secret,用于網(wǎng)關(guān)設(shè)備連接阿里云物聯(lián)網(wǎng)平臺(tái)憑證。網(wǎng)關(guān)設(shè)備配置正確的三元組數(shù)據(jù)即可正常連接阿里云物聯(lián)網(wǎng)平臺(tái)產(chǎn)品對(duì)應(yīng)的device設(shè)備,最后進(jìn)入循環(huán)轉(zhuǎn)發(fā)數(shù)據(jù)的流程,數(shù)據(jù)來(lái)源為Modbus/TCP客戶端接收到服務(wù)端的本地緩存數(shù)據(jù)。
當(dāng)網(wǎng)關(guān)系統(tǒng)Client端和邊緣終端Server端建立Modbus/TCP通信連接之后,網(wǎng)關(guān)系統(tǒng)啟動(dòng)讀寄存器命令。邊緣終端作為Server端,接收到Client讀數(shù)據(jù)請(qǐng)求命令,將傳感器數(shù)據(jù)打包成Modbus/TCP協(xié)議,作為響應(yīng)數(shù)據(jù)返回給網(wǎng)關(guān)Client端。Client端接收到各通道傳感器數(shù)據(jù),將原始數(shù)據(jù)緩存到網(wǎng)關(guān)本地存儲(chǔ)器。為保證數(shù)據(jù)傳輸實(shí)時(shí)性,網(wǎng)關(guān)本地接收到的數(shù)據(jù)立刻通過(guò)CAN和RS485/串口進(jìn)行數(shù)據(jù)直接轉(zhuǎn)發(fā)??紤]到不同網(wǎng)絡(luò)之間數(shù)據(jù)幀格式差異性,轉(zhuǎn)發(fā)傳輸?shù)臄?shù)據(jù)格式均采用通道編號(hào)和該通道編號(hào)數(shù)據(jù)一一對(duì)應(yīng)的數(shù)據(jù)幀格式進(jìn)行數(shù)據(jù)傳輸。當(dāng)其他上位平臺(tái)接收到CAN或者RS485/串口轉(zhuǎn)發(fā)的數(shù)據(jù)后,可以根據(jù)數(shù)據(jù)幀格式解析通道和對(duì)應(yīng)通道的采樣數(shù)據(jù)。
當(dāng)網(wǎng)關(guān)系統(tǒng)和阿里云物聯(lián)網(wǎng)平臺(tái)建立連接之后,直接讀取網(wǎng)關(guān)接收到的緩存數(shù)據(jù)。并將緩存數(shù)據(jù)打包成MQTT協(xié)議幀格式,通過(guò)阿里云物聯(lián)網(wǎng)平臺(tái)建立好產(chǎn)品和設(shè)備后下載的SDK包、API接口函數(shù)進(jìn)行云平臺(tái)數(shù)據(jù)發(fā)送。
針對(duì)本文所研究的網(wǎng)關(guān)系統(tǒng),搭建實(shí)物環(huán)境驗(yàn)證網(wǎng)關(guān)轉(zhuǎn)發(fā)數(shù)據(jù)功能。圖10為網(wǎng)關(guān)系統(tǒng)驗(yàn)證環(huán)境實(shí)物圖。驗(yàn)證網(wǎng)關(guān)Modbus/TCP協(xié)議接收數(shù)據(jù)情況,然后進(jìn)一步驗(yàn)證網(wǎng)關(guān)系統(tǒng)CAN總線轉(zhuǎn)發(fā)數(shù)據(jù)能力、網(wǎng)關(guān)系統(tǒng)RS485/串口轉(zhuǎn)發(fā)數(shù)據(jù)能力和MQTT協(xié)議轉(zhuǎn)發(fā)數(shù)據(jù)至阿里云物聯(lián)網(wǎng)平臺(tái)能力。
圖10 網(wǎng)關(guān)系統(tǒng)驗(yàn)證環(huán)境實(shí)物圖
網(wǎng)關(guān)系統(tǒng)可以通過(guò)雙線以太網(wǎng)接口、Modbus/TCP協(xié)議直接接收到邊緣終端的采樣數(shù)據(jù)。圖11為網(wǎng)關(guān)系統(tǒng)接收數(shù)據(jù)驗(yàn)證框圖。為驗(yàn)證網(wǎng)關(guān)的接收數(shù)據(jù)功能是否正常,采用在邊緣終端log輸出和網(wǎng)關(guān)log輸出比對(duì)數(shù)據(jù)是否一致的方式進(jìn)行驗(yàn)證。
圖11 網(wǎng)關(guān)系統(tǒng)接收數(shù)據(jù)驗(yàn)證框圖
首先啟動(dòng)邊緣終端,等待網(wǎng)關(guān)系統(tǒng)Modbus/TCP Client端連接。然后啟動(dòng)網(wǎng)關(guān)系統(tǒng),觀察Server端串口log數(shù)據(jù)輸出和Client端串口log數(shù)據(jù)輸出是否一致。等待邊緣終端發(fā)送傳感器數(shù)據(jù),圖12為邊緣終端發(fā)送的數(shù)據(jù)串口log。
圖12 邊緣終端發(fā)送的數(shù)據(jù)串口log
圖13為網(wǎng)關(guān)側(cè)通過(guò)Modbus/TCP接收的數(shù)據(jù)。對(duì)比8個(gè)通道的傳感器數(shù)據(jù)均一致,表明網(wǎng)關(guān)系統(tǒng)通過(guò)雙線以太網(wǎng)接口和Modbus/TCP協(xié)議接收數(shù)據(jù)正常。
圖13 網(wǎng)關(guān)系統(tǒng)接收的數(shù)據(jù)
網(wǎng)關(guān)系統(tǒng)可以將接收的邊緣終端數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),為驗(yàn)證網(wǎng)關(guān)系統(tǒng)轉(zhuǎn)發(fā)數(shù)據(jù)情況,搭建實(shí)物驗(yàn)證環(huán)境。圖14為網(wǎng)關(guān)系統(tǒng)數(shù)據(jù)轉(zhuǎn)發(fā)實(shí)物搭建架構(gòu)圖,驗(yàn)證CAN總線轉(zhuǎn)發(fā)、RS485/串口轉(zhuǎn)發(fā)和MQTT阿里云物聯(lián)網(wǎng)平臺(tái)數(shù)據(jù)轉(zhuǎn)發(fā)。驗(yàn)證方式同樣采用對(duì)比方式,對(duì)比邊緣終端發(fā)送的數(shù)據(jù)和經(jīng)網(wǎng)關(guān)平臺(tái)轉(zhuǎn)發(fā)的平臺(tái)所接收的數(shù)據(jù)。
圖14 網(wǎng)關(guān)系統(tǒng)數(shù)據(jù)轉(zhuǎn)發(fā)驗(yàn)證環(huán)境框圖
4.2.1 驗(yàn)證CAN系統(tǒng)平臺(tái)數(shù)據(jù)轉(zhuǎn)發(fā)
CAN總線支持多種通信速率,但是同一個(gè)網(wǎng)關(guān)下所有CAN節(jié)點(diǎn)的通信速率必須保持一致,本次驗(yàn)證采用500 Kbit/s通信速率。首先通過(guò)串口設(shè)置CAN平臺(tái)的CAN速率為500 Kbit/s,然后打開CAN網(wǎng)卡,并監(jiān)聽網(wǎng)關(guān)轉(zhuǎn)發(fā)過(guò)來(lái)的數(shù)據(jù):
ip link set can0 type can bitrate 500000
ifconfig can0 up;candump can0
同樣設(shè)置網(wǎng)關(guān)的CAN通信速率為500 Kbit/s。最后啟動(dòng)邊緣終端等待通信連接,啟動(dòng)網(wǎng)關(guān)設(shè)備連接邊緣終端。網(wǎng)關(guān)與邊緣終端連接成功之后,通過(guò)CAN接口向CAN管理平臺(tái)轉(zhuǎn)發(fā)接收的邊緣終端數(shù)據(jù)。
圖15(a)和圖15(b)分別為邊緣終端發(fā)送的數(shù)據(jù)和CAN平臺(tái)接收到網(wǎng)關(guān)系統(tǒng)轉(zhuǎn)發(fā)的數(shù)據(jù)。CAN平臺(tái)接收的數(shù)據(jù)中“can0”表示CAN網(wǎng)卡名稱;“5A1”表示網(wǎng)關(guān)中轉(zhuǎn)發(fā)CAN數(shù)據(jù)包中的標(biāo)志符ID編號(hào);“[3]”表示接收的數(shù)據(jù)長(zhǎng)度;第4組數(shù)據(jù)從01~07表示采樣的傳感器通道編號(hào);最后2組數(shù)據(jù)表示接收的數(shù)據(jù),采用2字節(jié)8位數(shù)據(jù)表示1個(gè)16位數(shù)據(jù),高字節(jié)在前,低字節(jié)在后。對(duì)比邊緣終端發(fā)送的數(shù)據(jù)和網(wǎng)關(guān)轉(zhuǎn)發(fā)至CAN平臺(tái)的數(shù)據(jù),兩者各通道對(duì)應(yīng)的數(shù)據(jù)完全一致,表示網(wǎng)關(guān)系統(tǒng)通過(guò)CAN接口轉(zhuǎn)發(fā)數(shù)據(jù)正常。
(a)邊緣終端發(fā)送的數(shù)據(jù)(b)CAN平臺(tái)接收的數(shù)據(jù)
4.2.2 驗(yàn)證RS485/串口平臺(tái)數(shù)據(jù)轉(zhuǎn)發(fā)
網(wǎng)關(guān)系統(tǒng)通過(guò)RS485和串口轉(zhuǎn)發(fā)接收的傳感器數(shù)據(jù)均來(lái)自主控制器同一組端口,只需驗(yàn)證RS485或者串口數(shù)據(jù)是否正常即可。
首先啟動(dòng)邊緣終端采集數(shù)據(jù),并通過(guò)Modbus/TCP協(xié)議發(fā)送給網(wǎng)關(guān)系統(tǒng),網(wǎng)關(guān)系統(tǒng)通過(guò)雙線以太網(wǎng)端口接收邊緣終端數(shù)據(jù),并打包成通道編號(hào)、數(shù)據(jù)高字節(jié)、數(shù)據(jù)低字節(jié)的幀格式通過(guò)串口轉(zhuǎn)發(fā)出去。采用USB轉(zhuǎn)TTL模塊連接到控制器串口TTL電平輸出端,并接到計(jì)算機(jī)串口調(diào)試終端接收網(wǎng)關(guān)轉(zhuǎn)發(fā)的串口數(shù)據(jù),驗(yàn)證串口轉(zhuǎn)發(fā)是否正常。
圖16(a)和圖16(b)分別為邊緣終端發(fā)送的數(shù)據(jù)和網(wǎng)關(guān)系統(tǒng)通過(guò)串口或者RS485轉(zhuǎn)發(fā)至串口平臺(tái)的數(shù)據(jù)。對(duì)比邊緣終端和RS485/串口平臺(tái)接收的各通道傳感器數(shù)據(jù)完全一致,表明網(wǎng)關(guān)系統(tǒng)通過(guò)RS485/串口轉(zhuǎn)發(fā)數(shù)據(jù)正常。
(a)發(fā)送數(shù)據(jù)(b)接收數(shù)據(jù)
4.2.3 驗(yàn)證MQTT阿里云物聯(lián)網(wǎng)數(shù)據(jù)轉(zhuǎn)發(fā)
驗(yàn)證網(wǎng)關(guān)通過(guò)MQTT協(xié)議轉(zhuǎn)發(fā)數(shù)據(jù)至阿里云物聯(lián)網(wǎng)平臺(tái),首先在阿里云物聯(lián)網(wǎng)平臺(tái)進(jìn)行產(chǎn)品和設(shè)備創(chuàng)建,搭建好阿里云物聯(lián)網(wǎng)平臺(tái)數(shù)據(jù)接收環(huán)境。
圖17(a)和圖17(b)分別為邊緣終端向網(wǎng)關(guān)系統(tǒng)發(fā)送的傳感器數(shù)據(jù)和阿里云物聯(lián)網(wǎng)平臺(tái)通過(guò)MQTT協(xié)議接收到網(wǎng)關(guān)系統(tǒng)轉(zhuǎn)發(fā)的傳感器數(shù)據(jù)。阿里云物聯(lián)網(wǎng)平臺(tái)以float型數(shù)據(jù)顯示,將各通道數(shù)據(jù)轉(zhuǎn)換成16進(jìn)制后和邊緣終端各通道數(shù)據(jù)進(jìn)行對(duì)比,數(shù)據(jù)完全一致,說(shuō)明雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)通過(guò)MQTT協(xié)議向阿里云物聯(lián)網(wǎng)平臺(tái)轉(zhuǎn)發(fā)數(shù)據(jù)正常。
(a)邊緣終端發(fā)送的數(shù)據(jù)(b)物聯(lián)網(wǎng)平臺(tái)接收的數(shù)據(jù)
文中首先介紹了雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)的整體框架、網(wǎng)關(guān)系統(tǒng)主要硬件設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì),并結(jié)合雙線以太網(wǎng)技術(shù)、Modbus/TCP典型工業(yè)以太網(wǎng)通信技術(shù)和物聯(lián)網(wǎng)相關(guān)技術(shù),設(shè)計(jì)了一套兼容多平臺(tái)的雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)。最后通過(guò)實(shí)物環(huán)境驗(yàn)證雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)轉(zhuǎn)發(fā)數(shù)據(jù)的能力,并給出驗(yàn)證數(shù)據(jù),充分驗(yàn)證了方案可行性和實(shí)用性。
由于雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng)研究重點(diǎn)在于數(shù)據(jù)轉(zhuǎn)發(fā)和接口通信上,目前還缺乏數(shù)據(jù)交換安全機(jī)制和系統(tǒng)遠(yuǎn)程升級(jí)方案。后續(xù)研究考慮在網(wǎng)關(guān)系統(tǒng)中增加非對(duì)稱加密和對(duì)接加密相結(jié)合的安全機(jī)制[12-13],并研究經(jīng)過(guò)數(shù)字簽名的OTA遠(yuǎn)程升級(jí)方案,進(jìn)一步完善雙線以太網(wǎng)網(wǎng)關(guān)系統(tǒng),達(dá)到投入市場(chǎng)應(yīng)用標(biāo)準(zhǔn)。