1 引言 單片機傳輸數據有兩種方式:串行和并行。并行傳輸只能應用于近距離的通信,而對于大部分單片機測控系統來說,分布范圍廣,距離中央處理機遠,因此只能采用串行傳輸[1]。串行傳輸需要經過電平轉換,一般有兩種方案:RS-232標準,RS-485標準。第一種標準的最大傳輸速率為20kb/s,最大傳輸距離為15m,而RS-485最大傳輸速率為10Mb/s,最大傳輸距離為1200m,超出這個范圍,由于干擾信號的疊加和傳輸信號的衰減,誤碼率將大大增加 [2]。那么如何實現遠距離的測控和數據傳輸呢?利用Nport Express把單片機接入因特網,使數據通過網絡傳輸,則可以很好地解決遠程通信的問題。本文就如何利用Nport Express實現S2E(串行口到以太網)進行了細致的討論。 2 Nport Express簡介 Nport Express是由臺灣(MOXA)摩莎技術有限公司設計生產的單片機網絡接入設備,它有兩個端口,一個是RS-232或RS-485電平的輸入接口,另一個是網絡接口,內部進行TCP/IP封裝,對用戶來說是完全透明的。其主要特點如下: (1)體積只有手掌大小,安裝調試方便,自動檢測10/100M bps以太網端口; (2)接入口支持RS-232/422/485標準,提供寬泛的主機與遠程串行口的Internet/Intranet連接; (3)支持多個主機共享一個服務器或串行端口; (4)適用于Windows NT/95/98/ME/2000等操作平臺,參數配置直觀方便; (5)接入網絡安全可靠,并有相應的控制保障措施,串行口最大速率可達230.4k bps。 3 對NportExpress的參數設置 雖然Nport Express對以太網的連接是一種虛連接,而Windows操作系統會把它的串行接入口當作一個真實存在的物理接口。這個接口完成的不僅僅是數據的接收發送,而且包括RTS,CTS,DTR, DSR, DCD等控制信號的傳送。Nport Express支持多種協議:ARP, UDP, TCP, ICMP, Telnet/Rtelnet和DHCP。 TCP 確保了數據的準確傳輸并提供了自動糾錯功能,而IP完成數據塊的尋址和路由。在安裝和使用Nport Express之前,應對Nport Express的基本參數進行設置。 3.1 參數設置界面的打開 只有獲得Nport Express的實際IP地址,才可以打開它的參數設置界面。IP地址由四個字節組成,是Nport Express在網絡中的身份證。由于接入網絡方式的不同,如局域網接入或通過Modem 撥號上網,IP地址會有所不同,而且每次接入網絡時, Nport Express獲得的IP地址也可能不同。為了獲得Nport Express的實際IP地址,首先運行Nport Monitor,打開Nport Monitor界面,然后運行Configure,Search,則可以查到Nport Express的實際IP地址。然后從“開始”菜單,選擇“運行”,輸入“telnet 192.168.127.254”(此值為缺省值),當Nport Express所獲得的實際IP地址與此不同時,應輸入實際IP地址,就可以實現S2E的連接了。 當Telnet窗口打開后,輸入1選擇ansi/vt100 為控制終端類型,回車后,會出現Telnet的主控界面,在此進行Nport Express各項參數的設置。打開后的主界面如圖1所示。 3.2 Nport Express運行模式的設置 Serverconfig是對Nport Express服務器的名稱、IP地址、子網掩碼、網關的設置進行驗證,本項菜單無法改動,也無須改動。 Nport Express有三種運行模式:基于主機連接模式,對等連接模式和自然連接模式。由于自然連接模式是利用TCP/IP協議實現異步串行口的網絡接入,可實現與局域網或廣域網的連接,使用者可以方便的打開異步串行口,從遠程主機上讀寫原始數據,并實現對異步串行口的遠程控制,本文選用這種模式,即RAW-Connection Mode(自然連接模式)。 有兩種傳送模式可供選擇,即TCP模式與UDP 模式。它們的比較見表1。 Op-mode菜單項的第一個子菜單可以實現對連接方式的設定。從表1可以看出,TCP模式是一種面向連接的傳送方式,在傳送數據前,通信雙方必須都收到對方的回應信號才能啟動數據的傳輸,因而占用了大量的時間用來完成握手信號的傳送,但相對于UDP來說,數據傳送的安全性較高。而UDP模式是一種快速存取數據的通信方式,通過UDP的特性,Nport Expres可同時接收或發送數據給多臺設備,且不需要重新建立聯機,節省聯機的時間,加快數據傳送的效率,對于實時性要求較高的系統,一般選用這種方式,本文的實驗中也選擇了 UDP模式。經過比較,決定選用RAW Connection(UDP Server/client)。 3.3 可尋址的IP地址范圍及端口號的設置 Op-mode還可對收發數據的客戶機或服務器的 IP地址范圍號和端口號進行設定,這一菜單項特別重要,關系到數據收發的成敗,需要仔細設置。 3.3.1 IP地址范圍的設置 需要對(S2E)和(E2S)的可尋址IP范圍進行設定,它決定了可進行數據交互的網絡端計算機和Nport Express的IP地址范圍, 這個參數是絕對重要的,數據的往來都是以它為目標進行尋址的,必須對它進行合理的設定。需要進行交互的計算機IP地址一定要包含在內,如果一項設置包含的IP地址太多,而中間有很多IP地址并不需要交互,可以把IP地址范圍分段設定,最多可以分為四段。 3.3.2 端口號的設置 端口號分為遠程端口號和本地端口號. 無論TCP還是UDP連接方式,數據報都是根據IP地址和端口號達到目的地的,在使用時可以為Nport Express設定一個合適的端口號,即遠程端口,一般可自由設定。本地端口指的是要與Nport Express進行數據交互的網絡終端計算機的端口號,它的設定以不與計算機外設的缺省端口號沖突為原則。只有IP地址在可尋址范圍內,且本地端口號與Nport Express的設定相一致的網絡終端計算機才能實現與Nport Express的數據交互。 3.4 串行口參數的設置 第三個菜單項SerialPort為串行口的設置,包括波特率、奇偶校驗、數據位、流控等參數的設置,這些參數的設置必須和單片機的串口傳送參數相一致,否則,數據將不能被正確的收發。 3.5 利用Monitor 菜單項監控數據的收發 Monitor是另一個比較重要的菜單選項,從這個窗口中,我們可以檢查串行口參數的設置情況,其中的兩個參數TX、RX比較重要,顯示了Nport Express的收發數據量,從而也為我們判斷Nport Express是否工作正常提供了依據。 4 單片機接入 以上對Nport Express的參數進行了比較詳盡的設置,作為單片機接入網絡的關鍵設備,Nport Express起到了一個單片機網卡的作用,它是串行口數據往來的通道,而單片機作為現場設備檢測控制裝置,是實現數據交互的門戶。利用單片機采集各種數據,并從串行口發出,當然電平轉換必不可少,如利用MAX232或HIN232CP芯片,轉換成232電平,接入Nport Express的串行口輸入口。其中,關鍵之處在于單片機波特率和握手協議的設定,一定要與Nport Express相一致,才能實現數據的正確傳輸[4] 。單片機的初始化與收發程序分別如下: MAIN:MOV TH1, #0FDH MOV TL1, #0FDH MOV T MOD, #20H SETB TR1 MOV PCON, #00H MOV SCON, #50H MOV R1, #30H CLR TI CLR RI ;以下為接收程序 RECE: MOV @R1, SBUF NN: JNB RI, NN CLR RI INC R1 ;以下為發送程序 SEND: MOV SBUF, #41H ;發送字符A MM: JNB TI, MM CLR TI AJMP SEND 單片機的波特率設定為9600 bps,數據的收發采用中斷方式,當單片機收到網絡端發來的控制命令時便可觸發執行相應的操作,實現遠程監控的目的。其原理圖如圖2所示。 5 網絡端編程 5.1 網絡控件的選擇 為完成數據的采集處理和對單片機的控制,需要在客戶機或終端服務器設計一軟件平臺,實現客戶機與Nport Express通過以太網的交互。Nport Express驅動模式支持的開發語言很多,如VC,VB,Delphi, C等。因為VB操作界面簡單,串行通信與網絡接入控件使用方便,故此選擇VB編寫前臺控制程序。VB中有三個internet控件:internet Transfer, webBrowser, WinSock,都是ActiveX控件,可以用來實現每一層Internet 通信的訪問。 在VB中利用Winsock控件,可以為兩個或多個Internet節點建立連接并使之交換數據。對用戶來說,Winsock控件是不可見的,它提供了訪問 TCP和UDP網絡服務的方便途徑,編寫客戶或服務器應用程序時,可不必了解TCP的細節或調用低級的Winsock APIs。通過設置控件的屬性并調用其方法就可以連接到一臺遠程機器上,并且還可雙向交換數據。 5.2 Winsock的屬性設置 Winsock的屬性主要有以下四個: (a) Protocol ,返回或設置Winsock空間所使用的協議,本文選用UDP; (b)RemoteHostIP,遠程主機IP地址,本文中即Nport Express的實際IP地址; (c)RemotePort, 要連接的遠程端口號,要與Nport Express的設置相一致; (d)LocalPort, 本地端口,即與Nport Express進行數據交互的計算機端口號,可自由設定,但要與Nport Express中的設置值相一致。 5.3 利用Winsock實現數據的收發[5] 調用Winsock的SendData方法,可以發送數據到網絡,經Nport Express傳輸到單片機,實現前臺對現場設備的遠程控制,最簡單的調用方法如: Private Sub Timer1_Timer() Winsock1.SendData (Text1.Text) End Sub 由一個時鐘控件觸發Winsock控件的SendData 方法,實現數據向網絡的傳輸,并經Nport Express,傳送到單片機,實現控制命令的傳送,當然也可以由其他事件觸發。 調用GetData方法,可獲得單片機發送到網絡上的數據流,這個方法一般在Winsock的DataArrival事件中使用。例如,一段數據接收程序如下: Private Sub Winsock1_DataArrival (ByVal bytesTotal As Long) Dim strdata As String Winsock1.GetData strdata, vbString List1.AddItem strdata End Sub 則單片機發出的數據流將自動添加到列表框中。值得特別注意的一點是,必須對Winsock的Bind屬性賦予合理的初值,并且要與Nport Express的本地端口值一致。數據的具體處理涉及到很多方面的內容,如通信協議的制定,低層數據庫的建立與數據更新等,在此不一一累述。 6 結束語 以太網作為IT產業的主要通信骨干,已是眾所周知的事實,并且在與人類生活息息相關的信息產業上得到了大量應用,面對這股網絡化的潮流,身為所有產業基礎建設的工業自動化系統,也應廣泛的應用TCP/IP以太網作為系統通信界面,提高系統自動化的能力。利用摩莎公司的Nport Express產品實現單片機接入以太網,達到了遠程測量和控制的目的,簡單易用、成本適中、效果明顯是串行通信網絡化的一種可行的方案。 |