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