通信接口協議綜述
在現場數據采集和數據傳輸中大量采用接口方式,監控系統涉及較多的是串行通信接口和網絡接口。
一、串行通信協議
計算機與外設或計算機之間的通信通常有兩種方式:并行通信和串行通信。
并行通信指數據的各位同時傳送。并行方式傳輸數據速度快,但占用的通信線多,傳輸數據的可靠性隨距離的增加而下降,只適用于近距離的數據傳送。
串行通信是指在單根數據線上將數據一位一位地依次傳送。發送過程中,每發送完一個數據,再發送第二個,依此類推。接受數據時,每次從單根數據線上一位一位地依次接受,再把它們拼成一個完整的數據。在遠距離數據通信中,一般采用串行通信方式,它具有占用通信線少、成本低等優點。
1、串行通信的基本概念
(1)同步和異步通信方式
串行通信有兩種最基本的通信方式:同步串行通信方式和異步串行通信方式。同步串行通信方式是指在相同的數據傳送速率下,發送端和接受端的通信頻率保持嚴格同步。由于不需要使用起始位和停止位,可以提高數據的傳輸速率,但發送器和接受器的成本較高。異步串行通信是指發送端和接受端在相同的波特率下不需要嚴格地同步,允許有相對的時間時延,即收、發兩端的頻率偏差在10%以內,就能保證正確實現通信。
異步通信在不發送數據時,數據信號線上總是呈現高電平狀態,稱為空閑狀態(又稱MARK狀態)。當有數據發送時,信號線變成低電平,并持續一位的時間,用于表示發送字符的開始,該位稱為起始位,也稱SPACE狀態。起始位之后,在信號線上依次出現待發送的每一位字符數據,并且按照先低位后高位的順序逐位發送。采用不同的字符編碼方案,待發送的每個字符的位數不同,在5、6、7或8位之間選擇。數據位的后面可以加上一位奇偶校驗位,也可以不加,由編程指定。最后傳送的是停止位,一般選擇1位、1.5位或2位。
(2)數據傳送方式
①單工方式。單工方式采用一根數據傳輸線,只允許數據按照固定的方向傳送。圖8(a)中A只能作為發送器,B只能作為接收器,數據只能從A傳送到B,不能從B傳送到A。
②半雙工方式。半雙工方式采用一根數據傳輸線,允許數據分時地在兩個方向傳送,但不能同時雙向傳送。圖8(b)中在某一時刻,A為發送器,B為接收器,數據從A傳送到B;而在另一個時刻,A可以作為接收器,B作為發送器,數據從B傳送到A。
③全雙工方式。全雙工方式采用兩根數據傳輸線,允許數據同時進行雙向傳送。圖8(c)中A和B具有獨立的發送器和接收器,在同一時刻,既允許A向B發送數據,又允許B向A發送數據。
(3)波特率
波特率是指每秒內傳送二進制數據的位數,以b/s和bps(位/秒)為單位。它是衡量串行數據傳送速度快慢的重要指標和參數。計算機通信中常用的波特率是:110,300,600,1200,2400,4800,9600,19200bps。
(4)串行通信的檢錯和糾錯
在串行通信過程中存在不同程度的噪聲干擾,這些干擾有時會導致在傳輸過程中出現差錯。因此在串行通信中對數據進行校驗是非常重要的,也是衡量通信系統質量的重要指標。檢錯,就是如何發現數據傳輸過程中出現的錯誤,而糾錯就是在發現錯誤后,如何采取措施糾正錯誤。
①誤碼率
誤碼率是指數據經傳輸后發生錯誤的位數與總傳輸位數之比。在計算機通信中,一般要求誤碼率達到10-6數量級。誤碼率與通信過程中的線路質量、干擾、波特率等因素有關。
②奇偶校驗
奇偶校驗是常用的一種檢錯方式。奇偶校驗就是在發送數據位最后一位添加一位奇偶校驗位(0或1),以保證數據位和奇偶校驗位中1的總和為奇數或偶數。若采用偶校驗,則應保證1的總數為偶數;若采用奇校驗,則應保證1的總和為奇數。在接受數據時,CPU應檢測數據位和奇偶校驗位中1的總數是否符合奇偶校驗規則,如果出現誤碼,則應轉去執行相應的錯誤處理服務程序,進行后續糾錯。
③糾錯
在基本通信規程中一般采用奇偶校驗或方陣碼檢錯,以重發方式進行糾錯。在高級通信中一般采用循環冗余碼(CRC)檢錯,以自動糾錯方式來糾錯。一般說來,附加的冗余位越多,檢測、糾錯能力就越強,但通信效率也就越低。
2、串行通信接口標準
串行通信接口按電氣標準及協議來分包括RS-232、RS-422、RS485、USB等。 RS-232、RS-422與RS-485標準只對接口的電氣特性做出規定,不涉及接插件、電纜或協議。USB是近幾年發展起來的新型接口標準,主要應用于高速數據傳輸領域。
(1)RS-232串行接口
目前RS-232是PC機與通信工業中應用最廣泛的一種串行接口。RS-232被定義為一種在低速率串行通信中增加通信距離的單端標準。RS-232采取不平衡傳輸方式,即所謂單端通信。典型的RS-232信號在正負電平之間擺動,在發送數據時,發送端驅動器輸出正電平在+5~+15V,負電平在-5~-15V電平。當無數據傳輸時,線上為TTL電平,從開始傳送數據到結束,線上電平從TTL電平到RS-232電平再返回TTL電平。接收器典型的工作電平在+3~+12V與-3~-12V。RS-232是為點對點(即只用一對收、發設備)通信而設計的,其驅動器負載為3~7kΩ。由于RS-232發送電平與接收電平的差僅為2V至3V左右,所以其共模抑制能力差,再加上雙絞線上的分布電容,其傳送距離最大為約30米,最高速率為20kb/s。所以RS-232適合本地設備之間的通信。可以通過測量DTE的Txd(或DCE的Rxd)和Gnd之間的電壓了解串口的狀態,在空載狀態下,它們之間應有約-10V左右(-5~-15V)的電壓,否則該串口可能已損壞或驅動能力弱。
①管腳定義
RS-232物理接口標準可分成25芯和9芯D型插座兩種,均有針、孔之分。其中TX(發送數據)、RX(接受數據)和GND(信號地)是三條最基本的引線,就可以實現簡單的全雙工通信。DTR(數據終端就緒)、DSR(數據準備好)、RTS(請求發送)和CTS(清除發送)是最常用的硬件聯絡信號。
表1-8-1 RS232接口中DB9、DB25管腳信號定義
9針 25針 信號名稱 信號流向 簡稱 信號功能
3 2 發送數據 DTE —>DCE TxD DTE發送串行數據
2 3 接收數據 DTE <—DCE RxD DTE接受串行數據
7 4 請求發送 DTE —>DCE RTS DTE請求切換到發送方式
8 5 清除發送 DTE <—DCE CTS DCE已切換到準備接受
6 6 數據設備就緒 DTE <—DCE DSR DCE準備就緒可以接受
5 7 信號地 GND 公共信號地
1 8 載波檢測 DTE <—DCE DCD DCE已接受到遠程載波
4 20 數據終端就緒 DTE —>DCE DTR DTE準備就緒可以接受
9 22 振鈴指示 DTE <—DCE RI 通知DTE,通訊線路已接通
按照RS232標準,傳輸速率一般不超過20kbps,傳輸距離一般不超過15M。實際使用時通信速率最高可達115200bps。
②RS232串行接口基本接線原則
設備之間的串行通信接線方法,取決于設備接口的定義。設備間采用RS232串行電纜連接時有兩類連接方式:
直通線:即相同信號(Rxd對Rxd、Txd對Txd)相連,用于DTE(數據終端設備)與DCE(數據通信設備)相連。如計算機與MODEM(或DTU)相連。
交叉線:即不同信號(Rxd對Txd、Txd對Rxd)相連,用于DTE與DTE相連。如計算機與計算機、計算機與采集器之間相連。
以上兩種連接方法可以認為同種設備相連采用交叉線連接,不同種設備相連采用直通線連接。在少數情況下會出現兩臺具有DCE接口的設備需要串行通信的情況,此時也用交叉方式連接。當一臺設備本身是DTE,但它的串行接口按DCE接口定義時,應按DCE接線。如艾默生網絡能源有限公司生產的一體化采集器IDA采集模塊上的調測接口是按DCE接口定義的,當計算機與IDA采集模塊的調測口連接時就要采用直通串行電纜。
一般地,RS232接口若為公頭,則該接口按DTE接口定義;若為母頭,則該接口按DCE接口定義。但注意也有反例,不能一概而論。(一些DTE設備上的串行接口按DCE接口定義而采用DB9或DB25母接口的原因主要是因為DTE接口一般都采用公頭,當人用手接觸時易接觸到針腳;采用母頭時因不易碰到針腳,可避免人體靜電對設備的影響。)
對于某些設備上的非標準RS232接口,需要根據設備的說明書確定針腳的定義。如果已知Txd、Rxd和Gnd三個針腳,但不清楚哪一個針腳是Txd,哪一個針腳是Rxd,可以通過用萬用表測量它們與Gnd之間的電壓來判別,如果有一個電壓為-10V左右,則萬用表紅表筆所接的是DTE的Txd或DCE的Rxd。
③RS232的三種接線方式
三線方式:即兩端設備的串口只連接收、發、地三根線。一般情況下,三線方式即可滿足要求,如監控主機與采集器及大部分智能設備之間相連。
簡易接口方式:兩端設備的串口除了連接收、發、地三根線外,另外增加一對握手信號(一般是DSR和DTR)。具體需要哪對握手信號,需查閱設備接口說明。
完全口線方式:兩端設備的串口9線全接。
此外,有些設備雖然需要握手信號,當并不需要真正的握手信號,可以采用自握手的方式。
(2)RS-422/485串行接口
①平衡傳輸
RS-422由RS-232發展而來。為改進RS-232通信距離短、速度低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mbit/s,并允許在一條平衡總線上連接最多10個接收器。RS-422是一種單機發送、多機接收的單向、平衡傳輸規范。
RS-422的數據信號采用差分傳輸方式,也稱作平衡傳輸。它使用一對雙絞線,將其中一線定義為A,另一線定義為B,如圖1-8-8。通常情況下,發送驅動器A、B之間的正電平在+2~+6V,是一個邏輯狀態,負電平在-2~-6V,是另一個邏輯狀態。另有一個信號地C,在RS-485中還有一“使能”端, “使能”端是用于控制發送驅動器與傳輸線的切斷與連接。當“使能”端起作用時,發送驅動器處于高阻狀態,稱作“第三態”,即它是有別于邏輯“1”與“0”的第三態。
接收器也作與發送端相應的規定,收、發端通過平衡雙絞線將AA與BB對應相連,當在收端AB之間有大于+200mV的電平時,輸出正邏輯電平,小于-200mV時,輸出負邏輯電平。接收器接收平衡線上的電平范圍通常在200mV至6V之間。
②RS-422
RS-422標準全稱是“平衡電壓數字接口電路的電氣特性”,它定義了接口電路的特性。圖1-8-9是典型的RS-422四線接口。實際上還有一根信號地線,共5根線。由于接收器采用高輸入阻抗和發送驅動器比RS232更強的驅動能力,故允許在相同傳輸線上連接多個接收節點,最多可接10個節點。即一個主設備(Master),其余為從設備(Salve),從設備之間不能通信,所以RS-422支持點對多的雙向通信。RS-422四線接口由于采用單獨的發送和接收通道,因此不必控制數據方向,各裝置之間任何必須的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨的雙絞線)實現。
RS-422的最大傳輸距離為4000英尺(約1200米),最大傳輸速率為10Mb/s。其平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能達到最大傳輸距離。只有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為1Mb/s。
RS422接口的定義很復雜,一般只使用四個端子,其針腳定義分別為TX+、TX-、RX+、RX-,其中TX+和TX-為一對數據發送端子,RX+和RX-為一對數據接收端子,參見圖1-8-10。RS422采用了平衡差分電路,差分電路可在受干擾的線路上拾取有效信號,由于差分接收器可以分辨0.2V以上的電位差,因此可大大減弱地線干擾和電磁干擾的影響,有利于抑制共模干擾,傳輸距離可達1200米。
另外和RS232不同的是,在一RS422總線上可以掛接多臺設備組網,總線上連接的設備RS422串行接口同名端相接,與上位機則收發交叉,可以實現點到多點的通信,如圖1-8-11所示。(RS232只能點到點通信,不能組成串行總線。)
通過RS422總線與計算機某一串口通信時,要求各設備的的通信協議相同。為了在總線上區分各設備,各設備需要設置不同的地址。上位機發送的數據所有的設備都能接收到,但只有地址符合上位機要求的設備響應。
③RS-485
為擴展應用范圍,EIA在RS-422的基礎上制定了RS-485標準,增加了多點、雙向通信能力,通常在要求通信距離為幾十米至上千米時,廣泛采用RS-485收發器。
RS-485收發器采用平衡發送和差分接收,即在發送端,驅動器將TTL電平信號轉換成差分信號輸出;在接收端,接收器將差分信號變成TTL電平,因此具有抑制共模干擾的能力,加上接收器具有高的靈敏度,能檢測低達200mV的電壓,故數據傳輸可達千米以外。
RS-485許多電氣規定與RS-422相仿。如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線制可實現真正的多點雙向通信。而采用四線連接時,與RS-422一樣只能實現點對多的通信,即只能有一個主(Master)設備,其余為從設備,但它比RS-422有改進,無論四線還是二線連接方式總線上可連接多達32個設備,SIPEX公司新推出的SP485R最多可支持400個節點。
RS-485與RS-422的共模輸出電壓是不同的。RS-485共模輸出電壓在-7V至+12V之間, RS-422在-7V至+7V之間,RS-485接收器最小輸入阻抗為12KΩ;RS-422是4kΩ;RS-485滿足所有RS-422的規范,所以RS-485的驅動器可以用在RS-422網絡中應用。但RS-422的驅動器并不完全適用于RS-485網絡。
RS-485與RS-422一樣,最大傳輸速率為10Mb/s。當波特率為1200bps時,最大傳輸距離理論上可達15千米。平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能使用規定最長的電纜長度。
RS-485需要2個終接電阻,接在傳輸總線的兩端,其阻值要求等于傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。
RS485是RS422的子集,只需要DATA+(D+)、DATA-(D-)兩根線。RS485與RS422的不同之處在于RS422為全雙工結構,即可以在接收數據的同時發送數據,而RS485為半雙工結構,在同一時刻只能接收或發送數據。
RS485總線上也可以掛接多臺設備,用于組網,實現點到多點及多點到多點的通信(多點到多點是指總線上所接的所有設備及上位機任意兩臺之間均能通信)。
連接在RS485總線上的設備也要求具有相同的通信協議,且地址不能相同。在不通信時,所有的設備處于-為了抑制干擾,RS485總線常在最后一臺設備之后接入一個120歐的電阻。
很多設備同時有RS485接口方式和RS422接口方式,常共用一個物理接口,見圖1-8-14。圖中,RS485的D+和D-與RS422的T+和T-共用。
(3)RS232/422/485串行通信接口性能比較。
表1-8-2 RS232、RS422、RS-485接口性能比較
接口性能 RS-232 RS422 RS485
操作方式 電平 差分 差分
最大傳輸速率
最大傳輸距離 20kb/s
(15m) 10Mb/s(12m)1Mb/s(120m)
100kb/s(1200m) 10Mb/s(12m)1Mb/s(120m)
100kb/s(1200m)
驅動器
輸出電壓 無負載時 ±5V~±15V ±5V ±5V
有負載時 ±2V ±1.5V ±1.5V
驅動器負載阻抗 3kΩ~7kΩ 100Ω(min ) 54Ω(min)
接收輸入阻抗 3kΩ~7kΩ 4kΩ 12kΩ
接收器靈敏度 ±3V ±200mV ±200mV
工作方式 全雙工 全雙工 半雙工
連接方式 點到點 點到多點 多點到多點
(4)USB接口
USB,全稱是Universal Serial Bus(通用串行總線),它是在1994年底由康柏、IBM、Microsoft等多家公司聯合制訂的,但是直到1999年,USB才真正被廣泛應用。自從1994年11月11日發表了USB V0.7以后,USB接口經歷了六年的發展,現在USB已經發展到了2.0版本。USB接口的特點是:
①數據傳輸速率高。USB標準接口傳輸速率為12Mbps,最新的USB2.0支持最高速率達480Mbps。同串行端口比,USB大約快1000倍;同并行端口比,USB端口大約快50%。
②數據傳輸可靠。USB總線控制協議要求在數據發送時含有3個描敘數據類型、發送方向和終止標志、USB設備地址的數據包。USB設備在發送數據時支持數據偵錯和糾錯功能,增強了數據傳輸的可靠性。
③同時掛接多個USB設備。USB可通過菊花鏈的形式同時掛接多個USB設備,理論上可達127個。
④USB接口能為設備供電。USB線纜中包含有兩根電源線及兩根數據線。耗電比較少的設備可以通過USB口直接取電。可通過USB口取電的設備又分低電量模式和高電量模式,前者最大可提供100毫安的電流,而后者則是500毫安。
⑤支持熱插拔。在開機情況下,可以安全地連接或斷開設備,達到真正的即插即用。
USB還具有一些新的特性,如:實時性(可以實現和一個設備之間有效的實時通信)、動態性(可以實現接口間的動態切換)、聯合性(不同的而又有相近的特性的接口可以聯合起來)、多能性(各個不同的接口可以使用不同的供電模式)。
二、計算機網絡和TCP/IP協議
(一)OSI模型
OSI(OSI-Open System Interconnection)開放系統互聯參考模型是為不同開放系統的應用進程之間進行通信所定義的標準。OSI包含兩部分: ISO/OSI/RM (ISO7498)、服務與協議。 OSI參考模型將整個網絡分為七層。
(1)物理層是OSI參考模型的最低層,與傳輸媒體直接相連,主要作用是建立、保持和斷開物理連接,以確保二進制比特流的正確傳輸。物理層協議規定了數據終端設備(DTE)與數據通訊設備(DCE)之間的接口標準。規定了接口的4個特性:機械特性、電器特性、功能特性和規程特性。這里的DTE(Data Terminal Equipment)數據終端設備是具有一定數據處理能力和數據轉發能力的設備,DCE(Data Circuit-Terminal Equipment)數據鏈路端接設備(通信設備)的作用是在DTE和傳輸線路之間提供信號變換和編碼的功能。物理層協議包括RS-232、RS-449、V.24、V.35、X.21等。
(2)數據鏈路層是OSI參考模型的第二層,主要負責數據鏈路的建立、維持和拆除,確保在一段物理鏈路上數據幀的正確傳輸。
(3)網絡層是OSI模型的第三層,又叫通信子網層,主要用于控制通信子網的運行。網絡層主要作用是將從高層傳送下來的數據分組打包,再進行必要的路由選擇、流量控制、差錯控制、順序檢測等處理,使數據正確無誤地傳送到目的端。網絡層協議包括IP、RARP、ARP(TCP/IP)、IPX、DECNET、AppleTalk、X.25等。
(4)傳輸層(Transport Layer)位于資源子網和通信子網之間,是通信子網和資源子網的橋梁。傳輸層的主要作用是為利用通信子網進行通信的兩個主機,提供端到端的可靠的、透明的通信服務。它與應用進程相關。TCP、UDP是傳輸層協議。
(5)第五、六、七層是面向信息處理的高層協議。會話層的主要作用是組織并協商兩個應用進程之間的會話,并管理它們之間的數據交換。表示層解決用戶信息的語法表示問題,主要目的是使數據保持原來的含義。應用層是OSI模型的最高層,是唯一直接向應用程序提供服務的一層,它直接面向用戶,以滿足用戶的不同需求。