在工业自动化领域EtherCAT可以说是无处不在应用非常广泛。其实简单一点来说EtherCAT就是一种工业自动化的现场总线协议被广泛应用在PLC主机和从站模块里面用于实现两者的快速通信和数据交换。既然是协议就肯定会有协议栈我们可以通过SSC工具生成协议栈的基本代码协议栈代码框架如下所示下面这个是我将协议代码与协议代码框架建立的基本关系代码文件比较多不过基本上看文件名称就能猜测其大概的作用。接着我们一起来看下协议栈的应用层部分因为应用层是真正实现EtherCAT协议的部分包括状态机处理周期性过程数据的处理以及非周期性邮箱数据的处理。应用层包括以下功能模块各功能模块的主要作用阐述如下:Ecatslv:处理EtherCAT状态机模块。状态机转换请求由主站发起主站将请求状态写入A1Control寄存器中从站采用查询的方式获取当前该状态转换的事件将寄存器值作为参数传入AL_ControlInd()函数中该函数作为核心函数来处理状态机的转换根据主站请求的状态配置SM通道的开启或关闭检查SM通道参数是否配置正确等。Ecatappl:EtherCAT从站应用层接口整个协议栈运行的核心模块EtherCAT从站状态机和过程数据接口。Main()函数的定义输入输出程数据对象的映射处理ESC与处理器本地内存的输入输出过程数据的交换等;Mailbox:处理EtherCAT邮箱服务模块。包括邮箱通信接口的初始化邮箱通道的参数配置根据当前状态机来开启或关闭邮箱服务邮箱通信失败后的邮箱重复发送请求邮箱数据的读写以及根据主站请求的不同服务类型调用相应服务函数来处理本文主要研究的是CoE邮箱服务类型的处理。Ecatcoe:CoE ( CANopen overEtherCAT)处理函数定义模块。包括CoE接口的初始化对当前请求的CoE服务的处理以及对保存而未处理过的CoE服务的处理。Sdoserv:SDO服务处理模块。处理所有SDO及SDO信息服务包括对主站发送的上传、下载SDO服务请求的处理处理完成后SDO响应数据由主站来主动读取。Objdef:访问CoE对象字典模块。读写对象字典获得对象字典的入口以及对象字典的具体处理函数由该模块实现。Coeappl:CoE服务的应用层接口模块。对CoE服务实际应用的处理以及CoE对象字典的处理。包括对象字典的初始化添加对象到对象字典移除对象字典中的某一条目以及清除对象字典等处理函数的实现。各个模块都是以单独的.c源文件和.h头文件的形式呈现出来的一目了然。希望以上对EtherCAT应用层的协议栈代码主模块的解释可以帮助有需要的坛友们~~。---------------------作者dffzh链接https://bbs.21ic.com/icview-3508381-1-1.html?_dsignbfdda1e2来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。