CANOpen用来收发数据的通信对象有SDO(Service Data Object)和PDO(Process Data Object)


  1. 一 SDO和PDO的区别

SDO使用对象字典的Index和SubIndex来访问CAN节点的对象字典,可以读或者写。而PDO则不使用Index和SubIndex,它是两个CAN节点间约定好传输的数据内容对应哪些对象字典索引,收到数据后就直接读写相应的对象字典索引里的值。
由于SDO(常规)需要用到Index和SubIndex,所以一次最多传输4个字节,而PDO一次最多可以传输8个字节。
另外,SDO还有很多其它传输功能,这里就不细说了,有兴趣的可以看官方Spec。


  1. 二 PDO的COB-ID

PDO有2种,TPDO和RPDO,一个用来发送,一个用来接收。PDO通信参数里需要设置COB-ID。

对于TPDO来说,其通信参数中的COB-ID是自身的COB-ID,当发送TPDO时用来表明这个TPDO是谁发出的。
对于RPDO来说,其通信参数的COB-ID是发送方的COB-ID,用来表示自己只接受某个CAN节点发过来的TPDO。


  1. 三 SDO的COB-ID

SDO中的COB-ID有2个,分为:

  • Client ==> Server

  • Server ==> Client

乍一看有点晕,如果我们换个角度思考下就容易理解了,假如CAN节点A通过SDO去访问CAN节点B,那么A就是Client,B就是Server。

类似于平时上网时去打开百度,需要在浏览器的地址栏里输入百度的地址,然后就可以打开百度了。网民是Client,百度是Server,百度的网址就是Client==>Server的COB-ID。

这样在A的对象字典里,设置Client==>Server的COB-ID为B的COB-ID

而A的Server==>Client的COB-ID怎么设置呢?当A发送SDO给B时,B收到SDO后会回传一个SDO给A来表示应答。之前说了,A访问B,A是Client,B是Server,现在B回传一个应答SDO给A,那么路径就是Server==>Client,这样对于A来说,其Server==>Client的COB-ID还是B的COB-ID,用来表示收到的应答SDO是来自Server的。

可能会想到B的这两个COB-ID干嘛去了呢,对于B来说,只有B是Client时才会用到这2个COB-ID,如果B通过SDO去访问A,那么B的Client==>Server和Server==>Client的COB-ID就是A的COB-ID了。


  1. 四 总结

本文是自己在学习CANOpen中的一点心得体会,如果有写的不对的地方,请留言指正。谢谢阅读。

CANOpen中SDO和PDO的COB-ID理解相关推荐

  1. CANopen中SDO、PDO、以及COB-ID理解

    CAN 总线是一种串行通信协议,具有较高的通信速率的和较强的抗干扰能力,可以作为现场总线应用于电磁噪声较大的场合. 由于CAN 总线本身只定义ISO/OSI 模型中的第一层(物理层)和第二层(数据链路 ...

  2. CANopen之SDO,PDO

    一.简述 CAN 总线是一种串行通信协议,具有较高的通信速率的和较强的抗干扰能力,可以作为现场总线应用于电磁噪声较大的场合.由于 CAN 总线本身只定义ISO/OSI 模型中的第一层(物理层)和第二层 ...

  3. CANopen 7.过程数据对象 PDO Process data object)

    学习:https://blog.csdn.net/iamplane/article/details/49931319 同步报文使用:https://blog.csdn.net/qq_40104597/ ...

  4. 倍福EtherCAT中的SDO与PDO关系

    SDO和PDO都是基于CANopen的对象字典进行讨论的,CoE基于CANopen协议进行了补充,使之可以应用在EtherCAT上,两者都是建立在CANopen的对象字典之上的,且针对的对象字典是同一 ...

  5. 学习CANopen --- [5] SDO

    文章目录 前言 一 工作原理 二 使用范围 三 例子 1. COB-ID分析 2. 报文内容分析 --- 读操作 命令提示符 索引和子索引 报文中的数据值 3. 报文内容分析 --- 写操作 命令提示 ...

  6. 基于STM32F4的CANopen快速SDO通信(超级详细)

    基于STM32的CANopen快速SDO通信 前言 1 快速sdo介绍 2 工程配置 2.1 主站词典配置 2.2节点词典配置 3 快速SDO调用代码 4 末尾 本专题相关教程: 基于STM32F4的 ...

  7. Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。

    1. Mybatis工作流程 1.1 使用MySQL创建数据库girls并生成一个表boys,如下图. 1.2 创建该表对应的简单实体类Boys,如下图. 1.3 创建Dao接口以及和接口同名的map ...

  8. (转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别

    Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: & ...

  9. 本题中的变量(不包括变量ID)进行z-score标准化

    题目描述 数据标准化是将数据按比例缩放到一个特定区间,其主要包括数据同趋化处理和无量纲化处理两个方面.数据标准化的方法有很多种,常用的有最小-最大标准化和z-score标准化. 请用户对本题中的变量( ...

最新文章

  1. [导入]Learning.ASP.NET 2.0.with.AJAX.pdf(14.14 MB)
  2. DAY11-MYSQL之ORM框架SQLAlchemy
  3. UMLChina: trufun Plato是中国唯一的UML建模工具
  4. 柴油发电机为什么会出现故障?需要注意的5个常见原因
  5. vb.net中类型转换
  6. 服务上的图片直接在浏览器上可以打开,但是在img上报404错误
  7. MVC学习IIS的不同版本(一)
  8. 8月19学习练习[两三个TableView并排显示]
  9. 05 切片、迭代、列表生成
  10. 中国大学慕课计算机专业导论,2015秋计算机专业导论(大连大学)
  11. android 浮动按钮拖拽,小程序拖拽浮动按钮
  12. 不是单组分组函数_面向对象编程是否已淘汰?函数式编程的枪口瞄错了对象
  13. 吴恩达深度学习1.3笔记_Neural Networks and Deep Learning_浅层神经网络
  14. ansible批量安装服务器思路
  15. 原生js--放大镜效果
  16. 如何在Windows XP下安装Windows2000
  17. 洛谷P2082 区间覆盖(加强版)(珂朵莉树)
  18. matlab查表svpwm,SVPWM的MATLAB仿真实现
  19. 使用阿里云加速器解决docker下载镜像太慢的问题
  20. Caml 多表关联查询

热门文章

  1. 2D转换和3D转换 transform
  2. 中职生学云计算机技术应用,云课堂在中职计算机课程教学中的应用
  3. Linux 修改虚拟机IP地址
  4. 训练赛20160406_华中OJ
  5. ​【交通标志识别】基于BP神经网络实现交通标志识别matlab代码
  6. 钱文品 | 《Redis在海量数据和高并发下的优化实践》主题分享
  7. PacBio vs. Oxford Nanopore sequencing
  8. 微信小程序-地区选择伪五级联动(选择国,省,市,县,镇)
  9. python获取摄像头数据_用Python获取摄像头并实时控制人脸 !
  10. app消息推送服务器端,系统服务:APP消息推送服务