日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

RS-485半双工延时问题

發(fā)布時間:2023/12/13 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 RS-485半双工延时问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學習485總線時,遇到延時問題,困擾很久。通過學習知道了485半雙工收發(fā)時必須延時,以保證系統(tǒng)的穩(wěn)定性、可靠性。好多資料都介紹了485 防靜電、抗干擾電路。惟獨沒提 每一幀收發(fā)停止位(或第9位)的延時和 半雙工總線收發(fā)切換延時 問題。

我覺得在半雙工狀態(tài)下 485 幀的收發(fā)和 總線的收發(fā)狀態(tài)切換延時問題 對485總線長期穩(wěn)定的工作有很大影響。徹底搞懂這個問題 對了解誤碼產(chǎn)生、數(shù)據(jù)丟失、總線的穩(wěn)定性、可靠性都有重要意義。



以下來源laoguo 21ic的文章 整理后:



1、每一幀收發(fā)停止位(或第9位)的延時問題

在RS-485半雙工通訊中,一般以單片機的TI,RI信號作收發(fā)切換控制信號,發(fā)送時,檢測TI是否建立起來,當TI為高電平后關(guān)閉發(fā)送功能轉(zhuǎn)為接收功能,接收時,檢測RI是否建立起來,當RI為高電平后,接收完畢,又可以轉(zhuǎn)為發(fā)送。因此,必須控制端RE*,DE的信號的有效脈寬應該大于發(fā)送或接收一幀信號的寬度。



1



從上面的時序圖可知:單片機在串行口發(fā)送數(shù)據(jù)時,只要將8位數(shù)據(jù)位傳送完畢,TI標志即建立,但此時應發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時)和停止位尚未發(fā)出。如果在這時關(guān)閉發(fā)送控制,勢必造成發(fā)送幀數(shù)據(jù)不完整。

接收數(shù)據(jù)時也同樣如此,單片機在接收完8個數(shù)據(jù)位后就建立起RI信號,但此時還未接收到第九位數(shù)據(jù)位(若接收地址幀時)和停止位。所以,接收端必須延時大于2位數(shù)據(jù)位的時間(1位數(shù)據(jù)位時間=1/波特率),再作應答,否則會發(fā)生總線沖突。

總之,發(fā)送和接收控制信號應該足夠?qū)?以保證完整地接收一幀數(shù)據(jù),任意兩個單機的發(fā)送控制信號在時間上完全分開,避免總線爭端。



注:延時T秒的取值

(1) 傳送地址幀時,T>2X(1/波特率),可以選取T=2.5X(1/波特率)。

(2) 傳送數(shù)據(jù)幀時,T>1X(1/波特率),可以選取T=1.5X(1/波特率)。



實際的軟件流程:

1



問題:(【5樓】以解決)

可看到軟件流程并沒有在 每一幀收發(fā)停止位(或第9位)后實現(xiàn)延時,而是在(數(shù)據(jù)包的)最后一個字節(jié)(幀)上延時。這樣能保障數(shù)據(jù)幀的正確(完整性)和穩(wěn)定性嗎?



2、半雙工總線收發(fā)切換延時問題

為了可靠的工作,在485總線狀態(tài)切換時需要做適當延時,再進行數(shù)據(jù)的收發(fā)。具體的做法是在數(shù)據(jù)發(fā)送狀態(tài)下,先將控制端置“1”,延時1ms左右的時間,再發(fā)送有效的數(shù)據(jù),一包數(shù)據(jù)發(fā)送結(jié)束后再延時1ms后,將控制端置“0”。這樣的處理會使總線在狀態(tài)切換時,有一個穩(wěn)定的工作過程。


------------------------------------------------------------------------------------------------------------------------------------------


兩個自動轉(zhuǎn)換(零延時)電路

http://www.ouravr.com/bbs/bbs_upload19801/files_9/ourdev_230635.jpg
輸出1時,485芯片不工作,總線仍然處于接收狀態(tài),靠上拉電阻保證差分電路輸出1。
1

零延時電路圖:
http://www.ouravr.com/bbs/bbs_upload19801/files_9/ourdev_230999.jpg
1
零延時電路波形圖:
和上面電路比,輸出1時,485芯片也有短時(RC延時)輸出。
1

他們?nèi)绾伪WC “控制端RE*,DE的信號的有效脈寬應該大于發(fā)送或接收一幀信號的寬度” 的?
------------------------
這個已經(jīng)理解了,這兩個電路沒有使用 單片機來切換,所以不存在發(fā)送最后一個幀需要延時的問題。

但是這個問題依然存在:
為了可靠的工作,在485總線狀態(tài)切換時需要做適當延時,再進行數(shù)據(jù)的收發(fā)。
------------------------------------
這兩個電路在狀態(tài)切換時都沒有按這個要求來延時。

可看到軟件流程并沒有在 每一幀收發(fā)停止位(或第9位)后實現(xiàn)延時,而是在(數(shù)據(jù)包的)最后一個字節(jié)(幀)上延時。這樣能保障數(shù)據(jù)幀的正確(完整性)和穩(wěn)定性嗎?

-------------------------------

又查了些資料,第一個問題有了新的思路:(具體理解的是否正確,還需要看波形來驗證)

對于一個數(shù)據(jù)包來說,單片機發(fā)第一幀(字節(jié))到最后幀之間的數(shù)據(jù)幀時,單片機都能正確的發(fā)出停止位(或第9位),因為這期間沒有使用中斷里的TI,RI信號作切換。直到最后一個幀才會用TI,RI信號來切換 485。也就是 最后一個幀(字節(jié))才需要延遲
停止位(或第9位)的時間。



從本質(zhì)上說,在發(fā)送/接收 數(shù)據(jù)包的 最后一個幀(字節(jié))時,需要延時 等待 停止位(或第9位)的完整發(fā)送/接收。 也就是應當在 最后一個幀發(fā)送/接收后,在軟件里寫入延時代碼 控制485芯片。

Maxim帶有自動方向控制的半雙工RS-485收發(fā)器





MAX13487E/MAX13488E半雙工RS-485收發(fā)器。該系列器件帶有AutoDirection功能,發(fā)送數(shù)據(jù)時可自動使能驅(qū)動器。這一特性省去了驅(qū)動使能控制信號。

----------------------------------------------------------------------------------------------------------------------

今天調(diào)了232/485電路,都未延時,開了3小時,每秒發(fā)/收一個包(9600bps,8/30字節(jié),不定長),無錯誤。

用下面兩個圖 直接把原來的程序(232下的上、下位機)未做任何修改搞成 485了。



上位機用的圖:







下位機用的圖:

----------------------------------------------------------------------------------

半雙工總線收發(fā)切換延時問題 1ms。有好多帖上說用1ms延時,通訊就穩(wěn)定了,不用則出現(xiàn)誤碼。不知究竟為何?



總結(jié)下:

1、總線上不間斷(長時間連續(xù))的發(fā)送數(shù)據(jù)會產(chǎn)生累積誤差(不同晶振頻率的誤差)。所以用延時(暫停通信一段時間)來消除波特率的誤差,避免數(shù)據(jù)錯誤。

2、485器件在收、發(fā)狀態(tài)轉(zhuǎn)換時,需要轉(zhuǎn)換時間來過渡到穩(wěn)定狀態(tài)。

總結(jié)

以上是生活随笔為你收集整理的RS-485半双工延时问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。