工业通讯协议(一)- CAN

一:概述

CAN协议,全称为Controller Area Network,是一种重要的车用网络通信协议。它由德国公司博世(Bosch)设计,首次在1986年公布,并在1991年正式发布为标准。CAN协议被设计用于允许车辆上的微控制器和设备之间无主机的通信。

CAN协议的主要用途包括:

  1. 车辆内部通信:CAN协议最初就是为了汽车内部的电子设备之间的通信而开发的。它使得汽车内部的各种传感器、执行器、控制单元等能够交换信息,而无需复杂的线束或者中央控制器。

  2. 工业自动化:随着时间的发展,CAN协议也被广泛应用于工业自动化领域。许多工业设备和系统利用CAN进行数据交换,以实现自动化控制和监测。

  3. 医疗设备:一些医疗设备也采用CAN协议来确保可靠的数据通信。

  4. 其他嵌入式系统:除了汽车和工业自动化,CAN协议也被用于各种嵌入式系统的通信,例如航空电子设备、海上导航系统等。

CAN协议因其高可靠性、实时性和低成本而在这些领域得到了广泛的应用。它支持多主通信和错误检测机制,能够在高噪声环境下有效地进行通信,这对于汽车和工业环境来说是至关重要的。

二:CAN的工作原理

CAN在 OSI 参考模型中的映射如下:

  1. 物理层(Physical Layer):CAN 使用差分信号在总线上传输数据,定义了物理层的电气特性,如电压电平、电缆长度等。

  2. 数据链路层(Data Link Layer):CAN 协议主要在数据链路层进行定义,包括:

    • 帧格式:定义了 CAN 帧的不同类型,如数据帧、远程帧、错误帧等。
    • 访问控制:采用 CSMA/CR(Carrier Sense Multiple Access with Collision Resolution)机制,支持多个节点争用总线并通过仲裁解决冲突。
    • 差错检测:包括位错误、帧错误、确认错误等,并定义了错误处理机制。
  3. 网络层(Network Layer)和更高层:CAN 协议主要集中在物理层和数据链路层,并没有定义网络层和更高层的内容。这些功能需要由上层协议(如 CANopen、DeviceNet 等)来实现。

  4. 应用层(Application Layer):CAN 协议本身不定义应用层的内容,而是由上层协议(如 CANopen、DeviceNet)来定义应用层的功能,如报文格式、网络管理等。

总的来说,CAN 协议主要在 OSI 模型的物理层和数据链路层进行定义,为上层协议提供可靠的串行总线通信服务。上层协议则负责实现网络层及以上的功能。这种分层设计使 CAN 协议灵活适用于不同的应用场景。

物理结构

CAN (Controller Area Network) 总线一般由以下几根线组成:
CAN_H(CAN High)线
这是 CAN 总线的正信号线。
CAN_L(CAN Low)线
这是 CAN 总线的负信号线。
接地线(GND)
提供 CAN 总线及其连接设备的公共参考地。
终端电阻
为了防止信号反射而导致的信号失真,CAN 总线的两端需要连接 120Ω 的终端电阻。
电源线(Vcc)
用于为 CAN 节点提供电源。有时也会与 CAN 接口共用电源。
因此,一个标准的 CAN 总线由以下 4 根线组成:

  • CAN_H
  • CAN_L
  • GND
  • 终端电阻
    +--+     +--+     +--+
    |  |     |  |     |  |
   CAN_H    CAN_L    GND
    |  |     |  |     |  |
    +--+     +--+     +--+
     |         |         |
   120Ω      120Ω       Vcc

这样的总线结构可以实现可靠的差分信号传输,并提供公共地参考,确保 CAN 通信的稳定性和抗干扰性。

image

CAN总线协议有 ISO-11898 和 ISO-11519两个系列。其定义有:

ISO-11898 定义了通信速率为 125 kbps ~1Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米。
ISO11519 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。

如下图所示

image

多主工作方式

CAN 总线支持多主工作方式,也就是说多个节点可以同时作为主设备来发送数据帧。这种多主工作方式的实现原理如下:

  1. 仲裁机制:

    • CAN 使用 CSMA/CR (Carrier Sense Multiple Access with Collision Resolution) 的总线访问机制。
    • 当多个节点同时开始发送时,通过比较发送的位来解决冲突,优先级高的节点继续发送,优先级低的节点退出。
  2. 优先级机制:

    • CAN 帧头部包含一个 11 位或 29 位的 ID 字段,用于标识帧的优先级。
    • ID 值越小,优先级越高。当多个节点同时发送不同优先级的帧时,优先级高的帧会获得总线使用权。
  3. 仲裁过程:

    • 当多个节点同时开始发送时,会比较自己发送的 ID 位与总线上观察到的位电平。
    • 如果总线上的位电平比自己发送的位电平高(即"0"比"1"高),则该节点会立即停止发送,退出仲裁过程。
    • 最终获胜的节点继续发送完整的数据帧。

通过这种基于 ID 优先级的仲裁机制,CAN 总线可以支持多个节点同时作为主设备发送数据帧,不同优先级的帧可以得到合理的调度。

这种多主工作方式具有以下特点:

  1. 灵活性强:任何节点都可以主动发送数据帧,无需中央控制设备。
  2. 可靠性高:通过仲裁机制解决了多个节点同时发送的冲突。
  3. 实时性强:优先级机制确保了重要数据帧得到及时传输。

因此,CAN 总线的多主工作方式非常适合于对实时性和可靠性要求较高的分布式控制系统。

image

工作状态

CAN 总线节点主要有以下几种工作状态:

  1. 错误主动状态(Active Error State)

    • 节点在正常工作时的默认状态。
    • 可以正常发送和接收数据帧。
  2. 错误被动状态(Passive Error State)

    • 当节点检测到太多错误时,会进入该状态。
    • 此时节点仍然可以接收数据帧,但不能主动发送数据帧。
  3. 总线关闭状态(Bus Off State)

    • 当节点检测到更多的错误时,会进入此状态。
    • 此时节点完全与总线隔离,既不能发送也不能接收数据。
  4. 重新初始化状态(Initialization State)

    • 节点上电或复位后进入此状态。
    • 初始化完成后进入错误主动状态。
  5. 挂起状态(Suspend State)

    • 节点进入低功耗模式时进入此状态。
    • 此时节点保持静默,不参与总线通信。

总之,CAN 节点的工作状态主要体现了其对错误的容忍程度和参与总线通信的能力。通过这些状态的切换,CAN 协议可以实现错误隔离,确保总线上其他节点的正常工作。

三:CAN的数据帧格式

CAN (Controller Area Network) 协议一共规定了 4 种标准帧格式:

  1. 标准数据帧(Standard Data Frame)

    • 11 位 ID 字段表示帧的优先级。
  2. 扩展数据帧(Extended Data Frame)

    • 29 位 ID 字段表示帧的优先级。
  3. 标准远程帧(Standard Remote Frame)

    • 11 位 ID 字段表示帧的优先级。
    • 没有数据区,用于请求其他节点发送数据。
  4. 扩展远程帧(Extended Remote Frame)

    • 29 位 ID 字段表示帧的优先级。
    • 没有数据区,用于请求其他节点发送数据。

除了这 4 种标准帧格式外,CAN 协议还定义了以下 2 种特殊帧格式:

  1. 错误帧(Error Frame)

    • 用于通知其他节点发生通信错误。
  2. 过载帧(Overload Frame)

    • 用于在数据帧或远程帧之间插入延迟。

总的来说,CAN 协议共定义了 6 种不同类型的帧格式,分别用于数据传输、错误处理以及通信控制等目的。这些帧格式共同构成了 CAN 总线上的通信机制。

数据帧

CAN (Controller Area Network) 协议定义了几种不同类型的帧格式,其中最重要的是数据帧。CAN 数据帧的格式如下:

  1. 开始帧(SOF - Start of Frame)

    • 1 个隐性位(1),表示帧的开始。
  2. 仲裁字段(Arbitration Field)

    • 11 位 ID(标准帧)或 29 位 ID(扩展帧),用于标识帧的优先级。
    • 1 位 RTR(远程传输请求)位,标识是数据帧还是远程帧。
    • 1 位 IDE(扩展 ID 使能)位,标识是标准帧还是扩展帧。
  3. 控制字段(Control Field)

    • 4 位 DLC(数据长度代码),表示数据区的长度。
    • 3 位保留位。
  4. 数据字段(Data Field)

    • 0~8 个字节的数据。
  5. CRC 字段(CRC Field)

    • 15 位 CRC 校验码。
    • 1 位 CRC 分隔符。
  6. 确认字段(ACK Field)

    • 1 位 ACK 槽,由发送节点发送隐性位。
    • 1 位 ACK 分隔符。
  7. 结束帧(EOF - End of Frame)

    • 7 个隐性位,表示帧的结束。
  8. 间隙(Intermission)

    • 3 个隐性位,表示两帧之间的间隔。

上述各个字段组成了完整的 CAN 数据帧。其中 ID 字段用于确定帧的优先级,DLC 字段指示数据区的长度,数据区包含实际要传输的数据。CRC 和 ACK 字段用于保证数据传输的可靠性。

image

扩展帧

在扩展帧中,仲裁字段的信息被扩充:

  • 1 位 SRR(Substitute Remote Request),保留为隐性位。
  • 18 位 Extended Identifier$ (EID[17:0])$(EID[17:0]),组成 29 位 ID。
  • 1 位 IDE(ID Extension),设置为显性位(0)表示是扩展帧。
  • 1 位 RTR(Remote Transmission Request),标识是数据帧还是远程帧。

与标准帧格式相比,扩展帧主要有以下区别:

  • ID 字段扩展为 29 位,可以表示更多的优先级。
  • 增加了 SRR 位用于保留。
  • IDE 位被设置为显性位(0)以标识为扩展帧。

image

远程帧

CAN (Controller Area Network) 远程帧的格式如下:

  1. 开始帧(SOF - Start of Frame)

    • 1 个隐性位(1),表示帧的开始。
  2. 仲裁字段(Arbitration Field)

    • 11 位 ID(标准帧)或 29 位 ID(扩展帧),用于标识帧的优先级。
    • 1 位 RTR(远程传输请求)位,这里设置为 1 表示是远程帧。
    • 1 位 IDE(扩展 ID 使能)位,标识是标准帧还是扩展帧。
  3. 控制字段(Control Field)

    • 4 位 DLC(数据长度代码),这里设置为要请求的数据长度。
    • 3 位保留位。
  4. CRC 字段(CRC Field)

    • 15 位 CRC 校验码。
    • 1 位 CRC 分隔符。
  5. 确认字段(ACK Field)

    • 1 位 ACK 槽,由发送节点发送隐性位。
    • 1 位 ACK 分隔符。
  6. 结束帧(EOF - End of Frame)

    • 7 个隐性位,表示帧的结束。
  7. 间隙(Intermission)

    • 3 个隐性位,表示两帧之间的间隔。

需要注意的是,远程帧没有数据区,只包含 ID、RTR、DLC 等字段。其主要作用是请求其他节点发送指定长度的数据。

当接收到远程帧时,被请求的节点会响应发送对应的数据帧。这样实现了主从式的数据交换,满足了一对多节点之间的轮询通信需求。

image

错误帧

CAN (Controller Area Network) 协议定义了错误帧的格式,以及针对不同类型错误的处理机制。

CAN 错误帧的格式如下:

  1. 错误标志(Error Flag)

    • 由 6 个连续的相同位组成,可以是显性位(0)或隐性位(1)。
  2. 错误分隔符

    • 8 个隐性位,用于将错误标志与下一个帧分隔开。

CAN 协议定义了以下几种错误类型:

  1. 位错误(Bit Error)

    • 当节点在发送某位时,检测到总线上的电平与自己发送的电平不一致。
    • 发生位错误时,节点会立即发送错误标志。
  2. 格式错误(Form Error)

    • 当节点检测到帧格式不正确时,如 SOF 位不是隐性、EOF 位不是隐性等。
    • 发生格式错误时,节点会立即发送错误标志。
  3. 确认错误(Acknowledgement Error)

    • 当节点在发送帧时,没有收到其他节点的确认。
    • 发生确认错误时,节点会立即发送错误标志。
  4. CRC 错误(CRC Error)

    • 当接收到的 CRC 校验码与计算的不一致时。
    • 发生 CRC 错误时,节点会立即发送错误标志。

当任何节点检测到错误时,都会立即发送错误标志。其他节点收到错误标志后,也会立即停止正在发送的帧,并自己发送错误标志。

通过这种错误帧机制,CAN 协议能够快速检测和隔离错误,确保总线上其他节点的正常工作。出现错误的节点也会根据错误计数器进入错误被动状态或总线关闭状态,避免其持续干扰总线通信。

image

过载帧

CAN (Controller Area Network) 的过载帧用于在数据帧或远程帧之间插入延迟,其格式如下:

  1. 过载标志(Overload Flag)

    • 由 6 个连续的显性位(0)组成。
  2. 过载分隔符(Overload Delimiter)

    • 8 个隐性位(1)。

当 CAN 节点检测到以下情况时,会发送过载帧:

  1. 在接收到数据帧或远程帧后,在预期的 3 个隐性位间隙时间内还没有检测到新帧的开始。
  2. 在发送数据帧或远程帧过程中,检测到总线被占用。

发送过载帧的节点会延迟发送下一个数据帧或远程帧,以给其他节点更多的时间进行同步和准备。

接收过载帧的其他节点会:

  1. 停止正在发送的帧。
  2. 重新开始计时,等待下一个帧的到来。

过载帧的使用有以下作用:

  1. 给忙碌节点一些喘息时间,避免队列溢出。
  2. 确保节点之间的同步,防止错误发生。
  3. 提高总线利用率,避免因短暂的总线占用而造成不必要的帧间隔。

CAN 的过载帧机制是为了确保总线通信的连续性和可靠性,是 CAN 协议实现高效、实时通信的重要保障。

四:CANOpen协议

CANopen 是基于 CAN 总线协议的上层应用协议,主要用于工业自动化和移动机械领域。它为 CAN 总线网络提供了更高层次的功能和服务。

1. 对象字典

对象字典是指含有描述的CANopen节点的行为的所有参数的标准化结构。
通过16位索引和8位子索引查找OD条目。例如,符合CANopen的节点OD的索引1008(子索引0)包含节点设备名。

具体来说,对象字典中的条目由属性定义:

  • 索引:对象的16位基址
  • 对象名称:制造商设备名称
  • 目标代码:数组,变量或记录
  • 数据类型:例如VISIBLE_STRING或UNSIGNED32或记录名称
  • 访问: rw(读/写),ro(只读),wo(只写)
  • 类别:指示此参数是否为必需/可选(M / O)

image

重要的是,设备(例如从设备)的OD条目可以由其他设备(例如主机)使用SDO通过CAN进行访问。
例如,这可能使应用程序主机更改从属节点是否通过特定的输入传感器记录数据,或者从属发送心跳的频率。
链接到电子数据表和设备配置文件
要了解OD,查看电子数据表EDS和设备配置文件DCF会很有帮助。

2. 通信服务

CANopen 协议中定义了以下几种主要的通信服务:

  1. 过程数据对象(Process Data Object, PDO)

    • 用于实时、周期性地传输过程数据。
    • 分为发送 PDO (TPDO) 和接收 PDO (RPDO)。
    • 可以配置为同步或异步传输模式。
    • 传输速度快,但有限制数据长度(最多 8 字节)。
  2. 服务数据对象(Service Data Object, SDO)

    • 用于点对点的数据读写操作。
    • 可以读取或写入对象字典中的任何对象。
    • 传输速度较慢,但数据长度没有限制。
    • 包含请求/响应的事务机制。
  3. 同步对象(Synchronous Object, SYNC)

    • 用于在 CANopen 网络中同步数据传输。
    • 可以触发 TPDO 的周期性传输。
    • 也可以用于同步其他事件,如采样、控制等。
  4. 紧急对象(Emergency Object, EMCY)

    • 当节点出现错误时,用于发送紧急通知。
    • 传输速度较快,可以及时通知其他节点。
    • 错误代码和错误寄存器包含在 EMCY 对象中。
  5. 时间戳对象(Time Stamp Object, TIME)

    • 用于在 CANopen 网络中传递时间信息。
    • 可用于同步网络节点的时钟。
  6. 心跳对象(Heartbeat Object)

    • 用于监控节点的工作状态。
    • 每个节点周期性地发送自身的状态信息。
    • 其他节点可以检测是否有节点失去响应。

这些通信服务共同构成了 CANopen 协议的通信模型,满足了工业自动化场景下对实时性、可靠性、可配置性等方面的需求。

通过合理配置这些通信对象,CANopen 网络可以实现设备之间高效、可靠的数据交换,为上层应用提供坚实的通信基础。

3. Cia条例

CANopen标准由CAN in Automation(CiA)组织制定和管理。CiA发布了许多标准文件,被称为“CiA条例”,这些文件定义了CANopen通信协议的各个方面和特性。以下是一些典型的CiA条例:

CiA 301

CiA 301 定义了 CANopen 网络中的基本功能和通信规则,包括:

  • 网络配置和管理
  • 节点状态管理
  • 对象字典结构和访问规则
  • NMT(网络管理)协议
  • SDO(服务数据对象)协议
  • PDO(过程数据对象)通信机制
  • 同步机制
  • 节点的启动和停止过程
  • 错误处理和报告机制

CiA 302

CiA 302 标准针对CANopen设备的电源和电气特性进行了定义,包括:

  • CANopen设备的供电要求和接口标准
  • 设备的电气连接和接地
  • 设备的EMC(电磁兼容性)要求

CiA 401

CiA 401 规定了通用数字输入输出(GPIO)设备的配置和通信方式,包括:

  • GPIO对象字典的结构和内容
  • GPIO设备的状态和操作
  • GPIO设备的报警和故障处理

CiA 402

CiA 402 标准定义了电机驱动器设备的配置和控制,包括:

  • 电机驱动器的对象字典结构和内容
  • 电机驱动器的控制模式和参数设置
  • 电机驱动器的状态监测和报警机制

CiA 404

CiA 404 规定了位置传感器设备(如编码器)的配置和数据通信方式,包括:

  • 位置传感器的对象字典结构和内容
  • 位置传感器的位置和速度数据格式
  • 位置传感器的错误检测和校准方法

CiA 406

CiA 406 定义了CANopen设备在工业控制系统中的设备配置文件(DCF)格式和内容,包括:

  • DCF文件的结构和语法
  • DCF文件中各个对象的配置参数和值
  • DCF文件的加载和解析方式

这些CiA条例涵盖了CANopen协议中各种类型的设备和功能,为设备制造商、系统集成商和应用开发者提供了详细的规范和指导,以确保CANopen设备之间的互操作性和系统的稳定性。

4. CANOpen协议

通讯状态机

image

图中不同字母代表不同状态下可支持的报文服务

a. NMT
b. Node Guard
c. SDO
d. Emergency
e. PDO
f. boot-up

NMT管理报文

CANopen的网络管理(NMT)是一种用于控制和管理CANopen网络中节点状态的协议。NMT定义了节点的不同操作状态,并允许通过特定的CAN消息来控制节点的状态转换。以下是对CANopen NMT的简要介绍,以及与之相关的报文:

CANopen NMT
  • 节点状态

    • 未初始化(Pre-operational):节点已加入网络,但尚未启动。
    • 操作(Operational):节点正常运行,与其他节点进行数据交换。
    • 停止(Stopped):节点停止运行,不再与其他节点进行通信。
  • 功能

    • 控制节点的启动、停止和复位。
    • 监控节点的状态转换。
    • 管理节点的心跳和状态报告。
NMT报文

CANopen NMT报文用于控制和管理节点的状态转换。它是特殊的CAN数据帧,其中包含了NMT命令和相关的数据字段。以下是NMT报文的基本格式:

  • 帧ID:NMT报文的标识符,通常是0x000。
  • 数据字段
    • 命令字节:指定NMT命令,如启动、停止、复位等。
    • 节点ID:指定目标节点的ID号。
常见NMT命令
  1. 启动(Start):将目标节点从未初始化或停止状态转换为操作状态。
  2. 停止(Stop):将目标节点从操作状态转换为停止状态。
  3. 复位(Reset):将目标节点复位到未初始化状态。
  4. 进入预操作(Enter Pre-operational):将目标节点从操作状态转换为未初始化或预操作状态。
  5. 远程启动(Remote Start):向目标节点发送启动命令,但不改变其自身状态。
  6. 远程停止(Remote Stop):向目标节点发送停止命令,但不改变其自身状态。
示例NMT报文

假设我们要将节点ID为1的节点从未初始化状态转换为操作状态,NMT报文可以如下所示:

  • 帧ID:0x000
  • 数据字段
    • 命令字节:0x01 (表示启动命令)
    • 节点ID:0x01 (表示目标节点ID为1)

发送这样的CAN数据帧到CANopen网络中,节点ID为1的节点将接收到该报文并执行相应的启动操作,将自身状态从未初始化转换为操作状态。

通过NMT报文,CANopen网络中的节点可以有效地管理和控制彼此的状态,实现网络中节点之间的协调运行。

紧急报文

紧急报文当设备内部出现的致命错误触发,以最高优先级发送到其它设备。适用于中断类型的错误报警信号。一个紧急报文包含8个字节。

SDO报文

在CANopen中,服务数据对象(Service Data Object,SDO)报文用于在主站和从站之间传输低速但必须保证的服务数据,如配置参数或错误信息。SDO报文主要用于读取或写入对象字典中的单个条目。以下是关于CANopen中SDO报文的详细介绍:

SDO报文结构

SDO报文由一个特定的CAN数据帧组成,其中包含了用于描述和传输数据的各种字段。以下是SDO报文的基本结构:

  • 帧ID:SDO报文的标识符,由发送方和接收方的节点ID组成。
  • 数据字段
    • SDO命令字节:指定SDO操作的类型和参数。
    • 索引和子索引:指定要读取或写入的对象字典条目的索引和子索引。
    • 数据:要写入或读取的数据内容。
SDO命令字节

SDO命令字节用于指定SDO操作的类型和参数,它包含以下几个子字段:

  • CC (Client Command):客户端命令子字段,用于指定SDO请求的类型。
  • S (Size):数据大小子字段,用于指定要传输的数据的大小。
  • N (Toggle bit):切换位子字段,用于标识SDO通信的数据段是否为新的数据。
  • E (Expedited Transfer):加速传输子字段,用于指示数据是否可以通过单个SDO报文进行传输。
SDO报文类型

根据SDO命令字节的不同设置,SDO报文可以分为以下几种类型:

  1. 客户端发送写请求(Client sends Write Request):主站向从站发送写请求,要求从站将指定的数据写入到对象字典中的特定条目。
  2. 客户端发送读请求(Client sends Read Request):主站向从站发送读请求,要求从站将指定的对象字典条目的数据读取并发送回主站。
  3. 从站发送写响应(Server sends Write Response):从站接收到主站发送的写请求后,向主站发送写响应,指示写操作是否成功。
  4. 从站发送读响应(Server sends Read Response):从站接收到主站发送的读请求后,向主站发送读响应,并附带请求的数据。
示例SDO报文

假设主站想要向从站写入索引为0x2001、子索引为0x01的对象字典条目,数据内容为0xABCD。那么对应的SDO报文可以如下所示:

  • 帧ID:主站ID(发送方)和从站ID(接收方)组成的标识符。
  • 数据字段
    • SDO命令字节:Write Request命令,指定写请求类型,数据大小为4字节。
    • 索引和子索引:0x2001 0x01,指定要写入的对象字典条目的索引和子索引。
    • 数据:0xABCD,要写入的数据内容。

从站收到这个SDO报文后,将根据报文中的指令执行相应的写入操作,并向主站发送写响应报文,指示写操作是否成功。

通过SDO报文,CANopen网络中的主站和从站可以进行可靠的配置参数传输和数据交换,从而实现网络中设备之间的数据通信和控制功能。

PDO报文

在CANopen中,过程数据对象(Process Data Object,PDO)报文用于快速传输实时数据,通常用于周期性或事件触发的数据交换。PDO报文允许节点之间在不需要明确请求的情况下进行数据交换,这有助于降低通信延迟并提高系统的实时性。以下是关于CANopen中PDO报文的详细介绍:

PDO报文结构

PDO报文同样由CAN数据帧组成,其中包含了用于描述和传输数据的各种字段。以下是PDO报文的基本结构:

  • 帧ID:PDO报文的标识符,通常是一个固定的数值,用于标识PDO通信。
  • 数据字段
    • PDO通道标识符:用于标识PDO通道的索引号。
    • 数据:要传输的实时数据内容。
PDO通道

每个CANopen节点可以定义多个PDO通道,每个通道都有一个唯一的标识符(PDO编号)。PDO通道用于指定要传输的数据类型和数据对象字典中的条目。节点可以根据需要配置不同的PDO通道,以实现对不同类型数据的灵活传输。

PDO报文类型

根据PDO通道的配置和数据传输方式,PDO报文可以分为以下几种类型:

  1. 同步PDO(Synchronous PDO):根据定时器或事件触发,周期性地传输数据。
  2. 事件驱动PDO(Event-driven PDO):在特定事件触发时,如状态变化或触发条件满足时,触发数据传输。
  3. 远程PDO(Remote PDO):用于从一个节点向另一个节点发送实时数据,但不需要接收方的确认。
PDO传输方式

PDO的传输方式可以是以下两种之一:

  1. 按需传输:数据只在发生变化时传输,可以减少总线负载和通信延迟。
  2. 周期性传输:按照预定义的时间间隔定期传输数据,确保数据的及时更新。
示例PDO报文

假设节点A配置了一个同步PDO通道,用于周期性传输温度数据到节点B。那么对应的PDO报文可以如下所示:

  • 帧ID:PDO通信的标识符。
  • 数据字段
    • PDO通道标识符:指定数据所属的PDO通道。
    • 数据:温度数据的数值。

节点B接收到这个PDO报文后,会根据PDO通道标识符来解析数据,并将温度数据用于相应的应用。

通过PDO报文,CANopen网络中的节点可以快速、可靠地进行实时数据交换,满足各种实时控制和监测需求。

posted @ 2024-05-05 10:57  Asp1rant  阅读(108)  评论(0编辑  收藏  举报