RS 485半雙工延時問題

2021-08-20 08:29:45 字數 1334 閱讀 9980

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

我覺得在半雙工狀態下 485 幀的收發和 匯流排的收發狀態切換延時問題 對485匯流排長期穩定的工作有很大影響。徹底搞懂這個問題 對了解誤碼產生、資料丟失、匯流排的穩定性、可靠性都有重要意義。

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

在rs-485半雙工通訊中,一般以微控制器的ti,ri訊號作收發切換控制訊號,傳送時,檢測ti是否建立起來,當ti為高電平後關閉傳送功能轉為接收功能,接收時,檢測ri是否建立起來,當ri為高電平後,接收完畢,又可以轉為傳送。因此,必須控制端re*,de的訊號的有效脈寬應該大於傳送或接收一幀訊號的寬度。

從上面的時序圖可知:微控制器在序列口傳送資料時,只要將8位資料位傳送完畢,ti標誌即建立,但此時應傳送的第九位資料位(若傳送位址幀時)和停止位尚未發出。如果在這時關閉傳送控制,勢必造成傳送幀資料不完整。

接收資料時也同樣如此,微控制器在接收完8個資料位後就建立起ri訊號,但此時還未接收到第九位資料位(若接收位址幀時)和停止位。所以,接收端必須延時大於2位資料位的時間(1位資料位時間=1/波特率),再作應答,否則會發生匯流排衝突。

總之,傳送和接收控制訊號應該足夠寬,以保證完整地接收一幀資料,任意兩個單機的傳送控制訊號在時間上完全分開,避免匯流排爭端。

注:延時t秒的取值

(1) 傳送位址幀時,t>2x(1/波特率),可以選取t=2.5x(1/波特率)。

(2) 傳送資料幀時,t>1x(1/波特率),可以選取t=1.5x(1/波特率)。

實際的軟體流程:

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

可看到軟體流程並沒有在 每一幀收發停止位(或第9位)後實現延時,而是在(資料報的)最後乙個位元組(幀)上延時。這樣能保障資料幀的正確(完整性)和穩定性嗎?

2、半雙工匯流排收發切換延時問題

為了可靠的工作,在485匯流排狀態切換時需要做適當延時,再進行資料的收發。具體的做法是在資料傳送狀態下,先將控制端置「1」,延時1ms左右的時間,再傳送有效的資料,一包資料傳送結束後再延時1ms後,將控制端置「0」。這樣的處理會使匯流排在狀態切換時,有乙個穩定的工作過程。

問題:這裡的 1ms是如何計算的? 485匯流排收、發狀態切換時需要做適當延時,是指 485晶元的收發切換需要延時還是 485匯流排電纜固有的特性?

RS485資料全雙工 半雙工的定義與應用

在序列通訊中,資料通常是在兩個站 如終端和微機 之間進行傳送,按照資料流的方向可分成三種基本的傳送方式 全雙工 半雙工 和單工,但單工目前已很少採用。1 全雙工方式 full duplex 當資料的傳送和接收分流,分別由兩根不同的傳輸線傳送時,通訊雙方都能在同一時刻進行傳送和接收操作,這樣的傳送方式...

wince RS485半雙工實現

rs485半雙工軟體程式設計實現 方法1 讓作業系統正確的控制 rts訊號。hcom createfile dcb dcb memset dcb,0,sizeof dcb dcb.dcblength sizeof dcb dcb.fbinary true binary mode,no eof che...

wince RS485半雙工實現

rs485半雙工軟體程式設計實現 方法1 讓作業系統正確的控制 rts訊號。hcom createfile dcb dcb memset dcb,0,sizeof dcb dcb.dcblength sizeof dcb dcb.fbinary true binary mode,no eof che...