> 文章列表 > CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

文章目录

  • 一、前言
  • 二、实验目的
  • 三、对象字典OD
  • 四、TPDO1数据变化发送,滤波时间200ms
    • 4.1、main.c
    • 4.2、让CANopen从站进入操作状态
    • 4.3、TPDO1的CAN数据包

一、前言

该笔记的程序:github
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

二、实验目的


CANopen从站有一个变量tx_Value,映射到TPDO1上。接着,当变量tx_Value发生变化时,通过TPDO1发送出去,滤波时间为200ms。

三、对象字典OD


CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
跟上一章节一样,创建一个变量tx_Value。
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
通过变量tx_Value映射到TPDO1上。
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
Transmission Type必须设置0xFF,然后Inhibit Time设置2000,单位0.1ms的话,相当于滤波200ms。如下图所示:
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
最后,保存,将对象字典生成c代码。
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

四、TPDO1数据变化发送,滤波时间200ms


4.1、main.c

CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
如上图所示,相当于产生一个数据变化的事件。
按照程序的意思,变量tx_Value每10ms累加1。相当于这个数值(事件)每10ms变化一次。
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
在Watch窗口下,确实能看到tx_Value一直在变化。

4.2、让CANopen从站进入操作状态

CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

4.3、TPDO1的CAN数据包

CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms
如上图所示,TPDO1的发送间隔是200ms,等于滤波时间。
虽然变量tx_Value每10ms变化一次,又因为滤波时间为200ms,所以TPDO1最终是200ms发送一次出来。