本項(xiàng)目中的LED看板顯示屏是安裝在生產(chǎn)車間用來顯示實(shí)際產(chǎn)量和目標(biāo)產(chǎn)量的看板,6塊規(guī)格相同的顯示屏分布在6個車間。相鄰車間之間電纜線長度大概在150~200m之間。距離之長加上車間里運(yùn)行的電機(jī)的干擾,使得LED看板顯示屏通訊不正常,從而頻繁出現(xiàn)亂碼的現(xiàn)象。
經(jīng)過仔細(xì)的分析,多次的試驗(yàn),我們先后從多方面著手:硬件電路的改進(jìn)、上位機(jī)和下位機(jī)通訊協(xié)議的改進(jìn),最終順利地解決了這個問題。下面將最終解決問題的關(guān)鍵點(diǎn)進(jìn)行詳細(xì)的分析和說明。
1、信號在傳輸過程中的衰減
不難理解,信號無論借助何種介質(zhì)傳輸,都會在傳輸過程中產(chǎn)生衰減。我們可以把RS-485傳輸電纜看成是由若干個電阻、電感和電容聯(lián)合組成的等效電路,如圖1所示。
導(dǎo)線的電阻對信號的影響很小,可以忽略不計。電纜的分布電容C主要是由雙絞線的兩條平行導(dǎo)線產(chǎn)生。信號的損失主要是由于電纜的分布電容和分布電感組成的LC低通濾波器。通訊波特率越高,信號衰減也會越大。常規(guī)電纜的衰減系數(shù)見表1。
因此,在傳輸數(shù)據(jù)量不是很大,傳輸速率要求不是很高的情況下,通常我們采用9600bps的波特率。
2、通信線路中的信號反射
除了信號衰減之外,影響信號傳輸?shù)牧硪粋€因素是信號反射。阻抗不匹配和阻抗不連續(xù)是導(dǎo)致RS-485總線形成信號反射的兩個主要原因。
①阻抗不匹配,阻抗不匹配主要是485芯片與通訊線路之間的阻抗不匹配。之所以引起反射是因?yàn)樵谕ㄓ嵕€路空閑時,整個通訊線路信號雜亂無章,一旦此類反射信號觸發(fā)了485芯片輸入端的比較器,就會產(chǎn)生錯誤的信號。我們通常的解決方法是將RS-485總線的A、B線加上一定阻值的偏置電阻,分別拉高和拉低,這樣就不會出現(xiàn)不可預(yù)知的雜亂信號了。
②阻抗不連續(xù),顧名思義,與光從一種媒質(zhì)進(jìn)入另一種媒質(zhì)時所引起的反射是相似的。信號在傳輸線末端突然遇到電纜阻抗很小甚至沒有,信號在這個地方就會引起反射。消除這種反射最常用的方法,是在電纜的末端跨接一個與電纜的特性阻抗同樣大小的終端電阻,使電纜的阻抗連續(xù)。由于信號在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端同樣要跨接一個相同大小的終端電阻,如圖2所示。
通過這種方法可以一定程度減弱信號反射的影響。但是,在實(shí)際應(yīng)用中,由于傳輸電纜的特性阻抗與通訊波特率等應(yīng)用環(huán)境有關(guān),特性阻抗不可能與終端電阻完全相等,因此我們不能完全避免信號反射的發(fā)生。
3、分布電容對RS-485總線傳輸性能的影響
RS-485傳輸電纜通常多為雙絞線,雙絞線的兩條平行導(dǎo)線之間即會產(chǎn)生電容。同時,電纜和大地之間也同樣存在類似很小的電容。由于RS-485總線上傳輸?shù)男盘柺怯蔁o數(shù)的“1”和“0”位所組成的,所以當(dāng)遇到0x01等特殊字節(jié)時,電平“0”使得分布電容得到充足的時間充電,而當(dāng)電平“1”突然來到時,電容集聚的電荷不能在短時間之內(nèi)放掉,因此導(dǎo)致信號位的變形,從而影響了整個數(shù)據(jù)傳輸?shù)馁|(zhì)量。
所以,一方面我們要盡量選用分布電容較小即質(zhì)量較好的線纜作為通信線,另一方面盡量降低通訊的波特率,給電容充足的時間去放電。
4、制定簡單可靠的RS-485通訊協(xié)議
當(dāng)通訊距離較短,應(yīng)用環(huán)境干擾小的情況下,我們有時只需要簡單的單向通訊就能實(shí)現(xiàn)項(xiàng)目的所有功能,但是大部分應(yīng)用環(huán)境并非如此理想。項(xiàng)目前期綜合布線的是否專業(yè)(比如信號線與動力線要保持一定的距離)、通訊距離的不可決定性、通訊線路周圍干擾程度、通訊線是否采用雙絞屏蔽線等等,這些因素都給系統(tǒng)的正常通訊帶來極大的影響。于是,制定一套完善的通訊協(xié)議就顯得尤為重要了。
具體方法是將數(shù)據(jù)分包傳輸,通過將每包數(shù)據(jù)加上幀頭和幀尾的方式將數(shù)據(jù)打包,其中幀尾留一個字節(jié)作為校驗(yàn)字節(jié)。下位機(jī)通過將自己計算的校驗(yàn)字節(jié)與上位機(jī)傳輸過來的校驗(yàn)字節(jié)作比較,從而給上位機(jī)發(fā)出指令,到底是重新發(fā)送剛剛那包數(shù)據(jù)還是接著下發(fā)下一包數(shù)據(jù),就這樣一包發(fā)完再發(fā)下一包,直至發(fā)完為止。通過這樣一種校驗(yàn)重發(fā)機(jī)制,我們就可以擯棄掉出錯的概率,使得通訊系統(tǒng)正常運(yùn)行。
5、結(jié)語
在整個項(xiàng)目整改過程中,我們先后采用了以下手段:由于通訊線和動力電源線之間距離很近,且通訊線無屏蔽層,所以我們對所有通訊線纜進(jìn)行更換;上位機(jī)和下位機(jī)均將通訊波特率設(shè)成可調(diào),這樣可以根據(jù)調(diào)試過程中具體情況選擇合適的值;將通訊協(xié)議作了一些優(yōu)化;通訊線纜的兩端加上120Ω的終端電阻