首页 > 代码库 > Beckoff的EtherCAT从站代码架构解析
Beckoff的EtherCAT从站代码架构解析
用倍福的从站配置工具得到的源代码有以下
2014/12/26 11:24 1,021 1.TXT
2014/12/26 11:24 0 2.txt
2012/04/11 20:43 22,131 aoeappl.c
2012/04/11 20:43 1,578 aoeappl.h
2012/04/11 20:43 1,757 bootmode.c
2012/04/11 20:43 749 bootmode.h
2012/04/11 20:43 57,363 cia402appl.c
2012/04/11 20:43 43,902 cia402appl.h
2012/04/11 20:43 50,868 coeappl.c
2012/04/11 20:43 1,755 coeappl.h
2012/04/11 20:43 24,151 diag.c
2012/04/11 20:43 5,746 diag.h
2014/04/08 15:36 337 dirtree.bat
2012/04/11 20:44 20,193 ecataoe.c
2012/04/11 20:44 9,276 ecataoe.h
2012/04/11 20:44 40,417 ecatappl.c
2012/04/11 20:44 6,232 ecatappl.h
2012/04/11 20:44 5,736 ecatcoe.c
2012/04/11 20:44 3,626 ecatcoe.h
2012/04/11 20:44 24,095 ecateoe.c
2012/04/11 20:44 6,926 ecateoe.h
2012/04/11 20:44 15,512 ecatfoe.c
2012/04/11 20:44 7,722 ecatfoe.h
2012/04/11 20:44 101,393 ecatslv.c
2012/04/11 20:44 21,611 ecatslv.h
2012/04/11 20:44 6,467 ecatsoe.c
2012/04/11 20:44 4,006 ecatsoe.h
2013/01/08 13:52 37,184 ecat_def.h
2012/04/11 20:44 17,575 el9800appl.c
2012/04/11 20:44 23,075 el9800appl.h
2012/04/11 20:44 40,016 el9800hw.c
2012/04/11 20:44 8,199 el9800hw.h
2012/04/11 20:44 11,044 emcy.c
2012/04/11 20:44 4,598 emcy.h
2012/04/11 20:44 10,046 eoeappl.c
2012/04/11 20:44 7,605 eoeappl.h
2012/04/11 20:44 19,707 esc.h
2012/04/11 20:44 663 EtherCATSampleLibrary.h
2012/04/11 20:44 9,572 fc1100hw.c
2012/04/11 20:44 4,698 fc1100hw.h
2012/04/11 20:44 13,423 foeappl.c
2012/04/11 20:44 1,813 foeappl.h
2013/01/11 11:08 43,814 mailbox.c
2012/04/11 20:44 6,798 mailbox.h
2012/04/11 20:44 13,035 mcihw.c
2012/04/11 20:44 5,398 mcihw.h
2012/04/11 20:44 65,013 objdef.c
2012/04/11 20:44 10,335 objdef.h
2012/04/11 20:44 10,624 sampleappl.c
2012/04/11 20:44 6,379 sampleappl.h
2012/04/11 20:44 10,555 SampleApplicationInterface.c
2012/04/11 20:44 6,322 SampleApplicationInterface.h
2012/04/11 20:44 65,923 sdoserv.c
2012/04/11 20:44 26,002 sdoserv.h
2012/04/11 20:44 403,968 TcHelper.dll
2012/04/11 20:44 829 TcHelper.h
2012/04/11 20:44 2,406 TcHelper.lib
2012/04/11 20:44 38,440 testappl.c
2012/04/11 20:44 29,615 testappl.h
59 个文件 1,439,244 字节
从站软件协议栈从通信层次上来看分为两层:数据链路层(DL, Data
Link Layer)和应用层(AL, Application Layer,分别实现EtherCAT协议以
及应用层通讯协议。
数据链路层是ESC与从站微处理器的数据交换层,ESC与从站微处理器
之间可以采用SPI ( Serial Peripheral Interface,串行外设接口)或MCI ( Micro
Controller Interface,微控制器接口)两种模式传输数据,协议栈将两种模式
封装成统一接口,供上层协议直接调用。根据EtherCAT协议对实时性及数
据量的要求,本文选用MCI并行微控制器接口来传送数据,以下功能模块用
于实现底层通信:
Spihw:串行模式处理器接口模块。定义了串行模式下的微处理器与ESC
通信接口函数,供上层应用通信时调用,完成底层数据的交换。
Mcihw:并行控制器接口模块。定义了并行模式下的微控制器与ESC通
信接口函数,供上层应用通信时调用,完成底层数据的交换。
应用层是真正实现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对象字典的处理。包括对象字典的初始化,添加对象到对象字典,移
除对象字典中的某一条目以及清除对象字典等处理函数的实现。Beckoff的EtherCAT从站代码架构解析