<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

一種實(shí)現載波監聽(tīng)多點(diǎn)接入/沖突檢測的多主RS485總線(xiàn)

作者: 時(shí)間:2012-04-18 來(lái)源:網(wǎng)絡(luò ) 收藏


2.3 驅動(dòng)器無(wú)延遲自動(dòng)切換邏輯

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

2.4 軟件的實(shí)現

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

  該函數的主要流程如圖6。

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

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

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

  另外,還可以結合驅動(dòng)器和總線(xiàn)狀態(tài)判斷邏輯對總線(xiàn)進(jìn)行開(kāi)路和短路的檢測/報警。具體說(shuō)就是某一個(gè)節點(diǎn)使能總線(xiàn)驅動(dòng)器,然后判斷總線(xiàn)狀態(tài),如果仍然顯示總線(xiàn)空閑,說(shuō)明總線(xiàn)短路或者總線(xiàn)到總線(xiàn)狀態(tài)判斷邏輯之間開(kāi)路了。


2.5 存在的不足之處

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

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

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


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>