技術頻道

      用于智能儀器聯網的以太網通信接口設計


      摘 要
      本文針對智能儀器聯網的需求,對支持RS-232接口的智能儀器設計了一個以太網通信接口。以8051單片機為核心,用其串口作為與智能儀器的接口,用RTL8019AS芯片和RJ-45作為以太網接口,并通過軟件實現RS-232與TCP/IP協議的轉換,通過以太網實現智能儀器與遠程計算機之間的數據通信,給出了硬件設計和軟件實現方案。

      引言
      目前,互聯網絡硬件、軟件的迅猛發展,使得網絡用戶呈指數增長,在使用計算機進行網絡互聯的同時,各種家電設備、儀器儀表以及工業生產中的數據采集與控制設備正逐步地走向網絡化,以便共享網絡中龐大的信息資源。但是很多現有的儀器設備只配置了RS-232等串口,并沒有內置網絡接口,無法直接聯網。本文所設計的通信接口可以使具有RS-232接口的智能儀器和設備接入以太網,實現網絡中的遠程計算機與測控現場的儀器設備之間的數據通信和數據共享。目前具有RS-232接口的智能設備非常普及,它們大多數配置有串口,甚至許多家用電器也提供有RS-232串口,例如微波爐、空調和熱水器等。這些設備和電器可以通過本文所設計的通信接口接入網絡,使網絡中的監控計算機對它們進行遠程控制和監控,進行數據采集,發出控制命令等一系列操作。使遠在辦公室的人們通過自己辦公桌前的PC機監視現場智能儀表的測量數據,或者訪問諸如空調,熱水器等家電,實現溫度查詢、室溫的預熱預冷、熱水器的開關等操作。

      1 支持網絡化智能儀器接口的技術
      要能實現上述目標,每一個智能儀器和設備都應成為Internet上的獨立節點。也就是說每個智能儀器都必須安裝一個網絡接口來控制數據流的收發。實現網絡化接口儀器的技術主要體現在以下幾個方面。

      1.1 以太網技術
       以太網是目前使用最廣泛的局域網技術,網絡連接中有80%是基于雙絞線介質的以太網。為了滿足該網絡接口的通用性和實現的簡便性,采用了臺灣Realtek公司的具有即插即用功能的全雙工以太網控制器——RTL8019AS,并用廉價的8051單片機作為控制單元,實現把RS-232串口協議轉換成TCP/IP協議的目標。RTL8019AS芯片中集成了OSI中的物理層和數據鏈路層的性能,它與單片機8051接口方便,具有軟件移植性好、價格低廉等優點,符合Ethernet II與IEEE802.3標準,具有全雙工的工作方式,內置16KB的SRAM,用于收發緩沖,能夠降低對主處理器的速度要求。

      1.2 Socket套接字技術
        在遠程監控計算機端,Winsock控件可支持數據收發程序的實現。Winsock控件是基于socket套接字技術的,提供了訪問TCP和UDP網絡服務非常簡便的途徑,使編程人員在開發客戶/服務器應用程序時,不必了解TCP的細節或低級WinsockAPIs函數的調用,只需通過設置Winsock控件的屬性并調用其方法,就可直接連接到一臺遠程計算機進行,并可實現雙向數據交換。如果訪問TCP傳輸控制協議服務功能,還須建立連接并實現主機間點對點通信。如果訪問UDP數據文報協議功能,不必建立連接,發送數據將以廣播方式在網上傳輸。

      1.3 TCP/IP協議
        TCP/IP是計算機網絡中最主要的傳輸協議,目前的Internet網就是基于TCP/IP協議的互聯網絡。而且TCP/IP除了用于廣域網外,在局域網中也被廣泛應用。當然,在單片機中實現TCP/IP協議與PC機不同,在PC里可支持比較完整的TCP/IP協議,但在單片機里由于資源的限制難以實現完整的TCP/IP協議,只能根據需要實現相關的部分。通常,在單片機中只實現ARP、IP、ICMP、TCP/UDP等協議,而更高層的協議(如HTTP、SMTP、FTP等)一般是不需要的。單片機應用的TCP/IP協議大多是為了完成遠程數據傳輸,而不是網頁瀏覽、文件傳輸等功能。另外,由于單片機資源的有限性,對某一協議而言還需要作適當簡化。

        根據智能儀表的聯網要求,需要實現簡單的RS-232接口到Ethernet的數據傳輸,為此,需要編寫出以太網接口硬件以及底層的通訊及協議轉換程序。通過對高級網絡通信協議在以太網通信接口上如何實現等問題的探討,對TCP/IP協議族所需系統資源的消耗估計,以及智能儀表對網絡通信的需求,故在本文中著重實現了TCP內核中UDP、IP、ARP協議,并用Visual Basic.NET開發實現了遠程PC端的數據收發程序。

      2 網絡通信接口的硬件組成與設計
        根據儀器網絡化要求和所提供的技術支持,網絡通信接口可按圖1所示的架構設計。

      2.1 以太網控制器RTL8019AS
        以太網控制器RTL8019AS內部可分為遠程DMA接口(Remote DMA)、本地DMA接口(Local DMA)、MAC(介質訪問控制)邏輯、數據編碼解碼邏輯和其它端口,其內部結構如圖2所示。

        按數據鏈路不同,可以將以太網絡控制器內部劃分為遠程DMA(remote DMA)信道和本地DMA(local DMA)信道兩個部分。遠程DMA信道是指單片機對RTL8019AS內部RAM進行讀寫的總線,而單片機收發數據只需對遠程DMA操作。本地DMA接口(雙絞線接口)是RTL8019AS與網線連接的通道,完成控制器與網線的數據交換。當單片機要向以太網絡發送數據時,先將一幀數據經過遠程DMA信道,送到以太網控制器中的發送緩存內存(Ring Buffer),然后發出傳送命令。以太網控制器在送出前一幀的數據后,繼而完成此幀的發送。以太網控制器接收到的數據通過MAC比較、CRC校驗后,由FIFO存到接收緩存區,收滿一幀后,以中斷或緩存器標志的方式通知單片機。

        接收邏輯在接收時序的控制下,將串行數據組成字節送到FIFO和CRC;發送邏輯將FIFO送來的字節在發送時序的控制下逐位移出,并送到CRC;CRC邏輯在接收時對輸入的數據進行CRC校驗,將結果與幀尾的CRC相比較,如不同,該幀數據將被拒收。在發送時CRC對幀數據產生CRC,并附加在數據尾傳送;地址識別邏輯對接受幀的目的地址與預先設置的本地地址進行比較,如不同且不滿足廣播地址設定要求,該幀數據將被拒收;FIFO邏輯對收發的字節作16字節的緩沖,以減少對本地DMA請求的頻率。

      2.2 外圍接口器件
      l 93C46,采用SPI串行總線接口的Serial EEPROM,容量為1Kbit(64×16bit),主要保存RTL8019AS的配置信息。
      l 62256,32K字節的RAM,作為8051的外部數據存儲器,用來存儲工作時產生的數據及變量。
      l 網絡接口采用UTP(無屏蔽雙絞線)RJ-45接口,用10BASE-T布線標準通過雙絞線進行以太網通信。
      l 時鐘電路,通過X1、X2接口連接一個20MHz晶振以及2個33pF的電容,實現全雙工工作方式。
      l LED0、LED1各接一發光二極管以反映通訊狀態。

      2.3 RS-232與以太網的接口設計
      2.3.1 單片機與智能儀器端接口設計
       為了能使串口與單片機之間進行數據互傳,必須采用邏輯電平轉換芯片MAX232,把輸入的+5V電壓轉換為RS-232接口所需的±10V電壓。插口連接器必須經過該邏輯電平轉換器才能與單片機串行數據輸入/輸出引腳RXD(P3.0)、TXD(P3.1)相連。另外,還需要進行波特率的設置,其串口通信程序由C51語言實現。

      2.3.2 單片機與以太網接口的設計
        8051單片機負責TCP/IP協議的實現以及數據交換的處理,考慮到8051單片機本身只有16位的尋址方式,而RTL8019AS有20位。為了將以太網控制器內16個I/O寄存器地址,映像到8051單片機上來并與其16位地址匹配,可采用內存映像的方法,將RTL8019AS的20根地址總線SA0~SA19其中的SA10~SA19接地,其余10根地址中只使用7根與單片機的地址線進行連接,其余為無關項。利用此種方法,就能通過單片機對RTL8019AS的寄存器進行訪問,并進行數據交換。圖3給出了8052單片機控制RTL8019AS實現以太網通訊的接口電路框圖。

        網絡接口采用UTP(無屏蔽雙絞線)RJ-45接口。在圖7中為外接一個隔離LPF濾波器0132,TPIN±為接收線,HD、LD為發送線,經隔離后分別與RJ-45接口的RX±、TX±端相連。

      3 軟件編程
      3.1 RTL8019AS初始化程序的編寫
        要使網卡能夠工作,必須對網卡進行初始化設置。首先要對網卡進行復位操作,并讓其處于停止模式,然后對各寄存器進行設置,包括接收發送緩沖器指針的設置,清除并屏蔽中斷標志位,溢出報警指針的設置等。啟動網卡前,程序應執行從93C46讀入網卡物理地址到相應寄存器的操作。最后啟動網卡,再次清除所有中斷標志位。

        編寫相應的發送程序,能夠發送一個從串口收到的數據包,將待發送的數據按幀格式封裝,長度最小為60字節,最大為1514字節,并通過遠程DMA通道送到RTL8019AS的發送緩沖區,然后發出傳送命令,完成幀的發送。需要設置以太網的目的地址、以太網源地址、協議類型、在按所設置的協議類型來設置數據段,即進行打包工作。之后啟動本地DMA將數據發送到網上。我們通過觀察RTL8019AS相應寄存器的狀態來確定其能否正常工作。

      對各寄存器進行設置的部分初始化代碼如下:
      void init_8019(void) //初始化8019函數
      { UCHAR temp; //定義temp為無符號字符型變量
      Delay1ms(10); //延時10ms,建立數據穩定
      Rtl8019AS_Reset(); //復位
      reg00=0x21; //使芯片處于停止模式,進行寄存器設置
      Delay1ms(10);
      page(0);
      reg0a=0x00; reg0b=0x00; //遠程DMA字節計數為0
      reg0c=0xe0; // 設置RCR,監控狀態,拒絕數據包進入緩沖區
      reg0d=0xe2; //設置TCR,自動校驗,內部回顧模式
      reg01=0x4c; reg02=0x80; reg03=0x4c; reg04=0x40;
      // PSTART=0x4c,PSTOP=0x7f+1=0x80,BNRY=PSTART,接收溢出報警,TPSR發送起始頁
      reg07=0xff; //ISR都置1,清除所有中斷標志位
      reg0f=0x00; //IMR都置0,屏蔽所有中斷
      reg0e=0xc8; //DCR,8位DMA數據傳輸方式
      page(1);
      Delay1ms(1);
      reg07=0x4d; //CURR,當前頁指針
      temp=reg07;
      reg08=0x00; reg09=0x00; reg0a=0x00; reg0b=0x00; // MAR0~MAR7,多播地址寄
      reg0c=0x00; reg0d=0x00; reg0e=0x00; reg0f=0x00; //存器,置0
      reg00=0x22; //啟動芯片,
      ReadRtl8019NodeID(); //讀網卡物理地址
      WriteRtl8019NodeID(); //寫網卡物理地址
      page(0);
      reg0c=0xcc; //重置RCR,正常工作狀態,
      reg0d=0xe0; //設置TCR,自動校驗,正常工作模式
      reg00=0x22; //再次啟動芯片開始工作
      reg07=0xff; //ISR中第7位RST在啟動時置0,故再次清除中斷標志位
      }

      3.2 TCP/IP通信協議內容
        l ARP協議,即地址解析協議,提供邏輯地址到物理地址的動態映射。發送站必須知道接收站的物理地址才能對數據進行封裝,才能在以太網中進行傳輸,因此只知道接收站的邏輯地址是不夠的,必須事先通過ARP協議得到接收站的物理地址。
      l IP協議,即網絡協議,提供一種不可靠的、無連接的服務,完成的功能有將運輸層待發送數據封裝成IP數據報,調用以太網驅動程序發送數據,從數據鏈路層接收數據,以及數據校驗等。

        l UDP協議,即用戶數據報協議,它是一個無連接協議,與TCP協議操作不同,UDP協議不使用報文確認機制,不對報文排序,不進行流控,因而UDP報文可能出現丟失、重復、亂序等現象,但由于它的前期工作比TCP少,計算機不建立連接,因而可以迅速地展開通信,一般用于傳輸少量不重要的數據和信息。是一種面向連接的、可靠的運輸協議。UDP協議實現相同功能,但它只把數據報分組從一臺主機發送到另一臺主機,不保證可靠性。

      3.3 TCP/IP通信協議的軟件實現
        當通信接口從串口收到數據后,首先將加上UDP首部,即打包成UDP報文,再把該報文加上IP首部,即打包成IP包,并執行ARP程序來得到遠程PC的物理地址,最后把這些都交給RTL8019AS芯片,由其自動生成以太網物理幀,發送到以太網上。同樣智能儀器也可以實現數據接收的功能,即把RTL8019AS收到的數據進行層層拆包,如圖4所示。以上過程以及RTL8019AS的上電初始化即對其內部寄存器進行設置和操作,均由C51在MedWin環境下實現。詳細的設置方法和源代碼參見附錄。

      3.4 PC端數據接收程序的編程
        該程序是在Windows XP操作系統中用Visual Basic.NET編寫的,應用了WinSock控件(基于Socket套接字技術)。因本網絡接口使用UDP協議進行數據傳輸,編程時首先設置WinSock控件的工作方式為UDP,然后設置所使用的端口。數據接收程序運行時就將Socket綁定到該端口上,當網絡接口要向該數據接收程序發送數據時,需要指明地址和端口,等數據發送到此端口時,將自動觸發WinSock控件的DataArrival事件,進行數據的接收。使用UDP協議進行通信時,通信的雙方時對等的。通信規程如圖5所示。

      通信收發界面如圖6所示。

      4 結束語
        本文介紹了智能儀器與以太網接口的設計方案,討論了硬件設計與軟件實現的方法。雖然文中所討論的是RS-232串行總線與以太網的集成,但其方法適用于眾多現場總線技術。本文所設計的接口為控制網絡和信息網絡與以太網的集成提供了一種低成本的解決方案。

      參考文獻
      [1] RTL8019AS Specification. Realtek Semi-conductor CO.LTD,2000.08
      [2] 凌志浩.智能儀表原理與設計技術.華東理工大學出版社,2003.08
      [3] DOUGLAS E.COMER. 用TCP/IP進行網際互聯(第三版)第二卷。 電子工業出版社,2001
      [4] CHARLES E.SPURGEON. 以太網技術入門與實現。 機械工業出版社, 1998.08
      [5] JOE CASAD, BOB WILLSEY. Sam Teach Yourself TCP/IP in 24 Hours. 機械工業出版社, 1999. 04
      [6] 鄧全良。 Winsock網絡程序設計。 中國鐵道出版社, 2002.07
      [7] 張培仁等。 基于C語言編程MCS-51單片機原理與應用。 清華大學出版社, 2003.07
      [8] 王進強。 Visual Basic.Net. 清華大學出版社, 2004.04
      [9] 卞志強。 Visual Basic 網絡程序設計。 人民郵電出版社, 2003.09
      [10] 李超等。 智能儀表的網絡化技術。 世界儀表與自動化,2004.09




      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 亚洲av成人一区二区三区在线观看| 春暖花开亚洲性无区一区二区 | 亚洲国产系列一区二区三区| 久久综合九九亚洲一区| 国产亚洲一区二区三区在线不卡| 真实国产乱子伦精品一区二区三区| 免费观看一区二区三区| 日韩亚洲AV无码一区二区不卡| 91久久精品国产免费一区| 中文字幕一区日韩精品| 精品视频一区在线观看| 国产成人精品无码一区二区| 久久婷婷色一区二区三区| 亚洲国产AV一区二区三区四区 | 丝袜人妻一区二区三区网站| 亚洲AV乱码一区二区三区林ゆな| 一区二区无码免费视频网站| 中文无码一区二区不卡αv| 国产伦精品一区二区三区女| 女人18毛片a级毛片一区二区| 一区二区三区视频网站| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 一级毛片完整版免费播放一区 | 国产成人精品一区二区A片带套| 美女AV一区二区三区| 精品亚洲一区二区三区在线播放| 亚洲AV本道一区二区三区四区| 国产未成女一区二区三区| 日韩精品无码一区二区视频| 国产精品高清一区二区三区不卡| 午夜性色一区二区三区免费不卡视频| 制服美女视频一区| 色噜噜狠狠一区二区| 一区二区视频在线免费观看| 精品一区二区三区自拍图片区| 国产精品亚洲一区二区三区| 无码国产伦一区二区三区视频| 福利电影一区二区| 国产一区二区久久久| 免费精品一区二区三区第35| 国产福利一区二区|