CANopen | 对象字典OD 05 - 创建对象字典变量,映射到RPDO

这篇具有很好参考价值的文章主要介绍了CANopen | 对象字典OD 05 - 创建对象字典变量,映射到RPDO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

该章节的源代码地址:github
canopen 映射,CAN总线,单片机,stm32,c语言

canopen 映射,CAN总线,单片机,stm32,c语言
canopen 映射,CAN总线,单片机,stm32,c语言

以上摘自《CANopen_easy_begin》的第7章。

二、实验目的

CANopen从站有一个变量rx_Value,映射到PDO1上。接着,CANopen主站通过CANopen协议修改CANopen从站的变量rx_Value。

三、对象字典OD

canopen 映射,CAN总线,单片机,stm32,c语言
使用Objdictedit软件打开文件夹/obj_dir/Slave1.od对象字典。
canopen 映射,CAN总线,单片机,stm32,c语言
在0x2000~0x5FFF的地址创建变量rx_Value,类型是uint16_t。
canopen 映射,CAN总线,单片机,stm32,c语言
在0x1600~0x17FF的Receive PDO Mapping里的0x1600是RPDO1,然后在映射对象1那里选择rx_Value变量。
canopen 映射,CAN总线,单片机,stm32,c语言
然后,其他没有被映射的对象全部删除,如上图所示。此时,只有映射对象1,它是rx_Value。
canopen 映射,CAN总线,单片机,stm32,c语言
最后,保存对象字典,建立词典(其实就是将对象字典生成.c代码,给STM32工程使用)。
canopen 映射,CAN总线,单片机,stm32,c语言
打开STM32工程后,可以找到rx_Value变量。
canopen 映射,CAN总线,单片机,stm32,c语言
编译(0 error,0 warning) ,下载代码。
canopen 映射,CAN总线,单片机,stm32,c语言
可以看到,CANopen从站已经上线,在预操作状态。

四、通过RPDO修改变量rx_Value

4.1、NMT指令让CANopen从站进入操作状态

首先,根据CANopen的NMT协议,让CANopen从站进入操作状态。
canopen 映射,CAN总线,单片机,stm32,c语言
canopen 映射,CAN总线,单片机,stm32,c语言
从上图看到,CANopen从站Node-ID=0x01进入了操作状态,此时PDO的功能被打开。

请牢记住这一点,要使用canopen从站的PDO功能,就必须让它先进去操作状态!

4.2、RPDO修改变量rx_Value

canopen 映射,CAN总线,单片机,stm32,c语言
回忆一下,变量rx_Value被映射到RPDO1。
canopen 映射,CAN总线,单片机,stm32,c语言
所以通讯的CAN-ID为0x201。
canopen 映射,CAN总线,单片机,stm32,c语言

从上图可以看到,通过发送CANID:0x201,数据0x77 0x88,接着从MDK观察到变量rx_Value确实变化了。
至于为什么rx_Value的值跟CAN包上的值顺序不一样,是因为CANopen是小端通讯的。文章来源地址https://www.toymoban.com/news/detail-696859.html

到了这里,关于CANopen | 对象字典OD 05 - 创建对象字典变量,映射到RPDO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单线程、同步、异步、预解析、作用域、隐式全局变量、对象创建、new

    cpu 资源分配的最小单位 一个进程可以有多个线程 cpu 调度的最小单位 线程建立在进程的建立基础上的一次程序的运行单位 线程分为:单线程 多线程 单线程:js是单线程 (同一个时间只能完成一个任务) 多线程:百度是多线程 同步任务是指在主线程上排队的任务,只有当前

    2024年01月22日
    浏览(48)
  • Go语言程序设计(六)字典(映射)

            在Go语言中,Map是一种特殊的数据结构,它由一对无序的数据项组成,被称为键值对(Key-value Pair)。其中的一项是键(Key),另外一项是值(Value), Map通过把键映射到值来进行访问,这种方式可以加快数据查找的速度。所以,Map通常也被称作字典(Dictionary)或哈希表(Hash table) ,本

    2024年02月12日
    浏览(48)
  • 读数据压缩入门笔记05_字典转换

    5.3.1.1. 对数据集越了解,你就越能从中选择出最适合的LZ变换 5.3.2.1. Terry Welch于1984年提出的,它采用了LZ78算法的思想 5.3.2.2. 首个在计算机中广泛采用的通用数据压缩方法

    2024年02月09日
    浏览(33)
  • 使用Python保存和加载 字典 变量

    使用Python保存和加载 字典 变量node_message

    2024年02月14日
    浏览(41)
  • 华为OD机试 - 查字典(Java & JS & Python)

    题目描述 输入一个单词前缀和一个字典,输出包含该前缀的单词 输入描述 单词前缀+字典长度+字典 字典是一个有序单词数组 输入输出都是小写 输出描述 所有包含该前缀的单词,多个单词换行输出 若没有则返回-1 用例 输入 b 3 a b c 输出 b 说明 无 输入 abc 4 a ab abc abcd 输出

    2024年02月11日
    浏览(39)
  • 前端TypeScript学习day05-索引签名、映射与类型声明文件

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)              目录 索引签名类型  映射类型 索引查询(访问)类型 基本使用  同时查询多个索引的类型  TypeScript 类型声明文件  概述 TS 的两种文件类型  类型声明文件的

    2024年02月08日
    浏览(48)
  • 在Python中将字典转为成员变量的方法

    当我们在Python中写一个class时,如果有一部分的成员变量需要用一个字典来命名和赋值,此时应该如何操作呢?这个场景最常见于从一个文件(比如json、npz之类的文件)中读取字典变量到内存当中,再赋值给一个类的成员变量,或者已经生成的实例变量。 在python中直接支持了

    2024年04月28日
    浏览(31)
  • VBA字典对象操作技巧

    VBA 中集合的功能比较弱,常见的有数组 (array) 、集合 (Collection)和字典,其中字典是 Key-Value Pair 类型的数据结构,适合按 Key 存储和查找。本篇介绍字典的操作方法。 VBA 语法本身并没有字典这种数据结构,需要引用 Microsft Scripting Runtime 库: Dictionary 本身的方法不多,只有六

    2024年02月07日
    浏览(47)
  • Day05 变量

    在程序执行过程中,其值有可能发生改变的量(数据) 当某个数据经常发生改变时,我们也可以用变量存储。当数据变化时,只要修改变量里面变化的值即可。 数据类型 变量名 = 数据值; (数据值:存在空间里面的数值) (变量名:为空间起的名) (数据类型:为空间中存

    2024年02月04日
    浏览(41)
  • 华为OD机试真题B卷 Java 实现【查字典】,附详细解题思路

    华为OD机试 2023B卷题库疯狂收录中,刷题 点这里 输入一个单词前缀和一个字典,输出包含该前缀的单词。 单词前缀+字典长度+字典。 字典是一个有序

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包