一、RS485通訊介紹,RS485通訊網絡
RS232接口是一種用於(yu) 近距離(最大30-60米)、慢速度、點對點通訊的通訊協議,在RS232中一個(ge) 信號隻用到一條信號線,采取與(yu) 地電壓參考的方式,因而在長距離傳(chuan) 輸後,發送端和接收端地電壓有出入,容易造成通訊出錯或速度降低。
RS485/422接口采用不同的方式:每個(ge) 信號都采用雙絞線(兩(liang) 根信號線)傳(chuan) 送,兩(liang) 條線間的電壓差用於(yu) 表示數字信號。例如把雙絞線中的一根標為(wei) A(正),另一根標為(wei) B(負),當A為(wei) 正電壓(通常為(wei) +5V),B為(wei) 負電壓時(通常為(wei) 0),表示信號“1”;反之,A為(wei) 負電壓,B為(wei) 正電壓時表示信號 “0”。RS485/422允許通訊距離可達到1200米,采用合適的電路可達到2.5MB/s的傳(chuan) 輸速率。
RS422與(yu) RS485采用相同的通訊協議,但有所不同:它采用兩(liang) 根雙絞線,數據可以同時雙向傳(chuan) 遞(全雙工)。 而RS485則采用一根雙絞線,輸入輸出信號不能同時進行(半雙工),RS485可用於(yu) 多點通訊,一條信號線上可連接多個(ge) 設備,它通常采用主/從(cong) 結構。
在RS485(半雙工)通信中,發送信號時,由TXD輸出的TTL電平信號經RS485轉換器轉換後,從(cong) 發送器(A和B)輸出RS485信號;接收信號時,RS485信號經接收器(A和B)接收後,然後RS485轉換器將信號轉換為(wei) TTL電平信號,傳(chuan) 給RXD。(注意:2個(ge) 需要通訊設備之間是各有一個(ge) RS485轉換器,並不是它們(men) 的信號隻經過了一個(ge) RS485轉換器就成功通訊了)
在RS422(全雙工)通信中,因信號的輸入和輸出分開,所以需要兩(liang) 根雙絞線來傳(chuan) 送輸入和輸出信號,標為(wei) A、B、Y、Z(A為(wei) 輸入信號的正極,B為(wei) 輸入信 號的負極,Y為(wei) 輸出信號的正極,Z為(wei) 輸出信號的負極)。發送信號時,由TXD輸出的TTL電平信號經RS422轉換器後,從(cong) 發送器(Y和Z)輸出RS485/RS422 信號;接收信號時,RS485/RS422信號經接收器(A和B)接收後,RS422轉換器將信號轉換為(wei) TTL電平信號,傳(chuan) 給串口的RXD。
圖1:DM係列RS485/RS422接口轉換器原理圖(半雙工)
圖2:DM係列RS485/RS422接口轉換器原理圖(全雙工)
以上圖片隻是貼出了一半的接線圖,這裏給出一張多機通訊的RS485接線原理圖(半雙工)
二、典型接法
DM485的輸出端最多可以連接256個(ge) RS485接口,其典型接法如圖3(半雙工)和圖4(全雙工)所示。在最遠的兩(liang) 個(ge) 終端上,輸入和輸出端之間各需接 上一個(ge) 120歐姆的電阻。在RS485/RS422的接口連接時,甲接口的輸出端接乙接口的輸入端,雙絞線的正極接正極,負極接負極;甲接口的輸入端接乙 接口的輸出端,雙絞線的正極接正極,負極接負極。
三、注意事項
1、在長距離傳(chuan) 輸中,一定要使用用雙絞線
2、多終端傳(chuan) 輸時,距離最遠的兩(liang) 個(ge) 終端上,輸入和輸出端之間一定連接120歐姆的電阻。
補充:我不知道為(wei) 什麽(me) 那麽(me) 多的資料都沒有說明RS485通信發送和接收數據時的細節,都隻說2根線就能發送和接收數據??? 注意:485芯片有個(ge) 控製端,控製端高電平時候為(wei) 接收數據,低電平時候為(wei) 發送數據。而我們(men) 在實際項目開發的時候,在使用RS485通信時,如果自己的電路並沒有設計成RS485硬件自收發切換的電路,則需要自己控製485的收發使能引腳。即發送數據時,需要拉低485芯片控製端的IO口;相反接收數據時,需要拉高控製端的IO口。
需要自己控製收發的485芯片原理圖:
控製策略:UART_CON為(wei) 低電平,485處於(yu) 接收狀態;UART_CON為(wei) 高電平,485處於(yu) 發送狀態。通過切換UART_CON的電平來達到485收發狀態的切換。
485芯片硬件自動收發切換電路:
接收:默認沒有數據時,在接收數據的過程中,TXD引腳是一直保持高電平的,三極管導通,RE低電平使能,485芯片處於(yu) 接收狀態,然後485芯片的RO引腳(也就是接RXD的引腳)就會(hui) 反應AB傳(chuan) 輸過來的數據。
發送:發送數據時,TX會(hui) 先有一個(ge) 下拉的電平(起始位-由高向低),表示開始發送數據,此時三極管截止,DE為(wei) 高電平發送使能。當發送數據“0”時,由於(yu) DI接口相當於(yu) 接地,此時數據“0”就會(hui) 傳(chuan) 輸到AB扣,A-B<0,則傳(chuan) 輸“0”,完成低電平傳(chuan) 輸,當發送“1”時,此時三極管導通,RE變為(wei) 低電平,按理說會(hui) 讓接收使能,但是由於(yu) 還處於(yu) 發送數據中,這種狀態下MAX485處於(yu) 高阻態,此時的狀態通過A上拉電阻(R5),B下拉電阻(R4)決(jue) 定,此時A-B>0傳(chuan) 輸“1”,完成高電平的傳(chuan) 輸。
注意:這裏麵有個(ge) 疑惑,發送數據“1”,三極管RE低電平有效,應該是接收使能,為(wei) 什麽(me) 芯片是高阻態呢?這是因為(wei) UART發送數據是有一定格式的,TX和RX數據均以“位”為(wei) 最小單位進行傳(chuan) 輸,在發送數據之前,UART之間要約定好數據傳(chuan) 輸速率,即波特率,數據傳(chuan) 輸格式(數據位,校驗,停止),平時數據線處於(yu) 空閑狀態(1狀態),當發送數據時,TX由“1”變為(wei) “0”維持1位的時間,這樣接收方檢測到開始位後,再等待1.5位時間就開始一位一位的進行數據傳(chuan) 輸了,也就是說,已經確定好發送狀態,電路發送“1”時RE雖然有效,但是由於(yu) 它處於(yu) 發送階段,芯片也不會(hui) 收,即芯片處於(yu) 高阻狀態。