CANopen协议---PDO使用配置

news2024/9/21 19:00:35

1、CANopen知识回顾

        在上一讲中,已经对CANopen的基本结构和整体内容进行了一番梳理,本笔记主要整理了一下CANopen如何配置PDO,实现数据周期性自动上传和控制信号快速发送等操作。

CANopen协议开发梳理总结笔记教程-CSDN博客文章浏览阅读920次,点赞31次,收藏16次。CANOpen协议是一种架构在控制局域网络(Controller Area Network, CAN)上的高层通信协议,它广泛应用于工业自动化、机械工程和汽车电子等领域。CANOpen协议通过对象字典、服务数据对象(SDO)、过程数据对象(PDO)等机制,为机器人、运动控制、过程控制、楼宇自动化、交通运输等行业提供了一种标准化的通信解决方案。https://blog.csdn.net/weixin_49337111/article/details/140192162?spm=1001.2014.3001.5501

        由于需要区分每个 CANopen 节点的输入和输出,所以 PDO 分为 TPDO(发送 PDO)和RPDO(接收 PDO)发送和接收是以 CANopen 从站节点为参考(如果 CAN 主站就相反)。TPDO和 RPDO 分别有 4 个数据对象,每种数据对象就是 1 条 CAN 报文封装。

        如下是所使用的伺服电机控制器中实现 PDO 的传输的4 个 RPDO 和4 个 TPDO。注意,不同控制器的PDO数量可能不一致,需要根据实际产品进行手册参考。

        PDO使用时,需要进行映射配置操作,如下所示为PDO映射操作的流程图。

        PDO 和 SDO 的通讯区别在于,PDO 属于过程数据,即单向传输,无需接收节点回应CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型

        接下来的部分,将具体讲解,如何实现上述PDO映射操作的实现。

2、NMT网络管理主机

        网络管理主机 NMT-Master(Network Management-Master),就像一个指挥官,所有节点的启动、停止都是有他进行指挥NMT 主机和 NMT 从机之间通讯的报文就称为 NMT 网络管理报文。管理报文负责层管理、网络管理和 ID 分配服务。为了协调各个节点的同步、心跳、时间、错误提示等通讯控制,CANopen 还定义了一系列特殊协议(Special protocols)报文。

NMT 管理涉及到一个 CANopen 节点从上电开始的 6 种状态,包括:

        初始化(Initializing):节点上电后对功能部件包括 CAN 控制器进行初始化;

        应用层复位(Application Reset):节点中的应用程序复位(开始),比如开关量输出、模拟量输出的初始值;

        通讯复位(Communication reset):节点中的CANopen通讯复位(开始),从这个时刻起,此节点就可以进行CANopen通讯了。

        预操作状态(Pre-operational):节点的CANopen通讯处于操作就绪状态,此时此节点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作;

        操作状态(operational):节点收到NMT主机发来的启动命令后,CANopen通讯被激活,PDO通信启动后,按照对象字典里面规定的规则进行传输,同样SDO也可以对节点进行数据传输和参数修改;

        停止状态(Stopped):节点收到NMT主机发来的停止命令后,节点的PDO通信被停止,但SDO和NMT网络管理依然可以对节点进行操作;

        除初始状态外,NMT主机通过NMT命令可以让网络中任意一个的CANopen节点进行其他5种状态的切换。图中转换由 NMT 报文实现,且只有 NMT 主机能够发送 NMT 控制报文,消息报文格式如下所示:

为了方便讲解说明,接下来的部分,均是默认设备的节点ID为 1

3、PDO配置操作流程

在这一部分的内容中,以配置目标位置(0x607A)映射到PDO为例子进行笔记整理讲解。

①、节点预操作模式切换

        在这一步中,需要先将该节点切换到预操作模式下。操作模式的切换均是由NMT进行管理的。

        0x000 80 01

char data[8] = { 0 };
data[0] = 0x80;
data[1] = 0x01;

serve_motor_send_data(0x000, data);
//如果开启了设备心跳,会有类似的返回值:000 80 01

②、使PDO无效

        使PDO无效,需要使用SDO发送数据。

//22 00 14 01 01 02 00 80

char data[8] = { 0 };
data[0] = 0x22;               
//任意长度写入
data[1] = 0x1400 & 0xFF;      //通信对象:0x1400
data[2] = 0x1400 >> 8 & 0xFF;
//通信对象:0x1400
data[3] = 0x01;

data[4] = (0x200 + 0x01) & 0xFF;      //0x1400的COB-ID为0x200+节点ID
data[5] = (0x200 + 0x01) >> 8 & 0xFF;
//0x1400的COB-ID为0x200+节点ID
data[6] = 0x00;
data[7] = 0x80;

serve_motor_send_data(0x601, data);

③、清除PDO映射

        清除PDO映射,也需在SDO发送数据。

//22 00 16 00 00 00 00 00
char data[8] = { 0 };
data[0] = 0x22;
//任意长度写入
data[1] = 0x1600 & 0xFF;        //映射对象:0x1600
data[2] = 0x1600 >> 8 & 0xFF;   //映射对象:0x1600

serve_motor_send_data(0x601, data);

④、写入PDO映射内容

        写入PDO映射内容,也需在SDO发送数据。

//22 00 16 01 20 00 FF 60
char data[8] = { 0 };
data[0] = 0x22;                    //任意长度写入
data[1] = 0x1600 & 0xFF;
           //映射对象:0x1600
data[2] = 0x1600 >> 8 & 0xFF;      //映射对象:0x1600
data[3] = 0x01;
data[4] = 0x20;
                    //写入32位数据
data[5] = 0x00;
                    //子索引
data[6] = 0x607A & 0xFF;
           //目标参数索引:目标地址0x607A
data[7] = 0x607A >> 8 & 0xFF;      //目标参数索引:目标地址0x607A

serve_motor_send_data(0x601, data);

⑤、写入PDO映射对象个数

        写入PDO映射对象个数,也需在SDO发送数据。

//22 00 16 00 01 00 00 00 写入1个参数
char data[8] = { 0 };
data[0] = 0x22;
                 //任意长度写入
data[1] = 0x1600 & 0xFF;
        //映射对象:0x1600
data[2] = 0x1600 >> 8 & 0xFF;
   //映射对象:0x1600
data[3] = 0x00;
data[4] = 0x01;                 //参数个数

serve_motor_send_data(0x601, data);

⑥、激活PDO

        写入PDO映射对象个数,也需在SDO发送数据。

//22 00 14 01 01 02 00 00
char data[8] = { 0 };
data[0] = 0x22;                    //任意长度写入
data[1] = 0x1400 & 0xFF;           //通信对象:0x1400
data[2] = 0x1400 >> 8 & 0xFF;
      //通信对象:0x1400
data[3] = 0x01;
data[4] = (0x200 + 0x01) & 0xFF;        //0x1400的COB-ID为0x200+节点ID
data[5] = (0x200 + 0x01) >> 8 & 0xFF;   //0x1400的COB-ID为0x200+节点ID
data[6] = 0x00;
data[7] = 0x00;

serve_motor_send_data(0x601, data);

        在上述步骤,全部正常发送和接收返回后,既完成了一套完整的PDO配置操作,如果需要一条PDO配置多个控制操作,进行适当的修改即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1907175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp父页面调用子页面 组件方法记录

文章目录 导文如何点击父页面,触发子页面函数先写一个子页面的基础内容父元素 如何点击父页面,修改子页面的值先写一个子页面的基础内容父元素 导文 如何点击父页面,触发子页面函数? 如何点击父页面,修改子页面的值&am…

LVGL移植与VS模拟器使用

一、移植文件介绍 二、移植部分 第一步:创建LVGL文件夹 第二步: 构造LVGL文件夹:LVGL - GUI - lvgl - 第三步:添加文件 3.1 从examples中添加2个.c文件 3.2 从src中添加文件 draw文件 extra文件 第四步: 三、Ke…

WordPress作品设计素材图片站资讯文章教程uigreat主题

主题介绍 uigreat主题是一款wordpress作品主题,发布设计作品素材文章,适合作品展示、设计等站点使用等,这款主题都非常合适。 1、自适应设计,PC、平板、手机等均可正常浏览; 2、图片缩略图可自定义高度,主…

2005-2023年各省居民人均消费支出、城镇居民人均消费支出、农村居民人均消费支出数据(无缺失)

2005-2023年各省居民人均消费支出、城镇居民人均消费支出、农村居民人均消费支出数据(无缺失) 1、时间:2005-2023年 2、来源:国家统计局、统计年鉴 3、范围:31省 4、指标:全体居民人均消费支出、城镇居…

相位噪声为什么越低越好?

什么是相位噪声? 相位噪声是描述无线电波信号的一种重要参数,它指的是在各种噪声的作用下,系统输出信号相位的随机变化。具体来说,相位噪声可以类比为由于天气原因导致的航班延误,使得航班的起飞和降落时间相对于正常…

废品回收小程序开发,让回收更加便捷

当下随着大众环保意识的提高,废品回收市场得到了快速发展,拥有着巨大的发展空间。在互联网科技的支持下,废品回收行业也迎来了新的发展机遇,从传统的回收模式到线上回收转型,通过数字化发展,为居民带来便利…

智慧党建管理系统源码 党建智能管理系统搭建 含完整带代码包和图文搭建教程

随着信息技术的飞速发展,智慧党建成为新时代党建工作的重要趋势。智慧党建管理系统作为党建信息化的重要载体,不仅提升了党建工作的效率,还增强了党组织的凝聚力和战斗力。分享一个智慧党建管理系统源码,轻松搭建党建智能管理系统…

双链表(数组模拟)

双链表(数组模拟) 什么是双链表数组模拟双链表题目 什么是双链表 双链表不同于单链表的是 每一个节点不但存储了下一个节点的位置,也存储了上一个节点的位置。 数组模拟双链表 所以如果用数组的话,就需要创建三个数组。 题目 …

【Linux】文件内容查看命令——cat,tac,more,less,head,tail,od

如果我们要查看一个文件的内容时,该如何是好? 这里有相当多有趣的命令可以来分享一下:最常使用的显示文件内容的命令可以说是cat与more及less了。 此外,如果我们要查看一个很大的文件(好几百MB时),但是我们…

数据合并 26-30题(30 天 Pandas 挑战)

数据合并 1. 知识点1.27 左连接1.28 数据填充与交叉连接1.29 获取列值列表 题目2.26 合作过至少三次的演员和导演2.27 使用唯一标识码替换员工ID2.28 学生们参加各科测试的次数2.29 至少有5名直接下属的经理2.30 销售员 1. 知识点 1.27 左连接 datapd.merge(employees,employ…

2024图纸加密软件TOP8排行丨企业保护数据安全最佳选择

图纸往往包含了设计人员的创意和智慧,是企业的重要资产。加密可以防止未经授权的复制、分发或使用,保护设计的原创性和独特性不被侵犯。 许多图纸可能含有公司的商业秘密,比如特定的技术参数、生产流程或是产品设计等。这些信息若泄露给竞争…

美国Facebook直播网络卡顿问题怎么解决?

美国Facebook直播为用户提供了与当地客户、粉丝实时互动的机会,然而,有时由于网络问题,直播可能会出现卡顿现象,影响用户体验。本文将介绍解决美国Facebook直播网络卡顿问题的一种可能解决方案——接入海外直播网络专线。 了解美国…

国内知名源码交易平台及其特点,建议收藏!

​在数字化时代,源码交易平台成为连接开发者与项目需求的重要桥梁。这些平台不仅提供了丰富的源码资源,还促进了技术交流与合作。本文小编将分享介绍几个国内知名的源码交易平台,包括帮企商城、春哥技术博客、86资源网、春哥技术源码论坛以及…

如何选择高性价比的土壤检测仪器?

在现代农业与环保领域,土壤检测仪器的选择显得尤为关键。它不仅关系到土壤养分管理、作物健康生长,还涉及到环境保护和可持续发展。那么,面对市场上琳琅满目的土壤检测仪器,我们该如何选择一款实用的设备呢? 首先&…

智慧安防/智慧工厂/视频分析EasyCVR视频监控汇聚平台如何关闭国标设备的自动检索功能?

安防监控视频融合汇聚平台EasyCVR兼容性强,可支持Windows系统、Linux系统以及国产化操作系统等,平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,可拓展性强、视频能力灵活,能对外分发RTMP、RTSP、HTTP-…

用R在地图上绘制网络图的三种方法

地理网络图与传统的网络图不同,当引用地理位置进行节点网络可视化时,需要将这些节点放置在地图上,然后绘制他们之间的连结。Markus konrad的帖子(https://datascience.blog.wzb.eu/2018/05/31/three-ways-of-visualizing-a-graph-on-a-map/)&…

绝地求生PUBG兰博基尼怎么兑换 兰博基尼怎么获得

绝地求生采用虚幻4引擎制作,玩家们会在一个偏远的岛屿上出生,然后展开一场赢家通吃的生存竞赛,最后只会有1个人存活。当然,和其他生存游戏一样,玩家需要在广袤复杂的地图中收集武器、车辆、物资,而且也会有…

数字化设计与分析助力建造印度最大污水处理厂

利用 STAAD 开展结构分析和设计,为不稳定土体上的复杂水池系统开发稳定的基础 治理河流 新德里不仅是印度的首都,一个多世纪以来也一直是印度最重要的城市之一。这座城市于 1911 年作为新的政府所在地,历经 20 年时间建成了许多宏伟建筑&…

tomcat的优化和tomcat和nginx实现动静分离:

tomcat的优化 tomcat自身的优化 tomcat的并发处理能力不强。大项目不使用tomcat做为转发动态的中间件(k8s集群,python,rubby),小项目会使用(内部使用),动静分离。 优化tomcat的启动…

什么是离散化?

离散化 题目 你会这个题 吗? 题目 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0 0 0。 现在,我们首先进行 n n n 次操作,每次操作将某一位置 x x x 上的数加 c c c。 接下来,进行 m m m 次询问&#x…