CANopen中发送/接收的数据称之为过程数据(PDO)。这里以发送为例,理清其中的映射关系。

配置

发送使用TPDOx,可以使用TPDOx如下:

项目 通讯参数-字典Index 映射参数-字典Index
TPDO1 0x1800 0x1A00
TPDO2 0x1801 0x1A01
TPDO3 0x1802 0x1A02
TPDO4 0x1803 0x1A03

使用首先就得配置TPDOx,其中通讯参数决定“怎么发送数据”,其定义及其作用如下:

typedef struct{UNSIGNED8      maxSubIndex;/*子索引数量=6*/                                UNSIGNED32     COB_IDUsedByTPDO;/*其实是Function Code(COB-ID = Funcode+NodeID)*/  UNSIGNED8      transmissionType;/*发送类型:SYNC触发(同步)、周期发送(异步)、远程请求、特定*/  UNSIGNED16     inhibitTime;/*X*100us 间隔时间;0-禁止功能*/  UNSIGNED8      compatibilityEntry;/*not used*/  UNSIGNED16     eventTimer;/*X*1ms 周期发送间隔;0-禁止功能*/  UNSIGNED8      SYNCStartValue;/*SYNC报文起始值*/  }OD_TPDOCommunicationParameter_t;

映射参数决定了“发送什么数据”,其定义及其作用如下:

typedef struct{UNSIGNED8      numberOfMappedObjects;/*实际使用几个映射*/  UNSIGNED32     mappedObject1;UNSIGNED32     mappedObject2;UNSIGNED32     mappedObject3;UNSIGNED32     mappedObject4;UNSIGNED32     mappedObject5;UNSIGNED32     mappedObject6;UNSIGNED32     mappedObject7;UNSIGNED32     mappedObject8;} OD_TPDOMappingParameter_t;

举例

TPDO1,对通讯参数Index=0x1800,映射参数Index=0x1A00进行配置:

“怎么发送数据”:发送的COD-ID =0x180+NodeID;采用周期发送(异步)的方式,周期为32ms。

“发送什么数据”:字典Index为0x6000,subIndex为0,数据长度为0x20(32)bits/4字节的位置上的数据。再加上字典Index为0x6100,subIndex为0,数据长度为0x20(32)bits/4字节的位置上的数据。刚好8字节填满了整个数据帧。

[CANopen]理清PDO映射相关推荐

  1. Elmo驱动器:CANopen协议电机PVT模式的PDO映射

    Elmo驱动器:CANopen协议电机PVT模式的PDO映射 0.前言 最近在做Rhex机器人,该机器人的六条腿部每条腿均只有一个电机,对步态的控制完全依赖于一个电机的控制,使用以前用的比较简单的电机 ...

  2. EtherCAT通信DS402协议----PDO映射

    EtherCAT通信DS402协议----PDO映射 PDO 映射 PDO 分配 PDO 映射的步骤 EtherCAT 从站的过程数据由同步管理器通道对象组成,每个同步管理器通道对象描述了 Ether ...

  3. CanOpen通信----PDO与SDO

    CanOpen通信----PDO与SDO 服务数据对象SDO SDO 传输框架 SDO 传输报文 SDO 加速写传输报文 SDO 加速读传输报文 SDO分段读传输报文 过程数据对象PDO PDO 传输 ...

  4. EtherCAT使用与解析-关于PDO映射

    关于PDO映射这部分,最好先参考https://blog.csdn.net/lswdcyy/article/details/105441470先了解一下配置相关的东西: 首先这里已经假设你已经了解完毕 ...

  5. CANopen开启PDO定时发送后心跳帧时间错误,PDO迟迟不发送,CANopen时间轴错乱

    CANopen的例子中,一种使用很多也很简单的方式是用一个1ms定时器中断,然后用全局变量重写sertimer和getElapsedTime函数,然后中断服务函数中加入timerForCan //Se ...

  6. CANOPEN的PDO

    节点1 0x1800的01位为COB-ID,若某个节点想接受,在0x1400的01位写相同ID. 节点1 0x1A00中的数据为映射地址,格式为XXXX_XX_XX分别为地址,子索引,数据长度.去找相 ...

  7. Ethercat PDO映射关系

  8. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)

    文章目录 一.前言 二.实验目的 三.对象字典 3.1.找到工程里的对象字典文件 3.2.创建映射变量 四.STM32代码 4.1.Slave1.c 4.2.main.c 五.CAN盒子(收发器) 5 ...

  9. canopen pdo通信c语言,CANopen通信之PDO通信

    过程数据对象(Process Data Object,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权.PDO 传输的数据必须少于或等于 8 个 ...

最新文章

  1. LCM在Kernel中的代码分析
  2. 综合布线故障排除和诊断—DSX-600
  3. 初级图像混合——线性混合操作
  4. 知识付费网站php源码,原创在线教育知识付费类源码只要50元
  5. 计算两个日期相差天数的最简洁的代码
  6. ar自回归 python_时间序列分析 | 向量自回归模型
  7. TensorFlow中的优化算法
  8. python中define的用法_C语言中#define用法总结
  9. 弯曲时空量子场论的历史与现状 (上)
  10. Seeds超像素分割
  11. 烽火计划-2020年夏-期末总结
  12. java倒计时器_Java并发系列5--倒计时器CountDownLatch
  13. 迷你世界一直显示服务器未连接,迷你世界为什么显示没网 | 手游网游页游攻略大全...
  14. java毕业设计办公自动化管理系统Mybatis+系统+数据库+调试部署
  15. 自动化冒烟测试:Unittest vs Pytest框架
  16. 【找不到与请求 URI匹配的 HTTP 资源】(转)
  17. PCIe系列第四讲、TLP的路由方式
  18. Java实现 LeetCode 476 数字的补数
  19. 微信小程序_文档_05_框架_组件_插件_多线程_兼容_优化
  20. 最新最全 Android 常用开源库总结

热门文章

  1. 题目解析——判断字符串是否是合法的IP地址
  2. VMware运维干货分享:使用ESXICLI命令查询,网卡,HBA,RIAD卡信息
  3. 配图讲解10个进阶构图技巧
  4. 抖音被曝变相降薪,这波终究是利好卷王了?
  5. Python练习二:公用电话数据加密
  6. document.selection
  7. 8月9日逆水寒服务器维护时间,逆水寒8月30日停机更新维护 逆水寒8月30日更新内容一览...
  8. 【世语纠正】相濡以沫丶本意放开一棵树,还有一片森林。
  9. java php bridge吧_使用Php-Java Bridge
  10. Navicat for MySQL连接mysql建数据库