欢迎来到我司精密电阻产品网站!
CANopen通信协议简介
精密电阻 2024-11-23

概述CANopen是建立在控制局域网(CAN)上的高级通信协议。

它包括通信子协议和设备子协议,它们经常在嵌入式系统中使用。

它也是工业控制中常用的现场总线。

CANopen在OSI模型中的网络层(包括网络层)之上实现协议。

CANopen标准包括寻址方案,几个小型通信子协议以及由设备子协议定义的应用程序层。

CANopen支持网络管理,设备监视和节点之间的通信,包括一个简单的传输层,可以处理分段的数据传输和组合。

一般而言,数据链路层和物理层将由CAN实现。

除了CANopen之外,还有其他通信协议(例如EtherCAT)实现CANopen的设备子协议。

基本CANopen设备和通信协议在AutomaTIon(CiA)草案标准301中的CAN中定义。

单个设备的子协议基于CiA 301,然后进行扩展。

例如用于I / O模块的CiA401和用于运动控制的CiA402。

设备型号以下是所有CANopen设备必须具备的功能:通讯单元它处理与网络上其他模块进行通讯所需的通讯协议。

设备的启动和重置由状态机控制。

状态机需要包括以下状态:初始化,运行前,运行和已停止。

当收到网络管理(NMT)通信对象时,状态机将转换为相应的状态。

对象字典是具有16位索引的变量数组。

每个变量可以(但不是必须)具有8位子索引(Subindex)。

变量可用于调整设备的配置,也可对应于设备测量的数据或设备的输出。

当状态机设置为“可操作”时,设备的应用程序部分将实现设备的预期功能。

该部分可以通过对象字典中的变量进行调整,并且数据可以通过通信层进行发送或接收。

对象字典CANopen设备都需要具有一个对象字典,该对象字典用于设置设备配置和执行非即时通信。

对象字典的条目定义如下:索引:对象的16位地址。

对象名称:代表对象的符号类型,可以是数组,记录或变量。

名称:描述此条目的字符串。

类型:变量的数据类型。

属性:提供有关此条目是否可读/可写的信息。

有四种类型:读/写,只读,只写和只读常量。

强制/可选字段定义了属于特定设备规范的设备是否必须实现某些对象。

对象字典中的基本数据类型在CANopen标准中定义,包括逻辑值,整数和浮点数。

它还定义了复合对象:例如数组,记录和字符串。

复合对象使用8位值作为其子索引。

子索引0在记录或数组中的位置记录此数据结构的元素数,数据类型为UNSIGNED8。

通信通信对象CANopen物理层CANbus每次都会发送少量数据,包括11位ID,远程传输请求(RTR)位以及大小不超过8位的数据。

CANopen将11位CANbus ID分为4位功能代码和7位CANopen节点ID。

7位ID共有128种不同的组合,其中没有使用ID 0,因此CANopen网络最多允许127个设备。

CANbus在CAN 2.0 B规范中允许使用29位ID,因此,如果与CAN 2.0 B一起使用,则CANopen网络上可以有127个以上的设备,但是在实际使用中,大多数CANopen网络上的设备数量少于这个值。

CANopen将11位CANbus ID称为通信对象ID(COB-ID)。

当传输数据冲突时,CANbus仲裁机制将使具有最小COS-ID的消息继续传输而无需等待或重新传输。

COB-ID的前4位是CANopen功能代码,因此该功能代码的值较小,表示相应的功能很重要,允许的延迟时间也较短。

在CANopen标准中,部分COB-ID保留用于网络管理和SDO通信。

初始化设备后,某些功能代码和COB-ID将映射到标准功能,但将来仍可以计划将其用于其他用途。

通讯模型CANopen设备之间的通讯可分为以下三个通讯