精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

485通訊中的故障解決

RS485基本都是由RS232轉換而來,此時就需要將全雙工切換到半雙工,目前大部分的工程師基本都是使用軟件換向的方法,作者就遇到過軟件換向不及時丟包的方法,并提供一種解決思路工參考。

問題描述

最近公司在做一個采集器,具體的原理就是通過串口將客戶數據采集上來,由于客戶的接口是RS232的,而我們的采集器只有RS485接口,無法直接對接,因此我們引入了一個中間的RS232/RS485轉換器,對接我們的采集器,這種用法相信也是論壇工程師絕大多數的選擇,不料在進行可靠性測試過程一個晚上,丟包率竟然高度10%,這種有線的連接,又是低速率串口,理論上的丟包率應該是0。

圖1:信號采集原理圖

原因分析

首先我們排除以下幾個原因:

1、走線長度:設備都擺放在一起,長度只有2米不到;2、干擾問題:這是在辦公室測試的,沒有大的干擾;3、數據速率:波特率只用了115200,常規波特率;4、軟件問題:這個RS485采集軟件已經用了好幾年,一直很穩定;5、客戶的PLC程序:客戶在現場也用了好幾年,也很穩定。

問題的定位基本可以大致確定方向,就是出在這個RS485和RS232的數據轉換上,我們的采集器的接口設計原理圖如下:

 

圖2:采集器端口設計原理圖

通過示波器的抓波我們發現,問題原因就在這個端口上。如下圖;TX是我們采集器發出的信號,RX是客戶PLC回復的信號,DIR是我們的采集器的方向控制信號。簡單說,就是在0uS的時候,我們發出去數據,PLC在150uS左右就回復數據,而我們的方向切換引腳在200~300uS不等。也就是說我們發送完數據,來不及切換到接收狀態,PLC就回復數據了,導致數據丟失。

通過和軟件工程師溝通,由于我們跑的是Linux系統,方向引腳控制采取的是進程控制的方法,這個進程本來優先級已經很高,到時由于是多進程運行,還是會被其他系統進程搶占,所以導致無法做到更高的切換速度,或者是切換速度無法明確,只能是一個區間。

圖3:示波器實測圖

解決方案

既然是采集器來不及換向,解決的思路很簡單,有兩個方案;

1、將采集的換向速度提高,提高到100uS以內;2、將PLC的回復時間變慢,延長到500uS以后。

由于客戶擔心改程序出問題,所以不愿意改,只好我們修改采集器的換向速度,我們的軟件工程師也不愿意改,理由是產品運行多年,很穩定,怕改出問題。按照自然法制,怕麻煩的事,用錢肯定能解決!

終于不負有心人,我們找到了兩個用錢解決的思路,就是更換RS485接口芯片,不讓軟件參與換向。可選的芯片有兩種:

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

 

圖4;MAX13487 內部框圖

2、周立功公司的RSM(3)485PHT,由芯片自動切換方向,無需軟件干預切換方向,驅動能力強,通信速率高,DC電源、隔離、RS485芯片功能三合一,節省板卡空間。

 

圖5;RSM(3)485PHT原理圖

最終,我們選擇了周立功的RSM(3)485PHT,經過7天的長時間丟包測試,丟包率為0%,測試通過。

舉一反三

在接口轉換設計中,匹配性問題是我們經常會遇到的,RS485由于定位是比較低速的串口,使用起來一般都不會有問題,我們的采集器也是99%的設備接入都沒問題,這個客戶的PLC也是我們遇到的唯一回復時間這么快的PLC,正常的PLC都會在500uS以后。這就給我們啟示:所有的雙工通信轉換為單工通信時,都應該考慮換向不及時導致的數據丟失。

02

匹配電阻使用不當導致RS485通信失敗

很多工程師都知道RS485的匹配電阻120R電阻的重要性,因此設計時候都有預留該電阻。但多個RS485設備并聯時,需要注意該電阻的影響。

問題描述

之前我們公司做過數據采集器,采集是通過RS485與其他客戶的設備連接的,產品設計之初是一對一連接,產品發布了2年基本沒有收到市場的問題反饋,最近一個月時,客戶有反饋我們的RS485讀取不到數據,更換好幾個全新的數據依舊,要求我們盡快解決。

原因分析

由于我們的產品已經發布2年都沒問題,所以我們的主要懷疑方向就是客戶的現場應用方案。我們先審視一下我們自己的RS485端口設計,如下圖1。這個方案在點對點應用場景多年都ok。

圖1:RS485端口設計原理圖

接著我們審視客戶的應用方案,如圖2所示,客戶采用的是手拉手的模式,這種模式也是常用的拓撲結構。

圖2:客戶的現場應用方案

由于暫時還沒有找到原因,我們去RS485的標準這里找一些參考,終于,我們在RS485的標準里面找到以下關鍵信息;如下表:

總結下來,主要是以下的幾條;

(1)驅動器輸出信號電平(負載最小時):±1.5V;(2)驅動器負載最小阻抗:54Ω;

(3)接收器門檻電壓:±200mV;(4)接收器輸入阻抗最小值:≥12KΩ。

根據RS485差分阻抗的計算公式,當有64個終端并接時(n=64時),當RS485總線上只有首位兩端有終端匹配電阻Rt時,總線上的差分阻抗為54.74Ω,剛剛符合RS485的標準。

圖3,多個RS485并聯的示意圖

但是,由于我們的終端匹配電阻Rt是使用一個固定120歐姆阻值的電阻焊接在主板上,客戶沒有辦法把中間的電阻刪除,導致整個RS485總線上并聯了多個120R的電阻,導致RS485總線上的差分阻抗遠遠小于54Ω,無法滿足標準要求的大于54歐姆的要求,總線上的阻抗太小,導致驅動電流太大,RS485芯片無法提供足夠的電流。解決方案

已經定位到原因,主要還是最初的設計定位是點對點通信,忽略了客戶的對點通信的需求,將RS485總線上的匹配電阻Rt全部都焊接了,客戶一旦使用多個設備并聯時,導致了總線的差分阻抗太小。解決的辦法就是將除了收尾兩端的Rt全部刪除。如下圖4

圖4:刪除中間設備的Rt,只保留收尾兩端的Rt

整改之后,經過我們測試部的測試和客戶的使用1個多月,再也沒有反饋問題,問題基本算解決。

總結

通過這次的事故,我們還總結了RS485以下的容易犯的錯誤:

(1)上下拉電阻的主要作用:RS485增加上下拉電阻的主要目的是為了解決總線在空閑狀態、或者是開路狀態(485收發器與總線斷開)下,使得總線上的電壓大于RS485標準要求的200mV(實際應用考慮余量設置為300mV);

(2)上下拉電阻的常規值:RS485的上下拉電阻阻值選擇主要滿足空閑狀態下Vab大于300mV,該電阻越小,功耗越大,功耗大到一定程度時,甚至會觸發RS485 的電源輸出保護,導致通信失敗,因此滿足空閑下300mV情況該電阻越大越好,一般的應用,該電阻選擇1K/R0805即可;

(3)多節點時的上下拉電阻:當RS485的總線上的節點增加時,由于RS485芯片內部也有內部上下拉電阻(該阻值一般都是上百K),該阻值與輸入阻抗Rin并聯后,再與終端匹配電阻并聯,最終的等效差分阻抗很容易會小于RS485標準要求的54Ω。因此,2個節點以上的應用,則需要考慮外部上下拉電阻帶來的阻抗減小,

(4)終端匹配電阻:從上面公式可以看出,只增加2個匹配電阻,差分阻抗就降低到60Ω,如果再增加一個就降低到40Ω,因此,使用多個節點時,最多只能在首尾兩端增加120Ω的匹配電阻。

RS485純硬件反相法自動換向過早導致數據丟包

之前我們的產品的RS485設計借鑒了圖1中的轉換器的原理,該方案的原理主要是使用反相器法,具體的實現原理就是:反相法使用了一個反相器,依賴于發送信號TX的電平決定RS485芯片屬于發送還是接收狀態,例如,TX為高電平時,反相后為低電平,此時收發器處于接收狀態,AB總線上的邏輯由上下拉決定,此時為邏輯1;當TX為低電平時,反相后為高電平,此時收發器處于發送狀態,AB總線上的邏輯為0。簡單說,就是反相法可以發送低電平,高電平其實是有AB線上的上下拉電阻決定的。

經過我們的長時間的驗證,該種方案在100kbps波特率以內都不會丟包,但是波特率大約100kbps以上,例如115200bps時,丟包可以達到0.1%,這是我們不允許的。

圖1:Tps563200現貨價格

原因分析

反相器法的原理上是沒有問題的,但是我們忽略了一個串口的底層實現方式,串口通信是異步通信,雙方沒有時鐘同步,依賴于雙方的聲稱。

UART通信沒有時鐘同步,不是說不需要時鐘,而是兩個系統的時鐘來自兩個設備,各跑各的,沒有同步。這就要求兩個系統的時鐘誤差不能太大。UART接收的流程如下:

(1)接收端選定好與發送端一致的起始位數、數據位數、校驗位數、停止位數、波特率,例如下圖起始位1、數據位8、校驗無、停止位1、波特率9600bps。

(2)RX線上無傳輸時,保持為高電平,RX端有采樣器,采樣器以波特率的16倍采樣周期對一位bit數據進行采樣。確認起始位后,再經過16個采樣周期,采樣第一位數據,再經過16個采樣周期,采樣第二位,以此類推。

圖2:UART 采樣示意圖

圖3:UART 過采樣示意圖

圖4:UART 誤差允許范圍

這里就存在一個問題,發送和接收的底層啟動都是由不同的廠家不同的工程師做的,大部分的工程師都是取數據bit的50%~80%位寬的數據,如果雙方的波特率誤差過大,就有可能數據還沒有發送接收,但是RS485芯片已經切換到接收狀態了,導致發送的數據錯誤。

使用100k速率仿真現有的方案,TXD信號和方向引腳同時切換,幾乎沒有余量。極端情況下就有可能數據沒有傳輸結束,方向引腳就切換了,導致數據傳不出去。理想的方案應該是方向引腳延后30%~50%的位寬再切換方向。

圖5:現有反向器的RS485方向切換方案仿真圖

解決方案

解決的方案需要在原有的基礎上,增加D1、R3、R4、C1。如下圖6。

由于該換向的原理是發送數據0的時候,DE/RE引腳為高電平,U2為發送狀態,數據有U2發送出去。而發送數據1的時候,DE/RE引腳為低電平,U2實際為接收狀態,AB總線上的 邏輯1其實是有R1、R2的上下拉電阻使得Va-Vb>200mV的。因此,我們的設計主要保證發送數據0的時候,方向引腳比數據延遲30%~50%左右,保證數據順利發送出去。

實現的原理如下:TXD發送數據0的時候,經過反相器U1,DE/RE引腳為高電平,使得U2為發送狀態,下一bit數據即將為1,但是經過R4、C1的RC充電效應,U2的pin3引腳并不會立即為高電平,而是經過延遲后才為高電平,延遲的時間即是我們設計的方向延遲時間。舉例子,假設U1的高電平閾值為1.5V,U1的供電電壓為5V,R4=36K,C1=300pF,根據公式:t = RC*Ln[(V1-V0)/(V1-Vt)],可以估算出切換方向延遲的時間約3.1uS。

TXD發送數據1的時候,經過反相器U1,DE/RE引腳為低電平,使得U2為接收狀態,接收狀態下,AB總線上的值由上拉R1,下拉R2決定,不再需要U2發送數據,因此方向控制信號等同于無效。

圖6:方向信號延后措施

使用100K的頻率進行仿真,結果顯示方向引腳可以延后1.85uS,可以滿足要求。

圖7:100K頻率仿真圖

總結

本文主要通過增加RC延遲和反相器波形整形,從而達到方向切換比數據bit延后的目的,讀者在實際使用過程,還需要根據自己設計的最高波特率來選擇RC的參數,如RC時間太長,在頻率很高的情況下,反相器可能沒有輸出,一致時0,一般設置為位寬的30%左右即可,例如115200bps的波特率,位寬是8.6uS,延遲參數可以設置為8.6*0.3=2.5u左右。二極管D1和R3主要是為了應付TXD信號由高變低的時候,能夠快速的釋放反相器輸入引腳的電壓,讓反相器的輸出為高電平,及時將數據0發送出去。

全部回復(4)
正序查看
倒序查看
2022-01-22 14:37

485通信在PLC應用中也時常用到,像各種傳感器、集線器都用485,但是吧,在單片機開發中還真沒有用過。

0
回復
2022-01-22 14:38

這個帖子寫的非常好,值得學習。

0
回復
2022-01-24 11:34

一般來說,對于設備數量較少時不需要匹配電阻的,特別是用到多個485設備時,如果自己的產品是從機時,最好不要焊接匹配電阻

0
回復
lsx3021
LV.1
5
2022-02-09 11:36

很好的經驗和學習資料,收藏了!

0
回復
主站蜘蛛池模板: freepron日本| 成人丁香社区 | 无码精品人妻一区二区三区免费看 | 九九热精品国产 | 综合色区国产亚洲另类 | 秋霞视频在线免费观看 | 视频久久久 | 国产99久久精品一区二区300 | 天天综合亚洲综合网天天αⅴ | 国产日韩欧美高清 | 国内精品视频一区二区三区八戒 | 在线观看高清视频免费网站 | 无码一区二区三区爆白浆 | 两个人的视频在线观看www | video3d动漫xxx | 经典三级久久 | 诱人的女邻居9中文观看 | 97国产精品最好的产品 | 亚洲精品女人久久 | 欧美精品亚洲精品日韩已满十八 | 乳大有奶水风流少妇 | 欧美精品极品 | 亚洲人成网站在线在线 | 91麻豆免费观看 | 人人性人人性碰国产 | 亚洲国产精品第一区二区三区 | 成人欧美一区二区三区黑人 | 文豪野犬4季免费观看简体中文 | 成人亚洲综合色就1024 | 最近最新中文免费字幕一 | 成年女人18级毛片毛片免费 | 伊人大蕉久在线播放 | 久久女人| 免费黄色在线看 | 九九欧美 | 熟女无套高潮内谢吼叫免费 | 波多野结衣初尝黑人巨大 | 国产又粗又硬的视频 | 嫩草福利 | 在线看的片片片免费 | porno—365hd|