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的工作模式問題
串(chuan)口(kou)轉(zhuan)以(yi)太(tai)網(wang),並(bing)不(bu)是(shi)簡(jian)單(dan)物(wu)理(li)層(ceng)和(he)數(shu)據(ju)鏈(lian)路(lu)層(ceng)的(de)轉(zhuan)化(hua)。由(you)於(yu)串(chuan)口(kou)協(xie)議(yi)本(ben)身(shen)不(bu)具(ju)有(you)網(wang)絡(luo)層(ceng)和(he)傳(chuan)輸(shu)層(ceng),串(chuan)口(kou)轉(zhuan)以(yi)太(tai)網(wang),實(shi)際(ji)是(shi)將(jiang)串(chuan)口(kou)的(de)數(shu)據(ju)作(zuo)為(wei)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或(huo)者(zhe)域(yu)名(ming)固(gu)定(ding)的(de)一(yi)方(fang)為(wei)服(fu)務(wu)器(qi)端(duan)。例(li)如(ru)在(zai)有(you)多(duo)個(ge)數(shu)據(ju)采(cai)集(ji)終(zhong)端(duan),而(er)隻(zhi)有(you)一(yi)個(ge)中(zhong)心(xin)服(fu)務(wu)器(qi)的(de)情(qing)況(kuang)下(xia),中(zhong)心(xin)服(fu)務(wu)器(qi)應(ying)該(gai)為(wei)服(fu)務(wu)端(duan)。這(zhe)是(shi)因(yin)為(wei),中(zhong)心(xin)服(fu)務(wu)器(qi)的(de)IP或域名一般是固定的,而采集終端的IP是不斷增加和變化的。中心服務器難以記住所有的采集終端的IP,所以也難以發起連接;而采集終端尋找中央服務器就比較容易。
4.串口轉網口關鍵技術二:串口分幀技術
串(chuan)口(kou)數(shu)據(ju)是(shi)可(ke)以(yi)連(lian)續(xu)不(bu)斷(duan)發(fa)送(song)的(de),而(er)以(yi)太(tai)網(wang)數(shu)據(ju)則(ze)是(shi)以(yi)數(shu)據(ju)包(bao)為(wei)單(dan)位(wei)發(fa)送(song)的(de)。這(zhe)樣(yang)就(jiu)關(guan)係(xi)到(dao)將(jiang)多(duo)長(chang)的(de)串(chuan)口(kou)數(shu)據(ju)打(da)包(bao)後(hou)作(zuo)為(wei)一(yi)個(ge)以(yi)太(tai)網(wang)數(shu)據(ju)包(bao)發(fa)送(song)的(de)問(wen)題(ti)。
數據包長度:以太網數據包最長1500多字節,所以在串口轉網口轉發器收到1500字節後必須將其打包發送。用戶可以設定這個數據包長度上限。
數據包間隔:除了數據包長度作為串口分幀的規則外,一個更為符合邏輯的方法是通過數據包間隔。當串口轉TCP IP轉發器發現的串口數據流中出現了T毫秒的空閑時間時,則認為之前收到的串口數據可以作為一個以太網數據包發送了。這裏的T就是用戶設定的數據包間隔。
5.串口轉網口關鍵技術三:9位技術
以太網數據是以字節Byte計算的每個字節都是8位,但是串口數據則有可能出現9位,第9位常常用於區分是地址幀還是數據幀,1表示地址幀0表示數據幀。那麼在當串口轉化為以太網之後,如何將第9位也傳送出去就成了一個關鍵技術。
在眾多的串口轉網口方案中都是將第9位直接舍棄的,目前據了解賽遠自動化的方案具有快速地適應9位的功能,其實現方法中采用了稱之為RealCom的協議。由於增加了第9位,所以串口數據不能夠直接透明地轉化為TCP IP應用層數據,realcom 協議將串口數據打包之後整個作為TCP IP的應用數據傳輸。這樣可以在realcom協議的協議頭部加入該數據包的9位是1還是0的信息,從而實現了9位傳輸技術。
|