《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > 在RS485總線上用沖突檢測方式實現(xiàn)對等網(wǎng)數(shù)據(jù)傳輸

在RS485總線上用沖突檢測方式實現(xiàn)對等網(wǎng)數(shù)據(jù)傳輸

2009-09-08
作者:段 騫

  摘? 要: 利用以太網(wǎng)的沖突檢測方式在RS485總線上連接的多個設備之間采用多主方式對等傳輸數(shù)據(jù),并給出了這種方法的硬件設計方案和軟件流程。

  關鍵詞: RS485總線? 對等網(wǎng)? 沖突檢測

?

  目前以RS485總線為基礎組建的各類網(wǎng)絡中,多采用主從式通信。但在一些組網(wǎng)中,采用對等式的通信方式更符合設計要求,效率更高。例如在一套由人機接口、紅外控制模塊(用于遙控家電)、三表集抄模塊、安防模塊和家居網(wǎng)關服務終端(與互聯(lián)網(wǎng)及電話相聯(lián))等組成的智能家居服務系統(tǒng)中,該家居系統(tǒng)內(nèi)部采用什么樣的數(shù)據(jù)傳輸方式,怎樣可靠和高效地傳輸數(shù)據(jù),對整個家居系統(tǒng)的正常運轉至關重要。因為總線上發(fā)起通信的數(shù)據(jù)有外界的遙控指令、人機接口處傳來的控制和查詢指令以及一些模塊主動上傳的指令(如報警),這些指令大多數(shù)是隨機的,若采用主從式難以符合要求,而采用多主方式的對等網(wǎng)可以符合數(shù)據(jù)傳輸?shù)囊?使數(shù)據(jù)及時發(fā)送。同時由于各個設備是對等的關系,實行分布式控制,所以一個模塊損壞,不會影響其他模塊工作,因此不存在主站損壞導致整個通信線路癱瘓的問題,從而使通信的可靠性大大增加。

1? 多主式對等網(wǎng)數(shù)據(jù)傳輸方案的選擇

  在采用多主方式后,掛接在總線上的各設備之間是對等的關系,各節(jié)點在發(fā)送數(shù)據(jù)時存在總線競爭問題,需要考慮設備之間的優(yōu)先發(fā)送數(shù)據(jù)問題以及傳送效率問題。要解決總線競爭問題,可以考慮用以太網(wǎng)的沖突檢測方案或令牌總線方案。在以太網(wǎng)的沖突檢測方案中,當總線上有不同節(jié)點同時發(fā)送數(shù)據(jù)時,會由于信號疊加而造成信號紊亂,即信號的沖突。要避免這種情況,節(jié)點在發(fā)送數(shù)據(jù)前要偵聽一下總線是否忙,不忙時才發(fā)送,以減少沖突。當發(fā)生沖突時,可以用二進制指數(shù)退避算法來解決沖突。令牌總線方案是通過令牌的傳送來控制每個節(jié)點發(fā)送的時間,從而解決總線的競爭。它雖然不存在沖突問題,但要不斷地傳送令牌,某一節(jié)點要發(fā)送數(shù)據(jù),必須等到獲得令牌才能發(fā)送,這會延誤重要數(shù)據(jù)的發(fā)送,并加大數(shù)據(jù)量和等待時間。在輕載荷時效率低,而且其協(xié)議比沖突檢測方案復雜,初始化時間長。綜合考慮,以太網(wǎng)的沖突檢測方案在輕載荷時效率高,且協(xié)議較令牌總線方案簡單??紤]到智能家居項目中總線上負荷不大,沖突量少,因此采用以太網(wǎng)的沖突檢測方式來實現(xiàn)多主方式數(shù)據(jù)傳輸。

2? 多主式數(shù)據(jù)傳輸?shù)挠布O計

2.1 器件的選擇

  系統(tǒng)的主控單片機采用AT89C52。AT89C52能夠與51系列單片機兼容,具有8KB Flash程序存儲器、256B數(shù)據(jù)存儲器,以及串口中斷和定時器。這些完全能夠滿足系統(tǒng)對中斷、數(shù)據(jù)存儲器和程序存儲器容量的需求。RS485收發(fā)器可考慮用SN75LBC184,該芯片具有很好的抗干擾性能,可靠性高。

2.2 設計原理

  硬件原理圖如圖1所示。單片機AT89C52的串口數(shù)據(jù)線與SN75LBC184的收發(fā)端口相連。SN75LBC184的使能端由單片機I/O口控制,通過RS485收發(fā)器進行單片機信號與RS485信號的轉換。利用AT89C52有一個全雙工串口通信端口的特性,在發(fā)送1個字節(jié)后,緊接著從總線收一次數(shù)據(jù),并比較2個數(shù)據(jù)是否相同。若相同,則認為沒有產(chǎn)生沖突;否則認為產(chǎn)生了沖突,去執(zhí)行相應的沖突處理。此時RS485收發(fā)器要收發(fā)同時使能,可讓收(/RE)一直使能,發(fā)使能(DE)用一個單片機I/O口(P11)控制。為了減小RS485總線上的盲區(qū)狀態(tài),加強通信的可靠性,在RS485總線的出口處加3個保護電阻,分別是上拉電阻750Ω、接地電阻750Ω和2條信號線之間的電阻130Ω。

3?多主式數(shù)據(jù)傳輸?shù)能浖O計

  下面將介紹采用RS485總線組建對等網(wǎng),利用沖突檢測方式傳送數(shù)據(jù)的原理及軟件流程。該總線傳輸速率為38.4kbps,采用多主發(fā)送方式。

3.1 發(fā)送流程

  由于采用類似以太網(wǎng)的沖突檢測方式來發(fā)送數(shù)據(jù),因此為了減少沖突,數(shù)據(jù)在發(fā)送之前應先進行總線偵聽,即確定總線是否有數(shù)據(jù)正在發(fā)送。若有,則等待到線路空閑;否則可發(fā)送,這樣可以減少沖突發(fā)生的概率。按傳輸速率為38.4kbps計算,每位的發(fā)送時間為26μs,以每個字節(jié)為10位計(起始位和結束位各1位,數(shù)據(jù)位8位),則發(fā)送每個字節(jié)需260μs。發(fā)送1幀32字節(jié)數(shù)據(jù)最少需8320μs。在總線偵聽時,若500μs沒有接收中斷,則認為總線空閑,可以發(fā)送數(shù)據(jù),等待時間很短,在數(shù)據(jù)量小時效率高。當某些數(shù)據(jù)幀要求有回應時,要發(fā)送回應幀,若回應幀滿足以下條件:

  (1)發(fā)送1個字節(jié)要260μs,1幀最大32字節(jié)數(shù)據(jù)至少要8320μs,取10ms。

  (2)對方接收到的時間取10ms。

  (3)程序處理時間取10ms。

  (4)對方發(fā)送時間按10次沖突算,則(210-1)×3×500=1534500,取1.54s。

  (5)接收回應幀時間10ms。

  則等待時間T=10+10+1534+10=1564ms,可取1.6s。

  若要求回應幀的數(shù)據(jù)等待一段時間后還沒收到回應幀,則重發(fā)數(shù)據(jù),這樣可減少誤碼率。若多次無法通信,則各裝置要置出錯信息,作相應處理或向外界報警。具體發(fā)送流程如圖2所示。當有數(shù)據(jù)要發(fā)送時,先判斷線路是否忙,若不忙,則可以發(fā)送數(shù)據(jù)。在發(fā)送途中檢測是否有沖突,若在發(fā)送中發(fā)現(xiàn)有數(shù)據(jù)沖突,則進行沖突處理,算出退避時間,等待退避時間后重傳數(shù)據(jù),最多10次;若無沖突,則發(fā)送完成,在設定的時間內(nèi)等待回應幀,若在規(guī)定時間內(nèi)沒收到回應幀,則置相應標志選擇重傳本幀數(shù)據(jù)或放棄;若收到回應幀,則本次通信成功。

?

3.2 接收流程

  串口通信采用異步傳送方式。字符是按幀格式進行傳送的,每幀數(shù)據(jù)中起始位和結束位各占1位(用于建立發(fā)送與接收之間的同步),數(shù)據(jù)位8位,無校驗位。接收流程圖如圖3所示。在串口收到數(shù)據(jù)后,按格式去判別所接收的數(shù)據(jù)是否正確,即先找到起始符,然后判斷是否為發(fā)給自己的數(shù)據(jù),并按自定義協(xié)議的數(shù)據(jù)要求和范圍逐個進行檢驗。若為有效數(shù)據(jù)則放入接收緩沖區(qū),置接收標志,讓應用層處理,有需要回應的,應用層處理完后發(fā)送相應的回應幀。對接收到的數(shù)據(jù)進行處理時,先看是否符合通信格式,CRC校驗是否通過,然后才譯碼。若其中一個數(shù)據(jù)不合要求,就清緩沖區(qū),認為數(shù)據(jù)無效,有些數(shù)據(jù)需返回錯誤信息。在通信中可能有一些異常狀態(tài),如接收數(shù)據(jù)出錯或1幀數(shù)據(jù)沒有收完。在此情況下,若數(shù)據(jù)之間的間隔超過最大等待時間,則需把接收數(shù)據(jù)緩沖區(qū)清空,認為數(shù)據(jù)無效。

?

3.3 沖突檢測流程

  若2個設備同時在空閑的電纜上發(fā)送數(shù)據(jù),就會發(fā)生數(shù)據(jù)沖突,此時系統(tǒng)要能檢測出總線上的沖突。在發(fā)送時把數(shù)據(jù)賦給一個變量,進入發(fā)送中斷后等待接收中斷標志(若超時也認為發(fā)生了沖突),然后從串口取數(shù),與變量中的數(shù)比較即可判斷有無沖突。沖突檢測流程圖如圖4所示。進入串口中斷后,如果是發(fā)送中斷,則清TI(發(fā)送中斷)標志,等待RI(接收中斷)標志。若超過設定時間(500ms)沒收到RI標志為1的信號,則認為發(fā)生了沖突。在接收到RI標志后,把串口緩沖區(qū)的數(shù)據(jù)與發(fā)送前存的數(shù)據(jù)比較,若二者相同,則不存在沖突;若不同,則認為發(fā)生了沖突。

3.4 沖突處理流程

  在發(fā)送數(shù)據(jù)中,若檢測到一次收發(fā)數(shù)據(jù)不同,就認為總線上有數(shù)據(jù)沖突,要進行沖突處理。沖突處理流程圖如圖5所示。發(fā)送過程中,當檢測到總線上有數(shù)據(jù)沖突,則所有設備停止發(fā)送,計算出等待的時間,退出串口中斷,在等待一段退避時間后,重新發(fā)送。等待時間的計算采用改進的二進制指數(shù)退避算法。

?

  在二進制指數(shù)退避算法中退避時延T=(2i-1)×基本時間間隔×優(yōu)先系數(shù)。

  其中i為沖突次數(shù),最大取10,基本時間間隔定為500μs。優(yōu)先系數(shù)是考慮讓一些重要數(shù)據(jù)在發(fā)生沖突后可以優(yōu)先發(fā)出,各站中越重要的數(shù)據(jù)優(yōu)先系數(shù)越低,這是對以太網(wǎng)二進制指數(shù)退避算法的改進。優(yōu)先系數(shù)根據(jù)系統(tǒng)需求確定。根據(jù)總線上各設備的情況,以智能家居系統(tǒng)為例,可考慮把通信信息優(yōu)先級分為3級。如安防報警信息優(yōu)先級別最高,優(yōu)先系數(shù)最小,可設為1,其他設備的優(yōu)先系數(shù)可根據(jù)情況設為2或3。當發(fā)生一次沖突時,安防優(yōu)先系數(shù)為1,基本時間間隔取500μs。當?shù)却?00μs后,若總線空閑,則可重新發(fā)送,即只等待1ms。計算后的計數(shù)值在單片機的定時器中計數(shù),計時時間到,則再次總線偵聽,發(fā)送數(shù)據(jù)。

4? 結束語

  該方案已經(jīng)在一套智能家居系統(tǒng)中得到實現(xiàn),同時也可作為其他項目的通信參考方案。該方案不僅可在RS485總線上使用,經(jīng)一定的修改之后還可以用于電力載波等方式,因此具有很好的兼容性。

?

參考文獻

1? Forouzan B,Coombs C,Fegan S C著,潘仡,朱丹宇,周正康譯.數(shù)據(jù)通信與網(wǎng)絡.北京:機械工業(yè)出版社,2000

2? FAILSAFE Biasing of Differential Buses.National?Semiconductor Corporation,1998

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 一本大道香蕉高清视频视频 | 亚洲高清在线mv| 麻豆国内精品欧美在线| 国产精品男男视频一区二区三区| 一区二区三区视频| 新梅瓶1一5集在线观看| 久久精品国产一区二区三区| 欧美www网站| 亚洲日本va在线观看| 激情伊人五月天久久综合| 免费无遮挡肉动漫在线观看| 美女扒开超粉嫩的尿口视频| 国产三级在线免费| 青青热久免费精品视频精品| 国产成人无码一区二区三区在线 | а√天堂资源官网在线资源| 手机国产乱子伦精品视频| 久久国产精品一国产精品| 日韩高清在线高清免费| 亚洲av无码一区二区三区电影| 欧美影院在线观看| 亚洲欧美国产一区二区三区| 波多野结衣乱码中文字幕| 人人妻人人澡人人爽人人精品| 男女下面一进一出免费无遮挡| 免费被靠视频动漫| 精品国产一二三产品价格| 又大又黄又粗又爽的免费视频| 老司机精品免费视频| 国产一区在线视频| 蒂法3d同人全肉动漫在线播放| 国产仑乱无码内谢| 韩国高清在线观看| 国产女人精品视频国产灰线| 91视频综合网| 国产小视频在线观看网站| 久久香蕉国产线看观看99| 欧美中日韩免费观看网站| 亚洲国产精品免费在线观看| 欧美成人免费tv在线播放| 亚洲日韩亚洲另类激情文学|