plc具有可靠性高、通用性強等優點,可以大大減少故障的產生,因此在工業控制領域得到了廣泛的應用。隨著電子控制技術的發展,各種高級控制策略得以面對不同的對象在不同的場合下應用,如何融合分析各種現場數據就是很現實的問題,這其中的前提之一就是各種數據的提取,伴隨著網絡技術的發展,通過以太網技術,就可以實現這種數據的遠程傳輸,進而達到數據的集中分析處理,做出合理的控制策略。
2 系統構成
本系統是基于實驗室設備而開發的一套遠程控制系統,它的控制對象是多臺plc控制的雙容水箱,可以稱之為雙容水箱實驗臺,它包括plc變頻器、水泵和雙容水箱。plc包括ad、di等模塊,plc通過控制變頻器的輸出來調整水泵的轉速,進而控制雙容水箱的進水量。plc通過串口與實驗開發的以太網模塊相連以實現plc數據與遠端操作端的數據交換。由于是多個實驗臺組成一個網絡,所以在組網的過程中采用的策略是利用hub與單塊以太網模塊相連,然后連在一臺服務器上。利用rj45水晶頭把hub和以太網模塊連接以后,數據遵循802.3網絡協議以實現以太網模塊與服務器的數據傳輸。在服務器端,用sql語言建立一個數據庫用以存放各種實驗數據和控制命令,同時用c++builder編寫所需要的現實畫面和網絡發布畫面。整個系統框圖如圖1所示:
3 以太網模塊硬件設計
以太網模塊是用通用的c51系列單片機作為控制器,rtl8019as芯片作為以太網控制芯片,20f-01芯片作為網絡濾波器,在這個10baset以太網中,采用非屏蔽雙絞線的rj45標準接口。模塊電路如圖2所示。
這里主要介紹一下rtl8019as網絡控制芯片。rtl8019as是臺灣地區realtek公司生產的一種高度集成的全面支持iebb802.3標準的以大網控制器芯片,它支持8位位處理器。軟件兼容ne2000,同時還支持微軟的pnp(即插即用)規范。其主要特性如下:
符合ethernet ⅱ和ieee802.3標準;
支持跳線和免跳線兩種工作方式;
全雙工,收發可同時達到10mbps的速率;
內部有16k的sram;
支持 8位16位數據總線;
和ne2000系列兼容;
允許四個診斷led可編程輸出;
100腳pqfp襯禁。
rtl8019as芯片內部主要可分為遠程dma接口、本地dma接口、mac(介質訪問子層)邏輯、數據編碼解碼邏輯和其它端口。isa總線接口即遠程 dma接口是指主機對rtl8019as進行控制和操作的總線,本地dma接口是指rtl8019as與網絡線的連接通道,作用是成控制器和網絡線的數據交換。pnp(即插即用)邏輯部分主要是用來解決和 pc機的連接連接,bootrom端口作用是解訣遠程啟動問題:eeprom端口是用來操作rtl8019as和eeprom芯片93c46的接口,sram用來存放接收和要發送的數據:mac邏輯完成數據的發送和接收過程中的一些控制:當主機要發送數據時,將一幀數據經過遠程dma信道送到以太網絡控制器中的發送緩存內存中,然后發出傳送命令,以太網絡控制器在送出前一幀的數據后繼而完成此幀的發送;接收數據時,串行數據組成字節送到fifo和 crc,發送邏輯將 fifo送來的字節在發送時脈的控制下逐步按位移出并送到crc,crc邏輯在接收時對輸入的數據進行crc校驗;將結果與幀尾的crc比較,如不同該幀數據將被柜收,如相問則送到接收緩沖區中,存到接收緩沖區收滿一幀后以中斷或緩存器標志的方式通知主處理器把數據讀走。
4 以太網模塊的軟件設計
本系統程序是由keil c語言寫成,主耍包括兩部分:一是tcp/ip的實現,二是8019as的驅動程序。
4.1 tcp/ip協議的實現
tcp/1p實質上是一系列協儀的總稱,是實現internet通訊必不可少的部分,包括十幾個協議標準。傳輸的數據量很少且對實時性要求不是很高,不需要全部的協議,只要實現幾個必要的就可以了;權衡之下,求在最小代碼、最小資源需求和功能實現間取得一個平衡;只要實現了icmp(互聯網控制報文協議)、tcp(傳輸控制協議)、ip(網絡層協議)、arp(地址解析協議)4個協議。因為任何一個以太網數據幀要發送時都必須要知道對方的物理地址,這能過arp協議來取得,所以要實現arp協議,而ip協議是tcp和icmp協議數據的傳輸格式;tcp協議提供可靠的、可重組服務;而icmp協議是調試時所不可缺少的。
4.2 rtl8019as驅動程序
(1) rtl8019as的初始化
開機復位信號接在以太網絡控制器的復位接腳上,因此當開機后以太網絡控制器一直會處于復位狀態,直到主控制器發出開始命令為止,初始化步驟如下:
硬件重置;
cr寫入21h,進入第0頁;
對dcr進行初始化;
對rbcr進行初始化:
對rcr進行初始化;
對tcr進行初始化;
接收緩仲區初始化包含bndry,pstrat,pstop,tpsr的初始化:
清除 isr的值寫入 ffh,允許中斷;間對imr進行初始化;
cr寫入61h,進入第1頁的對par0-5、mar0-7、curr進行初始化;
將以太網絡控制器置于開始模式cr=22h;
將以太網控制器置第0頁,準備開始工作。
(2) 接受幀的過程
在接收數據時,當rtl8019as接收到一個以太網幀時,當這幀數據的目的地址是本地地址且crc校驗正確時,啟動本地dma把數據讀入接收緩沖區,然后通過中斷通知主控制器,主控制器通過遠程dma把rtl8019as中的數據讀走。這時一定要設置bnry指針,因為它需要用戶未設置,每讀走一個數據都要把它加l。當它到ox7f時自動返回為初始化值。
(3) 發送幀的過程
傳送流程比較復雜筒言之有幾個重要步驟:
ip層軟件己準備好數據幀;
將數據幀寫入數據通訊端口處;
判斷cr緩存器的txp值是否為入若為1表示上一幀數據尚未傳完,暫時不能傳送此數據幀,若為0則可以傳送;再發出發迭數據的命令,啟動本地dma把數據發送到以太網上即可,需要注意的是一定要設置以太網的目的地址和源地址,協議類型等。
這里采用查詢方式來處理。數據發送之前,我們要將發送數據封裝成以太網的ieee802.3t或者dix ethernet v2標準的mac幀,并通過遠程dma寫到發送緩沖區中。往常,我們只須向緩沖區填寫目的地址、源地址.數據長度/類型和數據,前同步碼和fsc由 rtl8019as發送時,自動產生。標準的以太網數據幀如圖3所示:
5 網絡編程
borland公司推出的c++builder是一個功能強大的windows應用軟件開發工具,即可以編寫一般windows應用程序和控制臺程序,也可以編寫復雜的數據庫應用和web服務程序。本課題就是利用c++builder軟件的可視化特性和高效存取數據庫來完成相關的網絡功能。在c/s模式下,本來可以直接利用在windows環境下的winsock組建來完成編程,但是由于考慮到可能需要了解相關的通信細節,而winsock組件在一定的程度上屏蔽了許多通信細節,所以采用了winsock api編程。在以太網數據傳輸過程中,主要使用udp協議通信,udp協議下socket通信流程如圖5所示:
在c++builder中利用軟件所提供的database desktop工具創建一個數據庫,由于是在同一個開發環境下數據庫的調用和數據的修改顯得比較方便。
6 結束語
通過本課題的研究,以實驗環境為背景的以太網遠程控制系統是可以達到所設想的目的的,通過控制網絡和通信網絡的接合,可以方便的實現各種實驗平臺的聯系,同時系統運行穩定,對于各種數據的集中分析處理會有比較大的幫助。