Beckoff的EtherCAT从站代码架构解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 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, DataLink 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对象字典的处理。包括对象字典的初始化,添加对象到对象字典,移

除对象字典中的某一条目以及清除对象字典等处理函数的实现。



相关文章
|
19天前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
52 1
|
11天前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
113 36
微服务架构解析:跨越传统架构的技术革命
|
16天前
|
存储 Linux API
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。
|
18天前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
15天前
|
PHP 开发者 容器
PHP命名空间深度解析:避免命名冲突与提升代码组织####
本文深入探讨了PHP中命名空间的概念、用途及最佳实践,揭示其在解决全局命名冲突、提高代码可维护性方面的重要性。通过生动实例和详尽分析,本文将帮助开发者有效利用命名空间来优化大型项目结构,确保代码的清晰与高效。 ####
18 1
|
18天前
|
SQL 数据可视化 数据库
多维度解析低代码:从技术架构到插件生态
本文深入解析低代码平台,从技术架构到插件生态,探讨其在企业数字化转型中的作用。低代码平台通过图形化界面和模块化设计降低开发门槛,加速应用开发与部署,提高市场响应速度。文章重点分析开源低代码平台的优势,如透明架构、兼容性与扩展性、可定制化开发等,并详细介绍了核心技术架构、数据处理与功能模块、插件生态及数据可视化等方面,展示了低代码平台如何支持企业在数字化转型中实现更高灵活性和创新。
41 1
|
18天前
|
SQL 数据可视化 数据库
多维度解析低代码:从技术架构到插件生态
本文深入解析低代码平台,涵盖技术架构、插件生态及应用价值。重点介绍开源低代码平台的优势,如透明架构、兼容性与扩展性、可定制化开发,以及其在数据处理、功能模块、插件生态等方面的技术特点。文章还探讨了低代码平台的安全性、权限管理及未来技术趋势,强调其在企业数字化转型中的重要作用。
34 1
|
19天前
|
存储 边缘计算 安全
深入解析边缘计算:架构、优势与挑战
深入解析边缘计算:架构、优势与挑战
36 0
|
13天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
22天前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
35 3

推荐镜像

更多