?

面向工業傳感器的多協議數據轉換網關設計

2024-02-22 12:48譚誠剛許煥敏
儀表技術與傳感器 2024年1期
關鍵詞:網關以太網報文

譚誠剛,許煥敏,傅 強

河海大學機電工程學院

0 引言

利用RS485總線和CAN總線通信的傳感器被用于工業領域的各種場合中,這2類傳感器的數據一般還需通過另一種協議接口傳輸到上位機,但目前單一的數據傳輸方式存在數據傳輸受環境限制的問題,也無法滿足未來工業物聯網的數據傳輸要求,為此傳感器引入不同的數據傳輸方案十分必要。鄭美芳等[1]設計了CAN和以太網間網關,通過以太網可管理CAN總線上的傳感器。徐尚瑜等[2]研發了一種低功耗數據采集終端,該終端可采集各類RS485傳感器信息,通過Lora下發傳感器指令。宋志勇[3]設計了基于CAN總線的稱重數據采集系統,采集到的質量數據通過WiFi上傳到云端。Tranca等[4]將ZigBee技術用于不同總線的數據傳輸,可實現RS485、RS232、RS422設備與ZigBee的數據交互。曾偉[5]研發了一套針對CAN/RS485傳感器的數據采集系統,各基站可將采集到的傳感器數據經過以太網匯聚到服務器,實現了對大量傳感器的智能化管理。上述文獻中的學者已設計出采集不同協議傳感器數據的轉換網關,但將采集到的傳感器數據以不同形式傳輸給上位機的研究成果較少。

本文設計了一種適用于RS485/CAN傳感器的多協議轉換網關,該網關能實現CAN、RS485傳感器與RS232、以太網、LoRa之間的數據轉換,真正實現了傳感器的多渠道數據傳輸,為傳感器實現數據遠距離無線傳輸和加入工業物聯網提供了一種可行方案。

1 系統方案設計

要求設計的網關能實現RS485、CAN與以太網、RS232串口、LoRa的協議轉換功能,根據應用需求確定的多協議轉換網關通信總體結構模型如圖1所示。網關的一端是CAN接口和RS485接口,連接到RS485或CAN總線上,用于采集傳感器數據;另一端有RS232接口、RJ45網口以及LoRa收發器,可實現傳感器和管理機之間不同渠道的雙向數據通信。由于網關涉及到的通信接口較多,故將CAN、RS485接口統稱為數據采集接口,將RS232、RJ45以太網接口和LoRa收發器統稱為數據上傳接口。

已知CAN報文都由CAN-ID和0~8 Byte的數據組成[6]。則定義上位機每次下發的單個數據包最長為10 Byte,數據包的組成為報文發送設備CAN-ID(2 Byte)加數據(8 Byte)。網關接收到上位機的數據后會識別數據包的ID和內容并通過CAN接口發送。當網關的CAN接口收到報文后,會提取報文的ID和數據,以11位ID加數據的數據包形式通過數據上傳接口發送給上位機。為了方便緩存待收發的數據,每種接口都設置了接收數據緩沖區和發送數據緩沖區[7]。

2 系統硬件設計

2.1 總體方案

多協議數據轉換網關要能實現CAN傳感器、RS485傳感器與LoRa、以太網、RS232串口之間的數據轉換,則在硬件上要有相應的接口電路。設計硬件時采用4個撥碼開關切換不同接口,網關上電時會根據撥碼開關的狀態開啟不同接口,撥碼開關不同狀態對應的功能如表1所示。

網關主控芯片選用STM32F103RCT6,該型號芯片具有豐富的片上外設,可以拓展多種協議的接口電路。實現TCP/IP協議棧有2種方案[8]:

1)主控芯片+軟件協議棧+以太網PHY收發器芯片;

2)主控芯片+硬件協議棧芯片。

第1種方案要實現復雜的硬件電路和軟件TCP/IP協議棧的移植,而第2種方案中的硬件協議棧芯片已內置TCP/IP協議棧,故本文選用硬件協議棧芯片實現以太網協議棧的功能。LoRa模塊選用E22-400T22D,該模塊空中速率最高為62.5 kbit/s,理想情況的最遠通信距離可達5 km[9],并通過串口與單片機通信。實際的工業環境中,RS485或CAN總線上可能會存在高的共模電壓和其他電磁干擾,可能導致連接網關的上位機工作異常[10],因此RS485接口和CAN接口電路需要進行隔離設計,最終的硬件總體方案如圖2所示。

圖2 硬件總體方案

2.2 電源電路設計

通過12 V/24 V電源適配器為網關供電,電源電路采用DCDC降壓芯片加LDO的組合方式,并將電源適配器的直流電壓轉換為5 V、3.3 V電壓為網關中各芯片供電。DCDC芯片選用TPS5430,該芯片將12 V/24 V的電源電壓轉換為5 V電壓為后續模塊供電。LDO選用AMS1117-3.3,將5 V電壓轉換為3.3 V電壓,為后續芯片供電。

2.3 RS485接口電路設計

考慮到RS485接口需要進行隔離設計,故選用ADM2483作為RS485收發器芯片,作為一種基于磁隔離技術的RS485電氣隔離收發器,與傳統光電型隔離收發器相比具有隔離性能優異、壽命長、可靠性好等特點[11],能夠滿足在工業環境下的使用需求。ADM2483的VDD2、GND2隔離端需要用隔離電源芯片供電,故選用B0505S-1WR3隔離電源模塊,該模塊為PCB上需要產生與輸入電壓隔離的電源場合而設計,并且具有3 000 V的隔離電壓保護標準,能輸出5 V隔離電壓。RS485接口電路如圖3所示,其中 ADM2483的RXD、TXD分別與單片機的串口的RX、TX相連,ADM2483的RE#與DE短接到一起后與單片機相連,可單片機控制ADM2483的數據收發狀態。

圖3 RS485接口電路

2.4 CAN接口電路設計

主控芯片STM32F103RCT6已經內置了CAN2.0A/2.0B控制器,因此在設計CAN接口電路時僅需選擇CAN收發器即可。CAN收發器芯片選擇ISO1050DUBR,作為一款隔離型收發器,該收發器能有效降低CAN總線對網關的電磁干擾,尤其適合復雜工況[12],選用B0505S-1WR3為其隔離端提供5 V隔離電壓。ISO1050組成的CAN接口電路如圖4所示,ISO1050的RXD、TXD分別與單片機CAN_RX、CAN_TX相連。

圖4 CAN接口電路

2.5 以太網通信電路設計

本文采用硬件協議棧芯片的形式來實現TCP/IP協議棧功能,因此選擇W5000以太網控制器作為硬件協議棧芯片,通過以太網連接器HR911105A加W5500組成完整的以太網硬件協議棧。W5500作為一款以太網控制器芯片,將TCP/IP協議棧集成在芯片內部,單片機只需要通過SPI通信接口就可與其通信和配置其相關的寄存器,可方便地進行以太網協議棧的個性化開發[13],同時HR911105A將網絡隔離變壓器和RJ45網口集成在一起,簡化了硬件電路設計。以太網接口電路如圖5所示,C8~C11、R8~R9組成的Bob Smith電路可降低接口EMC電磁輻射,磁珠將AVDD和VDD分隔開。W5500的SCLK、MISO、MOSI、CS引腳連接到單片機 SPI引腳,INTN#是W5500的中斷引腳。當W5500自身狀態發生改變時,會在INTN#引腳輸出低電平以告知單片機。

圖5 以太網接口電路

2.6 RS232接口電路設計

由于RS232信號的電平與單片機接口信號的電平不一致,故兩者之間需要電平轉換芯片來實現兩者的信號電平轉換,因此選用SP3232EEN,它是一款滿足TIA/EIA-232標準要求的RS232收發器芯片,RS232接口電路如圖6所示。

圖6 RS232接口電路

3 系統軟件設計

多協議數據轉換網關的軟件設計采用程序模塊化設計,分別編寫了CAN、RS485、W5500、RS232串口和LoRa的驅動程序,每個模塊的程序中包含了各自的參數配置程序、數據收發程序、中斷程序。定義了各自的中斷標志位,相應接口在中斷函數中接收到數據后,會將標志位置位,并轉到主程序中處理數據,在主程序中完成對不同接口協議數據的轉換。

3.1 CAN通信程序

在編寫CAN驅動程序時,首先會調用STM32庫函數對CAN外設初始化,在CAN-InitStructure初始化配置結構體中設置CAN通訊波特率為125 kbit/s。CAN外設的報文過濾器可以過濾指定ID的報文,則在CAN-FilterInitStructure結構體中配置過濾器為16位非必須匹配的掩碼模式,配置后CAN外設可接收所有11位ID的報文。編寫 CAN報文的收發程序時,定義了Tx-Message、Rx-Message兩個結構體分別作為CAN報文的數據接收和數據發送緩沖區。當網關接收到報文后,在CAN中斷函數中確認該報文是否為11位ID的數據幀,若是則將CAN報文存入到Rx-Message接收緩沖區中等待后續報文數據處理,若不是則丟棄該報文。

3.2 RS485、RS232、LoRa通信程序

由于網關的RS485、RS232、LoRa模塊與單片機的通信方式均為USART,故三者的軟件設計框架大致相同,分別是串口參數配置、數據收發與中斷程序的編寫。調用庫函數配置好USART通信參數后,分別為3個串口定義了128 Byte數據接收緩沖區和數據發送緩沖區。為了實現大數據吞吐量要求,將單片機3個串口中斷觸發方式配置為IDLE串口空閑中斷,其優勢在于每接收到1幀數據后才會觸發1次接收中斷,避免單片機頻繁進入中斷。

3.3 以太網通信程序

以太網通信程序主要分為W5500的通信配置和數據收發程序。定義Gateway-IP、Sub-Mask、IP-Addr、Port這4個數組存放網關地址、子網掩碼、IP地址、socket端口號的配置參數。W5500擁有8個同時支持TCP協議通信的socket端口,在傳輸數據時只選擇socket0作為與外界通信的端口。在建立TCP通訊前,需要對W5500進行相關通信參數的配置,配置流程如下:

1)在主程序中調用SetNet()函數將通信參數寫入到4個數組中,寫入的值分別為192.168.1.1、255.255.255.0、192.168.1.199、5000;

2)調用W5500-Init()函數將設置好的通信參數寫入到W5500寄存器中,并設置W5500工作在TCP服務器模式;

3)利用DetectGateway()函數檢查通信參數是否合理,使能socket0端口;

4)調用SocketInit()函數指定socket0作為TCP端口,設置分片長度,使能W5500。

在完成參數配置后,W5500將工作在TCP服務器模式,在main主程序的while循環中反復調用Socket-Listen()函數用以等待遠程主機的連接。W5500的內部擁有16 KB的發送緩存區和接收緩存區寄存器,定義兩個大小為2 048 Byte的數組作為數據接收和數據發送緩存區。調用WriteDa-taBuff()函數將數據發送緩沖區內的數據中寫入到W5500發送緩存區寄存器,寫入成功后W5500會自動向外發送數據。當 W5500收到外界數據后,單片機則會檢測到W5500的INTN#引腳電平拉低,此時W5500_RECEIVE標志位置位,在主程序中調用ReadDataBuff()函數讀取W5500接收緩存區寄存器內的數據。

4 網關數據傳輸實驗

為了驗證網關的功能,設計了網關采集RS485/CAN傳感器數據的實驗,實驗的統一流程均為:上位機通過網關下發指令給傳感器,傳感器收到指令后通過網關將數據上傳到上位機,在上位機顯示接收到的傳感器數據。實驗所用傳感器分別為RS485稱重傳感器SLP331D、CAN汽車衡PDX,兩款傳感器均為數字式稱重傳感器,可將采集到的質量數據直接傳輸到各自總線上。

4.1 RS485傳感器數據采集實驗

4.1.1 RS485-RS232傳輸實驗

實驗前,將網關的一端連接到RS485稱重傳感器,另一端用USB轉RS232數據線連接到計算機將網關和RS485稱重傳感器上電。實驗步驟為:打開電腦的串口助手軟件,設置波特率9 600 bit/s;給RS485傳感器加載2 kg砝碼;串口助手每隔50 ms通過網關下發獲取質量的指令;傳感器收到指令后上傳當前質量值。串口助手接收到的傳感器質量數據如圖7所示。

圖7 RS485-RS232雙向數據傳輸實驗結果

4.1.2 RS485-LoRa傳輸實驗

LoRa數據傳輸實驗中會用到兩個多協議轉換網關,其中一個網關將接收到的傳感器數據通過LoRa模塊發送出去,另一個網關接收數據后將數據發送到上位機。網關1僅連接RS485稱重傳感器,網關2僅用RS232串口線連接到計算機,兩個網關間無物理連接,彼此通過LoRa模塊傳輸數據。該實驗的實驗步驟與RS485-RS232雙向數據傳輸實驗一致,串口助手每隔50ms向稱重傳感器發送獲取質量的指令,實驗結果與圖7相同。

4.1.3 RS485-以太網傳輸實驗

接線檢查無誤后給網關上電,并設置計算機IP為靜態IP,其IP地址設置為192.168.1.190(使計算機與網關的IP地址處于同一網段即可)。在計算機端以太網測試工具中將協議類型設置為TCP Client,服務器IP地址設置為192.168.1.199,端口設置為5000,點擊建立與網關服務器的TCP連接。在傳感器上加2 kg砝碼后,計算機每隔50 ms給RS485稱重傳感器發送指令,可看到傳感器返回的質量結果如圖8所示。

圖8 RS485-以太網數據雙向傳輸實驗結果

4.2 CAN傳感器數據采集實驗

4.2.1 CAN-RS232、LoRa傳輸實驗

兩組實驗的實驗內容與實驗現象均相同,故只對CAN-RS232的雙向數據傳輸實驗進行說明。將網關的一端連接到CAN傳感器,另一端通過USB轉RS232數據線連接到計算機并給兩者上電后,加載10 kg負載到傳感器上,串口助手每隔50 ms下發指令獲取質量,CAN傳感器接收到指令后通過網關將質量數據上傳到計算機,數據發送和接收均為十六進制的形式,數據包中的字符與HEX對應關系如表2所示。

表2 部分ASCII碼對照表

串口助手每次下發數據包的前2字節為CAN報文ID,數據包的第3~5字節是質量指令。根據圖9所示實驗結果,并將電腦收到的數據與表2對比可看到接收到的數據幀中最后6字節是質量數據,顯示的質量在10.0~10.2 kg之間,與加載在傳感器上的10 kg負載質量相符。

圖9 CAN-RS232數據雙向傳輸實驗結果

4.2.2 CAN-以太網傳輸實驗

該實驗中,電腦端的以太網測試工具通信參數配置與RS485-以太網雙向數據傳輸實驗相同,接線連接好后給傳感器和網關上電,并使電腦連接到網關服務器。在傳感器上加10 kg負載,每隔50 ms計算機下發指令,從圖10可看出網關接收到了質量數據,顯示質量數據的范圍在10.0~10.2 kg之間,與加載在傳感器上的10 kg負載質量相符。

圖10 CAN-以太網數據雙向傳輸實驗結果

5 結束語

本文針對RS485、CAN工業傳感器與上位機間數據通信渠道單一的問題,研發了一種多協議數據轉換網關,該網關能實現RS485、CAN傳感器和RS232串口、以太網、LoRa之間的雙向數據傳輸。采用隔離型CAN和RS485收發器、遠距離傳輸的LoRa模塊和以太網硬件協議棧芯片,降低軟硬件設計難度,并使網關更適合在工業環境下工作。RS485、CAN傳感器通信測試的結果驗證了網關在雙向數據傳輸上的準確性和可靠性。該網關擴展了傳感器與管理機的通信渠道,利用數據透傳的軟件層使網關能與不同種類的RS485、CAN傳感器建立通訊。

猜你喜歡
網關以太網報文
基于J1939 協議多包報文的時序研究及應用
基于1500以太網養豬場的智能飼喂控制系統的設計與實現
CTCS-2級報文數據管理需求分析和實現
淺析反駁類報文要點
談實時以太網EtherCAT技術在變電站自動化中的應用
ATS與列車通信報文分析
LTE Small Cell網關及虛擬網關技術研究
一種90W高功率以太網供電系統的設計
淺談EPON與工業以太網在貴遵高速公路中的應用
應對氣候變化需要打通“網關”
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合