一,、CAN總線簡介 1、概述 CAN(Controller Area Network)zui初是由德國Bosch公司在80年代初期,,為了解決汽車中眾多的控制與測量設(shè)備之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信總線,,屬于現(xiàn)場總線的范疇,1993年成為標準(ISO11898:道路車輛的高速控制器局域網(wǎng)數(shù)字交換系統(tǒng)標準),。CAN總線是一種有效支持分布式控制系統(tǒng)或?qū)崟r控制的串行通信網(wǎng)絡(luò),,是一個多主總線,總線上的各節(jié)點都有權(quán)隨時向其他節(jié)點發(fā)送信息,,總線沖突時通過總線仲裁方式?jīng)Q定占用總線的節(jié)點,。CAN的通信介質(zhì)可以是雙絞線,同軸電纜或光纖,。它可以通過簡單的協(xié)議,,實現(xiàn)在電磁干擾環(huán)境下遠距離實時數(shù)據(jù)的可靠傳輸。 2,、主要特點 CAN總線的主要特點概括如下: 1,、 CAN總線上任一個節(jié)點均可在任一時刻主動向網(wǎng)絡(luò)上的其他節(jié)點發(fā)送數(shù)據(jù),而不分主從,,通信靈活,; 2、 CAN總線采用非破壞性的總線仲裁,,當多節(jié)點同時向總線發(fā)送報文(message)時,,優(yōu)先級低的節(jié)點主動停止數(shù)據(jù)發(fā)送(仲裁丟失),而優(yōu)先級高的節(jié)點可以不受影響地繼續(xù)發(fā)送數(shù)據(jù),; 3,、 CAN總線具有點對點,一點對多點,,以及全局廣播傳送數(shù)據(jù)的功能,; 4、 CAN總線通信距離zui遠可達10km,,通信zui高速可達1Mbit/s,; 5,、 CAN將業(yè)務(wù)數(shù)據(jù)打包成報文發(fā)送,每一個報文的有效字節(jié)數(shù)為8個,。這種小報文方式有傳輸時間短,,實時性高,減少因受干擾而重發(fā)報文的機率等優(yōu)點,; 6,、 CAN采用位校驗、填充位校驗,、循環(huán)冗余碼校驗(CRC)和數(shù)據(jù)幀格式校驗,,數(shù)據(jù)出錯概率在10-15以下; 7,、 CAN節(jié)點出錯次數(shù)大于一定數(shù)量時,,可自動退出總線操作,使錯誤節(jié)點對總線的干擾降到zui低,; 3,、傳輸距離與傳輸速率的對應(yīng)關(guān)系 CAN系統(tǒng)內(nèi)任意兩個節(jié)點間的傳輸距離與該距離下zui大位速率的對應(yīng)關(guān)系見下表:  CAN總線的諸多優(yōu)勢,促使其在各個領(lǐng)域得到日益廣泛的應(yīng)用,,成為*的zui有前途的現(xiàn)場總線之一,。 二、CAN工作機制 1,、CAN的報文(message)類型 CAN系統(tǒng)中,,節(jié)點以報文方式發(fā)送和接收數(shù)據(jù)。CAN的報文有4種類型,,即數(shù)據(jù)幀,、遠程幀、出錯幀,、過載幀,,每種幀均有其相應(yīng)的幀格式。其中與應(yīng)用層關(guān)系zui密切的是數(shù)據(jù)幀和遠程幀,。 2,、CAN節(jié)點的狀態(tài) CAN總線上的每個節(jié)點總處于“錯誤主動(Error Active)”,“錯誤被動(Error Passive)”和“總線脫離(Bus Off)”三種狀態(tài)之一,。 處于錯誤主動狀態(tài)的節(jié)點,,當發(fā)現(xiàn)總線上有錯誤傳輸時,將向總線上發(fā)“主動出錯幀”,;處于錯誤被動狀態(tài)的節(jié)點,當發(fā)現(xiàn)總線上有錯誤傳輸時,,將向總線上發(fā)“被動出錯幀”,。當節(jié)點進入總線脫離狀態(tài)時,,將*退出總線操作。 3,、CAN節(jié)點的總線仲裁與監(jiān)聽機制 CAN控制器發(fā)送數(shù)據(jù)時,,按字節(jié)的高位到低位的順序進行串行發(fā)送,在發(fā)送的同時進行接收,,同時將收到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)逐位進行比較,。在總線仲裁階段,若發(fā)送的位是“1”,,而接收到的是“0”,,則該節(jié)點停止發(fā)送,退出總線,,這就是仲裁丟失,,因而,標識符二進制數(shù)值低的報文具有更高的優(yōu)先權(quán),。仲裁丟失的節(jié)點等到總線空閑時,,再重新進行報文發(fā)送。在總線仲裁階段之后,,發(fā)送節(jié)點仍將發(fā)送數(shù)據(jù)與接收數(shù)據(jù)逐位進行比較,,這叫做“位校驗”。若接收數(shù)據(jù)與發(fā)送數(shù)據(jù)不一致,,則出現(xiàn)“位出錯”,,節(jié)點發(fā)出錯幀。 除發(fā)送節(jié)點和總線脫離節(jié)點外,,其他節(jié)點均為接收節(jié)點,。接收節(jié)點不停地接收總線上的傳輸報文,由此不停地監(jiān)測總線傳輸?shù)腻e誤狀態(tài),。 4,、CAN節(jié)點的報文接收篩選機制 CAN控制器監(jiān)聽接收總線上的所有報文,只有通過CAN控制器的報文篩選器篩選的報文才能進入CAN的報文接收緩沖區(qū),,為該節(jié)點所接收并傳送給應(yīng)用程序,。 報文接收篩選器由接收碼寄存器和接收屏蔽寄存器組成。接收碼寄存器規(guī)定了擬接收報文中參與篩選比較的各位(主要是標識符)必須匹配的值,,而接收屏蔽寄存器卻將接收碼寄存器中的某些位屏蔽為“無關(guān)位”,,對應(yīng)“無關(guān)位”的報文的位不參加篩選比較。 三,、普通的單采集機方式 目前,,在石油鉆錄井行業(yè)應(yīng)用CAN總線進行數(shù)據(jù)采集的各類儀器中大多采用單采集機方式進行工作,即只有一臺計算機負責(zé)CAN總線的數(shù)據(jù)采集工作,,其它計算機負責(zé)數(shù)據(jù)的處理及存儲工作,。有時為了防止數(shù)據(jù)丟失,,可能采用雙數(shù)據(jù)庫服務(wù)器存儲,達到備份數(shù)據(jù)的目的,,但都要求采集機必須正常工作,,一旦采集機中的CAN卡出現(xiàn)故障或采集機系統(tǒng)崩潰均會導(dǎo)致整個系統(tǒng)癱瘓。 四,、雙機熱備份功能的提出 為了防止和避免單采集機工作方式帶來的不利影響,,保證在一臺采集機崩潰的情況下仍能使整個系統(tǒng)正常工作,本文提出了基于CAN總線的雙機熱備份功能的實現(xiàn)方法,,即采用雙采集機的工作方式,,兩臺采集機都通過CAN總線三通連接到CAN總線上,共用同一組傳感器和節(jié)點,,同時采集,。 五、雙機熱備份功能的實現(xiàn) 根據(jù)CAN總線本身的特點,,為了避免沖突,,實現(xiàn)真正的雙機采集,我們把兩臺采集機分成了主采集機和輔采集機,,在主輔采集機同時接收CAN節(jié)點定時發(fā)送過來的數(shù)據(jù)幀的情況下,,只有主采集機能夠向總線上發(fā)送各種命令(包括進行搜索和設(shè)置CAN節(jié)點的命令),而輔采集機只能處于偵聽狀態(tài),。當主采集機死機或CAN卡工作不正常的時候,,輔采集機就會自動切換成主采集機,擔當起對CAN節(jié)點的各項管理工作,。當原主采集機恢復(fù)正常工作時,,當前的主采集機就又會自動切換回輔采集機狀態(tài),關(guān)閉各項設(shè)置功能,,這就要求主輔采集機通過CAN總線進行必要的通訊,。 1、硬件框圖  2,、主輔采集機通訊 為了實現(xiàn)主輔采集機的正確通訊和及時準確切換,,要求雙方通過CAN總線傳輸信號。我們采用了只主采集機發(fā)送通訊信號,,輔采集機只接收通訊信號的方式,,在主輔采集機都進行數(shù)據(jù)采集的同時,只要輔采集機能不間斷地接收到主采集機發(fā)來的通訊信號,,就認為主采集機還存在并運行正常,,一旦一段時間(10~30秒)收不到通訊信號,就認為主采集機已經(jīng)出現(xiàn)問題,將直接切換成主采集機(在軟件界面上有“主”,、“輔”采集機標識),。 受CAN適配卡總線驅(qū)動能力的限制,,在CAN總線上一般允許掛接64個節(jié)點,,占用0~63號邏輯地址,為了使主輔采集機之間的通訊信號(即一個數(shù)據(jù)幀)不與任何節(jié)點(0~63號)沖突,,我們采用邏輯地址之上的更高一位進行接收屏蔽,,具體設(shè)置方法如下: 單機采集時CAN卡初始化設(shè)置:  雙機采集時輔采集機CAN卡初始化設(shè)置:  主采集機發(fā)送的主輔采集機通訊信號(數(shù)據(jù)幀)格式: byte_len=SIX id1=0x60 //01100 + 0 id2=0x00 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 該數(shù)據(jù)幀中的數(shù)據(jù)字段可任意值,這里默認為0,。 需要注意的是,,在輔采集機進行數(shù)據(jù)采集接收的過程中應(yīng)將該通訊信號與“0”號地址節(jié)點(一般為絞車計數(shù))區(qū)分開來,如果將該通訊信號也接收進數(shù)據(jù)緩沖區(qū),,會使“0”號節(jié)點對應(yīng)的傳感器數(shù)據(jù)為0,。為了使該通訊信號有zui高的優(yōu)先權(quán),將它的邏輯地址設(shè)成了“0”號,,但它與“0”號節(jié)點是有區(qū)別的,,區(qū)別在于6位邏輯地址的前一位上。因此在接收到該信號后應(yīng)進行特殊處理,。 3,、軟件流程圖  六、基于CAN總線的雙機熱備份功能的優(yōu)點和特點 1,、 實現(xiàn)了CAN卡與CAN卡之間的雙向通訊,; 2、 與通過網(wǎng)絡(luò)等其它介質(zhì)通訊相比,,通過CAN總線直接通訊更快捷和準確,,避免了因其它通訊介質(zhì)或通訊設(shè)備故障而產(chǎn)生的誤報現(xiàn)象; 3,、 其中的一臺采集機出現(xiàn)故障并不影響整個系統(tǒng)的正常運行,; 4、 主輔采集機的正確通訊保證了CAN節(jié)點在同一時刻只有一個命令中心,,防止了多方指揮的混亂狀態(tài),; 5、 更加合理地利用節(jié)點和傳感器,,兩個甚至更多個采集系統(tǒng)只需一套傳感器總成,,減輕了鉆井現(xiàn)場的安裝和維護任務(wù),并降低了成本,; 6,、 及時準確地保存了現(xiàn)場的兩套數(shù)據(jù),避免了因數(shù)據(jù)丟失造成的損失,。 七,、基于CAN總線的雙機熱備份功能的先進性和可擴展性 1,、 據(jù)了解目前還沒有其它任何一家鉆錄井儀器制造廠商真正實現(xiàn)基于CAN總線的雙機熱備份功能; 2,、 實現(xiàn)了直接利用CAN總線進行兩塊CAN卡之間的雙向通訊,; 3、 可擴展該功能,,利用CAN總線實現(xiàn)分別裝有CAN卡的兩臺計算機之間的數(shù)據(jù)交換和消息傳遞,。 八、參考資料 1,、SBS SysExpanModule/CSM 技術(shù)手冊V3.4 | |