通信協議之485

標題通信協議之485

標題RS-485通信協議標準

通信協議是指雙方實體完成通信或服務所必須遵循的規則和約定,主要實現兩個設備之間的數據交換功能.
通信協議分硬件層協議和軟件層協議。

硬件層協議決定數據如何傳輸,比如要設備A要想設備B發送0x63,0x63的二進制數爲0110 0011,這8個二進制數要從設備A傳輸到設備B,涉及到1怎麼傳,0怎麼傳,這就是硬件層要解決的問題。

硬件層協議目前比較多見的有RS-232、RS-485和SPI等
其中串行通信RS-485規定:邏輯“1”以兩線間的電壓差爲+(2-6)伏表示;邏輯“0”以兩線間的電壓差爲-(2-6)伏表示。
再者,比如要選擇多少條線傳輸數據,選擇什麼材質的線傳輸輸入,這些也是屬於硬件層協議約束的。

MCU管腳輸出TTL電平,TTL電平的意思是,當MCU管腳輸出0電平時,一般情況下電壓是0伏,當MCU管腳輸出1電平時,電壓是5伏。因TTL電平是由一條信號線,一條地線產生,信號線上的干擾信號會跟隨有效信號傳送到到接收端,使得有效信號受到干擾,485通信實際上是把MCU出來的TTL電平通過硬件層的一個轉換器芯片進行轉換,示意圖如圖一所示。
在這裏插入圖片描述
圖 1

把MCU出來的一條TTL信號經過芯片轉換爲兩根線(線A、線B)上的信號。當MCU給轉換器輸入低TTL電平時,轉換器會使線B上的電壓比線A上的電壓高,反之,線A上的電壓比線B上的電壓高。

485協議規定兩條線上電壓差值爲多少表示0或者1,電壓通過儀表可以測量得到,所以說RS-485是硬件層協議。

485協議的接收端可能是另一個MCU,MCU管腳也只接受TTL電平,轉換芯片過來的是兩條線的電壓,所以需要對此兩條線差分電壓轉換爲TTL電平,示意圖如圖二所示。
在這裏插入圖片描述
圖 2

把TTL電平轉換爲485電平,實質是一個集成芯片,其間無任何程序代碼,純粹是硬件邏輯。同理,將485電平轉換爲TTL電平也是如此。現在很多芯片將接收和轉換都集成到了一塊IC,注意,轉換器和接收器依舊是沒有同時工作的。

2.RS-485通信總線標準

RS-485標準採用平衡式發送和差分接收方式實現通信,由於傳輸線通常使用雙絞線,又是差分傳輸,所以有極強的抗共模干擾的能力。RS-485採用半雙工工作方式,支持多點數據通信。

總線網絡拓撲一般採用終端匹配的總線型結構,即採用一條總線將各個節點串接起來,不支持環形或星型網絡,如果需要使用星型結構,就必須使用485中繼器或485集線器。RS-485總線一般最大支持32個節點,如果使用特製的485芯片,可以達到128個或256個節點,最大的可以支持到400個節點。

3.RS-485電路設計原理
TTL,RS-485兩者之間的電平標準定義不通,需要電平轉換芯片來實現兩者間的數據交換。圖三是一般RS-485電平轉換芯片引腳數及其定義,或者稱爲RS-485收發芯片。
在這裏插入圖片描述
RS-485收發芯片(電平轉換芯片)可以理解成兩部分,分別爲驅動器和接收器。

驅動器輸出是差分輸出,DE管腳上的邏輯高電平將使能驅動器差分輸出,如果DE爲邏輯低電平,則驅動器輸出呈現高阻態,將發送端與輸出A,B斷開。

表 1驅動器輸出真值表
在這裏插入圖片描述

通過該真值表可知,在發送時,/RE的電平高低就無所謂了DE是高電平時,

那麼DI爲1,A>B,驅動器發送器輸出1,

DI爲0時,B>A,驅動器發送器輸出0。

而當DE爲低電平時,則輸出高阻態,也就是隔開了DI與A,B之間的關係。

RS-485接收器輸入時差分輸入,/RE來使能接收器,當/RE爲低電平時,接收器使能。

表 2接收器輸出真值表
在這裏插入圖片描述
差分傳輸:發送端在兩條信號線上傳輸幅值相等,相位相反電信號,接收端在對接收的兩條線信號做減法運算,這樣就獲得幅值翻倍的信號。

特別注意:千萬不要以爲RS-485的邏輯“1”是B>A,邏輯“0”就是A>B。

正確理解:分兩種情況驅動器(發送器)和接收器,

對於驅動器(發送器),邏輯“1”(正)是A>B,AB之間電壓爲+(2~6)V;

邏輯“0”(負)是A<B,AB之間電壓爲-(2~6)V。

而對於接收器,則邏輯“1”(正)則是B>A,BA之間電壓不小於200mV;

邏輯“0”(負)則是A>B,BA之間電壓小於-200mV;
即正負邏輯,電壓絕對值都大於200mV。

由於RS-485芯片特性,接收器的檢測靈敏度爲±220mV,當A,B端的電位差絕對值小於200mV時,輸出爲不穩定,如果在總線上所有發送器被禁止時,接收器輸出邏輯“0”,這會誤認爲通信幀的起始引起工作不正常,解決這個問題的辦法就是人爲的地使A端電位高於B端電位,這樣Rxd的電平在485總線不發送期間(總線懸浮時)呈現唯一的高電平,MCU就不會被誤中斷而收到亂字符,通常在485電路的A,B輸出端加接上拉、下拉電阻,提供網絡失效保護,提高RS-485節點與網絡的可靠性。
在這裏插入圖片描述

一般情況下不需要增加終端電阻,只有在485通信距離超過300米的情況下,要在485通信的開始端和結束端增加終端電阻。

隔離雖然能夠有效的抑制高共模電壓,但總線上還會存在浪湧衝擊、電源線與485線短路等潛在危害,所以一般會在總線端採取一定的保護措施。

通常在RS-485通訊接口的A,B通訊線上各串接一個熱敏電阻,在熱敏電阻與RS-485通訊接口之間的A,B通訊線和地之間分別設有TVS瞬變抑制二極管。

沒有故障時,熱敏電阻接近零,不影響正常通訊,當誤接220V時,熱敏電阻變的無窮大,相當於通訊迴路和外面斷開,當故障消失後,熱敏電阻阻值降到零,又可以正常使用。

由於RS-485是半雙工通信,收發轉換是需要一定的時間,所以一般在收發轉換之間和每發送完一幀數據之後,都要有相應的延時,如果出現收發不正常或第一幀數據之後就出現誤碼現象,則可以適當的增加一下延時時間。

異步通信數據以字節的方式傳送,在每一個字節傳送之前,先要通過一個低電平起始位實現握手。爲防止干擾信號誤觸RO(接收器輸出)產生負跳變,使接收端MCU進入接收狀態,建議RO外接10kΩ的上拉電阻。

電源旁路電容,作用是給485芯片提供一個乾淨的電源,使它穩定的工作。
————————————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章