概述CANopen是建立在控制局域網(wǎng)(CAN)上的高級(jí)通信協(xié)議。
它包括通信子協(xié)議和設(shè)備子協(xié)議,它們經(jīng)常在嵌入式系統(tǒng)中使用。
它也是工業(yè)控制中常用的現(xiàn)場(chǎng)總線。
。
CANopen在OSI模型中的網(wǎng)絡(luò)層(包括網(wǎng)絡(luò)層)之上實(shí)現(xiàn)協(xié)議。
CANopen標(biāo)準(zhǔn)包括尋址方案,幾個(gè)小型通信子協(xié)議以及由設(shè)備子協(xié)議定義的應(yīng)用程序?qū)印?/p>
CANopen支持網(wǎng)絡(luò)管理,設(shè)備監(jiān)視和節(jié)點(diǎn)之間的通信,包括一個(gè)簡(jiǎn)單的傳輸層,可以處理分段的數(shù)據(jù)傳輸和組合。
一般而言,數(shù)據(jù)鏈路層和物理層將由CAN實(shí)現(xiàn)。
除了CANopen之外,還有其他通信協(xié)議(例如EtherCAT)實(shí)現(xiàn)CANopen的設(shè)備子協(xié)議。
基本CANopen設(shè)備和通信協(xié)議在AutomaTIon(CiA)草案標(biāo)準(zhǔn)301中的CAN中定義。
單個(gè)設(shè)備的子協(xié)議基于CiA 301,然后進(jìn)行擴(kuò)展。
例如用于I / O模塊的CiA401和用于運(yùn)動(dòng)控制的CiA402。
設(shè)備型號(hào)以下是所有CANopen設(shè)備必須具備的功能:通訊單元它處理與網(wǎng)絡(luò)上其他模塊進(jìn)行通訊所需的通訊協(xié)議。
設(shè)備的啟動(dòng)和重置由狀態(tài)機(jī)控制。
狀態(tài)機(jī)需要包括以下?tīng)顟B(tài):初始化,運(yùn)行前,運(yùn)行和已停止。
當(dāng)收到網(wǎng)絡(luò)管理(NMT)通信對(duì)象時(shí),狀態(tài)機(jī)將轉(zhuǎn)換為相應(yīng)的狀態(tài)。
對(duì)象字典是具有16位索引的變量數(shù)組。
每個(gè)變量可以(但不是必須)具有8位子索引(Subindex)。
變量可用于調(diào)整設(shè)備的配置,也可對(duì)應(yīng)于設(shè)備測(cè)量的數(shù)據(jù)或設(shè)備的輸出。
當(dāng)狀態(tài)機(jī)設(shè)置為“可操作”時(shí),設(shè)備的應(yīng)用程序部分將實(shí)現(xiàn)設(shè)備的預(yù)期功能。
該部分可以通過(guò)對(duì)象字典中的變量進(jìn)行調(diào)整,并且數(shù)據(jù)可以通過(guò)通信層進(jìn)行發(fā)送或接收。
對(duì)象字典CANopen設(shè)備都需要具有一個(gè)對(duì)象字典,該對(duì)象字典用于設(shè)置設(shè)備配置和執(zhí)行非即時(shí)通信。
對(duì)象字典的條目定義如下:索引:對(duì)象的16位地址。
對(duì)象名稱(chēng):代表對(duì)象的符號(hào)類(lèi)型,可以是數(shù)組,記錄或變量。
名稱(chēng):描述此條目的字符串。
類(lèi)型:變量的數(shù)據(jù)類(lèi)型。
屬性:提供有關(guān)此條目是否可讀/可寫(xiě)的信息。
有四種類(lèi)型:讀/寫(xiě),只讀,只寫(xiě)和只讀常量。
強(qiáng)制/可選字段定義了屬于特定設(shè)備規(guī)范的設(shè)備是否必須實(shí)現(xiàn)某些對(duì)象。
對(duì)象字典中的基本數(shù)據(jù)類(lèi)型在CANopen標(biāo)準(zhǔn)中定義,包括邏輯值,整數(shù)和浮點(diǎn)數(shù)。
它還定義了復(fù)合對(duì)象:例如數(shù)組,記錄和字符串。
復(fù)合對(duì)象使用8位值作為其子索引。
子索引0在記錄或數(shù)組中的位置記錄此數(shù)據(jù)結(jié)構(gòu)的元素?cái)?shù),數(shù)據(jù)類(lèi)型為UNSIGNED8。
通信通信對(duì)象CANopen物理層CANbus每次都會(huì)發(fā)送少量數(shù)據(jù),包括11位ID,遠(yuǎn)程傳輸請(qǐng)求(RTR)位以及大小不超過(guò)8位的數(shù)據(jù)。
CANopen將11位CANbus ID分為4位功能代碼和7位CANopen節(jié)點(diǎn)ID。
7位ID共有128種不同的組合,其中沒(méi)有使用ID 0,因此CANopen網(wǎng)絡(luò)最多允許127個(gè)設(shè)備。
CANbus在CAN 2.0 B規(guī)范中允許使用29位ID,因此,如果與CAN 2.0 B一起使用,則CANopen網(wǎng)絡(luò)上可以有127個(gè)以上的設(shè)備,但是在實(shí)際使用中,大多數(shù)CANopen網(wǎng)絡(luò)上的設(shè)備數(shù)量少于這個(gè)值。
CANopen將11位CANbus ID稱(chēng)為通信對(duì)象ID(COB-ID)。
當(dāng)傳輸數(shù)據(jù)沖突時(shí),CANbus仲裁機(jī)制將使具有最小COS-ID的消息繼續(xù)傳輸而無(wú)需等待或重新傳輸。
COB-ID的前4位是CANopen功能代碼,因此該功能代碼的值較小,表示相應(yīng)的功能很重要,允許的延遲時(shí)間也較短。
在CANopen標(biāo)準(zhǔn)中,部分COB-ID保留用于網(wǎng)絡(luò)管理和SDO通信。
初始化設(shè)備后,某些功能代碼和COB-ID將映射到標(biāo)準(zhǔn)功能,但將來(lái)仍可以計(jì)劃將其用于其他用途。
通訊模型CANopen設(shè)備之間的通訊可分為以下三個(gè)通訊