RS-485接口支持點對多點通信,半雙工通信模式,由于485是半雙工通信模式,就必須要解決數據流向問題,就像某條鐵路可以雙向通車,為了防止撞車追尾等事故的發生,必須要通過相應的調度來解決該問題,同樣的道理,由于支持點對多點通信,也必須要通過主機進行相應的調度來解決該問題,而且主機對于整個總線必須具有絕對的控制權。關于485通信問題,我們利用老師在教室講課作為例子來說明。
我們假設老師作為RS-485總線的主機,而學生作為485總線的從設備,而學生的學號則是從設備的地址碼。老師對于整個課堂具有絕對的掌控力,一般來說,老師在上課之前會對學生進行點名以確實學生是否有缺課的,同樣的道理,RS-485總線的主機一開始也會對從設備進行一次輪詢,逐個地址碼去詢問設備是否正常并且對相關情況做個記錄,防止在正常通信的時候不斷呼叫并不存在的地址碼而導致通信效率下降。主機對于從設備的控制是利用廣播方式發送下去的,而從設備只對含有自己地址碼的指令做相關的回應,在從設備做回應的情況下,其他的從設備和主機保持沉默,當從設備執行完相關指令之后,發送完畢信號給主機,主機繼續執行下一條指令。就像老師在課堂講課的時候,指定某個學生回答問題,學生回答問題過程中,其他學生和老師保持沉默,不容許課堂上有講小話的情況,只有當學生回答完問題之后并且告知老師自己回答完畢,老師才會繼續講課或者指令另外的學生做相應的動作。485協議的編程基于上面的思路編寫。
RS-485總線協議對于意外情況的處理,當485總線主機對其從設備發送相關的指令的時候,從設備可能會因為種種原因而不執行相關指令的情況,比如從設備在使用過程中損壞而不能回應相關指令,主機一般都會設定一個時延,在設定的時間之內得不到相關從設備的回應,其應該做相應的記錄并且執行下一條指令。就像老師點名要求某個學生回答問題,而沒有得到相應的回應,點名三次之后,還是沒有回應,對于該學生的缺課做相關的記錄,然后繼續下面的課程。
關于485總線線路另外的一些問題也可以用老師講課來做比喻,如老師講課過程中,外面的噪音非常的大,從而導致學生聽不到,那就需要加擴音器,對于485總線而言,就是外部干擾過大,導致衰減的485信號淹沒在噪聲中,需要增加485中繼器中繼還原相關信號再次傳輸,同樣的道理,如果教室過大,導致老師說的話并不能傳到最后面的學生處,也是增加擴音器來解決問題,當485總線傳輸距離過長的時候,也是通過485中繼器放大信號延長傳輸距離,還有就是如果講課過程中,產生了混音的情況有可能會導致整個課堂都聽不清楚,就將其劃分為多個小教室,通過多個廣播將老師的聲音分別傳入各個教室,使其不混雜都能夠聽清楚,如果將多個RS-485總線簡單的按照星型連接或者樹形連接方式連接,就會產生信號反射等問題,就必須采用485集線器或者 485中繼器將其相互隔離,獨立驅動,不會相互影響,從而保證485通信的穩定性。
原文地址:
http://tieba.baidu.com/p/2737533662