grfqq325 发表于 2021-12-28 17:23

基于STM32的EtherCAT从站IO讲解

一、基础讲解:
1、EtherCAT从站与EtherCAT主站最大的不同在于:主站完全准寻IP协议的7层网络结构,而从站的物理链路层与主站不同,物理链路层的数据报文格式由倍福公司规定。
2、通常情况下,我们不能使用普通的网卡芯片作为从站的物理链路层;可以使用ET1100、LAN9252、AX58100等协议芯片来实现。
3、这个博客里,我使用的是AX58100芯片,用STM32作为实现应用层的CPU;实现一个16进16出的数字量IO从站。

grfqq325 发表于 2021-12-28 17:26

二、从站设备描述文件XML
1、XML文件基础介绍
XML文件是从站设备描述文件,被烧写在从站协议芯片可读写的EEPROM中;AX58100上电后,会从EEPROM中加载相关的配置选项,通过SPI通信与CPU交互,初始化CPU相关资料并初始化通信。
主站则需要根据从站的XML描述文件,发送PDO或SDO数据报文请求读写从站的寄存器。

grfqq325 发表于 2021-12-28 17:27

2、XML文件结构介绍
整体框架如图:

grfqq325 发表于 2021-12-28 17:30

这里重点讲解EtherCATInfo这一栏;Vendor包含设备供应商的描述,Descriptions包含所有设备资源描述,是最重要的地方。

grfqq325 发表于 2021-12-28 17:35

打开Verdor,我们可以通过修改ImageData节点的数据,来修改设备挂载到主站下后的形象:

grfqq325 发表于 2021-12-28 17:52

grfqq325 发表于 2021-12-28 17:56

打开数据节点Descriptions,这里是我们修改自己的数据资源主要地区:

grfqq325 发表于 2021-12-28 17:57

grfqq325 发表于 2021-12-28 17:59

到这里,我将通过具体的例子来讲解如何改写XML文件:(如果不这样,很难描述清楚)

grfqq325 发表于 2021-12-28 18:00

第一步:修改设备挂载后的名字
打开Descriptions-->Devices-->Devices-->Type-->Text,这里修改的是,主站设备挂载该从站IO后的默认实例名称;打开Descriptions-->Devices-->Devices-->Name,将内容修改为设备的名称。
/
第二步:配置各种通信超时时间(通常保持默认,后期主站挂载从站时可以通过主站来调整)
打开Descriptions -->Devices-->Device-->Info
/

grfqq325 发表于 2021-12-28 18:01

第三步:开始创建16路IO映射变量区(重要环节)
1、首先,需要想好实际要映射的数据PDO;例如我们要映射16路的数字量输入(Tx)和16路的数字量输出(Rx)。

grfqq325 发表于 2021-12-28 18:02

2、先讲解一下,EtherCAT协议规范的PDO数据映射关系:

grfqq325 发表于 2021-12-28 18:04

3、注意:AX58100等协议芯片中,数据寄存器的地址是按16位(字)单位偏置的,所以在定义PDO数据报文时,每个PDO报文必须至少传递一个字的数据长度,不足的需要补齐!!

grfqq325 发表于 2021-12-28 18:04

4、现在,我们先修改或添加对应PDO的数据类型(如果是DINT INT等标准数据类型,则必须是EtherCAT协议允许的才可以):Descriptions-->Devices-->Device-->Profile-->Dictionary-->DataTypes-->DataType

grfqq325 发表于 2021-12-28 18:13

grfqq325 发表于 2021-12-28 23:01

grfqq325 发表于 2021-12-28 23:04

grfqq325 发表于 2021-12-28 23:07

5、类型定义好了,接下来修改对应的PDO报文申明:Descriptions-->Devices-->Device-->Profile-->Dictionary-->Objects-->Object

grfqq325 发表于 2021-12-28 23:08

grfqq325 发表于 2021-12-28 23:10

页: [1] 2 3
查看完整版本: 基于STM32的EtherCAT从站IO讲解