邵丙新
摘要:文章介紹計算機(jī)通過CAN總線技術(shù)實(shí)現(xiàn)的計算機(jī)數(shù)據(jù)采集、溫濕度測量和控制技術(shù),重點(diǎn)簡介CAN總線的特點(diǎn)、數(shù)據(jù)格式、報文和濾波器的設(shè)置。
關(guān)鍵詞:CAN總線;計算機(jī)遠(yuǎn)程控制;設(shè)計應(yīng)用
現(xiàn)代化工業(yè)生產(chǎn)和商品銷售中離不開信息技術(shù),無論是分散式還是集中式生產(chǎn)經(jīng)營活動都需要信息的參與。大型企業(yè)的自動化生產(chǎn)技術(shù)和信息通信的結(jié)合得更加緊密。CAN總線技術(shù)以其可靠性高,抗干擾能力強(qiáng),應(yīng)用靈活、方便等特點(diǎn)得到廣泛的應(yīng)用。本文介紹CAN在計算機(jī)遠(yuǎn)程信息傳送和控制中的應(yīng)用。
1 CAN總線技術(shù)概述
CAN(Controller Area Net)即控制器局域網(wǎng)是主要用于各種過程(設(shè)備)監(jiān)測及控制的一種網(wǎng)絡(luò)。CAN最初是則德國BOSCH公司為汽車的監(jiān)測、控制系統(tǒng)而設(shè)計的。CAN的信號傳輸采用短幀結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為8個,因而傳輸時間短,受干擾的概率低。當(dāng)多個節(jié)點(diǎn)同時向總線傳送數(shù)據(jù)時,它采用總線仲裁機(jī)制,高優(yōu)先級的節(jié)點(diǎn)優(yōu)先發(fā)送,優(yōu)先級低的節(jié)點(diǎn)停止發(fā)送,從而不免總線沖突。由于CAN具有卓越的特性極高的可靠性,特別適合于工業(yè)過程中監(jiān)控設(shè)備的互連,因此,越來越受到工業(yè)界的重視。
2 CAN總線報文和幀類型
2.1 CAN報文:CAN是以報文的形式傳輸信息的,報文包括ID號和數(shù)據(jù)場兩個部分,標(biāo)準(zhǔn)ID號是11位的,擴(kuò)展ID號是29位,數(shù)字場可以是1-8個字節(jié)的數(shù)據(jù)。報文以幀的形式傳輸。CAN的報文可以是一對一傳輸,也可以多對一或一對多的形式,這取決于CAN節(jié)點(diǎn)濾波器的設(shè)置。CAN總線中傳送的報文是以幀的形式出現(xiàn)的,每幀由7部分組成。CAN協(xié)議支持兩種報文格式,即標(biāo)準(zhǔn)格式和擴(kuò)展格式。兩者的區(qū)別是標(biāo)識符(ID)長度不同,標(biāo)準(zhǔn)格式為11位,擴(kuò)展格式為29位。在標(biāo)準(zhǔn)格式中,報文的起始位稱為幀起始(SOF),然后是由11位標(biāo)識符和遠(yuǎn)程發(fā)送請求位(RTR)組成的仲裁場。RTR位標(biāo)明是數(shù)據(jù)幀還是請求幀,在請求幀中沒有數(shù)據(jù)字節(jié)??刂茍霭?biāo)識符擴(kuò)展位(IDE),指出是標(biāo)準(zhǔn)格式還是擴(kuò)展格式。它還包括一個保留位 (ro),為將來擴(kuò)展使用。它的最后四個字節(jié)用來指明數(shù)據(jù)場中數(shù)據(jù)的長度(DLC)。數(shù)據(jù)場范圍為0~8個字節(jié),其后有一個檢測數(shù)據(jù)錯誤的循環(huán)冗余檢查(CRC)。應(yīng)答場(ACK)包括應(yīng)答位和應(yīng)答分隔符。發(fā)送站發(fā)送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站發(fā)送主控電平(邏輯0)覆蓋它。用這種方法,發(fā)送站可以保證網(wǎng)絡(luò)中至少有一個站能正確接收到報文。報文的尾部由幀結(jié)束標(biāo)出。在相鄰的兩條報文間有一很短的間隔位,如果這時沒有站進(jìn)行總線存取,總線將處于空閑狀態(tài)。
2.2 CAN的幀結(jié)構(gòu)和功能位的定義:
CAN有以下四種不同類型的幀:
(1)數(shù)據(jù)幀(DATA):數(shù)據(jù)幀將數(shù)據(jù)從發(fā)送器傳輸?shù)绞瞻l(fā)器。
(2)遠(yuǎn)程幀(Remote):總線單元發(fā)出遠(yuǎn)程幀,請求發(fā)送具有同一標(biāo)識的數(shù)據(jù)幀。
(3)錯誤幀(Error):任何單元檢測到總線錯誤就發(fā)出錯誤幀。
(4)過載幀(Overload):過載幀用在相鄰數(shù)據(jù)幀或遠(yuǎn)程幀之間提供附加的延時。
數(shù)據(jù)幀或遠(yuǎn)程幀與前一個幀之間都會有一個間隔域,即幀間隔,作為一個幀的界定。數(shù)據(jù)幀和遠(yuǎn)程幀可以使用標(biāo)準(zhǔn)幀及擴(kuò)展幀兩種格式。
在報文傳輸時,不同的幀具有不同的傳輸結(jié)構(gòu),下面將分別介紹四種傳輸幀的結(jié)構(gòu),只有嚴(yán)格按照該結(jié)構(gòu)進(jìn)行幀的傳輸,才能被節(jié)點(diǎn)正確接收和發(fā)送。
2.2.1 CAN數(shù)據(jù)幀結(jié)構(gòu)
數(shù)據(jù)幀是攜帶數(shù)據(jù)由發(fā)送器至接收器的幀,是CAN的4種幀格式之一,這4種幀格式分別是數(shù)據(jù)幀、遠(yuǎn)程幀、出錯幀和超載幀。
數(shù)據(jù)幀的主要結(jié)構(gòu)有:
(1)幀起始:幀起始(SOF)標(biāo)志著數(shù)據(jù)幀和遠(yuǎn)程幀的起始,僅由一個“顯性”位組成。在CAN的同步規(guī)則中,當(dāng)總線空閑時(處于隱性狀態(tài)),才允許站點(diǎn)開始發(fā)送(信號)。所有的站點(diǎn)必須同步于首先開始發(fā)送報文的站點(diǎn)的幀起始前沿(該方式稱為“硬同步”)。
(2)仲裁場:由11位標(biāo)識符(ID10~I(xiàn)D0)和 遠(yuǎn)程發(fā)送請求位(RTR)組成,RTR位為顯位表示數(shù)據(jù)幀,隱位表示遠(yuǎn)程幀。標(biāo)識符由高至低次序發(fā)送,且前7位 (ID10~I(xiàn)D4)不能全為隱性位,標(biāo)識符用于提供關(guān)于傳送報文和總線訪問的優(yōu)先權(quán)信息,其數(shù)值越小,表示優(yōu)先權(quán)越高,發(fā)生沖突時優(yōu)先發(fā)送。
(3)控制場:由6位構(gòu)成,前2位為保留位,為顯性, 后4位為數(shù)據(jù)長度碼;(DLC),表示數(shù)據(jù)場中數(shù)據(jù)的字節(jié)數(shù),必須在0~8范圍內(nèi)變化。
(4)數(shù)據(jù)場:由被發(fā)送數(shù)據(jù)組成,數(shù)目為控制場中決定的0~8個字節(jié),第一個字節(jié)的最高位首先被發(fā)送。
(5)CRC場:包括CRC(循環(huán)冗余碼校驗(yàn))序列(15位)和CRC界定符(1個隱位),用于幀校驗(yàn)。
(6)ACK場:由應(yīng)答間隙和應(yīng)答界定符組成,共兩位。
(7)幀結(jié)束:由7位隱性位組成,此期間無位填充。
2.2.2 CAN遠(yuǎn)程幀結(jié)構(gòu)
遠(yuǎn)程幀也有標(biāo)準(zhǔn)格式和擴(kuò)展格式,而且都由6個不同的位域組成:幀起始、仲裁域、控制域、CRC域、應(yīng)答域、幀結(jié)尾。與數(shù)據(jù)幀相比,遠(yuǎn)程幀的RTR位為隱性,沒有數(shù)據(jù)域,數(shù)據(jù)長度編碼域可以是0~8個字節(jié)的任何值,這個值是遠(yuǎn)程幀請求發(fā)送的數(shù)據(jù)幀的數(shù)據(jù)域長度。當(dāng)具有相同仲裁域的數(shù)據(jù)幀和遠(yuǎn)程幀同時發(fā)送時,由于數(shù)據(jù)幀的RTR位為顯性,所以數(shù)據(jù)幀獲得優(yōu)先。發(fā)送遠(yuǎn)程幀的節(jié)點(diǎn)可以直接接收數(shù)據(jù)。
2.3 CAN 報文濾波器設(shè)置
CAN 報文濾波器是基于PHILIPS 公司CAN 控制器SJA1000 的PeliCAN 模式來進(jìn)行設(shè)計的。SJA1000 的濾波器由4 組(4 字節(jié))驗(yàn)收代碼寄存器(ACR)和4 組(4 字節(jié))驗(yàn)收屏蔽寄存器(AMR)構(gòu)成。ACR 的值是預(yù)設(shè)的驗(yàn)收代碼值,AMR 值是用來表征相對應(yīng)的ACR 值是否用作驗(yàn)收濾波。
但是在SJA1000 的某些模式下,濾波器的某些寄存器沒有用到,為了使用方便,所以在配置軟件中使用的是直接ID號進(jìn)行濾波設(shè)置和屏蔽,摒棄一些無關(guān)的內(nèi)容。
濾波的一般規(guī)則是:每一位驗(yàn)收屏蔽分別對應(yīng)每一位驗(yàn)收代碼,當(dāng)該位驗(yàn)收屏蔽位為1的時候(即設(shè)為無關(guān)),接收的相應(yīng)幀ID 位無論是否和相應(yīng)的驗(yàn)收代碼位相同均會表示為接收;但是當(dāng)驗(yàn)收屏蔽位為0 的時候(即設(shè)為相關(guān)),只有相應(yīng)的幀ID 和相應(yīng)的驗(yàn)收代碼位值相同的情況才會表示為接收。并且只有在所有的位都表示為接收的時候,CAN 控制器才會接收該幀報文。
濾波的方式上又分“單濾波”和“ 雙濾波”兩種。并且在標(biāo)準(zhǔn)幀和擴(kuò)展幀情況下濾波又略有不同。在配置軟件的“自定過濾屏蔽碼”的情況下開放濾波器所有功能。
3 總體設(shè)計
電路如圖3-1所示,計算機(jī)通過USB轉(zhuǎn)CAN將數(shù)據(jù)傳輸?shù)目偩€,在總線上連接N個節(jié)點(diǎn),每個節(jié)點(diǎn)都有一個唯一的ID號,并通過傳感器進(jìn)行溫濕度的測量,其結(jié)果通過總線傳給計算機(jī)。計算機(jī)根據(jù)數(shù)據(jù)變化向節(jié)點(diǎn)發(fā)出指令,以實(shí)現(xiàn)溫濕度控制。根據(jù)CAN技術(shù)規(guī)范,節(jié)點(diǎn)數(shù)可達(dá)110個,有最大效傳輸距離能達(dá)到10000米。
4 結(jié)束語
多點(diǎn)數(shù)據(jù)的傳輸,在各點(diǎn)同時傳送時,經(jīng)常出現(xiàn)數(shù)據(jù)沖突,使得網(wǎng)絡(luò)癱瘓,利用CAN總線技術(shù),利用CAN的仲裁功能,能避免數(shù)據(jù)在傳輸中發(fā)生擁堵。同時,CAN總線糾錯能力強(qiáng),傳輸距離遠(yuǎn),實(shí)時性好,抗干擾能力強(qiáng),所以利用CAN總線技術(shù)實(shí)現(xiàn)計算機(jī)遠(yuǎn)程控制是一個理想的方案。