張永偉,康興無
(火箭軍工程大學 陜西 西安 710025)
基于STM32和Modbus的串口服務器系統
張永偉,康興無
(火箭軍工程大學 陜西 西安 710025)
為滿足工業控制中不同功能模塊的信息交換、無法聯網和遠程控制不方便等問題,設計了一種基于STM32微控制器的串口數據采集、處理和傳輸的串口服務器系統。系統以STM32F103RBT6為核心處理芯片,通過USR-WIFI232-D2雙網模組進行WIFI無線傳輸,并使用RS232和RS485芯片發送和接收低速串口數據。系統采用構造簡單、功能強大的Modbus協議作為上層通訊協議,保證了系統運行的穩定可靠。實驗表明了串口系統的實時性和可靠性良好,為在通信工程的信號采集與傳輸提供了一種有效的組網技術方案。
STM32;Modbus;串口服務器;串口總線;WIFI
隨著物聯網的興起和網絡技術的發展,智能儀器接入網絡己成為一種趨勢,從而實現數據的共享與遠程管理[1-3]。要使串口設備接入網絡,目前解決辦法是采用串口轉以太網服務器的方案,通過串口轉以太網服務器將串口數據轉換為以太網幀[4]。但以太網存在布線困難、靈活性差等缺點,對于作業環境復雜的工業控制領域,鋪設有線以太網比較困難,無法實現大量串口設備與遠端用戶通信的現實要求[5-6]。WIFI作為一種無線局域網形式,能夠克服以太網布線困難、靈活性差的缺點[7]。
傳統的串口服務器采集數據單一,不能完成多參數采集,采集端口較少[8-9]。目前,串口服務器普遍使用CPU連接以太網接口芯片。這些芯片只實現了TCP/IP協議的物理層,編程較為復雜,不利于快速開發和穩定運行[10-11]。且大多數串口服務器只能實現有線上傳和單個客戶端連接,適應性較差。
文中基于STM32微控制器和Modbus協議設計的串口服務器系統設置了多路采集信號輸入端,兼容RS485和RS232兩種串口。系統使用USRWIFI232-D2雙網模組發送和接收以太網數據并通過WIFI技術進行無線傳輸。其內部集成了TCP/IP協議,不需要編寫復雜的TCP/IP協議棧且實現了多個串口設備與一個或多個遠端主機通信。現有的串行設備可以方便地接入和局域網以太網,不需要改變原有儀器設備的硬件。客戶端可以直接通過網絡監控和操作串口設備。該串口服務器基于開放標準設計,易于升級與維護。
串口服務器系統實現串口鏈路與上位機之間的通信數據的轉換與傳輸。硬件設計包括:控制器最小系統設計、電源模塊的設計、串口模塊的設計和網絡模塊的設計等。軟件設計的目的是完成通信協議的轉換工作,實現上下行通信、參數配置、數據封包策略和數據緩沖等。串口服務器作為遠端上位機和串行設備之間的橋梁,通過協議轉化達到數據在系統間的透明傳輸[12]。串口服務器系統結構原理圖如圖1所示。

圖1 串口服務器系統結構原理圖
服務器系統的信號輸入接口設計采用RS485/RS232雙模接口。輸出端通過WIFI技術連接連接局域網或以太網,串口總線則可以完成中短距有線傳輸。硬件設計結構如圖2所示,系統以STM32F103RBT6為核心,該處理器性價比高,是一款基于Cortex-M3內核的32位增強型閃存微控制器,Cortex-M3內核支持Thumb-2指令集,能夠迅速完成單周期乘法和硬件除法。它的主頻高達72 MHz,完全滿足串口通信系統的需要。STM32微控制器嵌入有512 kB的Flash和64 kB的SRAM。其標準外設包括10個定時器、5個USART接口、12條DMA通道和一個支持96位唯一標識碼的CRC計算單元等。低電壓和節能是STM32微控制器的兩大優點,其工作電壓范圍在2.0 V至3.6 V,能夠很好兼容主流電池技術。

圖2 串口服務器硬件結構圖
RS232傳輸距離約為15 m,異步數據傳輸速率在0~20 Kbps范圍內的通信。RS485彌補了RS232通信距離短、速率低的缺點,還增加了多點和雙向通信的能力,采用平衡發送和差分接收,抗共模干擾能力比較強。
在輸入接口轉換電路中,RS232的電平轉換芯片采用Maxim公司的MAX3221。在輸入端沒有接收到有效的信號電平時,MAX3221片上電源和驅動器能夠自動關閉,節能性能比較出色。MAX3221由一個高效、雙電荷泵的電源供電,工作電壓為+3 V~+5.5 V。RS485電平轉換芯片選用SP3485收發器,它的工作電壓為+3.3 V,是一個低消耗、半雙工收發器,具有低功耗關斷模式,數據傳輸速率最高可達10 Mbps。2款收發器通過74LS08芯片實現RS485和RS232串口雙模輸入。共有4個輸入轉換接口,其中一個接口電路為如圖3所示。

圖3 輸入接口轉換電路
WIFI技術又稱802.11標準,它性能穩定,傳輸速率高,可以達到11Mbps[13-14]。在輸出接口轉換電路中,WIFI模式是通過 USR-WIFI232-D2串口轉WIFI模組實現,該模組是一體化的802.11 b/g/n WIFI和以太網的模組,提供了一種將物理設備連接到WIFI無線網絡或是以太網,并提供USART數據傳輸接口的解決方案。通過該模組,串口設備可以接入WIFI無線網絡或是以太網,作為熱點可以同時容納32個WIFI客戶端同時接入,也可同時容納32個TCP客戶端。串口通信通過串口轉換電路完成。輸出串口轉換電路如與輸入串口轉換電路類似,WIFI模組電路如圖4所示。

圖4 WIFI模組電路
系統模組的供電為5 V和3.3 V兩種直流穩壓電源,串口服務器電源輸入端采用12 V直流供電,通過電源轉換芯片TPS5430輸出穩定的5 V電壓,TPS5430負載能力大,使系統工作穩定,轉化效率高,有過流保護及熱關斷功能。再通過2個低壓差調節器LM1117為MCU、WIFI模組等提供3.3 V穩壓電源,電源轉換電路如圖5所示。

圖5 電源轉換電路
串口服務器的軟件設計包括Modbus協議的選擇、主程序和串口通信子程序等。
Modbus是工業現場設備中是使用很廣泛的一種總線協議,支持,如RS232、RS485、以太網等多種電氣接口[15]。Modbus協議采用主機查詢、從機回復的工作結構。一臺主機可以和多臺從機進行通信,,地址范圍為1-255,地址0用作廣播地址。主機能以廣播的方式與所有從機進行通信,也能單獨與每個從機進行通信,但從機之間無法直接通信[15]。Modbus信息幀格式如表1所示。

表1 Modbus幀格式
文中STM32微控制機為主機,其他為從機。主機主動發起網絡中的通信,依次向各個從機發送命令,從機根據接收到的命令做出相應的回應。主機的程序處在循環中查詢各個從機,并對回應的數據進行識別和處理。程序設置了超時檢測保證系統的可靠性。信息幀以連續的字符流發送,當超過一定的間隔沒有字符接收,認為報文結束。通過設置定時中斷時間將采集到的數據合成一個幀節再通過串口或者WIFI上傳給客戶機。主機程序流程如圖6所示。

圖6 主機流程圖
從機一直處在接收的模式,當它接收到數據時,首先判斷地址的正確性,如果與自己的地址不一致就丟棄這一幀數據,繼續等待新數據,如果地址匹配就進行CRC校驗。若校驗結果吻合則通信正常,按功能碼調用數據采集的子程序,并返回響應幀。若發送的功能碼異常,則發送一個異常數據幀給主機。上位機可以主動向串口服務器發送命令幀。
實驗中,通過接入4路SM52D無線串口通信模塊分別模擬RS485和RS232串口信號輸入。上位機采用串口與網口二合一測試軟件助手對主機進行參數設置和發送命令幀。實驗流程為:串口服務器先通過串口總線接入上位機,串口助手對遠端傳感器發送采集命令,設置串口服務器上傳時間,傳輸的波特率為9600bps,接收采集信號。斷開串口通信,連接WIFI網絡,選擇TCP Client模式,進行IP地址和端口號等相關設置,發送命令,接收服務器信號。服務器實驗實物如圖7所示;實驗結果如圖8所示。

圖7 實驗實物圖
實驗表明串口服務器數據傳輸穩定可靠,在9600bps的串口波特率工作下,性能穩定,無丟包現象,能長時間無差錯地實現分布式數據采集。上傳的信息幀格式如表2所示。

圖8 實驗結果圖

表2 上傳信息幀格式
文中介紹了一種基于STM32微控制器和Modbus協議的串口服務器的設計與實現。服務器系統所需的外圍器件少,組網方便,可以通過兩種串口總線輸入,通過有線或無線方式傳輸,實現客戶機對串口設備的管理和控制。系統傳輸數據的實時性和可靠性良好,運行穩定,能滿足一般工業控制系統數據傳輸要求。
[1]彭剛,秦志強.基于ARM Cortex-M3的STM32系列嵌入式微控制器應用實踐[M].北京:電子工業出版社,2011.
[2]Fumitaka Kurauchi.Variability of commuters’bus line choice:an analysis of oyster card data[J].Public Transport,2014,6(1-2):21-34.
[3]Anonymous.Easy-To-Use Controllers,Indicators[J].Plastics Technology.2014,60(8):58.
[4]Boltz,Eric S,Henke,Karl,Boltz.Increasing Efficiency with Advanced Controls[J].Industrial Heating,2014,82(6):38-40.
[5]李勛,劉文怡.基于FPGA的以太網接口設計與實現[J].自動化與儀表,2014(5):57-60.
[6]楊剛,陳健美,宋余慶,等.嵌入式設備與網絡數據庫交互的中間件設計[J].計算機工程與設計,2013,34(11):3878-3882.
[7]賀洪江,程琳.基于STM32與MODBUS協議的超聲波測距儀設計[J].儀表技術與傳感器,2014(11):27-33.
[8]彭剛,徐慶江,張崇金,等.基于STM32單片機的RS485總線分布式數據采集系統設計[J].伺服控制,2011(2):64-67.
[9]賀洪江,程琳.基于STM32和Modbus的電參數采集系統[J].自動化與儀表,2014(6):26-29.
[10]董武,陸麗坤,李業麗.基于W5300的以太網和串口數據相互轉換系統設計[J].制造業自動化,2013,35(1):139-142.
[11]劉蒼,王建業,張景偉.基于ARM的便攜式數據采集存儲系統設計[J].儀表技術與傳感器,2013(8):89-92.
[12]李聰,李春梅,周志群,等.基于STM32數據傳輸轉換接口器的設計與實現[J].計算機工程與設計,2014,35(10):3416-3421.
[13]Yong Cui,Xiao Ma,Hongyi Wang.A Survey of Energy Efficient Wireless Transmission and Modeling in Mobile Cloud Computing[J].Mobile Networks and Applications,2013,18(1):148-155.
[14]Syed Faraz Hasan,Nazmul H.Siddique.Developments and Constraints in 802.11-Based Roadside-to-Vehicle Communications[J].Wireless Personal Communications,2013,69(4):1261-1287.
[15]楊艷華,周永錄,蘇紅軍,等.通用串口到Modbus RTU的協議轉換器設計與實現[J].計算機測量與控制2014,22(2):606.
A serial device server based on STM32 microprocessor and Modbus protocol
ZHANG Yong-wei,KANG Xing-wu
(The Rocket Force Engineering University,Xi'an 710025,China)
To solve the problems of information exchange,networking and remote control of different function modules in industrial control,a serial device server for the serial data acquisition,processing and transmission based on STM32 microprocessor was designed.System with STM32F103RBT6 as the core processing chip,WIFI wireless transmission through the dual module of USR-WIFI232-D2,and uses the RS232 and RS485 chip sends and receives a low-speed serial data.The system adopts Modbus protocol with simple structure and powerful function as the upper layer communication protocol,which ensures the stability and reliability of the system.The result shows that the real-time performance and reliability of the serial device server provides an effective networking technology for the real-time collection and transmission of the communication engineering.
STM32; Modbus; serial device server; serial bus;WIFI
TN609
A
1674-6236(2017)16-0108-04
2016-06-28稿件編號:201606213
張永偉(1991—),男,福建龍巖人,碩士研究生。研究方向:裝備維修與保障。