《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > Linux與DOS環(huán)境下的MVB網(wǎng)絡(luò)通信研究
Linux與DOS環(huán)境下的MVB網(wǎng)絡(luò)通信研究
2014年微型機與應(yīng)用第19期
錢存元,施招東,孔博偉
同濟大學(xué) 鐵道與城市軌道交通研究院,上海 201804
摘要: 介紹了列車通信網(wǎng)絡(luò)(TCN)和多功能車輛總線(MVB),著重分析介紹了MVB網(wǎng)卡的硬件接口及軟件接口,并將DOS系統(tǒng)下的MVB通信成功地移植到了Linux系統(tǒng)環(huán)境下,在實驗室條件下,實現(xiàn)了Linux與DOS環(huán)境下的MVB網(wǎng)絡(luò)互連,為開展不同環(huán)境下的MVB通信可行性試驗提供了依據(jù)。
Abstract:
Key words :

  摘 要: 介紹了列車通信網(wǎng)絡(luò)(TCN)和多功能車輛總線(MVB),著重分析介紹了MVB網(wǎng)卡的硬件接口及軟件接口,并將DOS系統(tǒng)下的MVB通信成功地移植到了Linux系統(tǒng)環(huán)境下,在實驗室條件下,實現(xiàn)了Linux與DOS環(huán)境下的MVB網(wǎng)絡(luò)互連,為開展不同環(huán)境下的MVB通信可行性試驗提供了依據(jù)。

  關(guān)鍵詞: DOS;Linux;MVB;過程數(shù)據(jù);PC/104總線

0 引言

  隨著嵌入式微機控制技術(shù)以及現(xiàn)場總線技術(shù)的快速發(fā)展,現(xiàn)代列車的過程控制已從集中型的直接數(shù)字控制系統(tǒng)朝著基于網(wǎng)絡(luò)的分布式系統(tǒng)發(fā)展。應(yīng)用多種總線技術(shù),列車分布式控制系統(tǒng)把分布于各車廂內(nèi)部、獨立完成特定功能的計算機互連為工業(yè)局域網(wǎng),從而達到資源共享、協(xié)同工作、分散監(jiān)測和集中操作等目的[1]。

  列車通信網(wǎng)絡(luò)(TCN)就是一種建立在分布式系統(tǒng)基礎(chǔ)上的列車控制、診斷信息數(shù)據(jù)通信網(wǎng)絡(luò)。多功能車輛總線(MVB)作為TCN網(wǎng)絡(luò)的重要組成,其作用在于聯(lián)接車輛內(nèi)部的設(shè)備和控制單元,實現(xiàn)車輛內(nèi)部的通信控制。但是,由于傳統(tǒng)的MVB通信網(wǎng)絡(luò)建立在DOS系統(tǒng)環(huán)境下,面對惡劣的列車運行環(huán)境,越來越難以滿足實際運行的需要。Linux以其出色的系統(tǒng)穩(wěn)定性及快速響應(yīng)性能,在軌道交通領(lǐng)域獲得青睞。嵌入式技術(shù)的迅猛發(fā)展,使得在Linux系統(tǒng)下建立MVB通信網(wǎng)絡(luò)的需求變得愈加迫切。

  本文以實現(xiàn)Linux與DOS系統(tǒng)下的MVB網(wǎng)絡(luò)通信為目的,對RVS系列MVB網(wǎng)卡的硬件接口及軟件接口進行了應(yīng)用研究,并將DOS系統(tǒng)下的MVB網(wǎng)絡(luò)通信成功移植到了Linux環(huán)境下,最終實現(xiàn)了Linux與DOS環(huán)境下的MVB網(wǎng)絡(luò)互連。

1 MVB網(wǎng)絡(luò)簡介

  列車通信網(wǎng)絡(luò)(TCN)集列車控制系統(tǒng)、故障檢測與診斷系統(tǒng)以及旅客信息服務(wù)系統(tǒng)于一體,以車載微機為主要設(shè)備,通過網(wǎng)絡(luò)實現(xiàn)列車各個系統(tǒng)之間的信息交換,最終達到對車載設(shè)備的集散式監(jiān)視、控制和管理等目的,是一種面向控制、連接車載設(shè)備的數(shù)據(jù)通信系統(tǒng),是分布式列車控制系統(tǒng)的核心[2]。

  TCN由絞式列車總線WTB和多功能車輛總線MVB組成,如圖1所示。WTB用于聯(lián)接各個車輛,用于列車級的通信控制;MVB用于有互操作性和互換性要求的互連設(shè)備之間的串行數(shù)據(jù)通信。WTB與MVB之間通過網(wǎng)關(guān)來實現(xiàn)數(shù)據(jù)的傳遞。其中,MVB能提供最佳的響應(yīng)速度,適合用作車輛總線。對于固定編組的列車,MVB 也可以用作列車總線。此外,MVB屬于總線仲裁型網(wǎng)絡(luò),采用主幀/從幀應(yīng)答方式,可以實現(xiàn)設(shè)備和介質(zhì)冗余,完全滿足列車對于運行控制和安全性的要求。

  根據(jù)實際應(yīng)用的需要,MVB網(wǎng)絡(luò)的通信數(shù)據(jù)類型分為過程數(shù)據(jù)、消息數(shù)據(jù)和監(jiān)督數(shù)據(jù)。其中,過程數(shù)據(jù)用于反映列車的狀態(tài)、速度、加速度、司機指令等;消息數(shù)據(jù)是偶發(fā)數(shù)據(jù),不頻繁發(fā)送且長度不定,如診斷、旅客信息等;監(jiān)督數(shù)據(jù)是總線上主設(shè)備對于從設(shè)備的狀態(tài)校驗、主權(quán)轉(zhuǎn)移、列車初運行等所使用的數(shù)據(jù)[1]。由于過程數(shù)據(jù)是列車運行控制中最基本和最重要的通信數(shù)據(jù),因此本文只針對過程數(shù)據(jù)的收發(fā)進行研究。

001.jpg

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

  為了實現(xiàn)MVB設(shè)備之間的互聯(lián),各個與MVB相連的設(shè)備都必須具有統(tǒng)一的硬件接口和軟件接口。硬件接口主要由各個設(shè)備中的MVB網(wǎng)絡(luò)接口單元(網(wǎng)卡)實現(xiàn),網(wǎng)卡用于實現(xiàn)物理層信號的轉(zhuǎn)換,執(zhí)行數(shù)據(jù)鏈路層的通信規(guī)程,其基本任務(wù)有:⑴將主機或其他網(wǎng)絡(luò)設(shè)備發(fā)送的數(shù)據(jù)送入網(wǎng)絡(luò);⑵從網(wǎng)絡(luò)中接收其他網(wǎng)絡(luò)設(shè)備發(fā)送的數(shù)據(jù)送入網(wǎng)絡(luò);⑶從網(wǎng)絡(luò)中接收其他設(shè)備發(fā)來的數(shù)據(jù)并送給主機。軟件接口在于實現(xiàn)MVB數(shù)據(jù)鏈路層的服務(wù)功能,一方面為高層提供服務(wù)及服務(wù)訪問接口;另一方面屏蔽底層協(xié)議,提供透明的、可靠的鏈路通路,方便用戶使用[3]。

  2.1 硬件接口

  MVB網(wǎng)絡(luò)通信性能的好壞在很大程度上取決于MVB網(wǎng)絡(luò)接口單元的品質(zhì)。本次通信研究采用的是RVS系列MVB網(wǎng)卡。該網(wǎng)卡除了支持MVB三種通信數(shù)據(jù)的傳遞外,還支持總線管理器(BA),并具備用戶可編程功能,通信速率高達1.5 Mb/s,支持4 096個設(shè)備狀態(tài)掃描紀錄,并具有介質(zhì)冗余能力,是專為MVB-1類設(shè)備使用的接口卡。

002.jpg

  MVB-1型接口單元的硬件結(jié)構(gòu)框圖如圖2所示。物理層通過譯碼器將MVB上的信號轉(zhuǎn)換為數(shù)字電平,解碼器將來自于MVB的信號移至PC/104并行總線上,檢查數(shù)據(jù)的有效性并將其傳送至雙端口通信存儲器(Traffic Memory),同時上位機可通過PC/104總線對雙端口通信存儲器進行讀寫。

  圖2中,PC/104并行總線接口為網(wǎng)絡(luò)接口單元和主機之間的數(shù)據(jù)通信提供了并行通道,由于RVS系列MVB網(wǎng)卡采用的是標準PC/104接口,用戶可以將多塊網(wǎng)卡層疊使用,在實際應(yīng)用中較為方便。板上的控制邏輯(Control Logic)采用可編程邏輯器件PLD(Programmable Logic Device),為了適應(yīng)不同的總線接口需求,用戶可以通過邏輯設(shè)計方便地動態(tài)改變硬件設(shè)置。

  2.2 軟件接口

  軟件接口的核心功能是屏蔽MVB網(wǎng)卡的底層協(xié)議,并為上層應(yīng)用提供接口。

  MVB網(wǎng)卡的驅(qū)動是實現(xiàn)通信必不可少的核心部分,它描述了MVB網(wǎng)卡通信的底層協(xié)議,并對硬件進行了配置,為上層應(yīng)用的操作提供接口。MVB網(wǎng)卡的驅(qū)動主要包括MVB初始化、配置設(shè)備地址、配置過程數(shù)據(jù)端口、獲取過程數(shù)據(jù)等。用戶在使用MVB網(wǎng)卡設(shè)計上層應(yī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)絡(luò)接口單元與主機通信之前,首先必須對UART仿真寄存器進行配置,包括接收數(shù)據(jù)寄存器RBR(Receiver Buffer Register)、發(fā)送器保持寄存器THR(Transmitter Holding Register)、通信線狀態(tài)寄存器LSR(Line Status Register)。主機和接口單元之間需要通過傳輸特定的字符命令來實現(xiàn)對接口單元的軟件配置,分別為‘C’、‘S’、‘H’、‘I’、‘P’、‘G’或是用其相對應(yīng)的十六進制數(shù)43H、53H、48H、49H、50H、47H來表示,只有這樣,才能識別所要執(zhí)行的操作[3]。

 ?、拧瓹’命令用于將與接口單元有關(guān)的控制信息寫入網(wǎng)絡(luò)接口單元;

 ?、啤甋’命令用于讀取接口單元的狀態(tài)信息,一般用于調(diào)試時的自測;

 ?、恰瓾’命令用于寫入與過程數(shù)據(jù)端口相關(guān)的控制信息,包括邏輯地址、端口長度及端口源宿性質(zhì);

  ⑷‘I’命令用于讀取與過程數(shù)據(jù)相關(guān)的狀態(tài)信息,與‘S’類似,一般只用于自測試;

 ?、伞甈’命令用于將待發(fā)送的數(shù)據(jù)寫入網(wǎng)絡(luò)接口單元;

 ?、省瓽’命令用于讀取接收到的數(shù)據(jù)。

  具體的配置流程如圖3所示。在通信過程中,首先需要對MVB接口執(zhí)行初始化操作,包括以下3個步驟:⑴通過清除UART仿真之前的內(nèi)容來確保UART進入到正常的工作狀態(tài);⑵停止MVB通信,以保證不再發(fā)送錯誤信息;⑶關(guān)閉MVB數(shù)據(jù)端口,使其保持為失效狀態(tài)。接著,對MVB的過程數(shù)據(jù)端口及MVB設(shè)備物理地址及輸入線路(分為A線和B線)進行配置。配置完成之后,通過對過程數(shù)據(jù)端口執(zhí)行寫入或讀取操作來實現(xiàn)數(shù)據(jù)的通信。

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

  DOS系統(tǒng)具有良好的人機界面和豐富的系統(tǒng)資源,在傳統(tǒng)的MVB通信中應(yīng)用十分廣泛。但是,由于DOS是一個單任務(wù)弱實時的操作系統(tǒng),且可靠性不高,越來越難以滿足MVB網(wǎng)絡(luò)的愈加嚴苛的通信要求。Linux系統(tǒng)在具備DOS系統(tǒng)優(yōu)勢的同時,彌補了DOS系統(tǒng)的不足,能夠充分滿足實際的需要。因此,在Linux系統(tǒng)環(huán)境下建立MVB通信對于實際的應(yīng)用有一定的借鑒意義。

003.jpg

  考慮到多數(shù)的MVB通信仍建立在DOS系統(tǒng)環(huán)境下,因此,在實現(xiàn)Linux與Linux通信的同時,還要實現(xiàn)Linux與DOS的通信互連,這首先要求能夠?qū)OS環(huán)境下設(shè)計的通信程序移植到Linux系統(tǒng)中去。

  3.1 程序移植

  移植過程中最主要的問題在于,DOS系統(tǒng)下的部分內(nèi)置函數(shù)及頭文件,在Linux系統(tǒng)下并不適用,需要對其進行適當?shù)匦薷模踔林匦戮帉?。其中,DOS系統(tǒng)下的輸入輸出函數(shù)inp()和outp(),需要更改為inb()和outb()。與此同時,Linux使用端口訪問設(shè)備之前必須設(shè)置端口權(quán)限的系統(tǒng)調(diào)用,可選用iopl()或ioperm()進行設(shè)置。除此之外,由于Linux系統(tǒng)下沒有conio.h,因此需要自行編寫getch()函數(shù)和kbhit()函數(shù),用于獲取鍵盤敲擊的字符和判斷鍵盤是否有按下,以識別通信命令和控制通信的啟停。部分代碼如下:

  int kbhit(void)

  {

  struct timeval tv;

  struct termios old_termios,new_termios;

  int error;

  int count = 0;

  tcgetattr( 0,&old_termios );

  new_termios = old_termios;

  /*raw mode*/

  new_termios.c_lflag &= ~ICANON;

  /*disable echoing the char as it is typed*/

  new_termios.c_lflag &= ~ECHO;

  /*minimum chars to wait for*/

  new_termios.c_cc[VMIN] = 1;

  /*minimum wait time, 1 * 0.10s*/

  new_termios.c_cc[VTIME]= 1;

  error=tcsetattr(0,TCSANOW, &new_termios );

  tv.tv_sec = 0;

  tv.tv_usec = 100; /*insert a minimal delay*/

  select( 1, NULL, NULL, NULL, &tv );

  error += ioctl( 0, FIONREAD, &count );

  error+=tcsetattr(0,TCSANOW,&old_termios );

  return( error == 0 ? count : -1 );

  }

  需要注意的是,在移植的過程中,要特別注意指針的使用。若不對指針賦予初值,將會引起Segmentation Fault,另外一些對于指針的誤操作也很有可能引發(fā)這個錯誤,給調(diào)試過程中的錯誤排查帶來很多麻煩。

  除了以上提到的問題外,還有許多兼容性問題需要解決,在此不再一一贅述。想要更快更精確地找到移植中存在的問題,可采用Linux提供的GDB調(diào)試工具。通過設(shè)置斷點、打印變量等手段可以更快地找到程序的問題所在,并作出相應(yīng)的調(diào)整。

  最后,通過GCC編譯的方式,將驅(qū)動程序與應(yīng)用程序進行聯(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)絡(luò)互連。

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

4 結(jié)論

  隨著信息化和網(wǎng)絡(luò)技術(shù)的發(fā)展,列車控制技術(shù)不斷更新完善。在實驗室條件下,根據(jù)TCN協(xié)議的要求,對MVB網(wǎng)絡(luò)接口單元進行了軟硬件的配置,將DOS系統(tǒng)下的MVB網(wǎng)絡(luò)通信程序移植到了Linux環(huán)境下。通過建立由Linux環(huán)境下MVB節(jié)點與DOS環(huán)境下MVB節(jié)點組成的點對點MVB通信網(wǎng)絡(luò),成功地實現(xiàn)了MVB網(wǎng)絡(luò)在Linux和DOS環(huán)境下的網(wǎng)絡(luò)互連,并實現(xiàn)了MVB過程數(shù)據(jù)通信。通過本次實驗,使得MVB通信網(wǎng)絡(luò)在可靠性和實時性方面的網(wǎng)絡(luò)性能得到了提高,有一定的應(yīng)用前景和現(xiàn)實意義。除此之外,還為將MVB通信網(wǎng)絡(luò)移植到不同的操作系統(tǒng)環(huán)境下的應(yīng)用研究提供了依據(jù)。

參考文獻

  [1] 劉建偉. 軌道交通車輛MVB通信網(wǎng)絡(luò)的研究與設(shè)計實現(xiàn)[D].北京:北京交通大學(xué),2006.

  [2] 王磊,何正友. 高速列車通信網(wǎng)絡(luò)技術(shù)特點及其應(yīng)用[J]. 城市軌道交通研究,2008,11(2):57-64.

  [3] 劉海新,謝維達,徐曉松. MVB網(wǎng)絡(luò)接口單元的應(yīng)用研究[J]. 工業(yè)控制計算機,2002,15(9):13-15.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。