1. 程式人生 > >串列埠資料轉乙太網

串列埠資料轉乙太網

1.概述

  串列埠轉乙太網目前可以採用串列埠轉乙太網模組來實現,變得非常簡單易用,但是在該技術中出現的一些新問題、使用誤區需要引起注意。串列埠轉乙太網並不是簡單傳輸媒介的變化,而是串列埠到TCP/IP的協議轉化。其中關係到的關鍵技術包括:TCP/IP的工作模式問題、串列埠分幀技術、9位技術。這裡詳細分析這些串列埠轉網口的技術。 2.澄清一個概念:到底是串列埠轉乙太網還是串列埠轉TCP/IP?   串列埠一般來說就是UART,它實際只定義了資料鏈路層的規範,也就是起始位、資料位、停止位。但是在不同的物理層又分為:TTL串列埠、RS232串列埠、RS485串列埠等。  TTL串列埠:它是MCU晶片之間進行資料通訊的串列埠,它以+5V(或者+3.3V)表示1,以GND表示0。  RS232串列埠:它是實現裝置之間通訊的串列埠,其主要將訊號電壓從0~5V的電壓變為±15V(實際一般為±12V)。電壓的增加,增大了資料傳輸的距離和可靠性。  RS485串列埠:它是實現遠距離通訊的串列埠,可以實現上千米的資料傳輸。其主要特徵是用差模訊號(A、B兩根線之間的電壓)代替了RS232共模訊號(訊號線和GND之間的電壓),從而能夠抵抗共模干擾,實現更遠距離的傳。    如果按照ISO的7層模型(物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層)來分的話,串列埠實際上只包含了物理層、資料鏈路層。而TCP/IP協議應該屬於網路層和傳輸層。所以串列埠轉TCP/IP並不準確。乙太網屬於物理層和資料鏈路層,所以串列埠轉乙太網更加準確。   由於目前在乙太網之上執行的協議多半是TCP IP協議,所以串列埠轉乙太網也可以說成是串列埠轉TCP IP。 3.串列埠轉網口關鍵技術一:TCP/IP的工作模式問題   串列埠轉乙太網,並不是簡單物理層和資料鏈路層的轉化。由於串列埠協議本身不具有網路層和傳輸層,串列埠轉乙太網,實際是將串列埠的資料作為TCP/IP的應用層資料,用TCP/IP封裝傳輸的方式。TCP/IP的應用層資料是TCP/IP所要傳送的真正有效的資料。例如使用者通過socket的recv()和send()函式接收和傳送的實際是應用層資料。這樣通過串列埠轉TCP IP使用者就可以用recv()和send()函式收發串列埠資料了。    但是TCP/IP並不只是recv()和send()這麼簡單,根據工作模式的不同,它關係到連線、關閉、監聽等,這是串列埠轉網口後需要增加處理的部分。TCP IP的工作模式可以分為:TCP服務端模式(TCP Server)、TCP客戶端模式(TCP Client)、UDP模式。   UDP模式:UDP模式是基於非連線的模式,只要有資料傳送即可傳送,不需要事先連線。所以這種模式更加地接近於串列埠的通訊方式。但是UDP協議無法保證資料不丟失,容易產生誤碼。   TCP模式:TCP模式採用資料可靠傳輸機制,所以可以保證資料基本不誤碼、不丟失。在TCP通訊中,必然是由通訊的兩端構成,其中一方是TCP客戶端,一方是TCP服務端。TCP客戶端和TCP服務端的概念可以用電話來類比。TCP客戶端是打電話的人,而TCP服務端是接電話的人。   如何選擇TCP/IP的工作模式? TCP與UDP的選擇:儘量選擇TCP模式,特別是經過internet的大資料量傳輸,udp容易誤碼和丟失。  選擇TCP客戶端還是TCP伺服器端:請遵循以下原則:  原則一:發起資料傳送的一方應該選擇為客戶端。例如一個數據採集系統,採集終端應該為客戶端。這是因為當TCP連線斷開的情況下,客戶端能夠在需要傳送資料的時候主動建立連線。而TCP服務端,只能夠被動地接受連線,使得資料無法傳送出去。  原則二:IP或者域名固定的一方為伺服器端。例如在有多個數據採集終端,而只有一箇中心伺服器的情況下,中心伺服器應該為服務端。這是因為,中心伺服器的IP或域名一般是固定的,而採集終端的IP是不斷增加和變化的。中心伺服器難以記住所有的採集終端的IP,所以也難以發起連線;而採集終端尋找中央伺服器就比較容易。  4.串列埠轉網口關鍵技術二:串列埠分幀技術   串列埠資料是可以連續不斷髮送的,而乙太網資料則是以資料包為單位傳送的。這樣就關係到將多長的串列埠資料打包後作為一個乙太網資料包傳送的問題。   資料包長度:乙太網資料包最長1500多位元組,所以在串列埠轉網口轉發器收到1500位元組後必須將其打包傳送。使用者可以設定這個資料包長度上限。   資料包間隔:除了資料包長度作為串列埠分幀的規則外,一個更為符合邏輯的方法是通過資料包間隔。當串列埠轉TCP IP轉發器發現的串列埠資料流中出現了T毫秒的空閒時間時,則認為之前收到的串列埠資料可以作為一個乙太網資料包傳送了。這裡的T就是使用者設定的資料包間隔。 串列埠轉網口關鍵技術三:9位技術   乙太網資料是以位元組Byte計算的每個位元組都是8位,但是串列埠資料則有可能出現9位,第9位常常用於區分是地址幀還是資料幀,1表示地址幀0表示資料幀。那麼在當串列埠轉化為乙太網之後,如何將第9位也傳送出去就成了一個關鍵技術。   在眾多的串列埠轉網口方案中都是將第9位直接捨棄的,目前據瞭解上海卓嵐資訊科技的方案具有快速地適應9位的功能,其實現方法中採用了稱之為RealCom的協議。由於增加了第9位,所以串列埠資料不能夠直接透明地轉化為TCP IP應用層資料,realcom 協議將串列埠資料打包之後整個作為TCP IP的應用資料傳輸。這樣可以在realcom協議的協議頭部加入該資料包的9位是1還是0的資訊,從而實現了9位傳輸技術。

--------------------- 本文來自 Johnny-CC 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/yandaqijian/article/details/44080259?utm_source=copy