在MCU之間中長(zhǎng)距離通信的諸多方案中,RS-485因硬件設(shè)計(jì)簡(jiǎn)單,、控制方便,、成本低廉等優(yōu)點(diǎn)廣泛應(yīng)用于工廠(chǎng)自動(dòng)化、工業(yè)控制,、小區(qū)監(jiān)控,、水利自動(dòng)報(bào)測(cè)等領(lǐng)域。但RS-485總線(xiàn)在抗干擾、自適應(yīng),、通信效率等方面仍存在缺陷,,一些細(xì)節(jié)的處理不當(dāng)常會(huì)導(dǎo)致通信失敗甚至系統(tǒng)癱瘓等故障,因此提高RS-485總線(xiàn)的運(yùn)行可靠性至關(guān)重要,。
一,、RS-485接口電路的硬件設(shè)計(jì)
1、總線(xiàn)匹配
總線(xiàn)匹配有兩種方法,,一種是加匹配電阻,,如圖1a所示。位于總線(xiàn)兩端的差分端口VA與VB之間應(yīng)跨接120Ω匹配電阻,,以減少由于不匹配而引起的反射,、吸收噪聲,有效地抑制了噪聲干擾,。但匹配電阻要消耗較大電流,,不適用于功耗限制嚴(yán)格的系統(tǒng)。
另外一種比較省電的匹配方案是RC 匹配(圖2 )利用一只電容C 隔斷直流成分,,可以節(jié)省大部分功率,,但電容C的取值是個(gè)難點(diǎn),需要在功耗和匹配質(zhì)量間進(jìn)行折衷,。除上述兩種外還有一種采用二極管的匹配方案(圖3),,這種方案雖未實(shí)現(xiàn)真正的匹配,但它利用二極管的鉗位作用,,迅速削弱反射信號(hào)達(dá)到改善信號(hào)質(zhì)量的目的,,節(jié)能效果顯著。
2,、RO及DI端配置上拉電阻
異步通信數(shù)據(jù)以字節(jié)的方式傳送,,在每一個(gè)字節(jié)傳送之前,先要通過(guò)一個(gè)低電平起始位實(shí)現(xiàn)握手,。為防止干擾信號(hào)誤觸發(fā)RO(接收器輸出)產(chǎn)生負(fù)跳變,,使接收端MCU進(jìn)入接收狀態(tài),建議RO外接10kΩ上拉電阻,。
3,、保證系統(tǒng)上電時(shí)的RS-485芯片處于接收輸入狀態(tài)
對(duì)于收發(fā)控制端TC建議采用MCU引腳通過(guò)反相器進(jìn)行控制,不宜采用MCU引腳直接進(jìn)行控制,,以防止MCU上電時(shí)對(duì)總線(xiàn)的干擾,,如圖4所示。
4,、總線(xiàn)隔離
RS-485總線(xiàn)為并接式二線(xiàn)制接口,一旦有一只芯片故障就可能將總線(xiàn)“拉死”,因此對(duì)其二線(xiàn)口VA,、VB與總線(xiàn)之間應(yīng)加以隔離,。通常在VA、VB與總線(xiàn)之間各串接一只4~10Ω的PTC電阻,,同時(shí)與地之間各跨接5V的TVS二極管,,以消除線(xiàn)路浪涌干擾。如沒(méi)有PTC電阻和TVS二極管,,可用普通電阻和穩(wěn)壓管代替,。
5、合理選用芯片
例如,,對(duì)外置設(shè)備為防止強(qiáng)電磁(雷電)沖擊,,建議選用TI的75LBC184等防雷擊芯片,對(duì)節(jié)點(diǎn)數(shù)要求較多的可選用SIPEX的SP485R,。
二,、RS-485網(wǎng)絡(luò)配置
1、網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)
網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)與所選RS-485芯片驅(qū)動(dòng)能力和接收器的輸入阻抗有關(guān),,如75LBC184標(biāo)稱(chēng)最大值為64點(diǎn),,SP485R標(biāo)稱(chēng)最大值為400點(diǎn)。實(shí)際使用時(shí),,因線(xiàn)纜長(zhǎng)度,、線(xiàn)徑、網(wǎng)絡(luò)分布,、傳輸速率不同,,實(shí)際節(jié)點(diǎn)數(shù)均達(dá)不到理論值。例如75LBC184運(yùn)用在500m分布的RS-485網(wǎng)絡(luò)上節(jié)點(diǎn)數(shù)超過(guò)50或速率大于9.6kb/s時(shí),,工作可靠性明顯下降,。通常推薦節(jié)點(diǎn)數(shù)按RS-485芯片最大值的70%選取,傳輸速率在1200~9600b/s之間選取,。通信距離1km以?xún)?nèi),,從通信效率、節(jié)點(diǎn)數(shù),、通信距離等綜合考慮選用4800b/s最佳,。通信距離1km以上時(shí),應(yīng)考慮通過(guò)增加中繼模塊或降低速率的方法提高數(shù)據(jù)傳輸可靠性,。
2,、節(jié)點(diǎn)與主干距離
理論上講,RS-485節(jié)點(diǎn)與主干之間距離(T頭,,也稱(chēng)引出線(xiàn))越短越好,。T頭小于10m的節(jié)點(diǎn)采用T型,,連接對(duì)網(wǎng)絡(luò)匹配并無(wú)太大影響,可放心使用,,但對(duì)于節(jié)點(diǎn)間距非常?。ㄐ∮?m,,如LED模塊組合屏)應(yīng)采用星型連接,若采用T型或串珠型連接就不能正常工作。RS-485是一種半雙工結(jié)構(gòu)通信總線(xiàn),,大多用于一對(duì)多點(diǎn)的通信系統(tǒng),,因此主機(jī)(PC)應(yīng)置于一端,,不要置于中間而形成主干的T型分布,。
三、提高RS-485通信效率
RS-485通常應(yīng)用于一對(duì)多點(diǎn)的主從應(yīng)答式通信系統(tǒng)中,,相對(duì)于RS-232等全雙工總線(xiàn)效率低了許多,,因此選用合適的通信協(xié)議及控制方式非常重要。
1,、總線(xiàn)穩(wěn)態(tài)控制(握手信號(hào))
大多數(shù)使用者選擇在數(shù)據(jù)發(fā)送前1ms將收發(fā)控制端TC置成高電平,,使總線(xiàn)進(jìn)入穩(wěn)定的發(fā)送狀態(tài)后才發(fā)送數(shù)據(jù);數(shù)據(jù)發(fā)送完畢再延遲1ms后置TC端成低電平,,使可靠發(fā)送完畢后才轉(zhuǎn)入接收狀態(tài),。據(jù)筆者使用TC端的延時(shí)有4個(gè)機(jī)器周期已滿(mǎn)足要求;
2,、為保證數(shù)據(jù)傳輸質(zhì)量,,對(duì)每個(gè)字節(jié)進(jìn)行校驗(yàn)的同時(shí),應(yīng)盡量減少特征字和校驗(yàn)字
慣用的數(shù)據(jù)包格式由引導(dǎo)碼,、長(zhǎng)度碼,、地址碼、命令碼,、數(shù)據(jù),、校驗(yàn)碼、尾碼組成,,每個(gè)數(shù)據(jù)包長(zhǎng)度達(dá)20~30字節(jié),。在RS-485系統(tǒng)中這樣的協(xié)議不太簡(jiǎn)練。推薦用戶(hù)使用MODBUS協(xié)議,,該協(xié)議已廣泛應(yīng)用于水利,、水文、電力等行業(yè)設(shè)備及系統(tǒng)的國(guó)際標(biāo)準(zhǔn)中,。
四,、RS-485接口電路的電源、接地
對(duì)于由MCU結(jié)合RS-485微系統(tǒng)組建的測(cè)控網(wǎng)絡(luò),,應(yīng)優(yōu)先采用各微系統(tǒng)獨(dú)立供電方案,,最好不要采用一臺(tái)大電源給微系統(tǒng)并聯(lián)供電,,同時(shí)電源線(xiàn)(交直流)不能與RS-485信號(hào)線(xiàn)共用同一股多芯電纜。RS-485信號(hào)線(xiàn)宜選用截面積0.75mm2以上雙絞線(xiàn)而不是平直線(xiàn),。對(duì)于每個(gè)小容量直流電源選用線(xiàn)性電源LM7805比選用開(kāi)關(guān)電源更合適,。當(dāng)然應(yīng)注意LM7805的保護(hù):
1,、LM7805輸入端與地應(yīng)跨接220~1000μF電解電容,;
2、LM7805輸入端與輸出端反接1N4007二極管,;
3,、LM7805輸出端與地應(yīng)跨接470~1000μF電解電容和104pF獨(dú)石電容并反接1N4007二極管;
4,、輸入電壓以8~10V為佳,,最大允許范圍為6.5~24V??蛇x用TI的PT5100替代LM7805,,以實(shí)現(xiàn)9~38V的超寬電壓輸入。
五,、光電隔離
在某些工業(yè)控制領(lǐng)域,,由于現(xiàn)場(chǎng)情況十分復(fù)雜,各個(gè)節(jié)點(diǎn)之間存在很高的共模電壓,。雖然RS-485接口采用的是差分傳輸方式,,具有一定的抗共模干擾的能力,但當(dāng)共模電壓超過(guò)RS-485接收器的極限接收電壓,,即大于+12V或小于-7V時(shí),,接收器就再也無(wú)法正常工作了,嚴(yán)重時(shí)甚至?xí)龤酒蛢x器設(shè)備,。
解決此類(lèi)問(wèn)題的方法是通過(guò)DC-DC將系統(tǒng)電源和RS-485收發(fā)器的電源隔離,;通過(guò)光耦將信號(hào)隔離,徹底消除共模電壓的影響,。實(shí)現(xiàn)此方案的途徑可分為:
1,、用光耦、帶隔離的DC-DC,、RS-485芯片構(gòu)筑電路,;
2、使用二次集成芯片,,如PS1480,、MAX1480等。
六,、RS-485系統(tǒng)的常見(jiàn)故障及處理方法
RS-485是一種低成本,、易操作的通信系統(tǒng),,但是穩(wěn)定性弱同時(shí)相互牽制性強(qiáng),通常有一個(gè)節(jié)點(diǎn)出現(xiàn)故障會(huì)導(dǎo)致系統(tǒng)整體或局部的癱瘓,,而且又難以判斷,。故向讀者介紹一些維護(hù)RS-485的常用方法。
1,、若出現(xiàn)系統(tǒng)完全癱瘓,,大多因?yàn)槟彻?jié)點(diǎn)芯片的VA、VB對(duì)電源擊穿,,使用萬(wàn)用表測(cè)VA,、VB間差模電壓為零,而對(duì)地的共模電壓大于3V,,此時(shí)可通過(guò)測(cè)共模電壓大小來(lái)排查,,共模電壓越大說(shuō)明離故障點(diǎn)越近,反之越遠(yuǎn),;
2,、總線(xiàn)連續(xù)幾個(gè)節(jié)點(diǎn)不能正常工作。一般是由其中的一個(gè)節(jié)點(diǎn)故障導(dǎo)致的,。一個(gè)節(jié)點(diǎn)故障會(huì)導(dǎo)致鄰近的2~3個(gè)節(jié)點(diǎn)(一般為后續(xù))無(wú)法通信,,因此將其逐一與總線(xiàn)脫離,如某節(jié)點(diǎn)脫離后總線(xiàn)能恢復(fù)正常,,說(shuō)明該節(jié)點(diǎn)故障,;
3、集中供電的RS-485系統(tǒng)在上電時(shí)常常出現(xiàn)部分節(jié)點(diǎn)不正常,,但每次又不完全一樣,。這是由于對(duì)RS-485的收發(fā)控制端TC設(shè)計(jì)不合理,造成微系統(tǒng)上電時(shí)節(jié)點(diǎn)收發(fā)狀態(tài)混亂從而導(dǎo)致總線(xiàn)堵塞,。改進(jìn)的方法是將各微系統(tǒng)加裝電源開(kāi)關(guān)然后分別上電,;
4、系統(tǒng)基本正常但偶爾會(huì)出現(xiàn)通信失敗,。一般是由于網(wǎng)絡(luò)施工不合理導(dǎo)致系統(tǒng)可靠性處于臨界狀態(tài),,最好改變走線(xiàn)或增加中繼模塊。應(yīng)急方法之一是將出現(xiàn)失敗的節(jié)點(diǎn)更換成性能更優(yōu)異的芯片,;
5,、因MCU故障導(dǎo)致TC端處于長(zhǎng)發(fā)狀態(tài)而將總線(xiàn)拉死一片。提醒讀者不要忘記對(duì)TC端的檢查,。盡管RS-485規(guī)定差模電壓大于200mV即能正常工作,。但實(shí)際測(cè)量:一個(gè)運(yùn)行良好的系統(tǒng)其差模電壓一般在1.2V左右(因網(wǎng)絡(luò)分布、速率的差異有可能使差模電壓在0.8~1.5V范圍內(nèi).