RS-485由電子工業(yè)協(xié)EIA(Electronics?Industry?Association)于1983年制定。它具有了多點(diǎn)、雙向通信能力,即允許多個(gè)發(fā)送器連接到同一條總線上,同時(shí)增加了發(fā)送器的驅(qū)動(dòng)能力和沖突保護(hù)特性,擴(kuò)展了總線共模的范圍,后命名為TIA/EIA-485-A標(biāo)準(zhǔn)。
RS-485采用平衡發(fā)送和差分接收,具有抑制共模干擾的能力。其傳輸時(shí)的電氣協(xié)議規(guī)定:當(dāng)A線的電壓低于B線時(shí),傳送的是信號1,當(dāng)A線的電壓高于B線時(shí),傳送的是信號0。A線和B線能承受的共模信號為 -7V~+12V,這里講的共模信號是指A線或B線對地的電壓。一個(gè)標(biāo)準(zhǔn)發(fā)送器能夠直接驅(qū)動(dòng)幾個(gè)接收器,且發(fā)送器可以被關(guān)閉使其輸出端變成高阻,因此只需 2條連線既可實(shí)現(xiàn)一個(gè)半雙工的通信網(wǎng)絡(luò)。RS-485標(biāo)準(zhǔn)只對接口的電氣特性做出規(guī)定,而不涉及接插件、電纜或協(xié)議,在此基礎(chǔ)上用戶可以建立自己的高層通信協(xié)議。
由于RS-485通信是一種半雙工通信,發(fā)送和接受共用同一物理通道,在任意時(shí)刻只允許一臺(tái)單片機(jī)處于發(fā)送狀態(tài),因此要求應(yīng)答的單片機(jī)必須在偵聽到總線上呼叫信號己經(jīng)發(fā)送完畢,并且在沒有其他單片機(jī)應(yīng)答信號的情況下才能應(yīng)答。如果在時(shí)序上配合不好,就會(huì)發(fā)生總線沖突,使整個(gè)系統(tǒng)的通信癱瘓,無法正常工作。上位機(jī)與下位機(jī)之間如何進(jìn)行數(shù)據(jù)傳輸,怎么提高通信的效率和可靠性,以及對通信過程中的故障處理,幀格式的約定,都需要一套詳盡的通信協(xié)議。
由于RS-485標(biāo)準(zhǔn)只制定了物理層電氣標(biāo)準(zhǔn),對上層通信協(xié)議沒有規(guī)定,這給設(shè)計(jì)者提供了很大的靈活性。一套完整的通信協(xié)議既要求結(jié)構(gòu)簡單,功能完備,又要求具有可擴(kuò)充性與兼容性,并且盡量標(biāo)準(zhǔn)化。
在多MCU之間中長距離通信的諸多方案中,RS-485因硬件設(shè)計(jì)簡單、控制方便、成本低廉等優(yōu)點(diǎn)。本文完成了基于RS-485的單主機(jī)一多從機(jī)的集散式控制系統(tǒng)的設(shè)計(jì),包括上位機(jī)主控端與下位機(jī)從動(dòng)端,并詳細(xì)分析了其通信時(shí)序。