??? 摘? 要: 實(shí)現(xiàn)了一種機(jī)動車檢測系統(tǒng)" title="檢測系統(tǒng)">檢測系統(tǒng)中總線設(shè)備網(wǎng)絡(luò)化改造的可行方案。利用SST89E564RD單片機(jī)與網(wǎng)卡芯片設(shè)計(jì)的主要接口模塊,既為檢測設(shè)備網(wǎng)絡(luò)化提供了網(wǎng)關(guān)服務(wù),也實(shí)現(xiàn)了在線仿真和下載的功能。?
??? 關(guān)鍵詞: 機(jī)動車檢測系統(tǒng); 現(xiàn)場總線; 以太網(wǎng); 串口" title="串口">串口; 在線仿真
?
??? 隨著道路交通和汽車工業(yè)的迅速發(fā)展,各地區(qū)急劇上升的機(jī)動車擁有量及道路車流量對交通安全造成了很大的壓力,這對機(jī)動車管理部門提出了更高的技術(shù)要求,對檢測系統(tǒng)進(jìn)行遠(yuǎn)程控制的要求愈加迫切。目前,機(jī)動車檢測系統(tǒng)一般都基于RS232總線,采用專用通信協(xié)議。系統(tǒng)存在可擴(kuò)展性差、傳輸距離短、抗干擾性差等弊端。將以太網(wǎng)技術(shù)引入到工業(yè)測控領(lǐng)域,是當(dāng)前現(xiàn)場總線技術(shù)發(fā)展的新趨勢[1-3]。以太網(wǎng)在辦公自動化領(lǐng)域和企業(yè)管理網(wǎng)絡(luò)內(nèi),由于技術(shù)成熟、性能穩(wěn)定,可靠性高而得到了廣泛應(yīng)用,占據(jù)國內(nèi)現(xiàn)有局域網(wǎng)的80%。在測控領(lǐng)域,它以速度快、協(xié)議通用、可擴(kuò)展性好、易于與Internet集成等特點(diǎn)而被視為繼集散控制系統(tǒng)DCS(如RS232總線)、基于現(xiàn)場總線的控制系統(tǒng)FCS(如CAN)之后控制網(wǎng)絡(luò)中最熱門的研究領(lǐng)域之一。借鑒工業(yè)測控領(lǐng)域的應(yīng)用,設(shè)計(jì)基于以太網(wǎng)的機(jī)動車檢測系統(tǒng),不僅免除了不同現(xiàn)場總線水平層之間難以集成的問題,而且大大地降低了外界的干擾,為實(shí)現(xiàn)現(xiàn)場設(shè)備與互聯(lián)網(wǎng)的直接連接,提供了一種非常便捷的方法,也給總線設(shè)備的網(wǎng)絡(luò)化提供了低成本、高可靠性、可移植性的產(chǎn)品和方案。?
1 串口通信與網(wǎng)絡(luò)傳輸?
??? 兩個(gè)設(shè)備之間交換信息時(shí),必須有一條線路(或是多條線路)將兩者連接,而通過線上電壓的改變來達(dá)到交換數(shù)據(jù)的目的。考慮本系統(tǒng)的數(shù)據(jù)傳輸速度和傳送距離,選擇了RS232通信標(biāo)準(zhǔn)[4]。本文主要是通過串口與外部設(shè)備進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)傳輸、在線仿真和網(wǎng)卡參數(shù)配置等功能。?
??? 要實(shí)現(xiàn)現(xiàn)場設(shè)備網(wǎng)絡(luò)化,保證數(shù)據(jù)的可靠傳輸和遠(yuǎn)程控制,就必須將可靠的TCP/IP" title="TCP/IP">TCP/IP協(xié)議棧嵌入到單片機(jī)中實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸。圖1是目前機(jī)動車檢測系統(tǒng)最常用的結(jié)構(gòu)圖[5],它是基于串口傳輸數(shù)據(jù)的。由于計(jì)算機(jī)串口有限導(dǎo)致可擴(kuò)展性差,串口本身又存在傳輸距離短、抗干擾性差等缺點(diǎn),所以不是一種長遠(yuǎn)的方案。圖2是網(wǎng)絡(luò)化改造后的控制結(jié)構(gòu)圖,從圖中可以看出:只需要簡單地接入一個(gè)集線器便可大大地提高系統(tǒng)的可擴(kuò)展性,增強(qiáng)抗干擾性,還可以通過以太網(wǎng)遠(yuǎn)程控制機(jī)動車檢測并將檢測到的數(shù)據(jù)通過以太網(wǎng)傳送到各個(gè)部門。?
?
?
?
2 系統(tǒng)主要模塊硬件結(jié)構(gòu)設(shè)計(jì)?
??? 模塊硬件設(shè)計(jì)電路結(jié)構(gòu)如圖3所示。模塊主要包括單片機(jī)SST89E564RD、網(wǎng)卡芯片RTL8019AS、外擴(kuò)的EEPROM X5045、外擴(kuò)的RAM HM62256、串口通信、網(wǎng)口通信等單元。為檢測設(shè)備的網(wǎng)絡(luò)化提供了串口轉(zhuǎn)以太網(wǎng)的網(wǎng)關(guān)服務(wù)。模塊既可以作為服務(wù)器端又可以作為客戶端" title="客戶端">客戶端接口來使用。由于SST89E564RD具有在線仿真和下載功能,Flash(內(nèi)部Flash擦寫次數(shù)為1 000 000次以上)存儲器取代了原來的ROM(一次性寫入),為開發(fā)工程中的調(diào)試提供了最大的方便,大大節(jié)約了開發(fā)成本。?
?
?
??? 采用SST89E564RD單片機(jī)作為主處理器控制以太網(wǎng)卡芯片來實(shí)現(xiàn)與以太網(wǎng)的數(shù)據(jù)交換。SST89E564RD的工作頻率為40MHz,從而具有了更快的計(jì)算速度,內(nèi)部程序Flash 64KB,達(dá)到51內(nèi)核單片機(jī)尋址最大范圍,能夠滿足容納裁剪后的TCP/IP協(xié)議的需求。由于需要處理網(wǎng)絡(luò)數(shù)據(jù)包,一個(gè)最大網(wǎng)絡(luò)數(shù)據(jù)包有1 514B,而SST89E564RD內(nèi)部的RAM只有256B,所以需要考慮外擴(kuò)RAM。同時(shí)TCP/IP協(xié)議棧需要考慮數(shù)據(jù)阻塞、超時(shí)重發(fā)等,需要比較大的數(shù)據(jù)空間作為數(shù)據(jù)緩存,因此選擇HM62256 32K×8bit 動態(tài)RAM作為數(shù)據(jù)緩存。?
??? 在系統(tǒng)中還使用X5045 作為外部擴(kuò)展的EEPROM,用來存儲IP地址、物理地址以及網(wǎng)卡的其他配置信息。同時(shí)X5045還具有電壓監(jiān)控、看門狗定時(shí)器、上電復(fù)位三種功能,使用X5045監(jiān)控系統(tǒng)的運(yùn)行過程,當(dāng)系統(tǒng)不穩(wěn)定時(shí)可以進(jìn)行有效的復(fù)位。?
??? 由于單片機(jī)的高低電平與串行口的高低電平不同,二者之間需要進(jìn)行電平轉(zhuǎn)換,在本設(shè)計(jì)中使用MAX232作為串口電平轉(zhuǎn)換芯片,負(fù)責(zé)單片機(jī)與PC機(jī)的電平轉(zhuǎn)換。數(shù)據(jù)可從串口輸入到單片機(jī),單片機(jī)把數(shù)據(jù)送到RTL8019AS后傳出。反之,從RTL8019AS接收到的數(shù)據(jù)通過單片機(jī)可從串口發(fā)出。?
??? 網(wǎng)卡芯片采用Realtek公司生產(chǎn)的10M的RTL8019AS以太網(wǎng)卡[6]控制器,價(jià)格低廉,與NE2000兼容。RTL8019AS符合ETHERNETⅡ和IEEE802.3標(biāo)準(zhǔn);內(nèi)置16KB SRAM,用于收發(fā)緩沖,降低了對主處理器的要求;支持8/16位數(shù)據(jù)總線、8個(gè)中斷申請、16個(gè)I/O基地址選擇等許多特性,在本設(shè)計(jì)中選用8位數(shù)據(jù)總線。網(wǎng)卡控制器與以太網(wǎng)是不能直接相連的,中間要通過網(wǎng)絡(luò)隔離變壓器才能連接到以太網(wǎng)上。網(wǎng)絡(luò)隔離變壓器的作用是隔直通交,避免雙絞線上的直流電平干擾芯片RTL8019AS的工作點(diǎn);同時(shí),利用變壓器自身的通頻帶限制高頻干擾。?
3 系統(tǒng)軟件設(shè)計(jì)?
??? 系統(tǒng)軟件設(shè)計(jì)主要包括客戶端和服務(wù)器端軟件的設(shè)計(jì),在TCP/IP網(wǎng)絡(luò)應(yīng)用中,通信的兩個(gè)進(jìn)程之間相互作用的主要模式是客戶模式和服務(wù)器模式[7-8]。在面向連接的TCP協(xié)議中,服務(wù)器和客戶機(jī)開始通信之前必須首先建立連接。在連接之前,服務(wù)器程序必須正在運(yùn)行并處于監(jiān)聽模式,等待客戶端的連接。TCP的連接是通過三次握手協(xié)議來完成的。同樣,終止一條TCP連接實(shí)際上也是三次握手。?
3.1 初始化 ?
??? 整個(gè)系統(tǒng)的初始化工作主要包括:串口及串口緩沖區(qū)初始化,定時(shí)器初始化,初始化PING表、ARP表,初始化TCP,RTL8019AS的初始化等。?
??? RTL8019AS的初始化主要包括網(wǎng)卡的復(fù)位和網(wǎng)卡寄存器的初始化。復(fù)位方式有硬件復(fù)位和軟件復(fù)位兩種,本模塊所采用的是硬件復(fù)位方式,使RTL8019AS的硬件復(fù)位引腳RSTDRV與單片機(jī)的P1.6相連,單片機(jī)向P1.6腳輸出大于800ns的高電平,完成RTL8019AS的硬件復(fù)位。?
3.2 數(shù)據(jù)包的發(fā)送和接收?
??? 數(shù)據(jù)包的發(fā)送過程包括三個(gè)步驟:主處理器將數(shù)據(jù)包按照RTL8019AS發(fā)送數(shù)據(jù)幀格式進(jìn)行封裝;封裝完后通過遠(yuǎn)程DMA通道將數(shù)據(jù)包送到RTL8019AS的發(fā)送緩沖區(qū);最后通過本地DMA將數(shù)據(jù)送到FIFO,通過設(shè)置寄存器CR啟動發(fā)送。RTL8019AS完成上一幀的發(fā)送,再開始下一幀的發(fā)送。發(fā)送前需要設(shè)置以太網(wǎng)目的地址、以太網(wǎng)源地址、協(xié)議類型,再按所設(shè)置的協(xié)議類型來設(shè)置數(shù)據(jù)段。為提高發(fā)送效率,將12頁的發(fā)送緩存區(qū)分為兩個(gè)6頁的發(fā)送緩存區(qū),一個(gè)用于數(shù)據(jù)包發(fā)送,另一個(gè)用于構(gòu)造發(fā)送端的數(shù)據(jù)包,交替使用。 ?
??? 接收數(shù)據(jù)是通過本地DMA 從網(wǎng)卡接口接收,RTL8019AS對接收到的數(shù)據(jù)包通過MAC比較、CRC校驗(yàn),由FIFO存到網(wǎng)卡接收緩沖區(qū),收滿一幀后以寄存器標(biāo)志方式通知主處理器,主處理器通過遠(yuǎn)程DMA將緩沖區(qū)的數(shù)據(jù)讀到自己的內(nèi)存中。幀的接收工作是由網(wǎng)卡自動完成的,當(dāng)網(wǎng)卡接收到一幀數(shù)據(jù)并存入內(nèi)存后,就會開始對這幀數(shù)據(jù)進(jìn)行處理, 具體處理步驟如圖4所示。?
?
?
4 實(shí)驗(yàn)用例?
4.1 實(shí)驗(yàn)環(huán)境?
??? 應(yīng)用VB開發(fā)的接口小程序[9],設(shè)置網(wǎng)卡的配置參數(shù)并實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收;在完成串口數(shù)據(jù)到以太網(wǎng)數(shù)據(jù)轉(zhuǎn)發(fā)的過程中,RTL8019AS具有10Mb/s的傳輸率,遠(yuǎn)遠(yuǎn)高于原有系統(tǒng)的串口傳輸率,可以很好地滿足檢測數(shù)據(jù)的傳輸要求,而且運(yùn)行穩(wěn)定。?
4.2實(shí)驗(yàn)內(nèi)容?
4.2.1修改系統(tǒng)參數(shù)?
??? 用串口線把系統(tǒng)中的TCP/IP模塊與電腦連接起來,選擇好串口號,然后按“連接單片機(jī)”按鈕,當(dāng)連接狀態(tài)工具欄里出現(xiàn)“已經(jīng)連接”,說明與電腦已經(jīng)連接上,然后就可以修改配置參數(shù)了。在參數(shù)設(shè)置欄中填寫正確的參數(shù)值后,按“設(shè)定”按鈕,接收狀態(tài)欄中會提示參數(shù)設(shè)置成功,然后按模塊上的復(fù)位鍵,網(wǎng)卡的參數(shù)配置就被寫到了X5045中。參數(shù)設(shè)置界面如圖5所示。所有配置參數(shù)(包括本地IP地址、服務(wù)器端IP地址、端口號" title="端口號">端口號、網(wǎng)卡物理地址、ping的IP地址、串口號等)都能通過串口動態(tài)地更改。?
?
?
??? 串口波特率是通過硬件上跳線完成的,串口波特率支持300b/s、600b/s、1 200b/s、2 400b/s、4 800b/s、9 600b/s、19 200b/s。?
4.2.2 計(jì)算機(jī)模擬測試?
??? 如果系統(tǒng)中的TCP/IP模塊為TCP客戶端,則圖6所示的程序就作為服務(wù)器端使用,在主機(jī)端口號(這里設(shè)置端口號為3330,要與客戶端所設(shè)端口號一致)中輸入要監(jiān)聽的端口號,設(shè)置好端口號后按“開啟主機(jī)”按鈕進(jìn)入監(jiān)聽狀態(tài), 模塊會每隔1秒鐘連接一次該服務(wù)器程序,直到連上為止,如果超過10次都沒有連上,則放棄連接。?
?
?
??? 如果系統(tǒng)中的TCP/IP模塊作為TCP服務(wù)器端,則圖7所示的程序就作為客戶端使用,在連接端口號(這里設(shè)置端口號為3330,要與服務(wù)器端監(jiān)聽的端口號一致)中輸入要連接的服務(wù)器端的端口號,設(shè)置好端口號后再設(shè)置要連接的IP地址(為服務(wù)器端的IP地址),然后按“連接主機(jī)”按鈕直到提示成功登錄通信系統(tǒng)為止,連接期間模塊作為服務(wù)器端一直處于監(jiān)聽狀態(tài)。?
?
?
??? 連接上以后就可以進(jìn)行正常的數(shù)據(jù)收發(fā)了,檢測現(xiàn)場工作人員不僅可以通過以太網(wǎng)遠(yuǎn)程控制機(jī)動車檢測,還可以將檢測到的煙度、廢氣等數(shù)據(jù)通過以太網(wǎng)傳送到各個(gè)部門。?
??? 本文實(shí)現(xiàn)了一種總線設(shè)備網(wǎng)絡(luò)化改造的可行方案,并解決了數(shù)據(jù)包的超時(shí)重發(fā)、定時(shí)?;?、參數(shù)配置、硬件看門狗復(fù)位等一系列問題。實(shí)驗(yàn)表明,整套程序已經(jīng)比較穩(wěn)定,收發(fā)數(shù)據(jù)正常,TCP超時(shí)重傳效果很好。經(jīng)過四周,每天連續(xù)12個(gè)小時(shí)的測試,沒有出現(xiàn)任何丟包和堵塞的現(xiàn)象,設(shè)備實(shí)際運(yùn)行狀態(tài)正常,目前已經(jīng)投入到北京部分機(jī)動車檢測現(xiàn)場使用。?
參考文獻(xiàn)?
[1] 張飛舟,鄧旭明,王豪.嵌入式工業(yè)以太網(wǎng)接口開發(fā)與應(yīng)用.計(jì)算機(jī)工程,2003,29(16):154-156,194.?
[2] 尚晨旭,邢化鋒,柴燕,等.用單片機(jī)實(shí)現(xiàn)以太網(wǎng)卡通信的設(shè)計(jì). 電子工程師,2006,32(2):53-54,57.?
[3] 陳翠,田捷,王金剛.嵌入式軟件開發(fā)技術(shù)[M]. 北京:國防工業(yè)出版社,2003.?
[4] 馬忠梅,籍順心,張凱,等.單片機(jī)C語言應(yīng)用程序設(shè)計(jì)[M]. 第3版.北京: 北京航空航天大學(xué)出版社, 2006.?
[5] 劉云卿.機(jī)動車檢測復(fù)合推進(jìn)式控制方法及其系統(tǒng):中國,1664541[P]. 2005-09-07.?
[6] RTL8019AS specification. Realtek Semi-conductor CO.Ltd., 1999.?
[7] COMER D E. 用TCP/IP進(jìn)行網(wǎng)際互連(第1卷,第2卷). 北京: 電子工業(yè)出版社,1998. ?
[8] 周明天,汪文勇.TCP/IP網(wǎng)絡(luò)原理與技術(shù).北京:清華大學(xué)出版社,1994.?
[9] 鄭阿奇,曹戈.Visual Basic 實(shí)用教程.北京:電子工業(yè)出版社, 2003.