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