CANopen閱讀筆記
4.CANopen的預(yù)定義報文和ID分類
5.對象字典OD(Object dictionary)
6.網(wǎng)絡(luò)管理NMT(Network management)與CANopen主站
7.過程數(shù)據(jù)對象PDO(Process data object)
8.服務(wù)數(shù)據(jù)對象SDO(Service data object)
9.特殊協(xié)議
CAN-OPEN
–NMT主機(jī)
—-過程數(shù)據(jù)對象PDO
——–TPDO(發(fā)送PDO):有四種數(shù)據(jù)對象,詳見表4-2
——–RPDO (接收RPDO):有四種數(shù)據(jù)對象,詳見表4-2
—-服務(wù)數(shù)據(jù)對象SDO
–CANopen從機(jī)
—-過程數(shù)據(jù)對象PDO
——–TPDO(發(fā)送PDO):有四種數(shù)據(jù)對象,詳見表4-2
——–RPDO (接收RPDO):有四種數(shù)據(jù)對象,詳見表4-2
—-服務(wù)數(shù)據(jù)對象SDO
——–問SDO的CAN幀的ID:600h+node-ID。這里Node-ID節(jié)點(diǎn)地址
——–被問節(jié)點(diǎn)地址Node-ID:答:SDO的CAN幀就是:580h+node-ID。詳見表4-2
【四.CANopen的預(yù)定義報文和ID分類】
4_1 報文傳輸采用 CAN 標(biāo)準(zhǔn)幀格式。即 11bit 的 ID 域,以盡量減小傳輸時間。
4_2 需要接收方確認(rèn)的配置參數(shù)一般都是采用快速單字傳輸。即 1 個報文最多傳送 1
個 32 字節(jié)的參數(shù)變量,避免了分幀引起的實(shí)時性降低。
4_3 需要設(shè)置一個網(wǎng)絡(luò)管理主機(jī),NMT 主機(jī)一般是 CANopen 網(wǎng)絡(luò)中具備監(jiān)控的 PLC 或者 PC。
網(wǎng)絡(luò)管理中,同一個網(wǎng)絡(luò)中只允許有一個主節(jié)點(diǎn)、一個或多個從節(jié)點(diǎn),并遵循主從模式。
【STM32需要自己寫一個主機(jī),自己寫一個從機(jī),主機(jī)是NMT主機(jī)】
NMT 與特殊協(xié)議的 CAN-ID 定義,
關(guān)鍵是怎么定義這種結(jié)構(gòu)體,我個人猜測STM32里面的庫就把這個弄好了。
讀者必須需要記住的是綠色底紋的這些常用的CAN-ID 含義,在研發(fā)和應(yīng)用 CANopen 中,這三類是最為常用的 NMT 與特殊協(xié)議報文。
NMT網(wǎng)絡(luò)管理命令: CiA301 CAN-ID
Sync同步報文: CiA301 080h
Emergency緊急報文: CiA301 081h to 0FFh
4_4 過程數(shù)據(jù)對象(PDO)和服務(wù)數(shù)據(jù)對象(SDO)的報文ID分類
需要傳遞的配置信息和應(yīng)用信息,兩個重要的對象,即:
【過程數(shù)據(jù)對象PDO(Process data object)】
【服務(wù)數(shù)據(jù)對象SDO(Service data object)】
這就是CiA301 協(xié)議所規(guī)定的基礎(chǔ)協(xié)議——“籮筐”。
【PDO】屬于過程數(shù)據(jù),即單向傳輸,無需接收節(jié)點(diǎn)回應(yīng)CAN 報文來確認(rèn),從通訊術(shù)語上來說是屬于“生產(chǎn)消費(fèi)”模型。CAN數(shù)據(jù)幀0-8字節(jié) CAN-ID:0-2048
【SDO】(需要確認(rèn))屬于服務(wù)數(shù)據(jù),有指定被接收節(jié)點(diǎn)的地址(Node-ID),并且需要指定的接收節(jié)點(diǎn)回應(yīng) CAN 報文來確認(rèn)已經(jīng)接收, 如果超時沒有確認(rèn),則發(fā)送節(jié)點(diǎn)將會重新發(fā)送原報文。這種通訊方式屬于常見的“服務(wù)器客戶端”的通信模型,即我們通常所說的輪詢式。
CAN-ID 稱為 COB-ID(通信對象編號):COB-ID:通訊對象的報文幀ID,即 CAN 報文的 11 位 ID。
Node-ID:節(jié)點(diǎn) ID 號,即 CANopen 網(wǎng)絡(luò)中的節(jié)點(diǎn)地址。
每個CANopen節(jié)點(diǎn)的輸入和輸出,所以 PDO 分為 TPDO(發(fā)送 PDO)和(接收 RPDO),
發(fā)送和接收是以 CANopen 從站節(jié)點(diǎn)為參考(如果 CAN 主站就相反)。TPDO和 RPDO 分別有4個數(shù)據(jù)對象,每種數(shù)據(jù)對象就是 1 條 CAN 報文封裝。
CAN-OPEN
–NMT主機(jī)
—-過程數(shù)據(jù)對象PDO
——–TPDO(發(fā)送PDO):有四種數(shù)據(jù)對象,詳見表4-2
——–RPDO (接收RPDO):有四種數(shù)據(jù)對象,詳見表4-2
—-服務(wù)數(shù)據(jù)對象SDO
–CANopen從機(jī)
—-過程數(shù)據(jù)對象PDO
——–TPDO(發(fā)送PDO):有四種數(shù)據(jù)對象,詳見表4-2
——–RPDO (接收RPDO):有四種數(shù)據(jù)對象,詳見表4-2
—-服務(wù)數(shù)據(jù)對象SDO
——–問SDO的CAN幀的ID:600h+node-ID。這里Node-ID節(jié)點(diǎn)地址
五.對象字典OD (Object dictionary)CANopen中最核心的概念。
實(shí)質(zhì):有序的對象組
描述了對應(yīng) CANopen 節(jié)點(diǎn)的所有參數(shù), 包括通訊數(shù)據(jù)的存放位置也列入其索引,這個表變成可以傳遞形式就叫做 EDS 文件(電子數(shù)據(jù)文檔Electronic Data Sheet) 。
對于 CANopen 網(wǎng)絡(luò)中的主節(jié)點(diǎn)來說,不需要對CANopen 從節(jié)點(diǎn)的每個對象字典項(xiàng)都訪問。
CANopen 對象字典中的項(xiàng)由一系列子協(xié)議來描述。子協(xié)議為對象字典中的每個對象都描述了它的功能、名字、索引、子索引、數(shù)據(jù)類型,以及這個對象是否必需、讀寫屬性等等。
5.1 對象字典概述 用戶需要關(guān)注的區(qū)域是兩個區(qū)域:通訊對象子協(xié)議區(qū)和制造商特定子協(xié)議區(qū)
5.2 通訊對象子協(xié)議區(qū):通用通訊對象必須有:1000h to 1029h
5.3 通用通訊對象(General communication objects)
NMT主站(CANopen 主站) 在啟動時, 通常都全部或者部分讀取所有從站中通用通訊對象中的索引, 所以所有的通用通訊對象都必須在CANopen 從站中實(shí)現(xiàn),使用者也必須熟知這些索引地址與其含義。
5.4 制造商特定子協(xié)議(Manufacturer-specific Profile)
RPDO 的通訊參數(shù)存放在 1400h to 15FFh
映射參數(shù)存放在 1600h to 17FFh 數(shù)據(jù)存放為2000h 之后廠商自定義區(qū);
TPDO 的通訊參數(shù)存放在 1800h to 19FFh 映射參數(shù)存放在 1A00h to 1BFFh 數(shù)據(jù)存放為
2000h 之后廠商自定義區(qū)。
5.5標(biāo)準(zhǔn)化設(shè)備子協(xié)議(Standardized profile area)
六.網(wǎng)絡(luò)管理NMT(Network management)與CANopen主站
每個 CANopen 從節(jié)點(diǎn)的 CANopen 協(xié)議棧中,必須具備 NMT 管理的相應(yīng)代碼,
這是節(jié)點(diǎn)具備 CANopen 協(xié)議的最基本的要素。
NMT 節(jié)點(diǎn)狀態(tài):