針對CAN總線傳輸距離問題提出的方案
從上面的電路圖以及數(shù)據(jù)分析可以看出:在距離偏遠時,總線線電壓已經(jīng)處于臨界識別狀態(tài),其數(shù)據(jù)很難正常接收(已經(jīng)沒有可靠性可言)。為此我們嘗試采用以下幾個方案進行了實驗。
1.1.1 在線路中直接加兩個發(fā)送芯片
該方案就是在總線線路中直接加入兩個發(fā)送芯片(采用82C250為例)[3],并把發(fā)送芯片的管腳TXD和RXD對連。其連接電路如下:
圖1 發(fā)送芯片連接電路圖
整個電路看似很正常,把左邊的數(shù)據(jù)傳輸到右邊,右邊的數(shù)據(jù)傳輸到左邊,實際上此電路是無法使用的。此電路接入總線后,只要在總線上有一個顯性電平出現(xiàn),那么整個電路將永遠呈現(xiàn)顯性電平。原因在于每個期間都有延遲(雖然是僅僅幾個ns延遲),假設(shè)從電路左邊收到一個顯性電平,經(jīng)過左右兩個82C250芯片延遲Tns后傳輸?shù)接疫?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/CAN">CAN總線,另外82C250芯片本身具有同時發(fā)送、接收功能,那么右邊的82C250芯片同時把右邊CAN總線的顯性電平又傳送到左邊,這樣就形成了一個回路,使得總線永遠處于顯性狀態(tài)。
1.1.2 加入邏輯控制電路進行隔離
從上面可以看出,在發(fā)送數(shù)據(jù)時應(yīng)該防止數(shù)據(jù)重傳形成回路。為此我們做了如下規(guī)定:在有顯性電平時只能夠有一個方向傳輸(哪個方向先來顯性電平開通哪個方向,同時到來則選擇任一個方向開通);發(fā)送端顯性電平結(jié)束后,所有方向都停止T1時間(Tns
利用CPLD很容易實現(xiàn)上面的規(guī)定邏輯。利用此方案把該電路先連接在總線10Km處,并在10Km不遠處連接一個接收設(shè)備,實驗?zāi)軌蚪邮照?,并且其接收端總線電壓差為1.32V,是單連設(shè)備接收電壓差的1.55倍。
1.1.3 線路中間加入CAN卡中轉(zhuǎn)實現(xiàn)遠距離數(shù)據(jù)傳輸(中繼器)
在距離達到10Km時,其接收數(shù)據(jù)不正常的原因是由于總線電壓差值較小的緣故。為此,有的采用升壓和降壓電路是不現(xiàn)實的,因為每個接收器都得加入一個調(diào)理電路,造價很明顯就上去了。另外,即使升壓了,由于CAN總線按照仲裁發(fā)送決定了總要遇到方案二中提到的由于延遲總線形成閉合回路的問題。
為了達到遠距離傳輸,可以在中間加入中繼器,相當于把總線距離縮短了一倍。中繼器的結(jié)構(gòu)如下:
圖2 中繼器結(jié)構(gòu)示意圖
選擇使用兩個8031單片機目的在于能夠及時處理CAN總線上的數(shù)據(jù),使得設(shè)計也變得比較簡單,不需考慮CAN總線兩邊的數(shù)據(jù)發(fā)送沖突。只要每個單片機有1K的緩存就可以。
具體實現(xiàn)思路:單片機接收CAN總線數(shù)據(jù),把數(shù)據(jù)進行緩存,在空閑階段把數(shù)據(jù)傳輸?shù)搅硪粋€單片機(兩者之間通過SPI協(xié)議實現(xiàn)通信),同時把從另一個單片機傳輸來的數(shù)據(jù)發(fā)送出去。
1.2CAN總線結(jié)構(gòu)[2]
CAN總線系統(tǒng)一般連接結(jié)構(gòu)如圖(以芯片82C250為例)所示,R=120Ω。(注:圖中僅畫出了一個智能設(shè)備,實際中可以最多達110個)
圖3 CAN總線系統(tǒng)結(jié)構(gòu)示意圖
CAN總線一般都是利用在環(huán)境比較惡劣,控制室與現(xiàn)場比較遠的場合??偩€距離達到8Km以上時,其單向線路電阻將達到100Ω,而兩端的終端電阻為120Ω(不考慮智能設(shè)備本身電阻,認為其電阻為無限大)。其等效電路為圖2:
圖4 CAN總線電路等效圖
對于CAN接收器而言能夠識別的電壓要大于0.8V,一般為0.9V以上。
在實際的工程中我們是利用此方案實現(xiàn)遠距離傳輸?shù)?,主要原因是可以滿足數(shù)據(jù)傳輸?shù)目煽啃?,利用此方案的電路我們進行過節(jié)點數(shù)達到100的測試,其性能正常、可靠,能夠滿足實際的需要。
CAN總線技術(shù)作為一種新型的總線技術(shù)由于其具有良好的故障隔離能力、網(wǎng)絡(luò)的實時響應(yīng)能力以及CAN具有良好地傳輸防錯設(shè)計等,使其已經(jīng)成為現(xiàn)在最有前途的總線之一。
評論