<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種實現(xiàn)載波監(jiān)聽多點接入/沖突檢測的多主RS485總線

          一種實現(xiàn)載波監(jiān)聽多點接入/沖突檢測的多主RS485總線

          作者: 時間:2012-04-18 來源:網(wǎng)絡 收藏


          2.3 驅(qū)動器無延遲自動切換邏輯

            為了實現(xiàn)驅(qū)動器的無延遲自動切換,TXD信號反相后接到驅(qū)動器使能,而驅(qū)動器輸入直接接地,如圖5所示。這樣處理使驅(qū)動器只在數(shù)據(jù)為0時打開,把數(shù)據(jù)0發(fā)出去。而當數(shù)據(jù)為1或者無數(shù)據(jù)時立刻關閉,縮短了切換時間。但是這樣做,使得數(shù)據(jù)1無法被正常發(fā)送出去。為使串行數(shù)據(jù)能被正確地接收,有兩個辦法產(chǎn)生數(shù)據(jù)中的1。第一個辦法,使用總線判斷電路中的正向接收器的輸出端?穴OUT+?雪作為RXD信號,該信號在總線空閑、開路和短路時輸出邏輯1,并且與RXD信號同相。第二個辦法,使用類似MAX3080自帶故障保護(fail-safe)功能的芯片作為接收器。MAX3080將接收器的觸發(fā)門限電壓從-200mv~+200mv調(diào)整為-200mv~-50mv,也能夠在總線空閑、開路和短路時輸出邏輯1。如果總線上的每一個節(jié)點都使用這些方法,那么所有節(jié)點都可以實現(xiàn)驅(qū)動器無延遲自動切換而不必擔心數(shù)據(jù)中的1不能被正確接收。

          2.4 軟件的實現(xiàn)

            發(fā)送數(shù)據(jù)方面,只需將標準串口函數(shù)putc()封裝成一個函數(shù)RS485PutString()發(fā)送數(shù)據(jù)即可。在RS485PutString()函數(shù)中,能夠方便地實現(xiàn)各種總線狀態(tài)判斷策略,甚至是CSMA/CD協(xié)議,實現(xiàn),邊發(fā)送邊監(jiān)聽。也可以在此函數(shù)的基礎上進行諸如定義不同數(shù)據(jù)包的實時性級別、定義總線超時判斷等高級編程。

            該函數(shù)的主要流程如圖6。

            判斷總線狀態(tài)就是簡單地讀取總線狀態(tài)判斷電路的輸出,高為空閑,低為總線已被占用。為了減少誤判,通常在判斷總線狀態(tài)為空閑后還要繼續(xù)判斷一段時間,具體的總線狀態(tài)判斷策略要根據(jù)通信協(xié)議進行調(diào)整。

            如果判斷總線空閑,即可進行數(shù)據(jù)發(fā)送。在發(fā)送過程中可以方便地繼續(xù)讀取總線狀態(tài)以進行邊發(fā)送邊監(jiān)聽的。一旦發(fā)現(xiàn)沖突發(fā)生,發(fā)送方放棄本次數(shù)據(jù)傳輸而轉(zhuǎn)入強化沖突流程(繼續(xù)發(fā)送幾個0x00以使各方都確認發(fā)生了總線沖突),然后再進入總線偵聽流程。以往的處理機制是通過對自己所發(fā)送的數(shù)據(jù)進行監(jiān)聽接收,然后比較接收到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)是否相符,判斷是否發(fā)生總線沖突,在軟件實現(xiàn)上比較復雜。而本系統(tǒng)的非常簡單:發(fā)送完一個字節(jié)就讀取一次總線狀態(tài)指示管腳的狀態(tài),如果發(fā)現(xiàn)總線被占用,就是發(fā)生了總線沖突。

            接收程序方面,因為接收器常開,所以仍然可以使用串行接收器的中斷服務程序,將接收到的數(shù)據(jù)放入緩沖區(qū),然后由命令解釋程序處理接收到的命令。本質(zhì)上與RS232的串口通信程序完全一樣,只是如果接收器是常開的話,在自己發(fā)送數(shù)據(jù)時,要記住將串行接收器中斷關閉,發(fā)送完畢后再打開,以避免運行不必要的中斷服務程序。

            另外,還可以結(jié)合驅(qū)動器和總線狀態(tài)判斷邏輯對總線進行開路和短路的檢測/報警。具體說就是某一個節(jié)點使能總線驅(qū)動器,然后判斷總線狀態(tài),如果仍然顯示總線空閑,說明總線短路或者總線到總線狀態(tài)判斷邏輯之間開路了。


          2.5 存在的不足之處

            該方法中的總線狀態(tài)判斷邏輯對邏輯0狀態(tài)的要求比較高,需要B線電平比A線高約1.1V才能得到低電平。如果采用總線判斷電路中的正向接收器的輸出端(OUT+)作為RXD信號,就會因為對邏輯0的要求而不滿足RS485的-200mV門限電平標準。若采用另一個具有故障保護功能的接收器并聯(lián)的話,固然能滿足-200mV門限電平標準,但整個節(jié)點的輸入阻抗將降低到6kΩ。

            以上不足之處都在于無法完全滿足標準標準,但在特定條件下是不會影響工作效果的。例如阻抗雖然降低了,但是當節(jié)點數(shù)不超過16時,是能夠很好地工作的。

            實驗表明,這種實現(xiàn)了CSMA/CD的多主式工作穩(wěn)定,可靠性高,大大提高了實時性。特別適合于強調(diào)實時性的分布式控制系統(tǒng),能夠方便地實現(xiàn)點與點之間的控制信息實時交換。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();