基于FPGA和nRF905的挖掘機(jī)無(wú)線監(jiān)控?cái)?shù)據(jù)傳輸系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:使用SOPC技術(shù)設(shè)計(jì)了一種基于FPGA和nRF905的挖掘機(jī)無(wú)線監(jiān)控數(shù)據(jù)傳輸系統(tǒng),用于對(duì)挖掘機(jī)進(jìn)行遠(yuǎn)程狀態(tài)監(jiān)測(cè)、實(shí)時(shí)挖掘動(dòng)作控制和行走操作控制等。該無(wú)線監(jiān)控?cái)?shù)據(jù)傳輸系統(tǒng)工作在433MHz的ISM頻段,能夠進(jìn)行雙向傳輸。
關(guān)鍵詞:FPGA;SOPC;nRF905;無(wú)線通信
液壓挖掘機(jī)在工業(yè)與民用建筑、交通運(yùn)輸、水利電力工程、礦山采掘以及軍事工程等施工中起著極為重要的作剛。對(duì)于某些不適合人類進(jìn)入的工作場(chǎng)所,如高溫、含有輻射物或裝卸危險(xiǎn)物品的場(chǎng)所下的挖掘任務(wù),以人手動(dòng)操作為主的傳統(tǒng)液壓挖掘機(jī)已不能勝任,液壓挖掘機(jī)的遠(yuǎn)程監(jiān)控、自動(dòng)化和智能化成為該類場(chǎng)所挖掘難題的最好解決方案。在液壓挖掘機(jī)的無(wú)線遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)中,各種傳感器數(shù)據(jù)和控制數(shù)據(jù)的無(wú)線傳輸系統(tǒng)的設(shè)計(jì)對(duì)于遠(yuǎn)程監(jiān)控功能的實(shí)現(xiàn)具有關(guān)鍵作用。
1 系統(tǒng)設(shè)計(jì)方案
液壓挖掘機(jī)的無(wú)線監(jiān)控?cái)?shù)據(jù)傳輸系統(tǒng)采用上下位機(jī)雙層控制結(jié)構(gòu),上下位機(jī)之間采用了點(diǎn)對(duì)點(diǎn)通訊模式。上位機(jī)采用PC機(jī),主要完成遠(yuǎn)程監(jiān)控、數(shù)據(jù)存儲(chǔ)處理和運(yùn)動(dòng)軌跡規(guī)劃運(yùn)算等工作。下位機(jī)安裝于挖掘機(jī)上,采用Inter Control公司的機(jī)載電腦。MTC通過(guò)CAN總線傳輸各傳感器數(shù)據(jù)和油缸電磁閥開(kāi)口大小信號(hào),進(jìn)行挖掘機(jī)狀態(tài)數(shù)據(jù)的采集和電磁閥等執(zhí)行機(jī)構(gòu)的驅(qū)動(dòng)等。各傳感器、油缸電磁閥和機(jī)載電腦之間通過(guò)CAN總線通信。編程工具是工控領(lǐng)域常用的CoDeSvs。采用通訊頻段為433MHz、通訊最大距離為500m的無(wú)線數(shù)傳輸模塊nRF905進(jìn)行無(wú)線數(shù)據(jù)傳輸。nRF905有4種工作模式:掉電模式、待機(jī)模式、發(fā)射模式、接收模式。無(wú)線監(jiān)控數(shù)據(jù)傳輸系統(tǒng)采用FPGA作為通信控制模塊,使用SOPC技術(shù)搭建片上硬件系統(tǒng)。通信控制程序使用C語(yǔ)言編寫(xiě)。FPGA通過(guò)GPIO口控制nRF905的三組引腳:TX_EN、TRX_CE和PWR來(lái)設(shè)置nRF905不同的工作模式;載波儉測(cè)輸出CD、地址匹配輸出AM和數(shù)據(jù)就緒輸出DR用于通知FPGAnRF905的收發(fā)狀態(tài);SPI接口用于配置、發(fā)送和接收數(shù)據(jù)。系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。
2 SOPC片上系統(tǒng)設(shè)計(jì)
該單元主要功能是通過(guò)建立通信協(xié)議和對(duì)無(wú)線數(shù)據(jù)傳輸模塊的控制,準(zhǔn)確實(shí)時(shí)地接收、存儲(chǔ)來(lái)自各個(gè)節(jié)點(diǎn)的數(shù)據(jù),并傳送給上位機(jī)和MTC。
2.1 SOPC片上系統(tǒng)硬件構(gòu)成
加入的SOPC組件和模塊主要有:NiosⅡ處理器,Avalon三態(tài)總線橋;外部SDRAM存儲(chǔ)器的控制器核;Flash類型的存儲(chǔ)器,用于存放程序和數(shù)據(jù);時(shí)間計(jì)數(shù)器核Interval timer;SPI核,用于實(shí)現(xiàn)SPI協(xié)議并提供Avalon接口;PIO接口用于連接nRF905的SPT接口和發(fā)出控制信號(hào),其管腳連接至FPGA的GPIO口。將所組成的系統(tǒng)進(jìn)行編譯后,可以下載到FPGA芯片上構(gòu)成片上控制系統(tǒng)。系統(tǒng)框圖如圖2所示。
2.2 SPI核配置
nRF905射頻模塊和FGPA通過(guò)SPI接口進(jìn)行數(shù)據(jù)傳輸,該接口以主從方式工作,由以下四線組成:SCK (時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生)、CSN(片選信號(hào),由主設(shè)備控制)、MOSI(主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入)、MISO(主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出) 通過(guò)FPGA實(shí)現(xiàn)SPI接口與總線接口轉(zhuǎn)換,需要考慮的因素有:
(1)接口時(shí)序 主要包括/SS與SCK的時(shí)序關(guān)系:/TREQ與/SS的時(shí)序關(guān)系;SCK與MOSI和MISO的時(shí)序關(guān)系,比如MOSI數(shù)據(jù)存SCK下降沿被從機(jī)采集接收,而MISO數(shù)據(jù)必須在SCK上升沿由從機(jī)輸出,在相鄰的下降沿被主機(jī)接收。
(2)接口速率 nRF905無(wú)線收發(fā)芯片的最高工作速率為50kb/s。上位機(jī)端的控制軟件可以設(shè)置串口的工作速率,本設(shè)計(jì)中波特率設(shè)置為9600b/s。串口的波特率的每個(gè)字節(jié)加上起始位、停止位和奇偶校驗(yàn)位,經(jīng)計(jì)算,串口工作速率小于無(wú)線芯片的工作速率,因此可以采用nRF905轉(zhuǎn)發(fā)串口數(shù)據(jù)進(jìn)行通信。
SOPC Builder內(nèi)部集成的NIOS II的SPI核可以實(shí)現(xiàn)SPI協(xié)議并提供與Avalon總線相連的接口。SPI核作為連接微處理器和控制設(shè)備的通信接口,可以實(shí)現(xiàn)主協(xié)議,也可以實(shí)現(xiàn)從協(xié)議。本系統(tǒng)將SPI核配置為主模式。SPI發(fā)送數(shù)據(jù)的順序根據(jù)nRF905的SPI數(shù)據(jù)傳輸要求,數(shù)據(jù)字的高位先發(fā)送。
2.3 片上系統(tǒng)通訊控制程序設(shè)計(jì)
(1) FPGA半雙工雙向通信程序設(shè)計(jì)
nRF905采用了Nordic公司的VLSI Shock Burst技術(shù),射頻數(shù)據(jù)包的高速信號(hào)處理都在芯片內(nèi)部進(jìn)行,并且自動(dòng)產(chǎn)生前導(dǎo)碼和CRC校驗(yàn)碼。由于nRF905為半雙工芯片,為了實(shí)現(xiàn)雙向通信,在程序設(shè)計(jì)時(shí)需要考慮發(fā)送與接收的時(shí)間。為了提高運(yùn)行效率,可以采用Shock Burst RX直接到ShockBurst TX模式轉(zhuǎn)換或Shock Burst TX直接到ShockBurst RX的模式轉(zhuǎn)換,由于不需要再重新配置寄存器,保持了相同的頻道,因此轉(zhuǎn)換所消耗的時(shí)間最少,轉(zhuǎn)換時(shí)間為550μs。發(fā)送端數(shù)據(jù)采用單字節(jié)逐次移位的方式進(jìn)行傳輸。在發(fā)送完畢即直接從Shock Burst TX模式轉(zhuǎn)換為Shock Burst RX模式。為了確保收到信息,系統(tǒng)采用中斷的方式,通過(guò)數(shù)據(jù)就緒輸出DR置高米產(chǎn)生中斷,如果沒(méi)有收到則接收端仍然保持Shock Burst RX模式,發(fā)送端若一定時(shí)間收不到對(duì)方的信號(hào)則將上次發(fā)送的內(nèi)容再次發(fā)送,從而保證了接收端信息的可靠接收,實(shí)現(xiàn)了雙向通信。FPGA片上系統(tǒng)通信流程罔如圖3所示。
(2) SOPC片上串口通信程序設(shè)計(jì)
NIOSII的UART核可以設(shè)置所需的通信模式,比如波特率、偶校驗(yàn)、停止位、數(shù)據(jù)位和其他控制信號(hào)。系統(tǒng)選用的串口波特率為9600bps。采用1位起始位,8位數(shù)據(jù)位和1位停止位。串口通信可以使用查詢的方式也可以使用中斷的方式。但是由于查詢的方式較為占用資源,所以本系統(tǒng)采用中斷的方式直接讀取寄存器。UART核能夠輸出一個(gè)單獨(dú)的中斷請(qǐng)求(IRQ)信號(hào)給Avalon總線,從而連接到Nios II處理器,通知FPGA將數(shù)據(jù)轉(zhuǎn)發(fā)至SPI接口。串口程序流程圖如圖4所示。
3 上下位機(jī)與FPGA間的串口程序設(shè)計(jì)
3.1 MTC方的串口通信設(shè)計(jì)
Codesyrs進(jìn)行RS232通信編程,要用到以下四個(gè)函數(shù):SysComOpen,SysComSetSettings,SysComRead,SvsComWrite。編寫(xiě)程序方法類似C語(yǔ)言。
SvsComOpen:打開(kāi)RS232通訊端口,MTC僅可選COM2,其余皆不可用。
Buffm Address:當(dāng)讀取到數(shù)據(jù)后拷貝到變量BUFFER_DATA指向的地址內(nèi);
Bvtes To Read:讀取多少個(gè)bytes。
Buffer Address:發(fā)送數(shù)據(jù)所在地址。
3.2 PC方的串口通信設(shè)計(jì)
PC的串口通信程序使用VC6.0編寫(xiě),使用Microsoft公司ActiveX控件MSComm。采用事件驅(qū)動(dòng)的辦法,每當(dāng)有數(shù)據(jù)由串口收到時(shí),就會(huì)觸發(fā)消息的響應(yīng)函數(shù)OnComm。即可由PC收取串口的數(shù)據(jù)。發(fā)送時(shí)可直接調(diào)用該控件發(fā)送。
4 結(jié)束語(yǔ)
本系統(tǒng)能夠低成本地設(shè)計(jì)出挖掘機(jī)無(wú)線傳輸系統(tǒng),較好地完成半雙工的挖掘機(jī)無(wú)線數(shù)據(jù)傳輸工作。采用SOPC設(shè)計(jì)挖掘機(jī)無(wú)線傳輸模塊的控制器能夠在軟硬件設(shè)計(jì)上實(shí)現(xiàn)模塊化,能夠大量地減輕研發(fā)工作量、提高研發(fā)速度。