485通訊協議問題淺析

tonywi888發表於2012-05-21

RS-485介面大多都是基於RS-232介面與電腦進行通訊的,485協議程式設計都是基於串列埠程式設計的,而由於RS-232與RS-485介面的不同,由於RS-232只支援點對點通訊,全雙工通訊,而RS-485是支援點對多點通訊,半雙工通訊,基於其編寫的協議有一定的相關性又有一定的區別。

  RS-232介面支援點對點通訊,全雙工通訊模式,現在對於RS-232的使用大多都是基於無Modem連線,其分為握手連線和無握手連線,握手連線方式類似於打電話,請求連線方發起連線請求傳送,等待對方準備就緒並且允許傳送,然後傳送資料,傳送資料的同時也可以接收對方傳送的資料。而無握手連線則是類似於對講,直接傳送相關的資料過去,由於現在硬體功能增強,串列埠可以隨時處於準備接收狀態。在針對RS-232串列埠進行程式設計,無握手連線最簡單,而握手連線則需要編寫相應的應答命令之類的程式碼。

  RS-485介面支援點對多點通訊,半雙工通訊模式,由於485是半雙工通訊模式,就必須要解決資料流向問題,就像某條鐵路可以雙向通車,為了防止撞車追尾等事故的發生,必須要透過相應的排程來解決該問題,同樣的道理,由於支援點對多點通訊,也必須要透過主機進行相應的排程來解決該問題,而且主機對於整個匯流排必須具有絕對的控制權。關於485通訊問題,我們利用老師在教室講課作為例子來說明。

  我們假設老師作為RS-485匯流排的主機,而學生作為485匯流排的從裝置,而學生的學號則是從裝置的地址碼。老師對於整個課堂具有絕對的掌控力,一般來說,老師在上課之前會對學生進行點名以確實學生是否有缺課的,同樣的道理,RS-485匯流排的主機一開始也會對從裝置進行一次輪詢,逐個地址碼去詢問裝置是否正常並且對相關情況做個記錄,防止在正常通訊的時候不斷呼叫並不存在的地址碼而導致通訊效率下降。主機對於從裝置的控制是利用廣播方式傳送下去的,而從裝置只對含有自己地址碼的指令做相關的回應,在從裝置做回應的情況下,其他的從裝置和主機保持沉默,當從裝置執行完相關指令之後,傳送完畢訊號給主機,主機繼續執行下一條指令。就像老師在課堂講課的時候,指定某個學生回答問題,學生回答問題過程中,其他學生和老師保持沉默,不容許課堂上有講小話的情況,只有當學生回答完問題之後並且告知老師自己回答完畢,老師才會繼續講課或者指令另外的學生做相應的動作。485協議的程式設計基於上面的思路編寫。

  RS-485匯流排協議對於意外情況的處理,當485匯流排主機對其從裝置傳送相關的指令的時候,從裝置可能會因為種種原因而不執行相關指令的情況,比如從裝置在使用過程中損壞而不能回應相關指令,主機一般都會設定一個時延,在設定的時間之內得不到相關從裝置的回應,其應該做相應的記錄並且執行下一條指令。就像老師點名要求某個學生回答問題,而沒有得到相應的回應,點名三次之後,還是沒有回應,對於該學生的缺課做相關的記錄,然後繼續下面的課程。  

關於485匯流排線路另外的一些問題也可以用老師講課來做比喻,如老師講課過程中,外面的噪音非常的大,從而導致學生聽不到,那就需要加擴音器,對於485匯流排而言,就是外部干擾過大,導致衰減的485訊號淹沒在噪聲中,需要增加中繼還原相關訊號再次傳輸,同樣的道理,如果教室過大,導致老師說的話並不能傳到最後面的學生處,也是增加擴音器來解決問題,當485匯流排傳輸距離過長的時候,也是透過485中繼器放大訊號延長傳輸距離,還有就是如果講課過程中,產生了混音的情況有可能會導致整個課堂都聽不清楚,就將其劃分為多個小教室,透過多個廣播將老師的聲音分別傳入各個教室,使其不混雜都能夠聽清楚,如果將多個RS-485匯流排簡單的按照星型連線或者樹形連線方式連線,就會產生訊號反射等問題,就必須採用或者485中繼器將其相互隔離,獨立驅動,不會相互影響,從而保證485通訊的穩定性。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-730464/,如需轉載,請註明出處,否則將追究法律責任。

相關文章