基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解EtherCATIO 从站工业通信 ethercat 主站和从站的区别

大家好,欢迎来到IT知识分享网。

特别说明:

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

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

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

///

一、基础讲解:

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讲解

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

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

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

到这里,我将通过具体的例子来讲解如何改写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讲解

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

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

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

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讲解

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

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

基于STM32的EtherCAT从站IO讲解

基于STM32的EtherCAT从站IO讲解

 


 

 

 

 

 

 

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131281.html

(0)
上一篇 2025-08-08 21:45
下一篇 2025-08-08 22:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信