1.CANopen協(xié)議簡介
從OSI 網(wǎng)絡模型的角度來看,CAN總線只定義了OSI網(wǎng)絡模型的第一層(物理層) 和第二層(數(shù)據(jù)鏈路層),而在實際設計中,這兩層完全由硬件實現(xiàn),設計人員無需再為此開發(fā)相關軟件或固件。
同時,CAN只定義物理層和數(shù)據(jù)鏈路層,沒有規(guī)定應用層,本身并不完整,因此需要一個高層協(xié)議來定義CAN報文中的11/29位標識符和8字節(jié)數(shù)據(jù)的使用。而且,基于CAN總線的工業(yè)自動化應用中,越來越需要一個開放的、標準化的高層協(xié)議:這個協(xié)議支持各種CAN廠商設備的互用性、互換性,能夠實現(xiàn)在CAN網(wǎng)絡中提供標準的、統(tǒng)一的系統(tǒng)通訊模式,提供設備功能描述方式,執(zhí)行網(wǎng)絡管理功能。
CANopen協(xié)議是CAN-in-Automation(CiA) 定義的標準之一,并且在發(fā)布后不久就獲得了廣泛的承認。尤其是在歐洲, CANopen 協(xié)議被認為是在基于CAN 的工業(yè)系統(tǒng)中占領導地位的標準。大多數(shù)重要的設備類型,例如數(shù)字和模擬的輸入輸出模塊、驅動設備、操作設備、控制器、可編程控制器或編碼器,都在稱為“設備描述”的協(xié)議中進行描述;“設備描述”定義了不同類型的標準設備及其相應的功能。依靠CANopen協(xié)議的支持,可以對不同廠商的設備通過總線進行配置。
在OSI 模型中, CAN標準、CANopen協(xié)議之間的關系如圖 1-1所示。
圖1-1 CAN標準、CANopen協(xié)議在OSI網(wǎng)絡模型中的位置框圖
CANopen和CAN報文的關系如圖 1-2所示。
圖1-2 CANopen和CAN報文的關系如所示。
CAN 報文由7個不同的位域組成,而CANopen就是規(guī)定其中的仲裁域(11 位標識符) 和數(shù)據(jù)域(8 字節(jié)數(shù)據(jù)) 的使用情況。
2.CANopen設備結構
CANopen是一個基于CAN串行總線系統(tǒng)和CAL(CAN應用層)的高層協(xié)議。 CANopen的核心概念是設備對象字典(OD: ObjectDictionary),CANopen通訊通過對象字典(OD)能夠訪問驅動器的所有參數(shù)。CANopen設備結構如圖 2-1所示。
圖2-1 CANopen設備結構
2.1 CANopen對象字典
CANopen對象字典(Object Dictionary,OD)是CANopen協(xié)議最為核心的概念。所謂的“對象字典”,就是一個有序的對象組;每個對象采用一個16位的索引值來尋址。為了訪問數(shù)據(jù)結構中的元素,同時定義了一個8位的子索引,對象字典的結構如表 2-1所示。
表2-1 對象字典結構
CANopen網(wǎng)絡中每個節(jié)點都有一個對象字典。對象字典包含了描述這個設備和它的網(wǎng)絡行為的所有參數(shù)。
CANopen對象字典中的項由一系列子協(xié)議來描述。子協(xié)議描述對象字典中每個對象的功能、名字、索引、子索引、數(shù)據(jù)類型、讀/寫屬性,以及這個對象是否必需等,從而保證不同廠商的同類型設備兼容。
CANopen協(xié)議的核心描述子協(xié)議是DS301,包括CANopen協(xié)議應用層及通信結構描述,其他子協(xié)議都是對DS301協(xié)議描述文本的補充與擴展。
CANopen協(xié)議包含許多子協(xié)議,其主要劃分為以下3類:
1. 通信子協(xié)議
通信子協(xié)議(Communication Profile)描述對象字典的主要形式,以及對象字典中的通信對象和參數(shù)。這個子協(xié)議適用于所有的CANopen設備,其索引值范圍為0x1000~0x1FFF。
2. 制造商自定義子協(xié)議
對于在設備子協(xié)議中未定義的特殊功能,制造商可以在制造商自定義子協(xié)議(Manufacturer-specific Profile)中根據(jù)需求定義對象字典項。因此,這個區(qū)域對不同廠商來說,相同的對象字典項的定義不一定相同,其索引值范圍為0x2000~0x5FFF。
3. 設備子協(xié)議
設備子協(xié)議(Device Profile)為各種不同類型設備定義對象字典中的對象,其索引值范圍為0x6000~0x9FFF。
2.2 CANopen通信
在CANopen協(xié)議中主要定義網(wǎng)絡管理對象(NMT)、服務數(shù)據(jù)對象(SDO)、過程數(shù)據(jù)對象(PDO)、預定義報文或特殊功能對象4種對象。
2.2.1 網(wǎng)絡管理對象
網(wǎng)絡管理對象負責層管理、網(wǎng)絡管理和ID分配服務,例如,初始化、配置和網(wǎng)絡管理。網(wǎng)絡管理中,同一個網(wǎng)絡中只允許有一個主節(jié)點、一個或多個從節(jié)點,并遵循主/從模式。
2.2.2 服務數(shù)據(jù)對象
服務數(shù)據(jù)對象主要用于主節(jié)點對從節(jié)點的參數(shù)配置。服務確認是SDO最大的特點,為每個消息都生成一個應答,以確保數(shù)據(jù)傳輸?shù)臏蚀_性。在一個CANopen系統(tǒng)中,通常CANopen從節(jié)點作為SDO服務器,CANopen主節(jié)點作為客戶端??蛻舳送ㄟ^索引和子索引能夠訪問數(shù)據(jù)服務器上的對象字典,所以CANopen主節(jié)點可以訪問從節(jié)點的任意對象字典項的參數(shù),并且SDO可以傳輸任何長度的數(shù)據(jù)(當數(shù)據(jù)長度超過4字節(jié)時,拆分成多個報文來傳輸)。
2.2.3 過程數(shù)據(jù)對象
過程數(shù)據(jù)對象用來傳輸實時數(shù)據(jù),其傳輸模型為生產(chǎn)者-消費者模型,數(shù)據(jù)長度被限制為1~8字節(jié)。
PDO通信對象具有如下特點:
1. PDO通信沒有協(xié)議規(guī)定,PDO數(shù)據(jù)內(nèi)容由它的COB-ID定義。
2. 每個PDO在對象字典中用2個對象描述,分別是PDO通信參數(shù)和映射參數(shù)。
1) PDO通信參數(shù):定義該設備所使用的COB-ID、傳輸類型、定時周期。
2) PDO映射參數(shù):包含一個對象字典中的對象列表,這些對象映射到相應的PDO,其中包括數(shù)據(jù)的長度。對于生產(chǎn)者和消費者,只有知道這個映射參數(shù),才能夠正確地解釋PDO的內(nèi)容。PDO內(nèi)容是預定義的,如果PDO支持可變PDO映射,那么可以通過SDO進行配置。
3. PDO具有2種傳輸方式:同步傳輸和異步傳輸。
1) 同步傳輸:通過接收同步對象實現(xiàn)同步,按觸發(fā)方式又可分為非周期傳輸和周期傳輸。非周期傳輸由遠程幀預觸發(fā),或者由設備子協(xié)議中規(guī)定的對象特定事件預觸發(fā)。周期傳輸則通過接收同步對象來實現(xiàn),可以設置1~240個同步對象觸發(fā)。
2) 異步傳輸:由特定事件觸發(fā)。按觸發(fā)方式又可分為2種:一種通過發(fā)送與PDO的COB-ID相同的遠程幀來觸發(fā);另一種由設備子協(xié)議中規(guī)定的對象特定事件來觸發(fā)(如定時傳輸、數(shù)據(jù)變化傳輸?shù)?。
2.2.4 預定義報文或特殊功能對象
預定義報文或特殊功能對象為CANopen設備提供特定的功能,以方便CANopen主站對從站的管理。在CANopen協(xié)議中,已經(jīng)為特殊的功能預定義了COB-ID。主要有以下幾種特殊報文:
1. 同步報文(Sync)
主要實現(xiàn)整個網(wǎng)絡的同步傳輸,每個節(jié)點都以該同步報文作為PDO觸發(fā)參數(shù),因此該同步報文的COB-ID具有比較高的優(yōu)先級以及最短的傳輸時間。
2. 時間標識報文(Time Stamp)
為每個節(jié)點提供公共的時間參考。
3. 緊急事件報文(Emergency)
當設備內(nèi)部發(fā)生錯誤時觸發(fā)該對象,即發(fā)送設備內(nèi)部錯誤碼。
4. 節(jié)點/壽命保護報文(Node/Life Guarding)
主節(jié)點可通過節(jié)點保護方式獲取從節(jié)點的狀態(tài),從節(jié)點可通過壽命保護方式獲取主節(jié)點的狀態(tài)。
5. 啟動報文(Boot up)
從節(jié)點初始化完成后向網(wǎng)絡中發(fā)送該對象,并進入預操作狀態(tài)。
2.3 CANopen預定義連接集
為了減小簡單網(wǎng)絡的組態(tài)工作量,CANopen定義了強制性的缺省標識符(CAN-ID)分配表。這些標識符在預操作狀態(tài)下可用,通過動態(tài)分配可以修改它們。CANopen設備必須向它所支持的通訊對象提供相應的標識符。
CAN-ID分配表是基于11位CAN-ID的標準幀格式,劃分為4位功能碼和7位節(jié)點號,如圖 2-2所示。
圖2-2 預定義連接集ID
Node-ID由系統(tǒng)集成商定義,每個CANopen設備都需要分配一個節(jié)點號,節(jié)點號的范圍是1~127(0不允許被使用)。
預定義連接集定義了4個接收PDO,4個發(fā)送PDO,1個SDO(占用2個CAN-ID),1個緊急對象和1個節(jié)點錯誤控制。支持無需確認的NMT模塊控制服務、同步和時間標識對象報文。缺省ID分配表如表 2-2所示。
表2-2 CANopen預定義主/從連接集CAN標識符分配表





