当前位置: 首页 > news >正文

EtherCAT AOE

目录

  • 前言
  • 集成
      • SSC
      • XML
      • 代码分析
      • 测试
      • 问题
  • 参考文档

前言

AoE(ADS over EtherCAT)的优势:

传统方式依赖SDO下载/上传组合(命令对象),但这种方式效率低,因为至少需要两次完整SDO通信,导致额外开销。

在需要高效并行非周期性通信的场景下,AoE比SDO更优,因其避免了SDO的串行限制,通过Invoke ID实现多请求并发处理。

集成

SSC

SSC里打开AOE支持
在这里插入图片描述
Project -》 Create New Slave File,生成代码和XML

XML

Aoe增加三个属性如下

<Mailbox DataLinkLayer="true"><AoE AdsRouter="1" GenerateOwnNetId="1" InitializeOwnNetId="0"/>......
</Mailbox>

代码分析

增加两个源文件如下

aoeappl.c
ecataoe.c

aoeappl.c中提供了example,可以直接运行。(下面代码有精简)

UINT16    AOEAPPL_AmsInd(AmsCmd MBXMEM *pCmd)
{/* only port 65535 (for the device itself) is valid in this example */if ( port == 65535  ){switch ( indexGroup ){case ADSIGRP_CANOPEN_SDO: /* SDO-Request */UINT16 index = (UINT16) (indexOffset >> 16);UINT8 subindex = (UINT8) (indexOffset & 0xFF);OBJCONST TOBJECT OBJMEM * pObjEntry = OBJ_GetObjectHandle( index );if ( cmdId == ADSSRVID_READ ){result = OBJ_Read( index, subindex, dataLen, pObjEntry, (UINT16 MBXMEM *) &pRes[1], bCompleteAccess );pRes->cbLength = dataLen;pRes->result = 0;AOE_AmsRes((AmsCmd MBXMEM *) pRes, result,(UINT16) dataLen+SIZEOF_TAdsReadRes);return result;} else{}}
}

可以获得信息如下:
port设置为65535
index和subindex设置为COE中的,比如index = 0x1018, Subindex = 0x01, 对应EtherCAT Vendor ID
index group设置为ADSIGRP_CANOPEN_SDO(0xF302)
在这里插入图片描述

测试

Aoe - online 选项卡中填写正确信息,点击read即可
正常运行情况下,应该可以看到Vendor ID

问题

如果平台发生非对齐hardfault,参考
https://blog.csdn.net/qq_42039294/article/details/148402099

参考文档

EtherCAT Protocol Enhancements
Document: ETG.1020 S (D) V1.3.1

http://www.xdnf.cn/news/875233.html

相关文章:

  • Linux防火墙实战演练
  • Vue Router 导航方法完全指南
  • Openwrt 嵌入式Linux发行版
  • 计算机系统结构第5章-线程级并行
  • JAVA 集合进阶 Map集合的实现类 TreeMap
  • 嵌入式分析利器:DuckDB与SqlSugar实战
  • Python中class定义系统讲解
  • promise和异步编程
  • Java框架面试题
  • (1-6-3)Java 多线程
  • iptables实战案例
  • STM32最小CLion开发环境
  • L2-056 被n整除的n位数 - java
  • Docker慢慢学
  • unity+ spine切换武器不换皮肤解决方案
  • C#Winform中DevExpress下的datagridview 特定列可编辑,其他列不可编辑
  • “详规一张图”——香港土地利用数据
  • java.sql.BatchUpdateException: Incorrect string value: ‘\xF0\x9F\x91\x91**...‘
  • 面试题小结(真实面试)
  • Java编程常见错误与最佳实践
  • machine_env_loader must have been assigned before creating ssh child instance
  • hadoop集群启动没有datanode解决
  • PyCharm项目和文件运行时使用conda环境的教程
  • Python趣学篇:用数学方程绘制浪漫爱心
  • SpringBoot+Mybatisplus配置多数据源(超级简单!!!!)
  • #Java篇:学习node后端之sql常用操作
  • BBU 电源市场报告:深入剖析与未来展望​
  • 洛谷P1591阶乘数码
  • GO语言---函数命名返回值
  • 嵌入式系统中常用的开源协议