通讯对象

PDO

我的观点:一个 CANopen 设备可以拥有最多 512 个 RPDO 和 512 个 TPDO,总共最多 1024 个 PDO。(得到GPT4o的肯定)

CiA协议栈观点:一个只有一个逻辑设备的 CANopen 设备最多有 512 个 PDO。

PDO的两种用法:

  • TPDO:生产者PDO
  • RPDO:消费者PDO
特点

小而快

传输模式
  • 同步传输:通过(SYNC对象)来获取同步信号

    ​ 同步TPDO的传输倍率:n表示经过n个同步信号后发送下一个消息。(为0时,收到触发信号后的第一个同步信号后进行发送)

  • 事件驱动传输

触发模式

消息的触发模式

触发方式 解释 应用场景
事件驱动 特定的事件进行驱动 超限报警
定时器驱动 固定的时间间隔进行发送 周期性更新数据
远程请求 其它节点通过发送 RTR 帧来请求该设备发送相应的 PDO 允许节点灵活的请求数据
同步触发 由一定数量的Sync和内部事件触发 协调多个设备的同步操作
PDO读写
  • 写协议(推模式):生产者向0 ~ n个消费者写PDO数据(参考spi写数据)
  • 读协议(拉模式):消费者发送RTR请求向生产者请求数据(参考spi读数据)

PDO写

参数 请求/执行 响应/确认
PDO编号 强制
数据 强制

PDO读

参数 请求/执行 响应/确认
PDO编号 强制
数据 强制

对象描述
  • 通讯参数:定义了PDO的基本特性,如COB-ID、传输类型、禁止时间和事件定时器等,它决定了PDO是以何种方式发送和接收数据。

    • COB-ID:通过COB-ID可以唯一识别一个PDO消息

      • TPDO和RPDO的COB-ID是不同的
      • COB-ID的最高位设置为1时,表示该PDO被禁用
    • 传输类型(Transmission Type):PDO消息的传输方式

      • 同步传输
      • 异步传输

  • 抑制时间(Inhibit Time):两个PDO之间的最小时间间隔(以ms为单位)

  • 事件计时器(Event Timer):定了事件触发的周期时间,PDO在到期时发送(表示没有事件发生)

  • 同步计数器(Sync Counter):在同步传输类型下使用,规定了在接收多少次同步信号后发送

  • 映射参数:定义了哪些对象字典条目(变量)被包含在 PDO 消息中,以及这些变量在消息中的位置。

    • 映射条目数:定义了一个PDO在对象字典中的条目数量,每个条目代表一个数据段
    • 映射对象:每个映射对象由32位组成
      • 索引(Index,16位):对象字典中的索引
      • 子索引(Sub-Index, 8位):对象字典项的子索引
      • 位长度(Bit Length,8位):表示映射对象的数据位数(常为字节的整数倍)
PDO 传输实例

点我查看

Multiplex PDO(不懂且没看完,因资料少)

有两种MPDO的使用方法。第一是目的地址模式(DAM)PDO,第二是源地址模式(SAM)PDO

支持接收MPDO的ANope的设备为MPDO消费者,支持发送MPDO的C为MPDO生产者

发送MPDO由事件驱动,不支持定时、远程请求和同步触发模式

寻址模式
  • 目的地址模式(DAM):一个DAM-MPDO可以被所有该MPDO的消费者同时接收(类似于广播),且无 应答。如果对象不存在,则生成EMCY帧。
  • 源地址模式(SAM):
MPDO读写

MPDO写

参数 请求/执行 响应/确认
PDO编号 强制
地址类型 强制
Node-ID 强制
Multiplexer 强制
数据 强制

SDO

特点

大而慢

传输模式
传输模式 概述 应答模式
快速传输 因数据小于等于4个字节,一帧足够发送完,无需分段 一帧一答
段传输 把数据分割成若干个段,每一段通过单独的帧发送 每帧每答
块传输 把多个段组合成一个子块,每一子块发送完才接受应答信号,所有子块组成块 每子块每答

快速传输模式:只需要一次数据的发送和应答就可以完成数据传输,效率高,但是传输的数据量少。

段传输:数据被分成多个段(segment)来传输,每个段最多可以包含7个字节的数据。这种模式的实现较为简单,适合中等长度的数据传输。

块传输:相比段传输模式,块传输模式能够处理更大的数据量并且提高了传输效率。数据被分为多个块(block),每个块可以包含多个段。块传输还具有校验机制,能够确保数据的完整性和可靠性。

协议详解见 Or CiA301中文手册43页

SYNC

  • 同步生产者定期广播同步对象(SYNC)。
  • SYNC提供基本的网络同步机制,遵循生产消费模型,该服务无应答。
  • 传输1个字节的计数器(可选)

TIME

  • TIME生产者定期广播时间戳对象(TIME)。
  • TIME提供了简单的网络时钟。CANopen设备通过时间戳对象来校准本地时间。
  • 传输6个字节的时间戳

EMCY

  • 当设备内部出现致命错误将触发应急(EMCY)报文
  • 由应用设备以最高优先级发送到其他设备。任何具备紧急事件监控与处理能力的从站会接收并处理紧急报文。

CANopen学习笔记(二)通讯对象PDO和SDO等的更多相关文章

  1. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  2. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  3. Redis学习笔记二 (BitMap算法分析与BitCount语法)

    Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...

  4. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  5. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...

  7. Linux内核学习笔记二——进程

    Linux内核学习笔记二——进程   一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...

  8. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  9. muduo学习笔记(二)Reactor关键结构

    目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...

  10. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

随机推荐

  1. Meilisearch 安装和使用教程

    如今搜索功能已成为几乎所有应用不可或缺的一部分.无论是电商平台.内容管理系统,还是企业内部知识库,用户都期待能够快速.准确地找到他们需要的信息.然而,传统的搜索解决方案往往面临着诸多挑战:响应速度慢. ...

  2. 记一次debian无法启动的解决经历

    前言 有几台debian物理机突然无法开机了,断电重启后,一直卡在下面这个界面 参考了博客[linux]解决系统卡在ubuntu loading initial ramdisk 发现无法修复 在rec ...

  3. yb课堂 VSCODE编译器和开发环境搭建 《二十五》

    前端编辑器 vscode:免费开源的现代化轻量级代码编辑器,支持大部分主流的开发语言的语法高亮.智能代码补全.自定义热键.代码对比DIFF.GIT等特性,支持插件扩展,软件跨平台支持Win.Mac以及 ...

  4. Windows在待机后重新进入桌面出现资源管理器无响应的解决方案

    问题 在日常使用Windows操作系统的过程中,我们可能会遇到一种较为特殊的情况--在系统待机后重新激活桌面时,资源管理器出现无响应现象.这一问题不仅影响用户体验,还可能导致剪切板功能异常,进而影响到 ...

  5. C#全局键盘监听(Hook)的使用

    一.为什么需要全局键盘监听? 在某些情况下应用程序需要实现快捷键执行特定功能,例如大家熟知的QQ截图功能Ctrl+Alt+A快捷键,只要QQ程序在运行(无论是拥有焦点还是处于后台运行状态),都可以按下 ...

  6. 18B20的CRC8校验分析

    CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定. CRC校验可以简单地描述为:例如我们要 ...

  7. ComfyUI插件:ComfyUI Impact 节点(三)

    前言: 学习ComfyUI是一场持久战,而 ComfyUI Impact 是一个庞大的模块节点库,内置许多非常实用且强大的功能节点 ,例如检测器.细节强化器.预览桥.通配符.Hook.图片发送器.图片 ...

  8. stable diffusion 实践与测试

    stable diffusion 实践与测试 放大 原图高清放大 原始图片 当不满意图片质量的时候 使用stable diffusion进行二次处理 选择适合图片风格的模型,再次根据图片写出提示词 输 ...

  9. 【DingTalk】钉钉应用开发

    前言部分 最近要开发一个企业内部应用系统 无纸化办公使用钉钉,领导想在钉钉的基础上加入我们自己的应用 引入Activiti工作流引擎开发审批立项等等业务活动,做一个大一统的系统 然后让我负责开发钉钉应 ...

  10. 【Canal】01 入门 & Kafka模式

    什么是Canal (卡耐尔) ? Canal 是用 Java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件 原理基于MySQL的binlog从库监听       一.MySQL ...