RS-485總線(xiàn)電平異常解決方案解析
各位工程師是否會(huì )遇到這樣的情況,測試單個(gè)RS-485設備數據無(wú)異常,但設備組網(wǎng)后,就出現通訊數據異?;蜻B接失敗等情況。出錯的原因是什么?本文將從門(mén)限電平為你揭秘RS-485組網(wǎng)異常。
本文引用地址:http://dyxdggzs.com/article/201911/407041.htmRS-485總線(xiàn)是具有結構簡(jiǎn)單、通信距離遠、通信速度高、成本低等優(yōu)點(diǎn),廣泛應用于工業(yè)通訊、電力監控以及儀器儀表等行業(yè)。若總線(xiàn)上接有終端電阻,則在總線(xiàn)空閑狀態(tài)時(shí),RS-485總線(xiàn)AB差分電壓可能處于門(mén)限電平(±200mV)之內,這時(shí)可能會(huì )導致通信出錯,那么,出錯的原因是什么?MCU接收到的數據會(huì )發(fā)生什么樣的變化?
1、 數據出錯的原因
如圖 1所示為8位數據位無(wú)校驗位的UART時(shí)序圖,當使用UART進(jìn)行通信時(shí),MCU在檢測到起始位后開(kāi)始接收其后的數據。
圖 1 無(wú)校驗位,8位數據位,串口時(shí)序圖
如圖 2所示為STM32串口外設檢測到起始位的條件,當檢測到下降沿(3個(gè)高電平+1個(gè)低電平)并且采樣序列1和采樣序列2均為0時(shí),STM32檢測到一個(gè)起始位。
每個(gè)位采樣16次,采樣點(diǎn)的間隔時(shí)間為tbit/16,tbit為每個(gè)位的時(shí)間,例如通信波特率為115.2kbps,則tbit=1/115.2k=8.68us,則采樣點(diǎn)的間隔時(shí)間為8.68us/16=0.5425us。
圖 2 STM32串口外設檢測到起始位的條件
下面以RSM485PCHT的門(mén)限電平為例進(jìn)行說(shuō)明,當AB差分電壓處于±200mV之內時(shí),模塊RXD引腳輸出狀態(tài)不確定。
當總線(xiàn)變?yōu)榭臻e時(shí),若RXD引腳輸出低電平,則可能導致MCU接收到錯誤數據或MCU在正常數據后誤接收1個(gè)0x00。
圖 3 RSM485PCHT門(mén)限電平
2、 數據發(fā)生了什么變化?
如圖 4所示,收發(fā)器1在A(yíng)B差分電壓處于±200mV門(mén)限電平之內時(shí)輸出高電平,收發(fā)器2在A(yíng)B差分電壓處于±200mV門(mén)限電平之內時(shí)輸出低電平,可以看出,收發(fā)器2可能導致MCU接收到錯誤的數據,并且在數據后誤接收到1個(gè)0x00數據。
圖 4 數據后多0x00
如圖 5所示,若總線(xiàn)上持續存在數據信號或連續發(fā)送多個(gè)字節數據,在數據之間存在的空閑狀態(tài)可能會(huì )被收發(fā)器2識別為1個(gè)起始位,從而導致數據連續錯誤。
圖 5 數據連續錯誤
3、 解決方案
總線(xiàn)空閑時(shí)若AB差分電壓處于門(mén)限電平之內,則可能導致數據出錯,可以使用如下方法避免總線(xiàn)空閑時(shí)AB差分電壓處于門(mén)限電平之內。
方案一:在總線(xiàn)組網(wǎng)距離偏長(cháng)時(shí),為避免因為總線(xiàn)信號反射而導致通訊異常的情況,都會(huì )增加終端電阻來(lái)解決總線(xiàn)反射問(wèn)題,但此時(shí)總線(xiàn)電平會(huì )被拉低,從而增大總線(xiàn)空閑時(shí)AB差分電壓處于門(mén)限電平之內的風(fēng)險,具體入下圖6所示。面對此類(lèi)應用可使用致遠電子RSM(3)485PCHT模塊,RS-485接口設計時(shí)可通過(guò)外置一個(gè)較小值的上下拉電阻調節空閑狀態(tài)時(shí)的電壓值,使電平處于門(mén)限電平外,具體的幅值變化如下圖7所示。
圖6 終端電阻對總線(xiàn)電平影響
圖7 RSM(3)485PCHT實(shí)物及應用連接圖
方案二:組網(wǎng)中增加終端電阻后,同樣可使用致遠電子RSM(3)485ECHT模塊,RSM(3)485ECHT具備極高的總線(xiàn)兼容性門(mén)限電平為-40mV~-20mV,具體如下圖8所示,在總線(xiàn)電平被終端電阻拉低時(shí)(最壞情況總線(xiàn)高電平幅值為0V)仍可識別總線(xiàn)電平,保證通訊的穩定性。
圖8 RSM(3)485ECHT實(shí)物圖及門(mén)限電平參數
評論