本文主要用于记录工作中需要学习的内容,如有冒犯请私信!
COE协议
下面我们介绍以下CANOpen在EtherCAT中的应用。
COE的对象字典
COE协议是完全遵循CANopen协议的,但针对EtherCAT通信做了一些扩展,索引为0x1c00~0x1c4f,用于设置存储同步管理器的类型,通信参数和PDO数据分配。
????????????????????????????????????????????????????????COE对象字典
????????????????????????????????????????????????COE通信数据对象
上面这个表的数据会以xml文件存储在从站的EEPROM中,标签为objects 。
这里0x1C12和0x1C13两个Entry非常重要,一般我们使用这两个Entry对PDO进行管理。
周期性数据通信
周期性数据主要通过PDO进行通信。前面提到,主站通过解析对象字典来了解EtherCAT报文的PDO分配。0x1C10~0x1C2F对象字典的内容确定报文中PDO的分配。其中,子索引0是分配的PDO数目,其他子索引是PDO映射对象的索引号,也就是前面的0x1600~0x17FF。然后根据PDO映射对象的子索引和数值,就可以知道这个PDO的具体含义了,一个配置对象如下图所示:
????????????????????????????????????????????????????????????????0x1c12配置示例
对象字典的Entry一般包含索引和子索引,这里的1C12包含4个子索引。第一个子索引是包含PDO映射的数目,后面3个是映射的具体PDO。也就是说后面要使用到0x1600,0x1601和0x1602这3个PDO。每一个PDO就是一个对象,类似于C语言里的结构体,它还包括许多成员变量。例如这里1600PDO还包含2个子索引,分别是0x7000:01和0x7010:01,可见从对象字典到最终要传输的具体数据,是一个层层映射的关系。
但如果要快速理清传输的是什么数据,答案也很简单:检查1C12和1C13。
这里顺便提一提动态PDO配置的概念。动态PDO配置包括PDO Assignment和PDO Configuration,前者指的是,已经有配置好的一堆1600,1601,1602等等PDO,我们可以选择如何组合成我们自己的传输数据。PDO Configuration是指,可以修改1600,1601这些具体PDO映射的内容。实际上一个商用从站应该支持动态PDO,后面的文章会介绍如何实现动态PDO。
非周期性数据通信
EtherCAT主站通过读写邮箱数据SM通道来实现非周期性数据通信。前面我们讲过,EtherCAT处理非周期性数据通信是通过邮箱的方式,邮箱数据单元结构如下图所示:
邮箱数据
这里面类型字段如果为3,代表当前运行的是COE协议。COE的命令位只有两个字节:
????????????????????????COE数据头
SDO数据单元
SDO的传输分为上传和下载两种,下载传输常用于主站设置从站参数,上传用于主站读取从站性能参数。这里内容比较多,就不详细介绍了,感兴趣的小伙伴可以自行查阅相关资料学习。