大家好,很高興和各位一起分享我的文章,喜歡和支持我的工程師,一定記得給我點贊、收藏、分享。
加微信[xyzn3333]與作者溝通交流,免費獲取更多單片機與嵌入式的海量電子資料。
有大量可用的串行接口,UART?232?422?485?CAN?很難理解它們的區(qū)別以及何時使用它們。對于工業(yè)領(lǐng)域的應(yīng)用,并非所有的串行接口都是一樣的。RS-485 串行接口符合高速和工業(yè)穩(wěn)健性的要求,已成為旋轉(zhuǎn)編碼器和其他運動控制設(shè)備廣泛實施的接口。
一:什么是RS-485?
RS-485 是一種工業(yè)規(guī)范,定義了電氣設(shè)備點對點通信的電氣接口和物理層。RS-485 標準允許在電噪聲環(huán)境中實現(xiàn)較長的布線距離,并且可以支持同一總線上的多個設(shè)備。
二:什么時間?為什么?在哪里用RS-485?
RS-485 早在 1998 年創(chuàng)建該標準時就已用于廣泛的計算機自動化系統(tǒng)。由于該標準允許多點(同一總線上的多個設(shè)備)和較長的電纜長度,因此很容易了解它在工業(yè)和自動化領(lǐng)域的頻繁使用。
在許多設(shè)備分布在巨大空間中的劇院應(yīng)用中也可以看到RS-485的身影。此外,RS-485 標準提供的抗噪能力使接口非常通用。工程師不僅將它用于長距離布線,而且還將其應(yīng)用到汽車行業(yè)等應(yīng)用中,在這些應(yīng)用中,不確定最終應(yīng)用中可能會遇到什么樣的噪音。
RS-485 能夠在高速、長電纜長度、電噪聲環(huán)境以及同一總線上的多個設(shè)備上使用,使其成為大多數(shù)需要串行接口的應(yīng)用的智能實現(xiàn)。
三:RS-485 標準
RS-485,也稱為 TIA-485 或 EIA-485,是為通信協(xié)議定義驅(qū)動器和接收器電氣特性的標準。開放系統(tǒng)互連 (OSI) 模型試圖描述通信系統(tǒng)的各個層,從最終應(yīng)用到電氣層,最后到物理層,如下圖1。
圖1 通信的OSI模型
四:OSI 模型的物理層
01、拓撲結(jié)構(gòu)
OSI 模型的物理層負責(zé)在設(shè)備和物理傳輸介質(zhì)之間傳輸原始數(shù)據(jù)。它處理電信號到數(shù)字數(shù)據(jù)的轉(zhuǎn)換,同時定義電壓、時序、數(shù)據(jù)速率等。RS-485 使用的兩條信號線,“A”和“B”,必須平衡和差分。平衡信號是在雙絞線電纜中共享一對的兩條線,每條線上的阻抗相同。除了線路的匹配阻抗外,接收器和發(fā)射器還必須有匹配的阻抗。
圖 2 顯示了一個典型的多點 RS-485 網(wǎng)絡(luò),其中每個設(shè)備都有一個差分 RS-485 收發(fā)器,設(shè)備之間的鏈路由雙絞線電纜和終端電阻組成。
圖2:RS-485總線的拓撲圖
請注意,針對RS-485總線,有多種拓撲可用于布置設(shè)備,因為并非所有網(wǎng)絡(luò)都是平等的,并且端接要求以及設(shè)備排列會有所不同。例如,在下面的圖 2 中,端接僅用于電纜的開頭和結(jié)尾。
02、差分信號
平衡布線可在使用差分信號時降低噪聲。這些信號“A”和“B”被稱為差分信號;其中一個信號與原始信號匹配,而另一個完全反轉(zhuǎn),這就是為什么它有時被稱為互補信號的原因。
在單端接口中,接收器將信號接地,并根據(jù)預(yù)定的電壓電平解析信號狀態(tài)(這些被稱為邏輯電平,因為它們確定信號是邏輯高還是邏輯低)。
然而,在電壓趨于下降和壓擺率下降的較長電纜距離上,經(jīng)常會發(fā)生信號錯誤。
在差分應(yīng)用中,主機生成原始單端信號,然后發(fā)送到差分發(fā)送器。該發(fā)送器創(chuàng)建差分對,通過電纜發(fā)送出去。生成兩個信號后,接收器不再將電壓電平參考到地,而是將信號相互參考。這意味著接收器不是尋找特定的電壓電平,而是始終查看兩個信號之間的差異。
然后,差分接收器將這對信號重構(gòu)回一個單端信號,主機設(shè)備可以使用主機所需的適當(dāng)邏輯電平來解釋該信號,圖 3。這種類型的接口還允許不同電壓電平的設(shè)備運行通過差分收發(fā)器之間的通信將它們連接在一起。所有這些共同作用以克服單端應(yīng)用在長電纜距離上可能發(fā)生的信號衰減。
03、差分信號應(yīng)對干擾
信號衰減并不是長電纜距離出現(xiàn)的唯一問題。電纜在系統(tǒng)內(nèi)的時間越長,電氣噪聲和干擾進入電纜并最終進入電氣系統(tǒng)的可能性就越大。當(dāng)噪聲耦合到電纜上時,它顯示為不同幅度的電壓,但使用平衡雙絞線電纜的好處是噪聲在每條線路上均等地耦合到電纜。例如,正的 1 伏尖峰將導(dǎo)致 A 上的 +1 V 和 B 上的 +1 V。
由于差分接收器將信號相互減去以獲得重建信號,它會忽略兩條線上同樣顯示的噪聲, 圖 4。差分接收器忽略兩條信號線上相同電壓的能力稱為共模抑制。
04、寬電壓范圍
RS-485 的其他主要物理層優(yōu)勢之一是信號電壓規(guī)范。RS-485 不需要使用特定的總線電壓,而是指定所需的最小差分電壓,即信號 A 和 B 電壓之間的差值。
總線要求接收器的最小差分電壓為±200 mV,通常所有 RS-485 設(shè)備都將具有相同的輸入電壓范圍,盡管以不同的電壓進行傳輸。這意味著任何 RS-485 設(shè)備都能夠接收 -7 至 12 V 的電壓范圍,因此工程師可以設(shè)計具有該范圍內(nèi)任何傳輸電壓的主機系統(tǒng)。這允許設(shè)計人員使用他們現(xiàn)有的電路板電壓創(chuàng)建 RS-485 系統(tǒng)。
四:OSI模型的數(shù)據(jù)鏈路層
RS-485 是一種雙工通信系統(tǒng),其中同一總線上的多個設(shè)備可以雙向通信。RS-485 最常用作半雙工,如上圖所示,只有一條通信線路(“A”和“B”成對)。在半雙工中,設(shè)備輪流使用同一條線路,在該線路中主機將斷言對總線的控制并發(fā)送命令,所有其他設(shè)備都在監(jiān)聽。接收者將監(jiān)聽其地址,然后該設(shè)備將斷言控制并做出響應(yīng)。
相反,在全雙工系統(tǒng)中,例如串行外設(shè)接口 (SPI) 或通用異步收發(fā)器 (UART),主機和從設(shè)備可以使用專用輸入和輸出線同時通信。
在數(shù)據(jù)層,RS-485 通常使用 UART 進行串行通信,主機 UART 以全雙工方式驅(qū)動和接收串行通信。它連接到構(gòu)成物理層的 RS-485 差分收發(fā)器,并將信號轉(zhuǎn)換為半雙工差分格式,以便在 RS-485 總線上使用。然后主機將通過 UART 與 RS-485 通信,并告訴收發(fā)器何時在發(fā)送和接收之間切換。從設(shè)備也將以同樣的方式使用它們的 UART。
UART 具有專用的發(fā)送和接收線路,使其能夠以全雙工、半雙工甚至單工方式運行,這意味著數(shù)據(jù)只能通過一條線路輸出或輸入。由于 RS-485 通常是半雙工的,因此連接到它的 UART 也將以半雙工方式運行。
UART 接口是異步的,這意味著通信不包括時鐘。主機和從設(shè)備必須使用它們自己的內(nèi)部時鐘,并且兩個設(shè)備都必須知道數(shù)據(jù)將以何種時鐘速率傳輸。
這與串行外設(shè)接口 (SPI) 等同步系統(tǒng)不同,其中一條信號線包含一個時鐘,總線上的監(jiān)聽設(shè)備可以在該時鐘上捕獲數(shù)據(jù)。
此外,UART 通常具有大多數(shù)設(shè)備將使用的正常格式,但可以配置許多選項來更改規(guī)范。UART 的空閑狀態(tài)是高電壓,因此要開始傳輸,UART 使用一個稱為起始位的低脈沖,然后是 8 位數(shù)據(jù),并以高停止位完成,圖 8。
主處理器將使用 IO 引腳將 RS-485 收發(fā)器置于發(fā)送模式,并將一個字節(jié)從 UART TX 線發(fā)送到 RS-485 收發(fā)器的數(shù)據(jù)(D 或 DI)線。收發(fā)器會將單端 UART 比特流轉(zhuǎn)換為 A 和 B 線上的差分比特流,圖 3。數(shù)據(jù)離開收發(fā)器后,主機立即將收發(fā)器模式切換為接收。
從機系統(tǒng)是相同的,這意味著從機 RS-485 收發(fā)器接收傳入的比特流,將其轉(zhuǎn)換為單端信號,并通過從機的 UART RX 線將其發(fā)送到主機設(shè)備。當(dāng)從設(shè)備準備好響應(yīng)時,它會像主機最初那樣發(fā)送,而主機現(xiàn)在接收,如下圖9。
五:OSI 模型的網(wǎng)絡(luò)層
網(wǎng)絡(luò)層處理發(fā)生在 RS-485 總線上的設(shè)備之間的實際通信。由于 RS-485 主要是一種電氣規(guī)范,因此對話可以到此結(jié)束,但由于它支持多點,因此需要在 OSI 模型中解決它。
對網(wǎng)絡(luò)層的尋址沒有固定的規(guī)范,但 RS-485 總線必須由主機正確管理以避免總線沖突。當(dāng)多個設(shè)備嘗試同時通信時會發(fā)生總線沖突,這對網(wǎng)絡(luò)非常有害。
當(dāng)發(fā)生沖突時,發(fā)射器在兩端發(fā)生沖突并有效地產(chǎn)生短路。這會導(dǎo)致每個設(shè)備消耗大量電流,從而使收發(fā)器進入熱關(guān)斷狀態(tài)。為避免沖突,主機控制總線并調(diào)用各個設(shè)備。這通常是通過擁有一個只有特定設(shè)備才能識別的命令集或通過為每個設(shè)備提供特定地址來實現(xiàn)的。
由于總線在所有設(shè)備之間共享,因此每個設(shè)備都會看到主設(shè)備發(fā)送的命令/地址,但只有在該單個設(shè)備被斷言時才會響應(yīng)。
六:OSI 模型的應(yīng)用層
OSI 模型不是一組規(guī)則,而更多是幫助工程師表征系統(tǒng)的模型。RS-485 很好地包含在 OSI 模型的前三層中,總線的實際實現(xiàn)在應(yīng)用層中進行了表征。這一層涵蓋了設(shè)備使用的地址或命令集以及數(shù)據(jù)的解釋。它還包括設(shè)計人員期望獲得多少數(shù)據(jù),以及對總線本身的控制。
例如,CUI Devices RS-485 編碼器的應(yīng)用程序?qū)⑹菑脑O(shè)備請求絕對位置的主機。當(dāng)主機發(fā)送編碼器的位置命令(地址)時,編碼器以兩個完整字節(jié)響應(yīng)。然后主機解密這些字節(jié)以了解絕對位置是什么,同時確定發(fā)送命令的頻率以及它想要將它們發(fā)送到哪些設(shè)備。簡單來說,應(yīng)用層就是RS-485總線的實現(xiàn)。
由于 RS-485 標準僅定義了具有尋址要求的物理和數(shù)據(jù)鏈路層,因此應(yīng)用層可以采用各種專有或開放的通信協(xié)議。工程師可以采用現(xiàn)有的協(xié)議,例如 Modbus,或者他們可以為他們的應(yīng)用定義自己的協(xié)議。例如,CUI Devices 的編碼器使用非常簡化的尋址結(jié)構(gòu)來斷言設(shè)備,從而實現(xiàn)快速周轉(zhuǎn)和最短處理時間。每個編碼器的地址只有一個字節(jié)的高六位,低兩位是命令。這允許編碼器在來自主機的單個字節(jié)后開始響應(yīng),確??焖僦苻D(zhuǎn)時間,這在運動控制應(yīng)用中至關(guān)重要。
七:結(jié)論
RS-485 支持高速、長電纜距離、電氣噪聲容限和同一總線上的多個設(shè)備,由于其在廣泛應(yīng)用中的多功能性,已成為旋轉(zhuǎn)編碼器中流行的串行接口。
希望使用帶有 RS-485 接口的編碼器的設(shè)計人員可以受益于對上述詳細信息的理解,包括其各個層、實現(xiàn)以及整個系統(tǒng)通信中的最佳實踐。
關(guān)注本公眾號,在后臺回復(fù)【485】,可以免費獲取本文相關(guān)的資料。