黃安貽,王愛華
(武漢理工大學機電工程學院,湖北武漢 430070)
在現(xiàn)代化生產(chǎn)中,為提高工廠生產(chǎn)效率及監(jiān)控效率,通常需要為生產(chǎn)設備提供多個傳感器以保證數(shù)據(jù)獲取的準確性,其中以RS232、RS485、CAN總線為代表的串行通信在數(shù)據(jù)采集中應用較為廣泛,但串行通信傳輸距離短(傳輸距離不超過15 m)、實時性不高(波特率為9 600 bit/s)、抗干擾能力差,為生產(chǎn)設備的實時監(jiān)控及故障診斷帶來極大不確定性。以太網(wǎng)(Ethernet)以其通信距離遠、通信質(zhì)量穩(wěn)定、較強的自動糾錯能力等優(yōu)點逐步取代總線通信在數(shù)據(jù)獲取中地位[1]。本文選用STM32F103C8T6及ENC28J60實現(xiàn)數(shù)據(jù)采集單元的設計[2],以百兆以太網(wǎng)交換機為平臺提出數(shù)據(jù)采集單元的拓撲擴展方法,這對自動化產(chǎn)線海量數(shù)據(jù)的實時、同步、高效采集具有重要意義。
本系統(tǒng)的工作原理為:遠程PC機通過網(wǎng)關單元與分布式數(shù)據(jù)采集單元進行數(shù)據(jù)通信,每個分布式數(shù)據(jù)采集單元有固定且唯一的MAC地址及IP地址,可將獲取的傳感器數(shù)據(jù)作為以太網(wǎng)協(xié)議的應用層數(shù)據(jù),用網(wǎng)絡協(xié)議封裝傳輸至上位機;上位機發(fā)出的網(wǎng)絡數(shù)據(jù)包經(jīng)解析后通過串行通信的方式發(fā)出,從而實現(xiàn)傳感器節(jié)點與上位機之間實時的數(shù)據(jù)通信。由圖1可知,本系統(tǒng)由兩個部分組成,分別如下。
圖1 分布式數(shù)據(jù)采集網(wǎng)絡結構示意圖
(1)分布式數(shù)據(jù)采集單元:該單元由主控制器STM32F103C8T6、以太網(wǎng)芯片ENC28J60、RJ45及網(wǎng)絡變壓器構成的HR911105A以太網(wǎng)接口模塊、AMS1117線性穩(wěn)壓模塊組成。每個分布式數(shù)據(jù)采集單元引出三個獨立的異步串行通訊接口USART作為傳感器接入節(jié)點,數(shù)據(jù)采集單元獲取傳感器節(jié)點的數(shù)據(jù)[3],經(jīng)以太網(wǎng)模塊處理后通過網(wǎng)關單元上傳至上位機。
(2)可擴展網(wǎng)關單元:該單元由多個百兆以太網(wǎng)交換機組成,形成可擴展的星型拓撲網(wǎng)絡結構,將多個數(shù)據(jù)采集單元通過以太網(wǎng)連入網(wǎng)關,解決傳感器節(jié)點受限等問題。
1.2.1 MCU
本系統(tǒng)選用32位的STM32F103C8T6為數(shù)據(jù)采集單元的主控制器,該處理器采用Corte-M3架構,具有很多包括更高的代碼速度、更強的操作性能、低成本、低功耗等優(yōu)點。主控制器芯片采用貼片式48引腳的LQFP封裝,最高工作頻率可達72 MHz,工作溫度為-45℃~+85℃。出色的性能及豐富的外設資源(包括UART、USART、RS232、SPI、IIC等)使得硬件設計大大簡化,該處理器的執(zhí)行速度及內(nèi)存完全滿足數(shù)據(jù)采集單元實時性、穩(wěn)定性的要求。為減小數(shù)據(jù)采集單元的體積,文中僅引出最小系統(tǒng)、異步串行通訊USART接口、SWD下載接口及SPI接口等,STM32F103C8T6的引腳圖如圖2所示。
圖3 ENC28J60與HR911105A連接原理圖
1.2.2 網(wǎng)絡模塊
以太網(wǎng)網(wǎng)絡芯片選用符合IEEE 802.3協(xié)議、28獨立引腳的ENC28J60以太網(wǎng)控制器,該控制器可作為任何帶有SPI控制器的以太網(wǎng)控制芯片,是目前市面上性價比最高、體積最小的嵌入式以太網(wǎng)解決方案。ENC28J60主要優(yōu)點有:(1)支持全雙工、半雙工模式;(2)內(nèi)部集成10BASE-T的MAC及PHY控制器;(3)數(shù)據(jù)沖突時支持自動重發(fā);(4)SPI速度可達10 Mb/s;(5)支持DMA,實現(xiàn)快速的數(shù)據(jù)交換及IP校驗[4]。
圖3為ENC28J60與HR911105A連接示意圖,根據(jù)ENC28J60工作性能要求,需在23引腳(OSC1)、24引腳(OSC2)兩端連接25 MHz的平行切割晶振及20 pF的接地電容;為使ENC28J60工作穩(wěn)定,在其內(nèi)部集成了2.5 V穩(wěn)壓器并在VCAP與GND之間外接10μF電容,但內(nèi)部穩(wěn)壓器無法帶動外部負載,需外接3.3 V電源;ENC28J60的差分發(fā)送及差分接收引腳、LEDA/LEDB分別與集成以太網(wǎng)變壓器RJ45的HR911105A對應引腳相連。其中,差分發(fā)送引腳外接一個帶有中心抽頭的1∶1變壓器并接入51Ω電阻以防靜電干擾[5]。
圖4 數(shù)據(jù)采集單元結構示意框圖
圖4 為數(shù)據(jù)采集單元結構示意框圖,從中可明顯得知主控制器與以太網(wǎng)芯片的連接關系為:ENC28J60與主控制器STM32通過兩個中斷引腳、串行外設接口(SPI) 實現(xiàn)通信,由于ENC28J60的工作電壓為3.14~3.45 V,TTL輸入,因此兩者可以直接連接;STM32的14、15、16、17引腳分別復用為SPI_CS(從設備選擇)、SPI_SCK(串口時鐘)、SPI_MISO(主入從出)、SPI_MOSI(主出從入),這四個引腳分別與ENC28J60的CS、SCK、SI、SO相連,其中CS為低電平時,允許數(shù)據(jù)傳輸,被置高時完成相應操作;SPI_SCK為ENC28J60提供所需工作時序,時鐘引腳SPI_SCK為上升沿時,數(shù)據(jù)或命令通過SI引腳輸入ENC28J60,為下降沿時,數(shù)據(jù)或命令從SO引腳輸出至STM32,傳輸速率高達10 Mb/s。
1.2.3 電源電路設計
圖5 系統(tǒng)電源電路原理圖
數(shù)據(jù)采集單元接入5 V電源,經(jīng)濾波穩(wěn)壓之后輸出標準的3.3 V電壓為STM32及ENC28J60以太網(wǎng)芯片供電。電路中選用AMS1117作為穩(wěn)壓芯片,對電路進行穩(wěn)壓,使其輸出恒定的直流電壓。AMS1117固定輸出電壓有3.0 V,3.3 V和5.0 V,具有1%的精度。為防止環(huán)境溫度對硬件電路的破壞,穩(wěn)壓芯片內(nèi)部集成了過熱保護和限流電路。根據(jù)硬件電路要求,穩(wěn)壓芯片選擇SOP-223封裝的AMS1117-3.3。圖5為系統(tǒng)電源電路原理圖,1號引腳接地,2號引腳為輸出電壓(3.3 V),3號引腳為輸入電壓(5 V)。C1、C2為輸入電容,有以下作用:(1)交流電壓整流輸入;(2)單向脈動電壓轉化成直流電壓;(3)防止斷電后電壓倒置;(4)抑制干擾。C3、C4為輸出電容,有濾波及抑制自激振蕩等作用,若輸出端不接濾波電容,則線性穩(wěn)壓器輸出的是不穩(wěn)定的振蕩波形。
可擴展網(wǎng)關單元采用百兆以太網(wǎng)交換機成星型拓撲結構連接,如圖6所示,網(wǎng)關單元可擴展,管理方便,組網(wǎng)容易,單一節(jié)點出現(xiàn)故障不會干擾其他節(jié)點工作,便于故障排查。該網(wǎng)關單元的擴展性可保證分布式數(shù)據(jù)采集單元及傳感器節(jié)點的無限接入,解決了多傳感器接入節(jié)點受限的問題,方便多傳感器海量數(shù)據(jù)采集。
圖6 可擴展網(wǎng)關單元連接示意圖
構建分布式數(shù)據(jù)采集單元模塊除了對以太網(wǎng)控制器及以太網(wǎng)變壓器進行硬件設計之外,還需對數(shù)據(jù)采集單元進行軟件程序設計。對以太網(wǎng)數(shù)據(jù)及指令傳輸過程可解釋為以下過程:對即將發(fā)送的串口數(shù)據(jù)按以太網(wǎng)幀格式進行封裝以傳輸至上位機;對以太網(wǎng)控制器接收到的以太網(wǎng)數(shù)據(jù)解包供串行設備使用。本文使用Keil μVision5對軟件功能的實現(xiàn)進行程序編寫(流程圖見圖7),具體流程如下。
(1)初始化:在使用ENC28J60收發(fā)數(shù)據(jù)或指令時,必須初始化以太網(wǎng)芯片ENC28J60及STM32F103C8T6定時器并設置TCP及ARP的超時時間。ENC28J60初始化主要對收發(fā)緩沖器、晶振起振時間、主要狀態(tài)寄存器(包括EIE、EIR、ESTAT、ECON2、ECON1等)進行設置;關閉STM32中斷輸入并保持復位引腳處于低電平復位狀態(tài),若以太網(wǎng)時鐘啟動標志位置位,則開中斷;設置上位機及分布式數(shù)據(jù)采集單元的IP地址、網(wǎng)關、子網(wǎng)掩碼等。這里設置上位機的IP地址為169.254.226.30,網(wǎng)關為169.254.226.1、子網(wǎng)掩碼為255.255.0.0;分布式數(shù)據(jù)采集單元的MAC地址為0x11,0x22,0x33,0x44,0x55,IP地址為169.254.226.123,分布式數(shù)據(jù)采集單元IP地址必須與上位機IP地址在同一個局域網(wǎng)下。
(2)主循環(huán):查詢ENC28J60網(wǎng)絡芯片是否有數(shù)據(jù)包收到,若有IP數(shù)據(jù)包收到且為本機MAC地址,則對IP數(shù)據(jù)包解包處理,UDP連接成功之后調(diào)用應用程序接口函數(shù)UIP_APPCALL()發(fā)送數(shù)據(jù);若檢測到網(wǎng)絡芯片接收到的數(shù)據(jù)為ARP包或當前有數(shù)據(jù)需要發(fā)送,則按照以太網(wǎng)幀格式打包數(shù)據(jù)并由物理網(wǎng)卡將包送出。
圖7 程序流程圖
將數(shù)據(jù)采集單元及上位機分別與百兆以太網(wǎng)交換機連接,在上位機的指令終端中輸入指令ping 169.254.226.123,實驗結果如圖8所示,上位機向目標數(shù)據(jù)采集單元發(fā)送了四個數(shù)據(jù)包,數(shù)據(jù)采集單元也全部接收,說明所設計的數(shù)據(jù)采集單元與上位機互ping成功,數(shù)據(jù)可正常收發(fā)。
圖8 上位機與單片機互ping實驗
通過socket tool軟件對分布式多傳感器數(shù)據(jù)采集單元的穩(wěn)定性及實時性進行實驗驗證,并對采集的實驗數(shù)據(jù)進行分析。為驗證分布式數(shù)據(jù)采集單元的穩(wěn)定性及實用性,使用兩組該模塊單元對四個超聲波傳感器進行數(shù)據(jù)采集并在采樣數(shù)據(jù)之前設置41 41、42 42標志位對多超聲波傳感器加以區(qū)分。超聲波傳感器通信波特率為9 600 bit/s,通信協(xié)議格式為0xFF、高八位(DATA_H)、低八位(DA?TA_L)、數(shù)據(jù)校驗位(SUM),數(shù)據(jù)驗證規(guī)則為SUM=(0xFF+DATA_H+DATA_L)&0x0F。TCP Server為TCP服務端,169.254.226.30即為上位機IP地址;TCP Client為TCP的客戶端,169.254.226.123、169.254.226.163分別為兩個傳感器數(shù)據(jù)采集單元的IP地址。通過IP地址可分辨各個數(shù)據(jù)采集單元,保證數(shù)據(jù)傳輸?shù)莫毩⑿?;超聲波傳感器的?shù)據(jù)準確無誤,驗證了該數(shù)據(jù)采集單元數(shù)據(jù)傳輸?shù)姆€(wěn)定性及實時性。由此可看出,分布式數(shù)據(jù)采集單元強大的實時性及較低的丟包率是普通串行通信不能比擬的。因此,分布式數(shù)據(jù)采集單元具有采集數(shù)據(jù)穩(wěn)定、丟包率低且實時性較好等優(yōu)點,可用于多傳感器海量數(shù)據(jù)的實時采集與故障監(jiān)控。
通過對本系統(tǒng)的研究表明:以ENC28J60以太網(wǎng)芯片設計的數(shù)據(jù)采集單元具有體積小、實時性強、穩(wěn)定性好等優(yōu)點,可保證數(shù)據(jù)高效、穩(wěn)定透傳;多數(shù)據(jù)采集單元的分布式分布,便于數(shù)據(jù)采集通道的擴充,同時也可解決串行設備數(shù)據(jù)采集系統(tǒng)布置分散、資源浪費、插接不便等問題;各個傳感器節(jié)點數(shù)據(jù)可獨立自主處理,數(shù)據(jù)信號不相互串擾,便于故障的排查及替換;多機并行的工作方式使得單個單片機僅完成有限工作即可,對底層硬件要求不高并能構建高性能的系統(tǒng)。另外,本文提供一種傳感器節(jié)點可擴展的以太網(wǎng)網(wǎng)關解決方案,解決現(xiàn)階段中數(shù)據(jù)采集通道受限的問題,為海量數(shù)據(jù)的多通道采集提供解決思路。