一種實(shí)現載波監聽(tīng)多點(diǎn)接入/沖突檢測的多主RS485總線(xiàn)
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ā)出去。

2.4 軟件的實(shí)現
發(fā)送數據方面,只需將標準串口函數putc()封裝成一個(gè)函數RS485PutString()發(fā)送數據即可。在RS485PutString()函數中,能夠方便地實(shí)現各種總線(xiàn)狀態(tài)判斷策略,甚至是CSMA/CD協(xié)議,實(shí)現載波監聽(tīng),邊發(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)流程。以往的RS485總線(xiàn)沖突檢測處理機制是通過(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)足標準RS485總線(xiàn)標準,但在特定條件下是不會(huì )影響工作效果的。例如阻抗雖然降低了,但是當節點(diǎn)數不超過(guò)16時(shí),是能夠很好地工作的。
實(shí)驗表明,這種實(shí)現了CSMA/CD的多主式RS485總線(xiàn)工作穩定,可靠性高,大大提高了實(shí)時(shí)性。特別適合于強調實(shí)時(shí)性的分布式控制系統,能夠方便地實(shí)現點(diǎn)與點(diǎn)之間的控制信息實(shí)時(shí)交換。
評論