etherCAT学习笔记

本文介绍了etherCAT技术,一种基于以太网的实时工业现场总线通信协议。讲解了其基本原理,如通过单一数据帧高效传输节点数据,以及三层架构:物理层、数据链路层和应用层。此外,还探讨了主站和从站的角色,主站软件(商业与开源)以及从站结构,特别提到了Igh EtherCAT学习记录,包括ECTTY.h和ecrt.h头文件的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       为了在Linux中搭建etherCAT运行环境,首先对标准Linux内核进行扩展,增加Xenomai实时补丁,重新编译内核,构建实时Linux操作系统。然后在新系统中安装etherCAT工具,搭建主站环境。

1.安装参考教程

  • https://blog.csdn.net/Allforyouz/article/details/78713453?locationNum=10&fps=1&tdsourcetag=s_pctim_aiomsg
  • https://blog.csdn.net/Allforyouz/article/details/78721760
  • https://github.com/ART-robot/ethercat_install

2.etherCAT介绍

2.1 概述

       EtherCAT(Ethernet for Control Automation Technology)是一种由德国倍福(Beckhoff Automation)公司发明,基于以太网的实时工业现场总线通信协议。EtherCAT 采用符合以太网标准IEEE802.3的物理层,具有以太网的传输速度快、数据包容量大、 传输距离较长等优点。

       标准以太网通信每个从站都发送独立的报文与主站通信,而标准以太网报文最短长度84byte,假设一个驱动器发送4byte的目标位置和控制字信息数据,则传输效率只有4/48(4.8%)。EtherCAT协议使用一个数据帧完成所有节点控制数据的发送和接受,故而可以实现很高的实时性。

2.2 原理

      &nbsp**;基本原理**为EtherCAT主站发送一个报文,报文经过所有的节点。EtherCAT从站设备高速动态的读取寻址到该节点的数据,并在数据帧继续传输的同时插入数据,到达最后一个分支后,利用以太网技术的全双工特性,将报文返回给主站。最大有效数据利用率达90%以上,有效数据利用率理论上高于100MBit/s。每帧最多可容纳1486B,可以在30μs内更新1000个数字I/O信息。16位WKC可以支持65535个设备

      &nbsp**;主站**仅需要一个标准的以太网口,典型结构如下,基本功能包括ESI文件的读取解析;从站设备的管理;实现过程数据通信;支持邮箱通信,实现非周期性数据传输。
主站协议栈基本功能:
1. 根据不同的系统平台安装网卡驱动,使用网卡封装,发送接收并解析以太网数据帧.
2. 获取从站设备描述文件ESI
3. 发送数据帧与从站通信
4. 使用非周期性邮箱数据在配置阶段设置从站参数,并在从站运行状态下读写数据和处理偶然事件
5. 使用周期性过程数据完成数据的实时交换
6. 提供应用层接口

典型主站结构
       从站则需要有专门的etherCAT从站控制器(ESC),每个从站的信息(ESI)文件为XML格式,并包含了网络访问属性的完整描述。详细信心见从站结构部分

2.3 三层架构

2.3.1 物理层

       100Mb/s的标准以太网,任何带有标准以太网口的PC机都可以作为etherCAT主站运行。

2.3.2 数据链路层

       数据链路层负责处理如何进行通信,主从站之间主要通过邮箱和过程数据两种方式进行通信。其中邮箱用于发送较大的数据块(参数数据),保证能够到达目的地,但不能保证实时性;过程数据则是实时的,并且只考虑到最近的数据。
  
  数据帧结构
  报文寻址方式
  通信服务命令
  分布时钟
  状态机ESM
  存储同步管理通

### 如何在 IntelliJ IDEA 中配置和使用 Swagger #### 添加 Maven 依赖 为了使 Swagger 能够工作,在 `pom.xml` 文件中需加入特定的依赖项。这可以通过编辑项目的构建文件来完成: ```xml <dependencies> <!-- swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <!-- swagger ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> </dependencies> ``` 这些依赖会引入必要的库用于生成 API 文档以及提供交互式的 UI 页面[^4]。 #### 创建 Swagger 配置类 接着创建一个新的 Java 类用来初始化并配置 Swagger 实例。通常命名为类似于 `SwaggerConfig.java` 的名称,并放置于合适的位置,比如 `config` 包内: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .build(); } private ApiInfo apiInfo(){ return new ApiInfoBuilder().title("API文档").description("").termsOfServiceUrl("") .contact(new Contact("", "", "")) .license("").licenseUrl("").version("1.0") .build(); } } ``` 这段代码定义了一个 Spring Bean 来设置 Swagger 的基本信息和其他选项。 #### 启动应用测试 当上述步骤完成后,启动应用程序即可访问默认路径 `/swagger-ui.html` 查看自动生成的 RESTful 接口文档界面。通过浏览器打开该链接可以浏览到所有已暴露出来的 HTTP 请求方法及其参数说明等信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值