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_第1张图片
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms_第2张图片

二、实验目的


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

三、对象字典OD


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

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


4.1、main.c

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

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

CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms_第11张图片

4.3、TPDO1的CAN数据包

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

你可能感兴趣的:(STM32,CAN总线,canopen,stm32)