91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

[CANopen] 使用 CANopenEditor 工具編輯 CANopen 對(duì)象字典

先楫半導(dǎo)體HPMicro ? 2026-03-20 08:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

CANopen是一種基于CAN總線的高層通信協(xié)議,其核心對(duì)象字典(Object Dictionary)定義了設(shè)備的全部參數(shù)與功能。為滿足不同廠商設(shè)備在特定場(chǎng)景下的要求,對(duì)象字典必須被精確配置,而手動(dòng)修改這一過程通常較為繁瑣。在最新發(fā)布的 hpm_sdk v1.10.0 中,支持使用 CANopenEditor 編輯的對(duì)象字典,讓開發(fā)者可以更直觀地管理對(duì)象字典與網(wǎng)絡(luò)。本文將介紹如何利用這款新工具編輯對(duì)象字典,并一鍵生成可直接編譯的源文件。


1、CANopenEditor 獲取

CANopenEditor 工具獲取鏈接:https://github.com/CANopenNode/CANopenEditor
工具包下載地址:https://github.com/CANopenNode/CANopenEditor/releases/tag/v4.2.3

工具使用步驟如下:

1. 下載并解壓 CANopenEditor-v4.2.3-binary.zip 工具包;

2. 運(yùn)行 CANopenEditor-v4.2.3-binary/net8.0-windows/EDSEditor.exe 以啟動(dòng)編輯器;

3. 通過菜單 File -> Open,導(dǎo)入 CANopenEditor-v4.2.3-binary/net8.0-windows/Profiles 下的 DS301_profile.xpd 協(xié)議模板即可開始編輯。

導(dǎo)入成功后,如下圖所示:

5e98fed6-23f4-11f1-96ea-92fbcf53809c.png

以下是該工具配置菜單欄的介紹:

1. Device Info 中存放了該模板字典的基本信息;

2. Object Dictionary 是對(duì)象字典中具體的內(nèi)容定義,包含每個(gè)對(duì)象以及具體的含義,這是對(duì)象字典的精髓;

3. TX PDO Mapping 和 RX PDO Mapping 顯示了前面字典中,配置的 PDO 映射關(guān)系;

4. Modules 可以忽略。


2. CANopenEditor 配置

進(jìn)入 Object Dictionary 目錄,如下圖所示:

5ea8120e-23f4-11f1-96ea-92fbcf53809c.png

這是 CANopenEditor 配置的重點(diǎn),以下是菜單選項(xiàng)的簡(jiǎn)單介紹:

1. Communication Specific Parameters, 大部分和通信相關(guān)的參數(shù)以及通用的參數(shù)都在這個(gè)里面定義;

2. Manufacturer Specific Parameters, 存放設(shè)備或者功能相關(guān)的參數(shù);

3. Device Profile Specific Parameters, 存放和行業(yè)協(xié)議相關(guān)參數(shù),比如 DS402/DS401 相關(guān)協(xié)議在這個(gè)部分定義。


2.1 配置標(biāo)準(zhǔn)對(duì)象參數(shù)

左邊 Object Dictionary 目錄下,已有部分標(biāo)準(zhǔn)對(duì)象參數(shù)(置灰的表示已有定義,但是在該模板中未使能),用戶可以根據(jù)自己的需求,對(duì)這些參數(shù)進(jìn)行配置。
以對(duì)象 0x1008(Manufacturer device name) 為例,介紹對(duì)象的參數(shù)含義及配置方法:

5eb46996-23f4-11f1-96ea-92fbcf53809c.png

如上圖,這部分配置由四個(gè)部分組成:

1. 對(duì)象 0x1008 此時(shí)置灰,表明該對(duì)象未使能,此時(shí)導(dǎo)出 map 表,這個(gè)對(duì)象不會(huì)被包含在內(nèi);

2. 介紹了該對(duì)象的名稱和屬性:Name - Manufacturer device name, Obj Type - VAR(variable 相當(dāng)于變量,還有 array 相當(dāng)于數(shù)組,record 相當(dāng)于結(jié)構(gòu)體,這個(gè)參數(shù)在對(duì)象添加時(shí)確定,確定后無法修改), Data Type - VISIBLE_STRING, SDO - ro(對(duì)于SDO協(xié)議的權(quán)限是只讀), PDO - no(對(duì)于PDO協(xié)議沒有訪問權(quán)限), SRDO - no, Default Value - 未填寫;該部分為只讀,在第 4 部分進(jìn)行配置;

3. 對(duì)象的名稱以及描述在這部分配置;

4. 對(duì)象的屬性,也是對(duì)象配置最重要的部分,如第 2 部分中提到的 Data Type, Access SDO/PDO/SRDO, Default Value 就在這部分配置; 同時(shí),還有三個(gè)重要參數(shù)需要關(guān)注, 即 Count Label - 表明這個(gè)參數(shù)歸屬哪種協(xié)議, Storage Group - PERSIST_COMM(選擇性持久化通信參數(shù),介紹該對(duì)象的存儲(chǔ)屬性,是否應(yīng)該保存到ROM中,相對(duì)應(yīng)的還有 ROM/RAM), Enabled - 勾選即使能該對(duì)象;

而此處,我們需要對(duì)該對(duì)象第 4 部分的部分屬性做如下修改:

1. Default Value: HPMICRO Canopen Demo

2. Access SDO: rw

3. Enabled: 勾選

至此,對(duì)象 0x1008 已配置完成。


2.2 介紹生成的對(duì)象字典文件

在執(zhí)行完章節(jié) 2.1 后,直接生成對(duì)象字典文件(具體操作請(qǐng)參考章節(jié) 2.4) OD.c/OD.h, 其中對(duì)象 0x1008 的屬性應(yīng)該和我們上述設(shè)置一一對(duì)應(yīng),以下依舊以對(duì)象 0x1008 為例,簡(jiǎn)單介紹這兩個(gè)文件。

2.2.1 OD.c 文件

打開生成的 OD.c,可以看到如下結(jié)構(gòu)體:

1. OD_PERSIST_COMM - 主要對(duì)象參數(shù)的結(jié)構(gòu)體,屬性是選擇性持久化通信參數(shù),上述定義的對(duì)象 0x1008 就定義在這個(gè)結(jié)構(gòu)體內(nèi);

5ec23d50-23f4-11f1-96ea-92fbcf53809c.png

2. OD_RAM - 存儲(chǔ)屬性為 RAM 的對(duì)象;對(duì)象定義在 OD_PERSIST_COMM 還是 OD_RAM 即受上述的 Storage Group 參數(shù)決定;

3. ODObjs - 描述了所有對(duì)象的參數(shù)類型,訪問屬性和參數(shù)長(zhǎng)度;此時(shí)對(duì)象 0x1008 屬性為 SDO 可讀寫, 缺省值(HPMICRO Canopen Demo)長(zhǎng)度為 20 字節(jié);

5ece888a-23f4-11f1-96ea-92fbcf53809c.png

4. OD - sample 中最終會(huì)通過這個(gè)結(jié)構(gòu)體指針對(duì) map 進(jìn)行讀寫;

2.2.2 OD.h 文件

OD.h 中定義了上述 OD.c 中用到的所有的變量和結(jié)構(gòu)體的定義, 比如上述提到的 OD_PERSIST_COMM_t, OD_RAM_t 等;此外,用戶還需要關(guān)注的是以下宏定義:

5eded56e-23f4-11f1-96ea-92fbcf53809c.png

這些宏定義描述了 CANopen 中所有協(xié)議涉及的對(duì)象數(shù)量,這個(gè)是根據(jù)上述 Count Label 統(tǒng)計(jì)出的。以宏定義 OD_CNT_NMT 為例,表明 NMT 數(shù)量為 1,在 CANopen 協(xié)議中,NMT 協(xié)議是最基本的協(xié)議之一,數(shù)量必須大于 1,否則會(huì)報(bào)錯(cuò)。

5eeaf010-23f4-11f1-96ea-92fbcf53809c.png

綜上,我們介紹了如何使能并配置一個(gè)對(duì)象,同時(shí)介紹了 CANopenEditor 的配置和生成 map 表的對(duì)應(yīng)關(guān)系。當(dāng)然,想要配置出和 SDK sample 中同樣的 map 表,還需要修改很多參數(shù),用戶可以參考 hpm_sdk v1.10.0 中,hpm_sdk/middleware/CANopenNode/port/objdict 路徑下的 OD.c 文件,配置基本的參數(shù)對(duì)象。


2.3 增加一個(gè)新的對(duì)象參數(shù)

經(jīng)過章節(jié) 2.1, 2.2 的配置,設(shè)備已具備一個(gè)基本的對(duì)象字典結(jié)構(gòu)。然而,該默認(rèn)配置中所有 PDO 的映射參數(shù)均為空。這意味著,即使 PDO 的傳輸條件被滿足,從站設(shè)備也因缺乏有效的數(shù)據(jù)映射而不會(huì)發(fā)送任何 PDO 報(bào)文。因此必須在對(duì)象字典中定義應(yīng)用對(duì)象,并將其配置到相應(yīng)的 PDO 映射表中。本章節(jié)將詳細(xì)闡述如何新增一個(gè)應(yīng)用對(duì)象條目,設(shè)定其 SDO 訪問權(quán)限,并將其分配為 TPDO 的映射內(nèi)容,從而使能有效的過程數(shù)據(jù)通信。

5ef69f14-23f4-11f1-96ea-92fbcf53809c.png

在 Manufacturer Specific Parameters 區(qū)域, 左擊 Name, 選擇 Add,會(huì)出現(xiàn)一個(gè) Create new OD Index 的對(duì)話框,用戶需要設(shè)定三個(gè)參數(shù):Index, Name, Object Type。
此處設(shè)定:

1. Index - 2102

2. Name - PDO_Para(表明這是給 PDO 使用的一個(gè)對(duì)象參數(shù))

3. Object Type - VAR(表明這是一個(gè)變量)

點(diǎn)擊 Create, 這個(gè)參數(shù)就添加好了。但是,用戶還需要對(duì)這個(gè)對(duì)象進(jìn)行屬性配置,如 2.1 章節(jié)中對(duì)第 4 部分對(duì)象屬性的描述,配置如下:

1. Default Value: 0xAA

2. Data Type: UNSIGNED32

3. Access SDO, PDO: rw(對(duì) PDO, SDO 都分配了讀寫屬性,主站可以通過這兩種協(xié)議對(duì) 0x2102 這個(gè)對(duì)象的數(shù)據(jù)進(jìn)行讀寫)

4. Storage Group: RAM

5. Enabled: 勾選

當(dāng)然,由于這個(gè)參數(shù)是給 PDO 使用的,因此還需要修改 0x1600(RPDO) 和 0x1A00(TPDO) 的 subindex0 和 subindex1,以 0x1600 為例:

5f040474-23f4-11f1-96ea-92fbcf53809c.png

至此,所有配置步驟均已完成。


2.4 輸出對(duì)象字典文件

生成對(duì)象字典文件(OD.c/OD.h), 如下圖所示:

5f117ce4-23f4-11f1-96ea-92fbcf53809c.png

步驟如下:

單擊 File, 選擇 Export CanOpenNode..., 修改路徑為 hpm_sdk/middleware/CANopenNode/port/objdict/, 替換已有的 OD.c/OD.h。

Notes:

Save Project As.../Export, 會(huì)將這次的改動(dòng)生成一個(gè)新的 DS301_profile.xdd,用戶下次導(dǎo)入這個(gè)文檔,就可以直接在這次的基礎(chǔ)上進(jìn)行新的開發(fā)和改動(dòng)。

Save Network XML, 會(huì)將這次改動(dòng)后的對(duì)象字典,生成一個(gè) XML 文檔,可供后續(xù)其他平臺(tái)的開發(fā)。


3. 運(yùn)行結(jié)果分析

編譯 hpm_sdk v1.10.0 中的 sample: hpm_sdk/samples/canopen/slave 并燒錄到開發(fā)板,以 hpm6p00evk 為例(作為從站),主站使用 canbox(便于觀察數(shù)據(jù)包進(jìn)行分析)。數(shù)據(jù)交互如下:

1.從站運(yùn)行成功并結(jié)束初始化后,將發(fā)送一個(gè) init(0x00) 包,然后從站會(huì)自動(dòng)切換至 pre-optional,并開始發(fā)送 pre-optional(0x7F) 包:

5f1b485a-23f4-11f1-96ea-92fbcf53809c.png

2.主站發(fā)送 start remote node(00 01) 命令,從站接收成功后,立刻開始發(fā)送 PDO(0xAA) 數(shù)據(jù)包,同時(shí)切換到 optional 狀態(tài)并開始發(fā)送 optional(0x05) 包:

5f26b262-23f4-11f1-96ea-92fbcf53809c.png

3.當(dāng)收到 TPDO 的數(shù)據(jù)包后,說明對(duì)象 0x2102 的值和 TPDO 的屬性配置成功,而配置時(shí),還對(duì) SDO 也做了訪問配置,因此可以通過 SDO 去讀 0x2102 的值:

5f39d78e-23f4-11f1-96ea-92fbcf53809c.png

4.通過 SDO 改寫 0x2102,改寫成功后,PDO 將發(fā)送新的 0x2102 的值:

5f44de04-23f4-11f1-96ea-92fbcf53809c.png

5.再次讀取 0x2102 的值以做確認(rèn):

5f4fb6a8-23f4-11f1-96ea-92fbcf53809c.png

此時(shí),0x2102 已經(jīng)被主站改寫為 0xBB 并保存在 map 中。


4.總結(jié)

CANopenEditor 工具可替代手動(dòng)修改,以簡(jiǎn)化對(duì)象字典的配置過程。hpm_sdk v1.10.0 中的 CANopen demo 對(duì)象字典即由該工具編輯、生成,可作為用戶實(shí)現(xiàn)自定義配置的參考基礎(chǔ)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    18990

    瀏覽量

    399711
  • CAN總線
    +關(guān)注

    關(guān)注

    145

    文章

    2047

    瀏覽量

    135297
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    59

    文章

    3071

    瀏覽量

    472887
  • CANopen
    +關(guān)注

    關(guān)注

    8

    文章

    493

    瀏覽量

    49368
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    canopen如何通過對(duì)象字典控制外設(shè)?

    各位大佬好,我在移植canopen的時(shí)候碰到一個(gè)疑問。比如我修改對(duì)象字典2000,子索引為0這個(gè)目錄下的值,如何這個(gè)對(duì)象映射的是某個(gè)led燈的亮滅,輸入1為亮,0為滅。 問題就是我發(fā)送
    發(fā)表于 09-11 06:04

    Canopen協(xié)議讀后感想

    充分利用了該特征,達(dá)到了數(shù)據(jù)傳輸實(shí)時(shí)性的目的。2,CANopen協(xié)議提出了OD(object dictionary,對(duì)象字典)的概念。這個(gè)概念非常重要,其使得控制節(jié)點(diǎn)抽象化、標(biāo)準(zhǔn)化了。所有的控制節(jié)點(diǎn)都可以
    發(fā)表于 09-21 12:58

    如何去掌握CANOpen最難理解的對(duì)象字典

    如何去掌握CANOpen最難理解的對(duì)象字典?
    發(fā)表于 05-19 06:24

    基于STM32的CANopen通訊協(xié)議的實(shí)現(xiàn)

    1_【基于STM32的CANopen通訊協(xié)議的實(shí)現(xiàn)】 CANopen分為三部分: 1、通信部分:PDO協(xié)議,SDO協(xié)議,NMT協(xié)議,特殊功能對(duì)象 2、對(duì)象
    發(fā)表于 08-20 08:12

    canopen簡(jiǎn)單提要

    ?? canopen協(xié)議屬于應(yīng)用層協(xié)議,是由一系列子協(xié)議組成,分為通訊子協(xié)議和設(shè)備子協(xié)議,通訊子協(xié)議例如CIA 301子協(xié)議對(duì)canopen網(wǎng)絡(luò)的架構(gòu)進(jìn)行了規(guī)范 ,針對(duì)某些特定的對(duì)象字典
    發(fā)表于 09-15 07:56

    canopen協(xié)議與can特點(diǎn)

    ?? canopen協(xié)議屬于應(yīng)用層協(xié)議,是由一系列子協(xié)議組成,分為通訊子協(xié)議和設(shè)備子協(xié)議,通訊子協(xié)議例如CIA 301子協(xié)議對(duì)canopen網(wǎng)絡(luò)的架構(gòu)進(jìn)行了規(guī)范 ,針對(duì)某些特定的對(duì)象字典
    發(fā)表于 09-15 07:10

    如何修改CANopen節(jié)點(diǎn)的心跳報(bào)文的頻率

    文章目錄一、前言一、前言通過修改CANopen節(jié)點(diǎn)的對(duì)象字典,改變它發(fā)送心跳報(bào)文的頻率。測(cè)試硬件如下:
    發(fā)表于 02-15 07:38

    輕松掌握CANOpen最難理解的對(duì)象字典

    CANopen是一種架構(gòu)在控制局域網(wǎng)路(Controller Area Network, CAN)上的高層通訊協(xié)議,其中對(duì)象字典是協(xié)議中最為核心的概念,透徹掌握其相關(guān)內(nèi)容,運(yùn)用CANOpen
    發(fā)表于 01-11 13:35 ?1.2w次閱讀
    輕松掌握<b class='flag-5'>CANOpen</b>最難理解的<b class='flag-5'>對(duì)象</b><b class='flag-5'>字典</b>

    CANOpen系列教程12 對(duì)象字典編輯器操作說明

    CANOpen系列教程12_對(duì)象字典編輯器操作說明
    的頭像 發(fā)表于 03-06 15:27 ?9039次閱讀

    CANOpen系列教程10_ 關(guān)于Canfestival及對(duì)象字典生成工具環(huán)境搭建

    CANOpen系列教程10_關(guān)于Canfestival及對(duì)象字典生成工具環(huán)境搭建
    的頭像 發(fā)表于 03-06 15:52 ?1.3w次閱讀

    CANOpen系列教程09 _CANOpen對(duì)象字典

    CANOpen系列教程09_CANOpen對(duì)象字典
    的頭像 發(fā)表于 03-06 16:31 ?8302次閱讀

    CANopen | 對(duì)象字典OD 02 - 修改CANopen節(jié)點(diǎn)的心跳報(bào)文發(fā)送間隔

    文章目錄一、前言一、前言通過修改CANopen節(jié)點(diǎn)的對(duì)象字典,改變它發(fā)送心跳報(bào)文的頻率。測(cè)試硬件如下:
    發(fā)表于 12-14 19:12 ?3次下載
    <b class='flag-5'>CANopen</b> | <b class='flag-5'>對(duì)象</b><b class='flag-5'>字典</b>OD 02 - 修改<b class='flag-5'>CANopen</b>節(jié)點(diǎn)的心跳報(bào)文發(fā)送間隔

    加速CANopen設(shè)備開發(fā)的設(shè)計(jì)工具

    設(shè)計(jì)對(duì)象字典過程中往往耗時(shí)較長(zhǎng)、容易犯錯(cuò),或與預(yù)期不符而返工,或需要設(shè)計(jì)多種功能而多次重復(fù)工作。配置對(duì)象字典時(shí),需要一個(gè)專業(yè)的、高效的CANopen
    的頭像 發(fā)表于 07-27 11:34 ?3273次閱讀

    使用ES32實(shí)現(xiàn)CANopen從機(jī)

    字典。CANopen設(shè)備模型如下圖。對(duì)象字典描述了CANopen設(shè)備的所有行為和參數(shù)。CanFestival是一套開源免費(fèi)的
    的頭像 發(fā)表于 03-26 19:05 ?2209次閱讀
    使用ES32實(shí)現(xiàn)<b class='flag-5'>CANopen</b>從機(jī)

    盟通方案|CANopen數(shù)據(jù)鏈路配置工具

    CANopen產(chǎn)品開發(fā)過程中,并非所有應(yīng)用場(chǎng)景的CANopen網(wǎng)絡(luò)拓?fù)涠际谴_定的,這需要CANopen網(wǎng)絡(luò)能夠靈活配置設(shè)備間對(duì)象字典的收發(fā)
    的頭像 發(fā)表于 05-30 14:19 ?773次閱讀
    盟通方案|<b class='flag-5'>CANopen</b>數(shù)據(jù)鏈路配置<b class='flag-5'>工具</b>