RS485接口大多都是基于RS232接口與電腦進(jìn)行通信的,RS485協(xié)議編程都是基于串口編程的,而由于RS232與RS485接口的不同,由于RS232只支持點(diǎn)對點(diǎn)通信,全雙工通信,而RS485是支持點(diǎn)對多點(diǎn)通信,半雙工通信,基于其編寫的協(xié)議有一定的相關(guān)性又有一定的區(qū)別。
RS-485接口支持點(diǎn)對多點(diǎn)通信,半雙工通信模式,由于485是半雙工通信模式,就必須要解決數(shù)據(jù)流向問題,就像某條鐵路可以雙向通車,為了防止撞車追尾等事故的發(fā)生,必須要通過相應(yīng)的調(diào)度來解決該問題,同樣的道理,由于支持點(diǎn)對多點(diǎn)通信,也必須要通過主機(jī)進(jìn)行相應(yīng)的調(diào)度來解決該問題,而且主機(jī)對于整個(gè)總線必須具有絕對的控制權(quán)。
我們假設(shè)電腦作為RS485總線的主機(jī),而采集模塊作為RS485總線的從設(shè)備。RS485總線的主機(jī)一開始也會(huì)對從設(shè)備進(jìn)行一次輪詢,逐個(gè)地址碼去詢問設(shè)備是否正常并且對相關(guān)情況做個(gè)記錄,防止在正常通信的時(shí)候不斷呼叫并不存在的地址碼而導(dǎo)致通信效率下降。主機(jī)對于從設(shè)備的控制是利用廣播方式發(fā)送下去的,而從設(shè)備只對含有自己地址碼的指令做相關(guān)的回應(yīng),在從設(shè)備做回應(yīng)的情況下,其他的從設(shè)備和主機(jī)保持沉默,當(dāng)從設(shè)備執(zhí)行完相關(guān)指令之后,發(fā)送完畢信號(hào)給主機(jī),主機(jī)繼續(xù)執(zhí)行下一條指令。RS485協(xié)議的編程基于上面的思路編寫。
RS485總線協(xié)議對于意外情況的處理,當(dāng)RS485總線主機(jī)對其從設(shè)備發(fā)送相關(guān)的指令的時(shí)候,從設(shè)備可能會(huì)因?yàn)榉N種原因而不執(zhí)行相關(guān)指令的情況,比如從設(shè)備在使用過程中損壞而不能回應(yīng)相關(guān)指令,主機(jī)一般都會(huì)設(shè)定一個(gè)時(shí)延,在設(shè)定的時(shí)間之內(nèi)得不到相關(guān)從設(shè)備的回應(yīng),其應(yīng)該做相應(yīng)的記錄并且執(zhí)行下一條指令。
RS485總線線路外部干擾過大會(huì)導(dǎo)致衰減的RS485信號(hào)淹沒在噪聲中,需要增加RS485中繼器中繼還原相關(guān)信號(hào)再次傳輸,當(dāng)485總線傳輸距離過長的時(shí)候,也是通過485中繼器放大信號(hào)延長傳輸距離,如果將多個(gè)RS-485總線簡單的按照星型連接或者樹形連接方式連接,就會(huì)產(chǎn)生信號(hào)反射等問題,就必須采用485集線器或者485中繼器將其相互隔離,獨(dú)立驅(qū)動(dòng),不會(huì)相互影響,從而保證RS485通信的穩(wěn)定性。