Linux與DOS環(huán)境下的MVB網(wǎng)絡通信論文_第1頁
Linux與DOS環(huán)境下的MVB網(wǎng)絡通信論文_第2頁
Linux與DOS環(huán)境下的MVB網(wǎng)絡通信論文_第3頁
Linux與DOS環(huán)境下的MVB網(wǎng)絡通信論文_第4頁
Linux與DOS環(huán)境下的MVB網(wǎng)絡通信論文_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

精品文檔-下載后可編輯Linux與DOS環(huán)境下的MVB網(wǎng)絡通信論文1MVB網(wǎng)絡簡介

TCN由絞式列車總線WTB和多功能車輛總線MVB組成,如圖1所示。WTB用于聯(lián)接各個車輛,用于列車級的通信控制;MVB用于有互操作性和互換性要求的互連設備之間的串行數(shù)據(jù)通信。WTB與MVB之間通過網(wǎng)關來實現(xiàn)數(shù)據(jù)的傳遞。其中,MVB能提供最佳的響應速度,適合用作車輛總線。對于固定編組的列車,MVB也可以用作列車總線。此外,MVB屬于總線仲裁型網(wǎng)絡,采用主幀/從幀應答方式,可以實現(xiàn)設備和介質(zhì)冗余,完全滿足列車對于運行控制和安全性的要求。根據(jù)實際應用的需要,MVB網(wǎng)絡的通信數(shù)據(jù)類型分為過程數(shù)據(jù)、消息數(shù)據(jù)和監(jiān)督數(shù)據(jù)。其中,過程數(shù)據(jù)用于反映列車的狀態(tài)、速度、加速度、司機指令等;消息數(shù)據(jù)是偶發(fā)數(shù)據(jù),不頻繁發(fā)送且長度不定,如診斷、旅客信息等;監(jiān)督數(shù)據(jù)是總線上主設備對于從設備的狀態(tài)校驗、轉(zhuǎn)移、列車初運行等所使用的數(shù)據(jù)[1]。由于過程數(shù)據(jù)是列車運行控制中最基本和最重要的通信數(shù)據(jù),因此本文只針對過程數(shù)據(jù)的收發(fā)進行研究。

2MVB網(wǎng)絡接口單元

為了實現(xiàn)MVB設備之間的互聯(lián),各個與MVB相連的設備都必須具有統(tǒng)一的硬件接口和軟件接口。硬件接口主要由各個設備中的MVB網(wǎng)絡接口單元(網(wǎng)卡)實現(xiàn),網(wǎng)卡用于實現(xiàn)物理層信號的轉(zhuǎn)換,執(zhí)行數(shù)據(jù)鏈路層的通信規(guī)程,其基本任務有:⑴將主機或其他網(wǎng)絡設備發(fā)送的數(shù)據(jù)送入網(wǎng)絡;⑵從網(wǎng)絡中接收其他網(wǎng)絡設備發(fā)送的數(shù)據(jù)送入網(wǎng)絡;⑶從網(wǎng)絡中接收其他設備發(fā)來的數(shù)據(jù)并送給主機。軟件接口在于實現(xiàn)MVB數(shù)據(jù)鏈路層的服務功能,一方面為高層提供服務及服務訪問接口;另一方面屏蔽底層協(xié)議,提供透明的、可靠的鏈路通路,方便用戶使用[3]。2.1硬件接口MVB網(wǎng)絡通信性能的好壞在很大程度上取決于MVB網(wǎng)絡接口單元的品質(zhì)。本次通信研究采用的是RVS系列MVB網(wǎng)卡。該網(wǎng)卡除了支持MVB三種通信數(shù)據(jù)的傳遞外,還支持總線管理器(BA),并具備用戶可編程功能,通信速率高達1.5Mb/s,支持4096個設備狀態(tài)掃描紀錄,并具有介質(zhì)冗余能力,是專為MVB-1類設備使用的接口卡。MVB-1型接口單元的硬件結(jié)構(gòu)框圖如圖2所示。物理層通過譯碼器將MVB上的信號轉(zhuǎn)換為數(shù)字電平,解碼器將來自于MVB的信號移至PC/104并行總線上,檢查數(shù)據(jù)的有效性并將其傳送至雙端口通信存儲器(TrafficMemory),同時上位機可通過PC/104總線對雙端口通信存儲器進行讀寫。圖2中,PC/104并行總線接口為網(wǎng)絡接口單元和主機之間的數(shù)據(jù)通信提供了并行通道,由于RVS系列MVB網(wǎng)卡采用的是標準PC/104接口,用戶可以將多塊網(wǎng)卡層疊使用,在實際應用中較為方便。板上的控制邏輯(ControlLogic)采用可編程邏輯器件PLD(ProgrammableLogicDevice),為了適應不同的總線接口需求,用戶可以通過邏輯設計方便地動態(tài)改變硬件設置。2.2軟件接口軟件接口的核心功能是屏蔽MVB網(wǎng)卡的底層協(xié)議,并為上層應用提供接口。MVB網(wǎng)卡的驅(qū)動是實現(xiàn)通信必不可少的核心部分,它描述了MVB網(wǎng)卡通信的底層協(xié)議,并對硬件進行了配置,為上層應用的操作提供接口。MVB網(wǎng)卡的驅(qū)動主要包括MVB初始化、配置設備地址、配置過程數(shù)據(jù)端口、獲取過程數(shù)據(jù)等。用戶在使用MVB網(wǎng)卡設計上層應用時,無需對MVB的通信協(xié)議有太過深入的了解,只需調(diào)用MVB底層的接口函數(shù),即可實現(xiàn)基于MVB網(wǎng)卡的數(shù)據(jù)傳輸操作。在實現(xiàn)數(shù)據(jù)傳輸?shù)倪^程中,采用了UART仿真方式,即以連續(xù)方式發(fā)送和接收數(shù)據(jù)。在網(wǎng)絡接口單元與主機通信之前,首先必須對UART仿真寄存器進行配置,包括接收數(shù)據(jù)寄存器RBR(ReceiverBufferRegister)、發(fā)送器保持寄存器THR(TransmitterHoldingRegister)、通信線狀態(tài)寄存器LSR(LineStatusRegister)。主機和接口單元之間需要通過傳輸特定的字符命令來實現(xiàn)對接口單元的軟件配置,分別為‘C’、‘S’、‘H’、‘I’、‘P’、‘G’或是用其相對應的十六進制數(shù)43H、53H、48H、49H、50H、47H來表示,只有這樣,才能識別所要執(zhí)行的操作[3]。⑴‘C’命令用于將與接口單元有關的控制信息寫入網(wǎng)絡接口單元;⑵‘S’命令用于讀取接口單元的狀態(tài)信息,一般用于調(diào)試時的自測;⑶‘H’命令用于寫入與過程數(shù)據(jù)端口相關的控制信息,包括邏輯地址、端口長度及端口源宿性質(zhì);⑷‘I’命令用于讀取與過程數(shù)據(jù)相關的狀態(tài)信息,與‘S’類似,一般只用于自測試;⑸‘P’命令用于將待發(fā)送的數(shù)據(jù)寫入網(wǎng)絡接口單元;⑹‘G’命令用于讀取接收到的數(shù)據(jù)。具體的配置流程如圖3所示。在通信過程中,首先需要對MVB接口執(zhí)行初始化操作,包括以下3個步驟:⑴通過清除UART仿真之前的內(nèi)容來確保UART進入到正常的工作狀態(tài);⑵停止MVB通信,以保證不再發(fā)送錯誤信息;⑶關閉MVB數(shù)據(jù)端口,使其保持為失效狀態(tài)。接著,對MVB的過程數(shù)據(jù)端口及MVB設備物理地址及輸入線路(分為A線和B線)進行配置。配置完成之后,通過對過程數(shù)據(jù)端口執(zhí)行寫入或讀取操作來實現(xiàn)數(shù)據(jù)的通信。

3Linux與DOS系統(tǒng)下的MVB網(wǎng)絡互連

DOS系統(tǒng)具有良好的人機界面和豐富的系統(tǒng)資源,在傳統(tǒng)的MVB通信中應用十分廣泛。但是,由于DOS是一個單任務弱實時的操作系統(tǒng),且可靠性不高,越來越難以滿足MVB網(wǎng)絡的愈加嚴苛的通信要求。Linux系統(tǒng)在具備DOS系統(tǒng)優(yōu)勢的同時,彌補了DOS系統(tǒng)的不足,能夠充分滿足實際的需要。因此,在Linux系統(tǒng)環(huán)境下建立MVB通信對于實際的應用有一定的借鑒意義??紤]到多數(shù)的MVB通信仍建立在DOS系統(tǒng)環(huán)境下,因此,在實現(xiàn)Linux與Linux通信的同時,還要實現(xiàn)Linux與DOS的通信互連,這首先要求能夠?qū)OS環(huán)境下設計的通信程序移植到Linux系統(tǒng)中去。

3.1程序移植移植過程中最主要的問題在于,DOS系統(tǒng)下的部分內(nèi)置函數(shù)及頭文件,在Linux系統(tǒng)下并不適用,需要對其進行適當?shù)匦薷?,甚至重新編寫。其中,DOS系統(tǒng)下的輸入輸出函數(shù)inp()和outp(),需要更改為inb()和outb()。與此同時,Linux使用端口訪問設備之前必須設置端口權限的系統(tǒng)調(diào)用,可選用iopl()或ioperm()進行設置。除此之外,由于Linux系統(tǒng)下沒有conio.h,因此需要自行編寫getch()函數(shù)和kbhit()函數(shù),用于獲取鍵盤敲擊的字符和判斷鍵盤是否有按下,以識別通信命令和控制通信的啟停。部分代碼如下:intkbhit(void){structtimevaltv;structtermiosold_termios,new_termios;interror;intcount=0;tcgetattr(0,old_termios);new_termios=old_termios;/*rawmode*/new_termios.c_lflag=~ICANON;/*disableechoingthecharasitistyped*/new_termios.c_lflag=~ECHO;/*minimumcharstowaitfor*/new_termios.c_cc[VMIN]=1;/*minimumwaittime,1*0.10s*/new_termios.c_cc[VTIME]=1;error=tcsetattr(0,TCSANOW,new_termios);tv.tv_sec=0;tv.tv_usec=100;/*insertaminimaldelay*/select(1,NULL,NULL,NULL,tv);error+=ioctl(0,FIONREAD,count);error+=tcsetattr(0,TCSANOW,old_termios);return(error==0?count:-1);}需要注意的是,在移植的過程中,要特別注意指針的使用。若不對指針賦予初值,將會引起SegmentationFault,另外一些對于指針的誤操作也很有可能引發(fā)這個錯誤,給調(diào)試過程中的錯誤排查帶來很多麻煩。除了以上提到的問題外,還有許多兼容性問題需要解決,在此不再一一贅述。想要更快更精確地找到移植中存在的問題,可采用Linux提供的GDB調(diào)試工具。通過設置斷點、打印變量等手段可以更快地找到程序的問題所在,并作出相應的調(diào)整。最后,通過GCC編譯的方式,將驅(qū)動程序與應用程序進行聯(lián)合編譯,就能獲得Linux下的可執(zhí)行文件。通過運行這一可執(zhí)行文件,通信程序就能在Linux系統(tǒng)環(huán)境下實現(xiàn)數(shù)據(jù)的收發(fā)功能。

3.2系統(tǒng)測試在軟硬件配置完成并移植成功之后,接下來將對系統(tǒng)進行測試。系統(tǒng)測試的目的在于實現(xiàn)Linux與DOS系統(tǒng)下的MVB網(wǎng)絡互連。測試的內(nèi)容主要分為兩個部分:一是以Linux下MVB節(jié)點為主節(jié)點,接收DOS下MVB發(fā)送的數(shù)據(jù);二是以DOS下MVB節(jié)點為主節(jié)點接收Linux下MVB發(fā)送的數(shù)據(jù)。在實驗室條件下,搭建了點對點MVB網(wǎng)絡,通過兩個節(jié)點數(shù)據(jù)收況來驗證不同環(huán)境下MVB通信的可行性。實驗結(jié)果表明:DOS系統(tǒng)與Linux系統(tǒng)下的MVB網(wǎng)絡均能實現(xiàn)收發(fā)數(shù)據(jù)的功能,且誤碼率低,成功地實現(xiàn)了網(wǎng)絡互連。

4結(jié)論

隨著信息化和網(wǎng)絡技術的發(fā)展,列車控制技術不斷更新完善。在實驗室條件下,根據(jù)TCN協(xié)議的要求,對MVB網(wǎng)絡接口單元進行了軟硬件的配置,將DOS系統(tǒng)下的MVB網(wǎng)絡通信程序移植到了Linux環(huán)境下。通過建立由Linux環(huán)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論