Canopen学习笔记——sync同步报文增加数据域(同步计数器)

这篇具有很好参考价值的文章主要介绍了Canopen学习笔记——sync同步报文增加数据域(同步计数器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Canfestival同步报文sync的设置

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

在OD表中的配置如下:

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

如果0x1006索引的同步报文循环周期时间设置为0则禁用同步报文,这里要注意的就是,上面第一张图也提到了,时间单位是us。第二张图,我的0x1006就设置为0xF4240,也就是1s发送一次同步报文。

关于同步桢(同步计数器)的问题可以参考这篇文章:

canfestival同步帧(同步计数器的问题) - 哔哩哔哩关于canopen的SYNC同步帧,有两种方式:一种是sync没有数据,只有id.另一种是sync带有一个数据,这个数据可以循环计数,类似与单片机的计时器.这个计数的周期就存储在字典的1019h里面. 如果1019h里面存入的是4,那么sync数据部分就会依次发送01,02,03,04,---01,02,03,04,---01,02,03,04.......1019h这个参数 与 TPDO的通讯参数06h子索引是有联动的.06h中的参数代表了何时响应这个计数值.如果06h中的参数是3,那么就https://www.bilibili.com/read/cv12706894/

我这里是介绍的sync桢带数据(同步计数值)的情况:

2.同步报文的发送

在struct struct_CO_Data结构体中的同步报文变量定义区域增加下面的成员变量

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

随后在同一个头文件data.h的下半部分增加下图的初始化语句。

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

同步桢发送方法的设置:

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

这里的63为循环次数,可以根据自己的项目情况自行设置,设置好之后,同步桢发送的情况就是:

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

3.同步桢接收处理

3.1 TPDO 对象字典设置

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

将tpdo的SYNC_start_value改为非零值,意思是,接收到多少个同步信号后,上传该tpdo,也就是设置为同步触发模式。

 3.2 SYNC处理函数处理

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

更改_sendPDOevent()函数,将接收到的同步桢数据域传过来。

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

更改_sendPDOevent (CO_Data * d, UNS8 isSyncEvent)对数据部分(同步计数值)的处理

源码处理:


              /* check if transmission type is SYNCRONOUS */
              /* message transmited every n SYNC with n=TransmissionType */
              if (isSyncEvent &&
                  (*pTransmissionType >= TRANS_SYNC_MIN) &&
                  (*pTransmissionType <= TRANS_SYNC_MAX) &&
                  (++d->PDO_status[pdoNum].transmit_type_parameter ==
                   *pTransmissionType))
                {
                  /*Reset count of SYNC */
                  d->PDO_status[pdoNum].transmit_type_parameter = 0;
                  MSG_WAR (0x3964, "  PDO is on SYNCHRO. Trans type : ",
                           *pTransmissionType);
                  memset(&pdo, 0, sizeof(pdo));
                  /*{
                    Message msg_init = Message_Initializer;
                    pdo = msg_init;
                  }*/
                  if (buildPDO (d, pdoNum, &pdo))
                    {
                      MSG_ERR (0x1906, " Couldn't build TPDO number : ",
                               pdoNum);
                      status = state11;
                      break;
                    }
                  status = state5;
                  /* If transmission RTR, with data sampled on SYNC */
                }

更改后为:

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

将接收到的同步计数值数据与tpdo的SYNC_start_value参数做比较,如何相同,则开启pdo传输

修改后,实现的效果展示:

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记

如上图,每次发送到数据为0x0A的同步桢后,就会收到pdo为0x186的数据桢。

当然,这样也是可以的:

Canopen学习笔记——sync同步报文增加数据域(同步计数器),CanOpen,学习,笔记文章来源地址https://www.toymoban.com/news/detail-809134.html

到了这里,关于Canopen学习笔记——sync同步报文增加数据域(同步计数器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 同步计数器设计与建模

    ⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AISha

    2024年02月01日
    浏览(44)
  • 【大数据进阶第三阶段之Datax学习笔记】使用阿里云开源离线同步工具DataX 实现数据同步

    【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述  【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门   【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使

    2024年01月24日
    浏览(59)
  • Linux重要的同步命令_sync

    摘要: 本文从 是什么 、 为什么 、 怎么用 三个角度介绍了 Linux 重要的同步命令 sync。 Linux sync 命令用于将位于缓冲区中的数据写入永久性存储中。 缓冲区位于易失性存储介质中,例如 DDR(内存)、SRAM 等,这种介质中的数据在掉电时会丢失。 永久性存储,也成为了非易失

    2024年02月07日
    浏览(29)
  • 学习笔记|计数器|Keil软件中 0xFD问题|I/O口配置|STC32G单片机视频开发教程(冲哥)|第十二集:计数器的作用和意义

    直流有刷的电机,后面两个一正一负的电接上,电机就可以转 到底是转子个几个圈呢? 我们就可以在背后加装这么一个码盘,我们假设这里是有60个这个光电的一个孔对吧 那我们转一圈是不是就可以一个轴上输出60个这样的脉冲,有遮挡就输出1,无遮挡输出0, 两路交替,如果说

    2024年02月09日
    浏览(48)
  • CAN通讯配置及接收报文--学习笔记1~2

    硬件设备 STM32F103C8T6工控板、USB转TLL接口、TLL转CAN串口小板,继电器,降压模块,警示灯 软件工具 CANPro协议分析平台、CubeMX、MDK-ARM 实现过程及功能 基础功能:PC端通过CANPro设置报文,发出串口信号经过USB和串口小板转成CAN信号,在单片机上接收特定ID的报文,通过判断需要

    2024年02月09日
    浏览(38)
  • 4.2 同步计数器74x163 的实现

    74LS163计数器有5个控制端、4个数据输入端和5个输出端,其逻辑功能和对应的逻辑符号如下图1和图2所示:(该例子在教材《Xilinx FPGA原理与实践—基于Vivado和Verilog HDL——卢有亮》P95页) (CLR非)是异步清零端——低有效清零端 (LD非)是同步置数控制端——数据装载输入 ENT和EN

    2024年02月09日
    浏览(35)
  • HarmonyOS应用开发学习笔记 UIAbility组件与UI的数据同步 EventHub、globalThis

    1、 HarmoryOS Ability页面的生命周期 2、 @Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 @Styles装饰器:定义组件重用样式 @Extend装饰器:定义扩展组件样式 5、HarmonyOS 应用开发学习笔记 state状态管理概述 6、HarmonyO

    2024年02月03日
    浏览(54)
  • 同步jenkinsfile流水线(sync-job)

    变量:env(环境变量:sit/dev/simulation/prod/all),job(job-name/all) 目录:/var/lib/jenkins/jenkinsfile environment.json: 以sit环境的url和token作为基准baseUrl/baseToken 若env=all则表示同步至所有环境 循环获取env的环境变量,获取url和token 若job=all则表示同步所有job 获取当前基准环境下的job_

    2024年02月12日
    浏览(36)
  • 【verilog】含异步清零和同步使能的加/减法计数器

    实验目的 掌握二进制计数器的工作原理。 能使用verilog设计计数器。 3、进一步熟悉QUARTUSII软件的使用方法和verilog输入方式 实验原理与内容 实验原理 二进制计数器中应用最多、功能最全的计数器之一,是含异步清零和同步使能的具有并行载入功能的加/减法计数器。其具体工

    2024年02月02日
    浏览(54)
  • aliyunpan-sync能让阿里云盘支持同步备份

    什么是 aliyunpan-sync ? aliyunpan-sync 是阿里云盘命令行同步备份客户端,支持备份本地文件到云盘,备份云盘文件到本地,双向同步备份三种模式。支持 JavaScript 插件对备份文件进行过滤。 在群晖上以 Docker 方式安装。 在注册表中搜索 tickstep ,选择第二个 tickstep/aliyunpan-sync ,

    2023年04月24日
    浏览(126)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包