rs485協議、電路詳解(保姆級)

起源

RS-485即Recommended Standard 485 協議的簡寫。1983年被電子工業協會(EIA)批準為一種通訊接口標準.

數據在通信雙方之間傳輸,本質是傳輸物理的電平,比方說傳輸5V的電壓 -1V的電壓信號,這些物理信號在傳輸過程中會受到很多干擾,比方說你傳輸一個5V的電壓,到了接收端可能就變成了4.8V,并且通信的雙方高低電平的參考電壓可能不同。
那么這個時候就需要一個電平標準,來判斷多少V的電壓是高電平 1,多少V的電壓是低電平 0,這就誕生了 RS-485 RS-232

485接口常用的協議:工業HART總線協議;modbus協議;Profibus DP

信號傳輸模式

信號通過一組雙絞線差模傳輸,源端發出的信號+與信號-相位是相反的,可以有效抵消共模干擾。

電氣參數

電壓范圍為-7~+12V
半雙工通信
最多總線支持256個多點拓撲連接(取決于IC驅動能力),最后面一個接120歐終端電阻。
傳輸1200米時,速率最大到100kbps
最小差分電壓容限:200mV,低于該值則無法識別通訊。
信號A在空閑時候為高電平;信號B在空閑時為低電平。(有的設備上會標識485_A+,485_B-)

應用設計

拓撲結構

發送終端和接收終端是主從結構,主機可以和任何從機通信,讀寫。從機之間不可以通信,從機的狀態也是需要主機輪詢方式來讀取。

通常為兩種結構:

星型結構:所有的設備連接到一個中心點上,中心點一般為主機。此拓撲結構適用于設備數量少,且分布較近的場景。
總線型結構:所有設備連接到同一根總線上,形成一條直線。所有設備均通過總線通信。此拓撲結構適用于數量較多或分布較遠的場景。

端接設計

端接就是在最終端設備上接一個120Ω的電阻來達到匹配阻抗特征的目的。
標準規定的雙絞線的差分特征阻抗在100Ω至150Ω之間,由于RS-485采用雙絞線傳輸,RS-485標準制定者選擇120Ω作為標稱特征阻抗。

如果沒有端接。信號在線路上傳輸其阻抗是連續的,但是到達右側的時候則,等效阻抗變成了接收電路的輸入阻抗,比如是12kΩ(標準可掛載32個設備的驅動IC阻值),阻抗不連續了,信號的一部分能量就會按照原路徑返回,如返回回去的信號由于容抗及感抗,就會產生相差。反射回去的信號與原信號就會被疊加在一起。這樣就會造成通信發生錯誤的可能,嚴重的時候,通信就無法正確進行。這時候就需要在最終端接一個120Ω電阻(如下圖左邊所示)。

在通信環境比較差的情況下,共模干擾嚴重,可以考慮采用帶屏蔽雙絞線,屏蔽層接大地,
也可以在終端接一組π型的阻容的低通濾波結構(兩個60Ω電阻中間接一個220pF電容)來增加線路的抗噪聲能力。(如下圖右邊所示)

抗干擾設計

市面上485常見于3Pin端口(485A,485B,GND)。通常只是簡單地用一對雙絞線將各個接口的“A”、“B”端連接起來。對于E不接的大多數場景均能正常工作,對于以下兩種場景則會出現問題。

  • 485收發器共模電壓范圍為-7~+12V,當感應電壓加載在共模電壓上,超過范圍就會損壞電路。

  • EMI問題:發送驅動器輸出信號中的共模部分需要一個返回通路,如沒有一個低阻的返回通道(信號地),就會以輻射的形式返回源端,整個總線就會像一個巨大的天線向外輻射電磁波。

隔離設計

現場有大電流開關設備,電機感性設備等,噪聲很可通過通訊的接地耦合進設備,在工業設備中尤其明顯。

所以會采用通訊隔離電源隔離的設計

通訊隔離設計

選擇具有隔離功能的芯片,比如ADI的 iCoupler技術產品ADM2481,ADM2485。
也可以采用光耦+普通RS-485收發器的方式,光耦必須要用高速的,低速光耦在高速率下容易丟包。

電源隔離設計

給隔離兩側電路分別供電,兩側的gnd不能直連,可串一個瓷片電容。

安全防護

A、B端串聯保險

接口的信號電平值較高,達到十幾V,容易損壞接口電路的芯片,而且和TTL電平不兼容,因此和單片機電路接起來的話必須加轉換電路。

防雷接口設計

需要在485的A、B連接氣體放電管用以防雷。

IC驅動能力

物理條件下一條485總線上節點數量是有上限的。
一條485總線上節點數量的限制條件是:有源驅動器的總電流負載,485總線負載電阻Rload不能大于375歐姆。
通常是用單位負載來衡量RS485總線驅動能力的,單位負載的定義則是根據標準的485總線接收器的輸入阻抗(12KΩ)來定義的,標準的RS485總線能夠驅動32個單位負載(即32個12KΩ并聯)。
為了能讓一條總線上掛載更多的設備,一些485接收器的輸入阻抗為48Kohm(1/4 unit load)或者是96Kohm(1/8 unit load),那么相應的總線可掛接的節點數分別為128個和256個。
另外,不同輸入阻抗的485接收器可以連接在一起,只要保證并聯輸入阻抗不能超過32個單位負載(即總線負載Rload<=375 Ω),通訊環境不好的情況下需要在最終端設備掛載終端電阻 120 Ω,用來改善總線上的匹配電阻。

IC的驅動能力

IC型號掛載能力(個)單價(元)
SP3285/SP348132
SP485R400
P485R400
SN75176B32
SP3485EN-L/TR321.2
THVD1500 /1510/1550256
MAX14832561.5
WS30882561.5
MAX30852561.5

故而一般的協議,一根總線上最多掛載256個設備(地址碼決定了)。但還有另一種方法就是更改波特率,將在同一總線上的設備改為不同的波特率(1200,2400,4800,9600,19200),就可以允許相同的地址號,設備不同,增加掛載節點數。

IC傳輸方向的使能

由于485為半雙工通信,當主機發送數據時,數據沿著雙絞線傳輸至從機的差分接收電路。當從機發送數據時,數據沿著雙絞線傳輸至主機機的差分電路電路。所有的數據均是差分傳輸并且傳輸介質僅為一條雙絞線,所以在同一時間內數據只會流經一個方向。

通信IC芯片上有兩個使能腳,RE# 和DE。
RE#: Receiver Output Enable,接收器使能,
DE:Driver Output Enable,驅動輸出使能

當兩個使能腳并聯時,可以只通過一個IO來控制數據的傳輸方向(RE為低使能,DE為高使能)。
當兩個使能腳分別控制時(DE=1,RE=0),這樣可以實現發送和接收數據的閉環,常見于主機設備。可以實現收發器以及布線的自診斷,通過接收到的報文與發送出去的報文比較,診斷出芯片焊接,收發器是否損壞或者斷路,以及布線是否存在短路故障。

IC傳輸方向自動切換電路

RS485_RX為高時,SS8050導通,RE/DE接地,進入接收模式;
RS485_RX為低時,SS8050關閉,RE/DE拉高,進入發送模式;

按5V,3082收發芯片來計算的話,100k,0.1μ的電容,時間常數=10mS
High-level input voltage (D, DE, or RE inputs), VIH 2 VCC V
Low-level input voltage (D, DE, or RE inputs), VIL 0 0.8 V

從發送完到不再占用總線,也就是DE降到2V以下,需要9mS。
從發送完到開始接收總線上的數據,也就是RE降到0.8V以下,需要18mS。

所以,在波特率不低于100bps的情況下,看起來不錯。就是怕叢機回數據太快,你的芯片還沒進入接收狀態導致丟數據。
說得好
R10、C8要視情況減小,比如取10K、1nF,盡量小,用示波器看數據線波形,只要有個陡翹的推挽輸出邊沿即可,輸出AB波形大致是這樣:

一、RS485方向切換的方案1:使用反相器自動切換

大部分的低成本RS232-RS485轉換器采用了這種方法。具體的實現方法是:把串口的發送信號TX作為反相器的輸入,反相器的輸出則用來控制RS485收發器的收發控制引腳,同時在RS485收發器的A/B輸出端加上上拉/下拉電阻,

使用反相器自動切換電路

在空閑狀態下,串口的發送信號TXD為高電平,經過反相器后輸出低電平,使485芯片處于接收狀態,而RS485總線由于上下拉電阻的作用處于A高B低的狀態。當發送數據時,TXD信號線上的低電平比特位控制485芯片進入發送狀態,將該比特發送出去。而高電平比特位則使485芯片處于接收狀態,由于RS485總線上下拉電阻把總線置于A高B低的狀態,即表示發送了高電平。

簡單說,這種電路,就是發送低電平時,485芯片是 發送狀態,而發送高電平時,485芯片屬于接收狀態。

優勢:

只需要增加一個反相器就可以實現,無需軟件的干預,反相器可以使用一個三極管即可以實現,成本十分低廉(幾分錢);

劣勢:

由于上下拉電阻不可能選值太小,否則會影響正常發送的數據電平。所以這種換向模式在發送高電平時的驅動能力,并且,理論上我要求方向引腳要比數據先切換方向,但是由于方向引腳經過了反相器,達到芯片的時間變長了,比數據晚到,所以速率太高的情況容易丟包。如果需要驅動多個從設備,就會顯得力不從心,并且驅動能力太弱,只能短距離傳輸;并且傳輸速度不能太快,一般使用9600bps。

RS485方向切換的方案3:使用觸發器控制方向

為了克服反相器換向的缺點,出現了一種由RS觸發器控制的自動換向技術,如圖5所示。這個電路的關鍵是反相器和RS觸發器之間的由二極管、電阻、電容組成的充放電電路。在空閑狀態下,485芯片仍處于接收狀態。

當TXD信號線上發送數據的低電平起始位時,反相器輸出高電平,通過二極管為電容迅速充電,使RS觸發器R端為高電平,S端為低電平,觸發器輸出高電平,把ISL3152E置于發送狀態;當TXD信號線轉換為高電平時,反相器輸出低電平,電容通過電阻緩慢放電,使得R端暫時仍處于高電平狀態,加上S端的高電平狀態,使觸發器的輸出保持前面的高電平狀態,485芯片仍處于發送狀態。電容經過一段時間放電后,R端電壓轉變為低電平,則觸發器輸出低電平,把485芯片置回接收狀態。

通過選擇電阻和電容值,我們可以控制放電速度,使得一個低電平的起始位足以在整個字節發送。此類方案參數一致性非常差,實際使用的都是技高人膽大的。

優勢:
·無需軟件干預切換方向,驅動能力強(取決于RS485芯片)。

劣勢:

·增加的器件較多;

·不同的波特率需要匹配不同的RC參數

·溫度、老化、一致性等問題,會導致RC參數變化,從而導致切換時間錯亂導致丟包。

四、RS485方向切換的方案4:max13487芯片
為了克服軟件參與的方向控制不確定性,美信公司發布了宣稱首款支持芯片自動換向的RS485芯片,如下圖6,對比其他的RS485芯片,MAX16487的/RE引腳有兩個用于:

·/RE為低電平時,打開RO方向的接收數據。

·/RE為高電平時,芯片進入自動方向切換模式。

一般使用我們將/RE連接高電平,即自動換向模式。

由于美信沒有公布內部的邏輯原理,只描述內部有一個狀態機,我們只能外部猜測其工作原理:

·空閑模式下,數據流方向為RO方向;此為狀態1;

·當串口端有數據發送時,由于起始位為低電平,經過邏輯功能D后,A<B,經過COM

·邏輯功能且反相后,RI為高電平。此狀態為數據發送狀態2。

·經過一系列的邏輯運算(以RI、DI為輸入,但是不知道其內部的原理);狀態機檢測到數據發送完畢,芯片變成接收狀態1。

優勢:

· 由芯片自動切換方向,無需軟件干預切換方向,驅動能力強,通信速率高,MAX13488 宣稱最高可以到16Mbps,與普通的RS485芯片性能一樣。

劣勢:

·價格比普通的RS485芯片貴一倍以上。

RS485方向切換的方案5:周立功芯片RSM(3)485PHT
周立功公司將RS485的三個相關的功能模塊:DC電源、隔離、RS485芯片三合一,封裝在同一個芯片內部,由于沒有內部的資料,我們無法獲知其內部的邏輯功能。官方資料宣稱最高速率可以達到500Kbps,對于一般的應用足以。

優勢:

由芯片自動切換方向,無需軟件干預切換方向,驅動能力強,通信速率高,DC電源、隔離、RS485芯片功能三合一,節省板卡空間。

劣勢:

價格比分立器件搭建RS485電路貴,且一旦損害需要要整體更換。

二、RS485方向切換的方案2:使用軟件控制方向

市面上大部分的內置RS485的產品基本都是采用此類的方案,如下圖4中的RS_EN引腳。具體的 實現方式是:在空閑器件,RS_EN 為低電平,MCU處于接收狀態,在準備發送數據之前,MCU會拉高RS_EN,U1處于發送狀態,發送完畢之后,RS_EN重新處于低電平,U1處于接收狀態。

圖4 使用軟件控制方向切換
此類方案的關鍵是軟件需要掌握好RS_EN引腳的高低電平的時機,假設發送完數據后,沒有及時切換到接收狀態,而此時從機又回復數據,此時就會引起丟包,就會出現文章開頭圖2中的情形。不幸的時,軟件工程師的水平參差不齊,特別是在運行操作系統(Linux、WIndows等)以后,想要十分準確控制方向引腳的高低電平已經十分困難。

優勢:

無需增加任何的硬件成本,且RS485的驅動能力不受影響。

劣勢:

依賴于軟件控制方向引腳,如果運行復雜的操作系統,控制引腳的優先級不夠高,或者軟件的優化的不夠好,都會導致方向引腳的切換不及時,到時數據的丟包。并且,是否丟包還取決于從機的回復時間,測試過程不一定能夠測試出來。

通訊不通排查方法

排查串口端

  • 串口端口號是否被占用
  • 串口參數是否正確(波特率、校驗位、數據位、停止位)
  • 串口硬件是否損壞(短接tx rx,看接收發送是否一致)
  • 更換一個串口軟件

排查總線

  • A、B兩端是否短路
  • A、B兩端總電阻是否<375 Ω
  • 共模干擾加載在信號線上,超出芯片逞能能力,接上屏蔽
  • 示波器看下信號線的波形
  • 電源干擾,電源沒接地線,波紋進設備。
  • 外殼地線帶電或者沒接好導致干擾

其他

  • 232轉接器可能供電不足,換有源轉接器
  • 波特率過高,從機發送不及時造成誤碼率過高。降低波特率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70335.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaWeb-Tomcat服務器

文章目錄 Web服務器存在的意義關于Web服務器軟件Tomcat服務器簡介安裝Tomcat服務器Tomcat服務器源文件解析配置Tomcat的環境變量啟動Tomcat服務器一個最簡單的webapp(不涉及Java) Web服務器存在的意義 我們之前介紹過Web服務器進行通信的原理, 但是我們當時忘記了一點, 服務器…

【愚公系列】《Python網絡爬蟲從入門到精通》008-正則表達式基礎

標題詳情作者簡介愚公搬代碼頭銜華為云特約編輯,華為云云享專家,華為開發者專家,華為產品云測專家,CSDN博客專家,CSDN商業化專家,阿里云專家博主,阿里云簽約作者,騰訊云優秀博主,騰訊云內容共創官,掘金優秀博主,亞馬遜技領云博主,51CTO博客專家等。近期榮譽2022年度…

視覺分析之邊緣檢測算法

9.1 Roberts算子 Roberts算子又稱為交叉微分算法&#xff0c;是基于交叉差分的梯度算法&#xff0c;通過局部差分計算檢測邊緣線條。 常用來處理具有陡峭的低噪聲圖像&#xff0c;當圖像邊緣接近于正45度或負45度時&#xff0c;該算法處理效果更理想。 其缺點是對邊緣的定位…

DuodooBMS源碼解讀之 sale_change模塊

銷售變更模塊用戶使用手冊 一、模塊概述 本擴展模塊主要包含兩個主要的 Python 文件&#xff1a;sale_change/report/sale_change_report.py 和 sale_change/wizard/sale_change_download.py&#xff0c;提供了銷售變更報表查看和銷售變更單下載的功能。以下是詳細的使用說明…

OpenCV形態學操作

1.1. 形態學操作介紹 初識&#xff1a; 形態學操作是一種基于圖像形狀的處理方法&#xff0c;主要用于分析和處理圖像中的幾何結構。其核心是通過結構元素&#xff08;卷積核&#xff09;對圖像進行掃描和操作&#xff0c;從而改變圖像的形狀和特征。例如&#xff1a; 腐蝕&…

力扣算法-1

力扣算法 1 兩數之和 給定一個整數數組nums和一個整數目標值target&#xff0c;請你在數組中找出和為目標值target的那兩個整數&#xff0c;返回他們的數組下標。 &#xff08;1&#xff09;暴力枚舉 &#xff08;枚舉數組每一個數x&#xff0c;再尋找數組中是否存在 targe…

pyside6學習專欄(三):自定義QLabel標簽擴展類QLabelEx

標簽是界面設計中最常用的控件&#xff0c;本文演示了如何基于PySide6的QLabex控件類擴展定義QLabelEX類&#xff0c;以實現更少的編碼完成各種圖像、彩色文本、動畫的加載和顯示&#xff0c;豐富界面顯示 本示例演示了QLabel和其擴展類QLabelEx分別顯示文本、圖像、動畫的使用…

從0到1:固件分析

固件分析 0x01 固件提取 1、從廠商官網下載 例如D-link的固件&#xff1a; https://support.dlink.com/resource/products/ 2、代理或鏡像設備更新時的流量 發起中間人攻擊MITM #啟用IP轉發功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables&#xff0c;將目…

使用 Spring Boot 和 Canal 實現 MySQL 數據庫同步

文章目錄 前言一、背景二、Canal 簡介三、主庫數據庫配置1.主庫配置2.創建 Canal 用戶并授予權限 四.配置 Canal Server1.Canal Server 配置文件2.啟動 Canal Server 五.開發 Spring Boot 客戶端1. 引入依賴2. 配置 Canal 客戶端3. 實現數據同步邏輯 六.啟動并測試七.注意事項八…

Linux系統配置阿里云yum源,安裝docker

配置阿里云yum源 需要保證能夠訪問阿里云網站 可以先ping一下看看&#xff08;阿里云可能禁ping&#xff0c;只要能夠解析為正常的ip地址即可&#xff09; ping mirrors.aliyun.com腳本 #!/bin/bash mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos…

后端開發:開啟技術世界的新大門

在互聯網的廣闊天地中&#xff0c;后端開發宛如一座大廈的基石&#xff0c;雖不直接與用戶 “面對面” 交流&#xff0c;卻默默地支撐著整個互聯網產品的穩定運行。它是服務器端編程的核心領域&#xff0c;負責處理數據、執行業務邏輯以及與數據庫和其他后端服務進行交互。在當…

銀河麒麟系統安裝mysql5.7【親測可行】

一、安裝環境 cpu&#xff1a;I5-10代&#xff1b; 主板&#xff1a;華碩&#xff1b; OS&#xff1a;銀河麒麟V10&#xff08;SP1&#xff09;未激活 架構&#xff1a;Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本&#xff1a;mysql-5.7.34-linux-glibc2.12-x86_64.ta…

從零開始學習PX4源碼9(部署px4源碼到gitee)

目錄 文章目錄 目錄摘要1.gitee上創建倉庫1.1 gitee上創建倉庫PX4代碼倉庫1.2 gitee上創建子倉庫2.固件在gitee部署過程2.1下載固件到本地2.2切換本地分支2.3修改.gitmodules內容2.4同步子模塊倉庫地址2.5同步子模塊倉庫地址更新(下載)子模塊3.一級子模塊和二級子模塊的映射關…

【回溯算法2】

力扣17.電話號碼的字母組合 鏈接: link 思路 這道題容易想到用嵌套的for循環實現&#xff0c;但是如果輸入的數字變多&#xff0c;嵌套的for循環也會變長&#xff0c;所以暴力破解的方法不合適。 可以定義一個map將數字和字母對應&#xff0c;這樣就可以獲得數字字母的映射了…

科普:“Docker Desktop”和“Docker”以及“WSL”

“Docker Desktop”和“Docker”這兩個概念既有緊密聯系&#xff0c;又存在一定區別&#xff1a; 一、聯系 核心功能同源&#xff1a;Docker Desktop 本質上是基于 Docker 核心技術構建的。Docker 是一個用于開發、部署和運行應用程序的開源平臺&#xff0c;它利用容器化技術…

Flutter 網絡請求與數據處理:從基礎到單例封裝

Flutter 網絡請求與數據處理&#xff1a;從基礎到單例封裝 在 Flutter 開發中&#xff0c;網絡請求是一個非常常見的需求&#xff0c;比如獲取 API 數據、上傳文件、處理分頁加載等。為了高效地處理網絡請求和數據管理&#xff0c;我們需要選擇合適的工具并進行合理的封裝。 …

虛擬表格實現全解析

在數據展示越來越復雜的今天&#xff0c;大量數據的渲染就像是“滿漢全席”——如果把所有菜肴一次性擺上桌&#xff0c;既浪費資源也讓人眼花繚亂。幸運的是&#xff0c;我們有兩種選擇&#xff1a; 自己動手&#xff1a;通過二次封裝 Element Plus 的表格組件&#xff0c;實…

QT 讀寫鎖

一、概述 1、讀寫鎖是一種線程同步機制&#xff0c;用于解決多線程環境下的讀寫競爭問題。 2、讀寫鎖允許多個線程同時獲取讀鎖&#xff08;共享訪問&#xff09;&#xff0c;但只允許一個線程獲取寫鎖&#xff08;獨占訪問&#xff09;。 3、這種機制可以提高并發性能&…

2025 vue3面試題匯總,通俗易懂

一、基礎概念與核心特性 1. Vue3 相比 Vue2 的改進&#xff08;通俗版&#xff09; 問題&#xff1a;Vue3 比 Vue2 好在哪&#xff1f; 答案&#xff1a; 更快&#xff1a; Proxy 代理&#xff1a;Vue2 的響應式像“逐個監聽保險箱”&#xff08;每個屬性單獨監聽&#xff0…

第5章:在LangChain中如何使用AI Services

這篇文章詳細介紹了 LangChain4j 中的 AI Services 概念&#xff0c;展示了如何通過高層次的抽象來簡化與大語言模型&#xff08;LLM&#xff09;的交互。AI Services 的核心思想是隱藏底層復雜性&#xff0c;讓開發者專注于業務邏輯&#xff0c;同時支持聊天記憶、工具調用和 …