我的观点:一个 CANopen 设备可以拥有最多 512 个 RPDO 和 512 个 TPDO,总共最多 1024 个 PDO。(得到GPT4o的肯定)
CiA协议栈观点:一个只有一个逻辑设备的 CANopen 设备最多有 512 个 PDO。
PDO的两种用法:
小而快
同步传输:通过(SYNC对象)来获取同步信号
同步TPDO的传输倍率:n表示经过n个同步信号后发送下一个消息。(为0时,收到触发信号后的第一个同步信号后进行发送)
事件驱动传输
消息的触发模式
触发方式 | 解释 | 应用场景 |
---|---|---|
事件驱动 | 特定的事件进行驱动 | 超限报警 |
定时器驱动 | 固定的时间间隔进行发送 | 周期性更新数据 |
远程请求 | 其它节点通过发送 RTR 帧来请求该设备发送相应的 PDO | 允许节点灵活的请求数据 |
同步触发 | 由一定数量的Sync和内部事件触发 | 协调多个设备的同步操作 |
PDO写
参数 | 请求/执行 | 响应/确认 |
---|---|---|
PDO编号 | 强制 | |
数据 | 强制 |
PDO读
参数 | 请求/执行 | 响应/确认 |
---|---|---|
PDO编号 | 强制 | |
数据 | 强制 |
通讯参数:定义了PDO的基本特性,如COB-ID、传输类型、禁止时间和事件定时器等,它决定了PDO是以何种方式发送和接收数据。
COB-ID:通过COB-ID可以唯一识别一个PDO消息
传输类型(Transmission Type):PDO消息的传输方式
抑制时间(Inhibit Time):两个PDO之间的最小时间间隔(以ms为单位)
事件计时器(Event Timer):定了事件触发的周期时间,PDO在到期时发送(表示没有事件发生)
同步计数器(Sync Counter):在同步传输类型下使用,规定了在接收多少次同步信号后发送
映射参数:定义了哪些对象字典条目(变量)被包含在 PDO 消息中,以及这些变量在消息中的位置。
有两种MPDO的使用方法。第一是目的地址模式(DAM)PDO,第二是源地址模式(SAM)PDO
支持接收MPDO的ANope的设备为MPDO消费者,支持发送MPDO的C为MPDO生产者
发送MPDO由事件驱动,不支持定时、远程请求和同步触发模式
MPDO写
参数 | 请求/执行 | 响应/确认 |
---|---|---|
PDO编号 | 强制 | |
地址类型 | 强制 | |
Node-ID | 强制 | |
Multiplexer | 强制 | |
数据 | 强制 |
大而慢
传输模式 | 概述 | 应答模式 |
---|---|---|
快速传输 | 因数据小于等于4个字节,一帧足够发送完,无需分段 | 一帧一答 |
段传输 | 把数据分割成若干个段,每一段通过单独的帧发送 | 每帧每答 |
块传输 | 把多个段组合成一个子块,每一子块发送完才接受应答信号,所有子块组成块 | 每子块每答 |
快速传输模式:只需要一次数据的发送和应答就可以完成数据传输,效率高,但是传输的数据量少。
段传输:数据被分成多个段(segment)来传输,每个段最多可以包含7个字节的数据。这种模式的实现较为简单,适合中等长度的数据传输。
块传输:相比段传输模式,块传输模式能够处理更大的数据量并且提高了传输效率。数据被分为多个块(block),每个块可以包含多个段。块传输还具有校验机制,能够确保数据的完整性和可靠性。
协议详解见 Or CiA301中文手册43页