基于STM32的EtherCAT从站IO讲解

特别说明:

1、这是一个大佬的tao店:1.0 ha:/₴sklPcDGhJOy₤(我是买他的开发板的)

2、源代码设涉及版权问题,所以博客将不提供源码,请大家谅解

3、欢迎大家加我wx:wxk101633  备注:博客  。发布此博客时,正在春节,写得不够好,请大家交流反馈。感谢!!

///

一、基础讲解:

1、EtherCAT从站与EtherCAT主站最大的不同在于:主站完全准寻IP协议的7层网络结构,而从站的物理链路层与主站不同,物理链路层的数据报文格式由倍福公司规定。

2、通常情况下,我们不能使用普通的网卡芯片作为从站的物理链路层;可以使用ET1100、LAN9252、AX58100等协议芯片来实现。

3、这个博客里,我使用的是AX58100芯片,用STM32作为实现应用层的CPU;实现一个16进16出的数字量IO从站。

///

二、从站设备描述文件XML

1、XML文件基础介绍

XML文件是从站设备描述文件,被烧写在从站协议芯片可读写的EEPROM中;AX58100上电后,会从EEPROM中加载相关的配置选项,通过SPI通信与CPU交互,初始化CPU相关资料并初始化通信。

主站则需要根据从站的XML描述文件,发送PDO或SDO数据报文请求读写从站的寄存器。

2、XML文件结构介绍

整体框架如图:

基于STM32的EtherCAT从站IO讲解_第1张图片

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

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

基于STM32的EtherCAT从站IO讲解_第2张图片

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

基于STM32的EtherCAT从站IO讲解_第3张图片

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

第一步:修改设备挂载后的名字

打开Descriptions-->Devices-->Devices-->Type-->Text,这里修改的是,主站设备挂载该从站IO后的默认实例名称;打开Descriptions-->Devices-->Devices-->Name,将内容修改为设备的名称。

/

第二步:配置各种通信超时时间通常保持默认,后期主站挂载从站时可以通过主站来调整

打开Descriptions -->Devices-->Device-->Info

/

第三步:开始创建16路IO映射变量区重要环节

1、首先,需要想好实际要映射的数据PDO;例如我们要映射16路的数字量输入(Tx)和16路的数字量输出(Rx)。

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

基于STM32的EtherCAT从站IO讲解_第4张图片

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

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

基于STM32的EtherCAT从站IO讲解_第5张图片

基于STM32的EtherCAT从站IO讲解_第6张图片

基于STM32的EtherCAT从站IO讲解_第7张图片

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

基于STM32的EtherCAT从站IO讲解_第8张图片

基于STM32的EtherCAT从站IO讲解_第9张图片

6、申明好PDO数据报文后,接下来我们需要修改SM同步数据通道,将数据映射到父级,协议芯片将从这里开始逐级索引数据报文:Descriptions-->Devices-->Device-->sm、Rxpdo、Txpdo(协议芯片从这里开始加载数据到内核,并从报文中读取数据到内核

基于STM32的EtherCAT从站IO讲解_第10张图片

基于STM32的EtherCAT从站IO讲解_第11张图片

基于STM32的EtherCAT从站IO讲解_第12张图片

7、修改SM内容后,你会发现,父级PDO x1601(Rxpdo)和x1a00 PDO节点的映射内容也发生了改变;所以这些父级节点对应的数据类型与PDO申明也需要修改:(父节点PDO的每个成员是子PDO节点的寄存器地址,32位数据

//

第四步:将修改好的XML文件通过twcat软件烧写到协议芯片的EEPROM中。

三、STM32应用层代码的修改

实际上,单纯修改XML文件只是可以让协议芯片在于主站交互数据报文时,有一个依据而已,实际需要交互的数据需要有从站的CPU和外设提供,通过SPI与协议芯片交互。所以,我们还需要再STM32程序内驱动对应的硬件设备,并实现spi数据读写交互。

这里只讲解需要修改的部分

第一步:在源代码的el9800app.h中,添加数据节点结构体系列描述:(有四个东西需要创建或修改

基于STM32的EtherCAT从站IO讲解_第13张图片

基于STM32的EtherCAT从站IO讲解_第14张图片

基于STM32的EtherCAT从站IO讲解_第15张图片

第二步:将新创建的PDO节点,加入应用PDO节点管理数据(在源代码的el9800app.h中)

基于STM32的EtherCAT从站IO讲解_第16张图片

第三步:在源代码的el9800app.h中,对应修改1601映射数据管理对象的四个东西

基于STM32的EtherCAT从站IO讲解_第17张图片

基于STM32的EtherCAT从站IO讲解_第18张图片

基于STM32的EtherCAT从站IO讲解_第19张图片

第四步:在源代码的el9800app.h中,修改1c12PDO对象,因为1600~1602是映射到1c12上,最终完成主从数据交换的

基于STM32的EtherCAT从站IO讲解_第20张图片

基于STM32的EtherCAT从站IO讲解_第21张图片

第五步:在el9800appl.c文件中,按照需求为数据节点PDO分配内存空间,用于交互数据

基于STM32的EtherCAT从站IO讲解_第22张图片

第六步:在el9800appl.c文件中,将PDO数据缓存区内容赋值给具体的硬件接口,实现硬件操作

基于STM32的EtherCAT从站IO讲解_第23张图片

基于STM32的EtherCAT从站IO讲解_第24张图片

第七步:硬件驱动初始化,否则数据也无法在硬件上体现出来

基于STM32的EtherCAT从站IO讲解_第25张图片

基于STM32的EtherCAT从站IO讲解_第26张图片

 


 

 

 

 

 

 

 

 

你可能感兴趣的:(运动控制算法,C语言,ethercat,物联网)