RS-485 串行接口說明
有大量可用的串行接口,很難理解它們的區(qū)別以及何時(shí)使用它們。正如我最喜歡的工程學(xué)教授常說的那樣,“標(biāo)準(zhǔn)的美妙之處在于可供選擇的標(biāo)準(zhǔn)之多。” 今天的編碼器比以往任何時(shí)候都更智能、更先進(jìn),這要求工程師放棄更簡單的正交增量傳感器,并采用帶有串行接口的高速絕對(duì)編碼器。對(duì)于工業(yè)領(lǐng)域的應(yīng)用,并非所有的串行接口都是一樣的。RS-485 串行接口符合高速和工業(yè)穩(wěn)健性的要求,已成為旋轉(zhuǎn)編碼器和其他運(yùn)動(dòng)控制設(shè)備廣泛實(shí)施的接口。
什么是 RS-485?
RS-485 是一種工業(yè)規(guī)范,定義了電氣設(shè)備點(diǎn)對(duì)點(diǎn)通信的電氣接口和物理層。RS-485 標(biāo)準(zhǔn)允許在電噪聲環(huán)境中實(shí)現(xiàn)較長的布線距離,并且可以支持同一總線上的多個(gè)設(shè)備。
何時(shí)、為何以及在何處使用 RS-485
RS-485 早在 1998 年創(chuàng)建該標(biāo)準(zhǔn)時(shí)就已用于廣泛的計(jì)算機(jī)自動(dòng)化系統(tǒng)。由于該標(biāo)準(zhǔn)允許多點(diǎn)(同一總線上的多個(gè)設(shè)備)和較長的電纜長度,因此很容易了解它在工業(yè)和自動(dòng)化領(lǐng)域的頻繁使用。RS-485 也可以在許多設(shè)備分布在巨大空間中的劇院應(yīng)用中找到。
此外,RS-485 標(biāo)準(zhǔn)提供的抗噪能力使接口非常通用。工程師不僅將它用于長距離布線,而且還將其應(yīng)用到汽車行業(yè)等應(yīng)用中,在這些應(yīng)用中,不確定最終應(yīng)用中會(huì)遇到什么樣的噪音。RS-485 能夠在高速、長電纜長度、電噪聲環(huán)境以及同一總線上的多個(gè)設(shè)備上使用,使其成為大多數(shù)需要串行接口的應(yīng)用的智能實(shí)現(xiàn)。
RS-485 標(biāo)準(zhǔn)
RS-485,也稱為 TIA-485 或 EIA-485,是為通信協(xié)議定義驅(qū)動(dòng)器和接收器電氣特性的標(biāo)準(zhǔn)。開放系統(tǒng)互連 (OSI) 模型試圖描述通信系統(tǒng)的各個(gè)層,從最終應(yīng)用到電氣層,最后到物理層,圖 1。
OSI 模型的物理層
OSI 模型的物理層負(fù)責(zé)在設(shè)備和物理傳輸介質(zhì)之間傳輸原始數(shù)據(jù)。它處理電信號(hào)到數(shù)字?jǐn)?shù)據(jù)的轉(zhuǎn)換,同時(shí)定義電壓、時(shí)序、數(shù)據(jù)速率等。
RS-485 使用兩條信號(hào)線,“A”和“B”,它們必須是平衡和差分的。平衡信號(hào)是在雙絞線電纜中共享一對(duì)的兩條線,每條線上的阻抗相同。除了線路的匹配阻抗外,接收器和發(fā)射器還必須有匹配的阻抗。圖 2 顯示了一個(gè)典型的多點(diǎn) RS-485 網(wǎng)絡(luò),其中每個(gè)設(shè)備都有一個(gè)差分 RS-485 收發(fā)器,設(shè)備之間的鏈路由雙絞線電纜和終端電阻組成。
請(qǐng)注意,有多種拓?fù)淇捎糜谂帕性O(shè)備,因?yàn)椴⒎撬芯W(wǎng)絡(luò)都是平等的,終端要求以及設(shè)備排列會(huì)有所不同。例如,在下面的圖 2 中,端接僅用于電纜的開頭和結(jié)尾。
平衡布線可在使用差分信號(hào)時(shí)降低噪聲。這些信號(hào)“A”和“B”被稱為差分對(duì);其中一個(gè)信號(hào)與原始信號(hào)匹配,而另一個(gè)完全反轉(zhuǎn),這就是為什么它有時(shí)被稱為互補(bǔ)信號(hào)。
在單端接口中,接收器將信號(hào)接地,并根據(jù)預(yù)定的電壓電平解析信號(hào)狀態(tài)(這些被稱為邏輯電平,因?yàn)樗鼈兇_定信號(hào)是邏輯高還是邏輯低)。然而,在電壓趨于下降和壓擺率下降的較長電纜距離上,經(jīng)常會(huì)發(fā)生信號(hào)錯(cuò)誤。在差分應(yīng)用中,主機(jī)生成原始單端信號(hào),然后發(fā)送到差分發(fā)送器。該發(fā)送器創(chuàng)建差分對(duì),通過電纜發(fā)送出去。生成兩個(gè)信號(hào)后,接收器不再將電壓電平參考到地,而是將信號(hào)相互參考。這意味著接收器不是尋找特定的電壓電平,而是始終查看差異兩個(gè)信號(hào)之間。然后差分接收器將這對(duì)信號(hào)重構(gòu)回一個(gè)單端信號(hào),主機(jī)設(shè)備可以使用主機(jī)所需的適當(dāng)邏輯電平來解釋該信號(hào),圖 3。這種類型的接口還允許不同電壓電平的設(shè)備運(yùn)行通過差分收發(fā)器之間的通信將它們連接在一起。所有這些共同作用以克服單端應(yīng)用在長電纜距離上可能發(fā)生的信號(hào)衰減。
信號(hào)衰減并不是長電纜距離出現(xiàn)的唯一問題。電纜在系統(tǒng)中的時(shí)間越長,電氣噪聲和干擾進(jìn)入電纜并最終進(jìn)入電氣系統(tǒng)的可能性就越大。當(dāng)噪聲耦合到電纜上時(shí),它顯示為不同幅度的電壓,但使用平衡雙絞線電纜的好處是噪聲在每條線路上均等地耦合到電纜。例如,正的 1 伏尖峰將導(dǎo)致 A 上的 +1 V 和 B 上的 +1 V。由于差分接收器將信號(hào)彼此相減以獲得重建信號(hào),它會(huì)忽略兩條線上同樣顯示的噪聲, 圖 4。差分接收器忽略兩條信號(hào)線上相同電壓的能力稱為共模抑制。
RS-485 的其他主要物理層優(yōu)勢(shì)之一是信號(hào)電壓規(guī)范。RS-485 不需要使用特定的總線電壓,而是指定所需的最小差分電壓,即信號(hào) A 和 B 電壓之間的差值??偩€要求接收器的最小差分電壓為 +/- 200 mV,通常所有 RS-485 設(shè)備都將具有相同的輸入電壓范圍,盡管以不同的電壓進(jìn)行傳輸。這意味著任何 RS-485 設(shè)備都能夠接收 -7 至 12 V 的電壓范圍,因此工程師可以設(shè)計(jì)具有該范圍內(nèi)任何傳輸電壓的主機(jī)系統(tǒng)。這允許設(shè)計(jì)人員使用他們現(xiàn)有的電路板電壓創(chuàng)建 RS-485 系統(tǒng)。
話雖如此,驗(yàn)證產(chǎn)品規(guī)格以確保設(shè)備支持標(biāo)準(zhǔn)的全電壓范圍非常重要。例如,CUI Devices 的 RS-485 編碼器在板上使用 3.3 V,因此他們使用 RS-485 3.3 V 發(fā)射器。但是,它們還具有 0 到 12 V 之間的輸入容差。如果可以滿足 +/- 200 mV 的最小差分電壓,這允許它們?cè)?0 到 12 V 之間的多個(gè)不同傳輸電壓下共享相同的 RS-485 總線而不會(huì)出現(xiàn)問題在接收器和發(fā)射器。這一點(diǎn)尤其重要,因?yàn)殡S著電纜長度的增加,信號(hào)線上的電壓降也會(huì)增加。主機(jī)設(shè)備可以使用 +/- 1 V 的差分電壓進(jìn)行傳輸,但在較長的電纜長度上,該電壓可能會(huì)降低到 +/- 200 mV,這對(duì)于 RS-485 來說仍然是完全可以接受的,圖 5。
OSI 模型的數(shù)據(jù)鏈路層
RS-485 是一種雙工通信系統(tǒng),其中同一總線上的多個(gè)設(shè)備可以雙向通信。RS-485 最常用作半雙工,如上圖所示,只有一條通信線路(“A”和“B”成對(duì))。在半雙工中,設(shè)備輪流使用同一條線路,在該線路中主機(jī)將斷言對(duì)總線的控制并發(fā)送命令,所有其他設(shè)備都在監(jiān)聽。預(yù)期的接收者將監(jiān)聽其地址,然后該設(shè)備將斷言控制并做出響應(yīng)。相反,在全雙工系統(tǒng)中,例如串行外設(shè)接口 (SPI)或通用異步收發(fā)器 (UART),主機(jī)和從設(shè)備可以使用專用輸入和輸出線同時(shí)通信。
在數(shù)據(jù)層,RS-485 通常使用 UART 進(jìn)行串行通信,主機(jī) UART 以全雙工方式驅(qū)動(dòng)和接收串行通信。它連接到構(gòu)成物理層的 RS-485 差分收發(fā)器,并將信號(hào)轉(zhuǎn)換為半雙工差分格式,以便在 RS-485 總線上使用。然后主機(jī)將通過 UART 與 RS-485 通信,并告訴收發(fā)器何時(shí)在發(fā)送和接收之間切換。從設(shè)備也將以同樣的方式使用它們的 UART。
UART 具有專用的發(fā)送和接收線路,使其能夠以全雙工、半雙工甚至單工方式運(yùn)行,這意味著數(shù)據(jù)只能通過一條線路輸出或輸入。由于 RS-485 通常是半雙工的,因此連接到它的 UART 也將以半雙工方式運(yùn)行。
UART 接口是異步的,這意味著通信不包括時(shí)鐘。主機(jī)和從機(jī)設(shè)備必須使用自己的內(nèi)部時(shí)鐘,并且兩個(gè)設(shè)備都必須知道數(shù)據(jù)將以何種時(shí)鐘速率傳輸。這與串行外設(shè)接口 (SPI) 等同步系統(tǒng)不同,其中一條信號(hào)線包含一個(gè)時(shí)鐘,總線上的監(jiān)聽設(shè)備可以在該時(shí)鐘上捕獲數(shù)據(jù)。
此外,UART 通常具有大多數(shù)設(shè)備將使用的標(biāo)準(zhǔn)格式,但可以配置許多選項(xiàng)來更改標(biāo)準(zhǔn)。UART 的空閑狀態(tài)是高電壓,因此要開始傳輸,UART 使用一個(gè)稱為起始位的低脈沖,然后是 8 位數(shù)據(jù),并以高停止位完成,圖 8。
主處理器將使用一個(gè) IO 引腳將 RS-485 收發(fā)器置于發(fā)送模式,并將一個(gè)字節(jié)從 UART TX 線發(fā)送到 RS-485 收發(fā)器的數(shù)據(jù)(D 或 DI)線。收發(fā)器會(huì)將單端 UART 比特流轉(zhuǎn)換為 A 和 B 線上的差分比特流,圖 3。數(shù)據(jù)離開收發(fā)器后,主機(jī)立即將收發(fā)器模式切換為接收。從機(jī)系統(tǒng)是相同的,這意味著從機(jī) RS-485 收發(fā)器接收傳入的比特流,將其轉(zhuǎn)換為單端信號(hào),并通過從機(jī)的 UART RX 線將其發(fā)送到主機(jī)設(shè)備。當(dāng)從設(shè)備準(zhǔn)備好響應(yīng)時(shí),它會(huì)像主機(jī)最初那樣發(fā)送,而主機(jī)現(xiàn)在接收,圖 9。
OSI 模型的網(wǎng)絡(luò)層
網(wǎng)絡(luò)層處理發(fā)生在 RS-485 總線上的設(shè)備之間的實(shí)際通信。由于 RS-485 主要是一種電氣規(guī)范,因此對(duì)話可以到此結(jié)束,但由于它支持多點(diǎn),因此需要在 OSI 模型中解決它。
沒有針對(duì)網(wǎng)絡(luò)層尋址的固定規(guī)范,但 RS-485 總線必須由主機(jī)正確管理以避免總線沖突。當(dāng)多個(gè)設(shè)備嘗試同時(shí)通信時(shí)會(huì)發(fā)生總線沖突,這對(duì)網(wǎng)絡(luò)非常有害。當(dāng)發(fā)生沖突時(shí),發(fā)射器在兩端發(fā)生沖突并有效地產(chǎn)生短路。這會(huì)導(dǎo)致每個(gè)設(shè)備消耗大量電流,從而使收發(fā)器進(jìn)入熱關(guān)斷狀態(tài)。
為避免沖突,主機(jī)控制總線并調(diào)用各個(gè)設(shè)備。這通常是通過擁有一個(gè)只有特定設(shè)備才能識(shí)別的命令集或通過為每個(gè)設(shè)備擁有特定地址來實(shí)現(xiàn)的。由于總線在所有設(shè)備之間共享,因此每個(gè)設(shè)備都會(huì)看到主設(shè)備發(fā)送的命令/地址,但只有在該單個(gè)設(shè)備被斷言時(shí)才會(huì)響應(yīng)。
OSI 模型的應(yīng)用層
OSI 模型不是一組規(guī)則,而更多是幫助工程師表征系統(tǒng)的模型。RS-485 很好地包含在 OSI 模型的前三層中,總線的實(shí)際實(shí)現(xiàn)在應(yīng)用層中進(jìn)行了表征。這一層涵蓋了設(shè)備使用的地址或命令集以及數(shù)據(jù)的解釋。它還包括設(shè)計(jì)人員期望獲得多少數(shù)據(jù),以及對(duì)總線本身的控制。
例如,CUI Devices RS-485 編碼器的應(yīng)用程序?qū)⑹菑脑O(shè)備請(qǐng)求絕對(duì)位置的主機(jī)。當(dāng)主機(jī)發(fā)送編碼器的位置命令(地址)時(shí),編碼器以兩個(gè)完整字節(jié)響應(yīng)。然后主機(jī)解密這些字節(jié)以了解絕對(duì)位置是什么,同時(shí)確定發(fā)送命令的頻率以及它想要將它們發(fā)送到哪些設(shè)備。簡單來說,應(yīng)用層就是RS-485總線的實(shí)現(xiàn)。
由于 RS-485 標(biāo)準(zhǔn)僅定義了具有尋址要求的物理和數(shù)據(jù)鏈路層,因此應(yīng)用層可以采用各種專有或開放的通信協(xié)議。工程師可以采用現(xiàn)有的協(xié)議,例如 Modbus,或者他們可以為他們的應(yīng)用定義自己的協(xié)議。例如,CUI Devices 的編碼器使用非常簡化的尋址結(jié)構(gòu)來斷言設(shè)備,從而實(shí)現(xiàn)快速周轉(zhuǎn)和最短處理時(shí)間。每個(gè)編碼器的地址只有一個(gè)字節(jié)的高六位,低兩位是命令。這允許編碼器在來自主機(jī)的單個(gè)字節(jié)后開始響應(yīng),確??焖僦苻D(zhuǎn)時(shí)間,這在運(yùn)動(dòng)控制應(yīng)用中至關(guān)重要。
CUI Devices 的 RS-485 編碼器使用快速定位協(xié)議,該協(xié)議允許編碼器在一個(gè)字節(jié)的時(shí)間內(nèi)響應(yīng)位置。如上所述,這種格式支持 64 個(gè)唯一的編碼器地址。編碼器的地址是一個(gè)字節(jié)的高 6 位,低 2 位是命令。這些地址可通過 CUI Devices 的AMT Viewpoint 軟件和編程模塊進(jìn)行配置。這些編碼器根據(jù)其版本具有各種命令,所有設(shè)備都支持?jǐn)U展命令,例如復(fù)位或設(shè)置零位。
低兩位十六進(jìn)制命令000x00讀取位置010x01讀取圈數(shù)計(jì)數(shù)器(僅限多圈編碼器)100x02表示擴(kuò)展命令110x03預(yù)訂的圖 13:CUI Devices 的 RS-485 編碼器尋址格式
CUI Devices 的絕對(duì)編碼器具有 12 位或 14 位分辨率,但它們都以兩個(gè)完整字節(jié)響應(yīng)每個(gè)位置請(qǐng)求。兩個(gè)完整字節(jié)為 16 位,這允許編碼器使用高兩位進(jìn)行校驗(yàn)和計(jì)算。應(yīng)用層的這一部分允許主機(jī)驗(yàn)證從編碼器傳輸?shù)臄?shù)據(jù)。對(duì)于 12 位編碼器,傳輸將在高兩位中包含校驗(yàn)位,低兩位為零,中間的 12 位包含位置數(shù)據(jù)。
這些絕對(duì)編碼器還提供多圈支持,以便它們可以計(jì)算轉(zhuǎn)數(shù)。這是一個(gè) 14 位有符號(hào)計(jì)數(shù)器,數(shù)據(jù)傳輸與位置相同,前兩位包含校驗(yàn)和。因?yàn)橛?jì)數(shù)器是有符號(hào)的,所以它可以計(jì)算正轉(zhuǎn)和負(fù)轉(zhuǎn),但要以一位數(shù)據(jù)為代價(jià)。這意味著它可以從 -8192 計(jì)數(shù)到 8191。
CUI Devices 的絕對(duì)編碼器還提供高速版本,運(yùn)行速度為 2 Mbps,周轉(zhuǎn)時(shí)間接近 3 微秒。但是,對(duì)于無法滿足高速和嚴(yán)格時(shí)序要求的應(yīng)用,可以使用可調(diào)數(shù)據(jù)速率版本。這些版本讓用戶可以使用 AMT Viewpoint 和編程模塊從頻率列表中進(jìn)行選擇,從而在不需要高速時(shí)更容易實(shí)施。
結(jié)論
RS-485 支持高速、長電纜距離、電氣噪聲容限和同一總線上的多個(gè)設(shè)備,由于其在廣泛應(yīng)用中的多功能性,已成為旋轉(zhuǎn)編碼器中流行的串行接口。希望使用帶有 RS-485 接口的編碼器的設(shè)計(jì)人員可以受益于對(duì)上述詳細(xì)信息的理解,包括其各個(gè)層、實(shí)現(xiàn)以及整個(gè)系統(tǒng)通信中的最佳實(shí)踐。CUI Devices 具有 RS-485 接口的基于電容的 AMT 絕對(duì)編碼器具有更高的耐用性和工業(yè)穩(wěn)健性,由于其高精度、低電流消耗和對(duì)環(huán)境污染物的免疫力,是運(yùn)動(dòng)控制應(yīng)用的一個(gè)有趣的選擇。