工業應用中的網絡主題有著漫長而又糾結的歷史。每個行業都接近在各個設備上部署電子控制的任務,將這些控制連接到自動化孤島,最后將這些島嶼拉到工廠范圍的網絡中。它們現在鏈接到企業網絡中,并與銷售預測,庫存控制和管理信息系統等相關聯。但是,這超出了本文的范圍。這種方法的問題在于不同的行業開發了不同的方法來實現網絡。在20世紀80年代,有一種運動來創建一種用ISO的OSI(開放系統互連)模型描述網絡的通用方法,并找到不同網絡技術使用該模型進行交互的方式。這將通信視為七層模型。 1級是物理層,定義了電線,連接器以及信號穿過電線(或光纖)的方式。層變得越來越抽象,直到第7層,即應用層,即網絡之間的接口和通訊軟件。
圖1:OSI七層模型。
當時對OSI活動進行了大量投資,其重要的遺產包括能夠根據相關OSI層描述當前的網絡技術,即使它們不是采用這種方法設計的。
今天有幾種網絡技術正在部署中。工業以太網正在穩步發展,特別是因為它被視為與標準以太網兼容。雖然它有很多優點,但它確實有一些缺點,特別是對于硬實時應用程序。盡管如此,許多早期的網絡技術,如Modbus和Profibus,已經被改編為以太網上的覆蓋。
CAN總線越來越受歡迎,也許目前占主導地位的網絡技術(雖然不同的市場數據給出了不同的數字)。這開始是將汽車中越來越多的智能節點連接起來的一種方式,由Robert Bosch在德國開發。它被廣泛應用于一般汽車行業,被SAE(美國汽車工程師協會)接受,現在由國際標準組織標準ISO 11898涵蓋,有幾個部分。在當前的實施方式中,CAN總線成本低,魯棒且容許汽車的極端環境,這些特性使其對工業控制應用具有吸引力。它已經變得如此普遍,以至于許多微控制器在芯片上都包含CAN接口,因此無需為每個節點提供專用控制器芯片。一些估計表明,有超過20家公司為微控制器提供CAN功能,通常是16位或32位。
CAN總線
CAN總線的設計是為了簡化物理。沒有單個主設備,因為網絡上的每個節點都是主設備,節點通過單個端接雙絞線連接。每個節點都可以與任何其他節點通信。最大比特率為1 Mbit/sec,可以在大約40 m的正常電纜長度上維持。隨著電纜長度的增加,比特率下降,對于理論上10千米的電纜,比特率將降至約5 Kbit/sec。還有使用光學連接甚至無線的CAN總線網絡。他們的數據率會有所不同。
圖2:CAN總線連接。
節點沒有給定特定地址,雖然理論上這允許無限數量的節點,但網絡上的正常最大值大約為64。消息具有確定消息優先級的標識符,而不是節點地址。 CAN總線部署CSMA/CD(帶沖突檢測的載波偵聽多路訪問),這意味著任何節點都可以傳輸消息。如果兩個(或更多)節點嘗試同時進行傳輸,那些優先級較低的節點將產生最高優先級并稍后重試。偵聽節點將識別與其相關的消息并下載它們。
消息以四種類型的幀傳輸。數據框是消息傳遞的基本框架。另外還有遠程幀,請求傳輸特定消息;錯誤幀,在節點檢測到錯誤時發送;和過載幀,用于在數據幀之間添加延遲。
數據幀本身最多可攜帶8個字節的數據,并有7個字段:單個幀起始幀(SOF);仲裁領域;控制字段(指定消息的字節數);數據字段,介于0到8個字節之間; 15位CRC序列和1位定界符的循環冗余校驗(CRC)字段;一個2比特的確認(ACK)字段(一個用于確認接收消息,另一個用于字段定界符);和幀結束(EOF)的七位。
仲裁字段定義了兩種不同的數據幀類型:標準幀和擴展幀。標準幀使用11位標識符,而擴展幀又為標識符添加18位,以應對CAN總線覆蓋的一些協議要求。
圖3:CAN數據幀格式。
網絡上的每個節點都會讀取每條消息,并確定內容是否與它們相關。如果他們確定該消息是相關的,則該節點重置ACK字段位并重新發送該消息。這允許發送節點知道至少一個節點已經接收到該消息。所有的消息管理都由CAN總線控制器執行,最初是一個獨立的設備,通常用于工業自動化,現在是主控制器的集成部分。
簡要回到OSI 7層模型,CAN總線只有兩層。一,電線,對應于模型的最低或物理層。另一種是消息格式和CSMA/CD過程,大致映射到數據鏈路層。這意味著CAN總線僅定義道路和在道路上行駛的車輛的整體形狀。車輛攜帶的內容,數據字段的內容實際意味著什么,留待實施。這意味著更高級別的OSI模型的等價物未定義。一個涵蓋從網絡層到應用層的層的定義是由CiA(CAN in Automation)開發的CAN Open標準,這是一個由560家公司組成的聯盟。這種以及可以使用CAN總線的其他協議的選擇在很大程度上取決于應用程序的上下文。 CAN現已標準化為ISO 11898,ISO 16845和SAE J1939,適用于汽車,工業和通用嵌入式通信。
FlexCAN
CANC的擴展,FlexCAN以及相關協議SafeCAN已在美國開發,并且在安全關鍵應用方面取得了一些成功,因為它帶來了確定性和實時性方面。通常,在微控制器上實現FlexCAN的情況下,它向后兼容CAN。
LIN LIN,本地互連網絡,也來自汽車行業。它的開發是為了提供CAN總線的替代和擴展,在與CAN總線提供的高帶寬和錯誤處理相關的成本太高的應用中。在汽車應用中,這些是簡單的事情,如窗戶控制,雨水傳感器和門鎖,而在工業應用中,溫度和壓力傳感器,非關鍵的通斷開關和簡單的執行器是LIN網絡的自然候選者。 LIN通常用于為CAN創建子網。
CAN總線控制器往往是高端16位和32位微控制器提供的選項的一部分,LIN可以使用甚至成本最低的8位微控制器上的標準串行通用異步接收器/發送器(UART)或專用的LIN接口。
LIN總線不是等狀態節點,而是主從。任何LIN總線都有一個主站和一個或多個從站(最多16個)。主人還包括一個奴隸。主設備以預定義的順序和頻率輪詢從設備。該消息可以是指令或信息請求。奴隸通過訂閱(執行指令)或發布(提供信息)來回應。
圖4:LIN消息幀。
LIN消息幀具有消息頭和消息響應,主節點發送標頭,其中一個從節點響應。 Header有三個元素:Break,Sync和Identifier,而Response有兩個,Data和Checksum。 Break用于警告所有從站即將發送消息,而Sync允許從站同步到傳輸速度。標識符既提供消息的標識,也提醒特定消息相關的從屬設備。然后,相關從站使用響應,在數據字段中提供最多8個字節的有效負載,并計算校驗和值。標識符的映射和數據格式的內容是依賴于實現的。
當前標準是LIN 2.1,這為節點提供了睡眠模式。觸發睡眠模式的不活動時段由開發人員定義,并由任何節點結束,主節點工作到預定義的調度,或者從屬應用軟件的預定義狀態觸發。
實現CAN
大多數微控制器開發人員提供CAN接口。通常,微控制器上的CAN接口將連接到CAN收發器,這些可從各種供應商處獲得。
飛思卡爾擁有基于PowerPC架構的大量微控制器選項。 MPC8306/9系列是PowerQUICC II Pro產品,具有e300 PowerPC內核和基于QUICC,RISC的通信引擎。它們設計為通信處理器,提供多種不同接口選擇,可用于將CAN橋接到其他網絡技術。在工業應用中,這通常是以太網,用于將CAN網絡鏈接到更廣泛的企業。在MPC8306/9系列中,可提供各種速度/功率折衷,飛思卡爾是少數幾家實施FlexCAN的制造商之一。飛思卡爾擁有跨越MPC830X系列的開發套件。產品的低功耗端是Silicon Labs C8051F5XX微控制器。這些是基于8位8051的,采用小型封裝,并提供用戶對所有外設的控制,允許它們斷電以節省功耗。可用的工具包括一個可以容納兩個處理器的開發套件,允許運行LIN 2.1主從網絡。
德州儀器(TI)的Stellaris系列提供基于ARM Cortex內核的大量功率/速度選項。 Stellaris 2000,5000,8000和9000系列都具有CAN功能。 TI提供了一系列用于使用Stellaris開發CAN網絡的電路板和套件,采用不同的開發環境,如IAR,Keil和CodeSourcery。 TI還提供具有CAN功能的其他微控制器架構,包括Piccolo系列的成員; Sitara ARM微處理器,基于ARM9或Cortex-A8內核;和Hercules安全微控制器平臺,專為使用ARM Cortex-M3和Cortex-R4F內核的IEC 61508和ISO 26262安全關鍵應用而設計。
Atmel還有幾個支持CAN的系列,包括32位AVR AT32UC3C和基于ARM9的SAM9的成員。此外,Microchip還提供大多數PIC變體的CAN,包括8位PIC 10/12/16和18,16位PIC24和32位PIC32。與大多數制造商一樣,這些都得到了各種開發套件的支持。
這只是一些可用微控制器選項的簡短摘要。選擇微控制器的問題不在于它是否有CAN。相反,選擇標準將是通常使用的選擇標準,使用諸如功率/性能,其他外圍設備和可用軟件之類的參數。通常關鍵的因素是,特定建筑的內部投資,包括工具和人工年數,是否能夠讓這個項目在高質量,時間和預算范圍內完成。
-
微控制器
+關注
關注
48文章
7576瀏覽量
151727 -
自動化
+關注
關注
29文章
5601瀏覽量
79469 -
網絡通信
+關注
關注
4文章
809瀏覽量
29861
發布評論請先 登錄
相關推薦
評論