我们上期介绍了CANopen的基础点:OSI 7层模型、不同的数据通信方式及对象字典:关于CANopen通信协议,这些基础点你知道吗?
这期我们重点介绍下CANopen协议中,节点之间的三种不同通信模型和定义。
注意:一个CANopen网络最多可以支持127个节点。节点间主要有以下三种不同的通信模型关系:
- 主从关系(Master/Slave Relationship)
- 客户端/服务器关系(Client/Server Relationship)
- 生产者/用户关系(Producer/Consumer Relationship)
主从关系
在主从关系中,主节点控制消息流量,而从节点仅响应主节点的请求。消息可以在无需确认或需要确认的基础上进行交换。
- 对于无需确认的消息,它可以被所有节点接收、单个节点接收,或者不被任何节点接收。
- 对于需要确认的消息,主节点向从节点请求一条消息。从节点用请求的数据对帧进行响应。
主从关系是CANopen网络中最基本的关系,主要用于网络管理和节点状态控制。
- 主节点(Master):通常是网络管理器(NMT,Network Management),负责控制整个网络的状态,例如启动、停止或复位节点。主节点通过发送NMT命令(如进入预操作状态、进入操作状态等)来管理从节点。
- 从节点(Slave):从节点是网络中的其他设备,它们响应主节点的命令,并根据主节点的指令进入相应的状态。从节点在启动时会发送一个Boot-up报文,通知主节点其已加入网络。
主从关系主要用于网络的初始化、状态管理和节点的配置。
客户端/服务器关系
客户端/服务器关系始终是在两个节点之间建立的,并且是双向的。消息交换总是由客户端发起。客户端向服务器发送请求,并期望收到确认(通常包含响应数据)。因此,客户端/服务器关系总是至少涉及两个帧(请求/响应)。
客户端/服务器关系主要用于非周期性的数据交换,特别是通过服务数据对象(SDO)进行设备配置和参数读写。
- 客户端(Client):通常是主节点或其他需要读取或写入从节点参数的设备。客户端通过SDO请求访问从节点的对象字典。
- 服务器(Server):通常是从节点,它响应客户端的SDO请求,提供或接收参数数据。
这种关系基于请求/响应机制,客户端发起请求,服务器提供响应,适用于设备配置、调试和参数管理。
生产者/用户关系
生产者/用户关系用于需要快速数据交换且无需管理数据的场景。生产者发送一个帧,该帧可以被一个或多个节点(用户设备)接收。为了避免不必要的总线带宽降低,数据传输是无需确认的。
生产者/消费者关系主要用于周期性的实时数据交换,特别是通过过程数据对象(PDO)进行数据传输。
- 生产者(Producer):生产者是数据的发送方,通常是传感器或其他需要发送实时数据的设备。生产者按照预设的触发条件(如事件、时间或同步信号)发送PDO数据。
- 用户(Consumer):用户是数据的接收方,通常是执行器或其他需要接收实时数据的设备。用户通过映射PDO数据到自己的对象字典中,实现数据的接收和处理。
这种关系适用于实时性要求较高的场景,如控制指令的传输和传感器数据的采集。
总结
这三种关系共同构成了CANopen协议中节点间的通信模型,适用于不同的应用场景,确保了网络的高效运行和数据的正确传输。
- 主从关系:用于网络管理和节点状态控制。
- 客户端/服务器关系:用于非周期性的设备配置和参数读写。
- 生产者/用户关系:用于周期性的实时数据传输。
参考链接:
- https://cscapehelp.hornerautomation.com/Content/Networking%20and%20Communications/NC-CANopen-Overview.htm#CANopen2
- https://www.simmasoftware.com/canopen-explained/
- https://www.can-cia.org/can-knowledge/canopen/