首页 > 钓鱼用品 > 钓鱼杆

【EtherCAT】3.COE协议详解

钓鱼杆钓友圈2023-06-18 09:57:58A+A-

本文详细介绍CANopen over EtherCAT(COE)协议。

CANopen协议

首先强烈推荐这个视频,本文也是根据此视频翻译的:

CANopen是一种架构控制局域网络(Controller Area Network,CAN)上的应用层通信协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线协议。

因为CANopen是最早是设计在CAN上的,对CAN不熟悉的同学可以参考下面这篇文章:

从OSI的角度来看,CAN Bus承担物理层和数据链路层的功能,而CANopen可以用在会话层,表示层或者应用层。

OSI For CANopen

CANopen通信包含以下核心概念:

通信模型:可以支持主从(Master-Slave)模式,客户端-服务器(CS)模式和生产者-消费者(Producer-Consumer)模式;通信协议:CANopen包含一系列特殊的子协议,例如用于配置节点的SDO和用于传输数据的PDO;设备状态:设备可以支持不同的状态,主节点设置从节点的状态;对象字典:每个设备都包含一个对象字典(Object Dictionary,OD),描述了CANopen节点的所有参数,可以通过SDO访问对象字典;电子数据表:EDS是存放对象字典条目的标准文件格式;设备配置文件:为特定设备定义的OD,例如用于IO模块的CIA 401和用于伺服控制的CIA 402协议。

各部分的关系如下图所示:

CANopen协议结构

通信模型

主从通信模型:一个节点充当主站,请求从站的数据,例如伺服电机的数据。这个过程可以用于诊断或者状态管理

客户端-服务器模型:客户端向服务器发送数据请求,服务器回复请求的数据。例如,当主机程序需要来自从机的OD数据时。阅读来自服务器的数据称为上传,而写入是下载。

生产者-消费者模型:生产者节点将数据广播到网络,由消费者消费数据。

理解这几个通信模型对后面的PDO,SDO的学习非常重要。

通信协议和设备状态

CAN报文的结构如下图所示:

CAN报文

在CANopen中,11位的CANID被称为通信对象标识符(COB-ID)。COB-ID分为两部分,4bit功能码和7bit的节点ID。通过COB-ID,可以确定是哪个节点正在发送/接收何种服务。

CANopen Frame

其中主要的CANopen服务类型:

网络管理NMT:用于控制CANopen服务的状态,例如,通过NMT命令(启动,停止,复位等)进行操作。同步SYNC:同步主机和从机之间的信号;紧急情况EMCY:如果设备发生致命错误,则启用紧急服务,允许它向网络的其余部分表明这一点;时间戳TIME:利用该服务分发全球网络时间,包含一个6字节的时间和日期信息;过程数据对象PDO:PDO用于在设备之间传输实时数据;服务数据对象SDO:SDO用于访问、更改CANopen对象字典中的值;心跳HeartBeat:提供节点活跃消息并确认NMT命令;

这其中CANopen命令中,最重要的是PDO和SDO。

对象字典

对象字典是一个标准化结构,其中含有描述CANopen节点行为的所有参数。通过16位的索引和8位的子索引来查找OD条目。简单地理解,对象字典其实就是一个字典,通过索引号来查询这个对象的信息。其中每个条目可能包含以下的信息:

索引:16bit的对象基地址;对象名:厂商的设备名称;对象代码:可以是数组,变量或者记录;数据类型;访问权限:读写、只读或者只写;

对于一本英汉字典,“abandon”这样的经典单词可以说是一定出现的,但是有些生僻词、专有名词可能只有在特定功能的字典才会出现。对象字典也是这样,对象字典含有标准化部分和非标准化部分,标准化部分是一些必填项,非标准化部分可以根据需求来定制。

对象字典

电子数据表和设备配置文件

那么对象字典是以何种形式存储在设备中的呢?答案是通过INI格式的一个对象字典模板文件,称为电子数据表EDS,EDS一般由厂家提供,程序员会编辑设备的EDS,并在EDS中添加了特定的参数值或改变了每个对象的描述名称,存储在设备中,称为设备配置文件(DCF)。如下图所示:

EDS和DCF

一般来说DCF是在设备集成时创建的,但是通常在初始化配置之后需要修改对象字典的值,此时就需要使用SDO了。

SDO

SDO服务允许CANopen节点通过CAN网络读取/编辑另一个节点的对象字典的值。正如在“通信模型”中提到的,SDO服务使用“客户端/服务器”模式。具体来说,一个SDO “客户端”与一个专门的SDO“服务器”发起通信。其目的可以是更新一个OD条目(称为“SDO下载”)或读取一个条目(“SDO上传”)。

SDO的客户端\服务器通信模式

SDO是如何通过CAN报文来实现的呢?

一个典型的SDO报文首先,COB-ID 605反映了“SDO接收”的使用(COB-ID 600 +节点ID)CCS(客户端命令指定符)是传输类型(例如,1:下载,2:上传)n是字节区4-7中不包含的字节数(如果e和s被设置为有效)e表示“加速传输”,且所有数据都在单个CAN帧中(如果有设置)s表示数据大小显示为n(如果有设置)索引(16位)和子索引(8位)反映了要访问的OD地址最后,节点5将相应字节4-7中包含的相关数据写入对象字典

PDO

PDO用于实时的数据传输。CANopen的PDO服务用于在CANopen节点之间有效地共享实时操作数据。例如,PDO将携带来自压力传感器的压力数据或来自温度传感器的温度数据。原则上,SDO服务也能实现共享实时操作数据,但由于单个SDO响应只能携带4个数据字节,因此一般不用SDO。

假设一个主站节点需要来自节点5的两个参数值(例如“SensTemp2”和“Torque5”)。如果通过SDO来实现,需要4个完整的CAN帧(2个请求和2个响应)。相比之下,一个PDO消息可以包含8个完整的数据字节,而且它可以在一个帧内包含多个对象参数值。因此,在SDO服务中至少需要4个报文,而在PDO服务中则可能只需要1个报文就可以完成。

PDO服务使用的是“消费者/生产者”模型。因此,生产者 "生产数据",它使用发送PDO(TPDO)将其传送给“消费者”(主站)。反之,它可以通过“接收PDO”(RPDO)从消费者那里接收数据。

PDO报文

这个PDO的使用者知道如何解释这个PDO报文。这些“PDO 映射”通常是可配置的,并且可以在创建 DCF 或通过 SDO 服务期间进行更改。

COE协议

COE的对象字典

COE协议是完全遵循CANopen协议的,但针对EtherCAT通信做了一些扩展,索引为0x1c00~0x1c4f,用于设置存储同步管理器的类型,通信参数和PDO数据分配。

COE对象字典
COE通信数据对象
续表

上面这个表的数据会以xml文件存储在从站的EEPROM中,标签为objects 。

周期性数据通信

周期性数据主要通过PDO进行通信。前面提到,主站通过解析对象字典来了解EtherCAT报文的PDO分配。0x1C10~0x1C2F对象字典的内容确定报文中PDO的分配。其中,子索引0是分配的PDO数目,其他子索引是PDO映射对象的索引号,也就是前面的0x1600~0x17FF。然后根据PDO映射对象的子索引和数值,就可以知道这个PDO的具体含义了,一个配置对象如下图所示:

0x1c02配置示例

非周期性数据通信

EtherCAT主站通过读写邮箱数据SM通道来实现非周期性数据通信。

点击这里复制本文地址 以上内容由趣钓网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

相关内容

模板文件不存在: ./template/plugins/comment/pc/index.htm

Copyright © 2012-2024 趣钓网 版权所有

钓鱼比赛视频 | 高手钓鱼视频 | 海钓视频 | 台钓视频 | XML地图 | HTML地图

qrcode
返回顶部
X趣钓网

截屏,微信识别二维码

微信号:

(点击微信号复制,添加好友)

  打开微信

微信号已复制,请打开微信添加咨询详情!