張永偉,康興無
(火箭軍工程大學(xué) 陜西 西安 710025)
基于STM32和Modbus的串口服務(wù)器系統(tǒng)
張永偉,康興無
(火箭軍工程大學(xué) 陜西 西安 710025)
為滿足工業(yè)控制中不同功能模塊的信息交換、無法聯(lián)網(wǎng)和遠(yuǎn)程控制不方便等問題,設(shè)計(jì)了一種基于STM32微控制器的串口數(shù)據(jù)采集、處理和傳輸?shù)拇诜?wù)器系統(tǒng)。系統(tǒng)以STM32F103RBT6為核心處理芯片,通過USR-WIFI232-D2雙網(wǎng)模組進(jìn)行WIFI無線傳輸,并使用RS232和RS485芯片發(fā)送和接收低速串口數(shù)據(jù)。系統(tǒng)采用構(gòu)造簡單、功能強(qiáng)大的Modbus協(xié)議作為上層通訊協(xié)議,保證了系統(tǒng)運(yùn)行的穩(wěn)定可靠。實(shí)驗(yàn)表明了串口系統(tǒng)的實(shí)時性和可靠性良好,為在通信工程的信號采集與傳輸提供了一種有效的組網(wǎng)技術(shù)方案。
STM32;Modbus;串口服務(wù)器;串口總線;WIFI
隨著物聯(lián)網(wǎng)的興起和網(wǎng)絡(luò)技術(shù)的發(fā)展,智能儀器接入網(wǎng)絡(luò)己成為一種趨勢,從而實(shí)現(xiàn)數(shù)據(jù)的共享與遠(yuǎn)程管理[1-3]。要使串口設(shè)備接入網(wǎng)絡(luò),目前解決辦法是采用串口轉(zhuǎn)以太網(wǎng)服務(wù)器的方案,通過串口轉(zhuǎn)以太網(wǎng)服務(wù)器將串口數(shù)據(jù)轉(zhuǎn)換為以太網(wǎng)幀[4]。但以太網(wǎng)存在布線困難、靈活性差等缺點(diǎn),對于作業(yè)環(huán)境復(fù)雜的工業(yè)控制領(lǐng)域,鋪設(shè)有線以太網(wǎng)比較困難,無法實(shí)現(xiàn)大量串口設(shè)備與遠(yuǎn)端用戶通信的現(xiàn)實(shí)要求[5-6]。WIFI作為一種無線局域網(wǎng)形式,能夠克服以太網(wǎng)布線困難、靈活性差的缺點(diǎn)[7]。
傳統(tǒng)的串口服務(wù)器采集數(shù)據(jù)單一,不能完成多參數(shù)采集,采集端口較少[8-9]。目前,串口服務(wù)器普遍使用CPU連接以太網(wǎng)接口芯片。這些芯片只實(shí)現(xiàn)了TCP/IP協(xié)議的物理層,編程較為復(fù)雜,不利于快速開發(fā)和穩(wěn)定運(yùn)行[10-11]。且大多數(shù)串口服務(wù)器只能實(shí)現(xiàn)有線上傳和單個客戶端連接,適應(yīng)性較差。
文中基于STM32微控制器和Modbus協(xié)議設(shè)計(jì)的串口服務(wù)器系統(tǒng)設(shè)置了多路采集信號輸入端,兼容RS485和RS232兩種串口。系統(tǒng)使用USRWIFI232-D2雙網(wǎng)模組發(fā)送和接收以太網(wǎng)數(shù)據(jù)并通過WIFI技術(shù)進(jìn)行無線傳輸。其內(nèi)部集成了TCP/IP協(xié)議,不需要編寫復(fù)雜的TCP/IP協(xié)議棧且實(shí)現(xiàn)了多個串口設(shè)備與一個或多個遠(yuǎn)端主機(jī)通信。現(xiàn)有的串行設(shè)備可以方便地接入和局域網(wǎng)以太網(wǎng),不需要改變原有儀器設(shè)備的硬件??蛻舳丝梢灾苯油ㄟ^網(wǎng)絡(luò)監(jiān)控和操作串口設(shè)備。該串口服務(wù)器基于開放標(biāo)準(zhǔn)設(shè)計(jì),易于升級與維護(hù)。
串口服務(wù)器系統(tǒng)實(shí)現(xiàn)串口鏈路與上位機(jī)之間的通信數(shù)據(jù)的轉(zhuǎn)換與傳輸。硬件設(shè)計(jì)包括:控制器最小系統(tǒng)設(shè)計(jì)、電源模塊的設(shè)計(jì)、串口模塊的設(shè)計(jì)和網(wǎng)絡(luò)模塊的設(shè)計(jì)等。軟件設(shè)計(jì)的目的是完成通信協(xié)議的轉(zhuǎn)換工作,實(shí)現(xiàn)上下行通信、參數(shù)配置、數(shù)據(jù)封包策略和數(shù)據(jù)緩沖等。串口服務(wù)器作為遠(yuǎn)端上位機(jī)和串行設(shè)備之間的橋梁,通過協(xié)議轉(zhuǎn)化達(dá)到數(shù)據(jù)在系統(tǒng)間的透明傳輸[12]。串口服務(wù)器系統(tǒng)結(jié)構(gòu)原理圖如圖1所示。
圖1 串口服務(wù)器系統(tǒng)結(jié)構(gòu)原理圖
服務(wù)器系統(tǒng)的信號輸入接口設(shè)計(jì)采用RS485/RS232雙模接口。輸出端通過WIFI技術(shù)連接連接局域網(wǎng)或以太網(wǎng),串口總線則可以完成中短距有線傳輸。硬件設(shè)計(jì)結(jié)構(gòu)如圖2所示,系統(tǒng)以STM32F103RBT6為核心,該處理器性價比高,是一款基于Cortex-M3內(nèi)核的32位增強(qiáng)型閃存微控制器,Cortex-M3內(nèi)核支持Thumb-2指令集,能夠迅速完成單周期乘法和硬件除法。它的主頻高達(dá)72 MHz,完全滿足串口通信系統(tǒng)的需要。STM32微控制器嵌入有512 kB的Flash和64 kB的SRAM。其標(biāo)準(zhǔn)外設(shè)包括10個定時器、5個USART接口、12條DMA通道和一個支持96位唯一標(biāo)識碼的CRC計(jì)算單元等。低電壓和節(jié)能是STM32微控制器的兩大優(yōu)點(diǎn),其工作電壓范圍在2.0 V至3.6 V,能夠很好兼容主流電池技術(shù)。
圖2 串口服務(wù)器硬件結(jié)構(gòu)圖
RS232傳輸距離約為15 m,異步數(shù)據(jù)傳輸速率在0~20 Kbps范圍內(nèi)的通信。RS485彌補(bǔ)了RS232通信距離短、速率低的缺點(diǎn),還增加了多點(diǎn)和雙向通信的能力,采用平衡發(fā)送和差分接收,抗共模干擾能力比較強(qiáng)。
在輸入接口轉(zhuǎn)換電路中,RS232的電平轉(zhuǎn)換芯片采用Maxim公司的MAX3221。在輸入端沒有接收到有效的信號電平時,MAX3221片上電源和驅(qū)動器能夠自動關(guān)閉,節(jié)能性能比較出色。MAX3221由一個高效、雙電荷泵的電源供電,工作電壓為+3 V~+5.5 V。RS485電平轉(zhuǎn)換芯片選用SP3485收發(fā)器,它的工作電壓為+3.3 V,是一個低消耗、半雙工收發(fā)器,具有低功耗關(guān)斷模式,數(shù)據(jù)傳輸速率最高可達(dá)10 Mbps。2款收發(fā)器通過74LS08芯片實(shí)現(xiàn)RS485和RS232串口雙模輸入。共有4個輸入轉(zhuǎn)換接口,其中一個接口電路為如圖3所示。
圖3 輸入接口轉(zhuǎn)換電路
WIFI技術(shù)又稱802.11標(biāo)準(zhǔn),它性能穩(wěn)定,傳輸速率高,可以達(dá)到11Mbps[13-14]。在輸出接口轉(zhuǎn)換電路中,WIFI模式是通過 USR-WIFI232-D2串口轉(zhuǎn)WIFI模組實(shí)現(xiàn),該模組是一體化的802.11 b/g/n WIFI和以太網(wǎng)的模組,提供了一種將物理設(shè)備連接到WIFI無線網(wǎng)絡(luò)或是以太網(wǎng),并提供USART數(shù)據(jù)傳輸接口的解決方案。通過該模組,串口設(shè)備可以接入WIFI無線網(wǎng)絡(luò)或是以太網(wǎng),作為熱點(diǎn)可以同時容納32個WIFI客戶端同時接入,也可同時容納32個TCP客戶端。串口通信通過串口轉(zhuǎn)換電路完成。輸出串口轉(zhuǎn)換電路如與輸入串口轉(zhuǎn)換電路類似,WIFI模組電路如圖4所示。
圖4 WIFI模組電路
系統(tǒng)模組的供電為5 V和3.3 V兩種直流穩(wěn)壓電源,串口服務(wù)器電源輸入端采用12 V直流供電,通過電源轉(zhuǎn)換芯片TPS5430輸出穩(wěn)定的5 V電壓,TPS5430負(fù)載能力大,使系統(tǒng)工作穩(wěn)定,轉(zhuǎn)化效率高,有過流保護(hù)及熱關(guān)斷功能。再通過2個低壓差調(diào)節(jié)器LM1117為MCU、WIFI模組等提供3.3 V穩(wěn)壓電源,電源轉(zhuǎn)換電路如圖5所示。
圖5 電源轉(zhuǎn)換電路
串口服務(wù)器的軟件設(shè)計(jì)包括Modbus協(xié)議的選擇、主程序和串口通信子程序等。
Modbus是工業(yè)現(xiàn)場設(shè)備中是使用很廣泛的一種總線協(xié)議,支持,如RS232、RS485、以太網(wǎng)等多種電氣接口[15]。Modbus協(xié)議采用主機(jī)查詢、從機(jī)回復(fù)的工作結(jié)構(gòu)。一臺主機(jī)可以和多臺從機(jī)進(jìn)行通信,,地址范圍為1-255,地址0用作廣播地址。主機(jī)能以廣播的方式與所有從機(jī)進(jìn)行通信,也能單獨(dú)與每個從機(jī)進(jìn)行通信,但從機(jī)之間無法直接通信[15]。Modbus信息幀格式如表1所示。
表1 Modbus幀格式
文中STM32微控制機(jī)為主機(jī),其他為從機(jī)。主機(jī)主動發(fā)起網(wǎng)絡(luò)中的通信,依次向各個從機(jī)發(fā)送命令,從機(jī)根據(jù)接收到的命令做出相應(yīng)的回應(yīng)。主機(jī)的程序處在循環(huán)中查詢各個從機(jī),并對回應(yīng)的數(shù)據(jù)進(jìn)行識別和處理。程序設(shè)置了超時檢測保證系統(tǒng)的可靠性。信息幀以連續(xù)的字符流發(fā)送,當(dāng)超過一定的間隔沒有字符接收,認(rèn)為報文結(jié)束。通過設(shè)置定時中斷時間將采集到的數(shù)據(jù)合成一個幀節(jié)再通過串口或者WIFI上傳給客戶機(jī)。主機(jī)程序流程如圖6所示。
圖6 主機(jī)流程圖
從機(jī)一直處在接收的模式,當(dāng)它接收到數(shù)據(jù)時,首先判斷地址的正確性,如果與自己的地址不一致就丟棄這一幀數(shù)據(jù),繼續(xù)等待新數(shù)據(jù),如果地址匹配就進(jìn)行CRC校驗(yàn)。若校驗(yàn)結(jié)果吻合則通信正常,按功能碼調(diào)用數(shù)據(jù)采集的子程序,并返回響應(yīng)幀。若發(fā)送的功能碼異常,則發(fā)送一個異常數(shù)據(jù)幀給主機(jī)。上位機(jī)可以主動向串口服務(wù)器發(fā)送命令幀。
實(shí)驗(yàn)中,通過接入4路SM52D無線串口通信模塊分別模擬RS485和RS232串口信號輸入。上位機(jī)采用串口與網(wǎng)口二合一測試軟件助手對主機(jī)進(jìn)行參數(shù)設(shè)置和發(fā)送命令幀。實(shí)驗(yàn)流程為:串口服務(wù)器先通過串口總線接入上位機(jī),串口助手對遠(yuǎn)端傳感器發(fā)送采集命令,設(shè)置串口服務(wù)器上傳時間,傳輸?shù)牟ㄌ芈蕿?600bps,接收采集信號。斷開串口通信,連接WIFI網(wǎng)絡(luò),選擇TCP Client模式,進(jìn)行IP地址和端口號等相關(guān)設(shè)置,發(fā)送命令,接收服務(wù)器信號。服務(wù)器實(shí)驗(yàn)實(shí)物如圖7所示;實(shí)驗(yàn)結(jié)果如圖8所示。
圖7 實(shí)驗(yàn)實(shí)物圖
實(shí)驗(yàn)表明串口服務(wù)器數(shù)據(jù)傳輸穩(wěn)定可靠,在9600bps的串口波特率工作下,性能穩(wěn)定,無丟包現(xiàn)象,能長時間無差錯地實(shí)現(xiàn)分布式數(shù)據(jù)采集。上傳的信息幀格式如表2所示。
圖8 實(shí)驗(yàn)結(jié)果圖
表2 上傳信息幀格式
文中介紹了一種基于STM32微控制器和Modbus協(xié)議的串口服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)。服務(wù)器系統(tǒng)所需的外圍器件少,組網(wǎng)方便,可以通過兩種串口總線輸入,通過有線或無線方式傳輸,實(shí)現(xiàn)客戶機(jī)對串口設(shè)備的管理和控制。系統(tǒng)傳輸數(shù)據(jù)的實(shí)時性和可靠性良好,運(yùn)行穩(wěn)定,能滿足一般工業(yè)控制系統(tǒng)數(shù)據(jù)傳輸要求。
[1]彭剛,秦志強(qiáng).基于ARM Cortex-M3的STM32系列嵌入式微控制器應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,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的以太網(wǎng)接口設(shè)計(jì)與實(shí)現(xiàn)[J].自動化與儀表,2014(5):57-60.
[6]楊剛,陳健美,宋余慶,等.嵌入式設(shè)備與網(wǎng)絡(luò)數(shù)據(jù)庫交互的中間件設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(11):3878-3882.
[7]賀洪江,程琳.基于STM32與MODBUS協(xié)議的超聲波測距儀設(shè)計(jì)[J].儀表技術(shù)與傳感器,2014(11):27-33.
[8]彭剛,徐慶江,張崇金,等.基于STM32單片機(jī)的RS485總線分布式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].伺服控制,2011(2):64-67.
[9]賀洪江,程琳.基于STM32和Modbus的電參數(shù)采集系統(tǒng)[J].自動化與儀表,2014(6):26-29.
[10]董武,陸麗坤,李業(yè)麗.基于W5300的以太網(wǎng)和串口數(shù)據(jù)相互轉(zhuǎn)換系統(tǒng)設(shè)計(jì)[J].制造業(yè)自動化,2013,35(1):139-142.
[11]劉蒼,王建業(yè),張景偉.基于ARM的便攜式數(shù)據(jù)采集存儲系統(tǒng)設(shè)計(jì)[J].儀表技術(shù)與傳感器,2013(8):89-92.
[12]李聰,李春梅,周志群,等.基于STM32數(shù)據(jù)傳輸轉(zhuǎn)換接口器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(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的協(xié)議轉(zhuǎn)換器設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(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—),男,福建龍巖人,碩士研究生。研究方向:裝備維修與保障。