Ethercat 从站开发总结一:协议总结
EtherCAT名称中的CAT为Control Automation Technology(控制自动化技术)首字母的缩写。
每个从站设备都具有可编址的内存,其容量最大可为64KB,能够对其进行连续的或同步的读写操作。可以把多个EtherCAT命令数据嵌入到同一个以太网数据帧中,每个数据对应不同的设备或内存区。
二. EtherCAT 系统组成
全双工传输特性。使用主从模式进行访问控制,主站把数据帧发送给各个从站,每个从站从数据帧中读取自己的数据或把需要输入的数据插入数据帧中,然后将该报文传输到下一个EtherCAT从站。最后一个EtherCAT从站发回经过完全处理的报文,并由第一个从站作为响应报文将其发送给控制单元。
EtherCAT通信是由主站发起的,主站发出的数据帧传输到一个从站站点时,从站将解析数据帧,每个从站从对应报文中读取输出数据,并将输入数据嵌入到子报文中,同时修改工作计数器WKC的值,以标识从站己处理该报文。网段末端的从站处理完报文后,将报文转发回主站(最后一个工业现场设备的EtherCAT从站并且完成相应的操作的时候,在将这个以太网数据报文按原来的路线发送回去,最后由工业现场里第一个EtherCAT从站设备将这个被所有从站设备操作过的网络数据报文作为响应报文发送给自动化控制系统的主站),主站捕获返回的报文并对其进行处理,完成一次通讯过程。一个通讯周期过程中,报文传输延时大概为几个纳秒,克服了传统以太网先对数据包进行解析,再复制成过程数据而造成通讯效率低的缺陷。
EtherCAT主站运行需具备以下几个基本功能:
(1)读取从站设备描述XML文件并对其进行解析,获取其中配置参数
(2)捕获和发送EtherCAT数据帧,完成EtherCAT子报文解析、打包等
(3)管理从站设备状态,运行状态机,完成主从站状态机设置和维护
(4)可进行非周期性数据通信,完成系统参数配置,处理通讯过程中突发事件
(5)实现周期性过程数据通信,实现数据实时交换,实时监控从站状态,从站反馈 信号实时处理等功能。
从站组成
从站采用专用的从站协议控制器(EtherCAT Slave Controller , ESC,本人采用LAN9252)处理网络通信数据。网络数据的处理都在从站协议控制器内部有硬件完成,过程数据接口为从站应用层提供了一个双端口随机存储器( Dual-Port-RAM, DPRAM)来实现数据交换。EtherCAT从站提供网络数据通信和控制任务功能。
EtherCAT Slave Controller(ESC)传输过程:
每个ESC都有四个数据收发端口,并且均可以接收发送以太网帧。
如果ESC的四个端口都有外部链接,数据帧的内部传输顺序固定为端口0 —>端口3 —>端口1 —>端口2 —>端口0,如果某个端口没有外部链接,则此端口关闭,数据帧会自动跳过此端口传输到下一个未关闭的端口。正是由于ESC 这种四端口的收发机制,使得其可以 构成多种物理拓扑结构,如树型、线型和星型结构等。
三. 数据帧结构
EtherCAT数据使用类型为0x88A4 的以太网数据帧进行传输。EtherCAT 数据由数据头(2个字节)和的数据区(44~1498 字节)组成。
数据帧结构说明:
1. 目标地址:接收方MAC地址
2. 源地址:发送方MAC地址
3. 帧类型:0x88A4,EtherCAT数据使用类型为0x88A4的以太网数据帧进行传输。
4. EtherCAT帧头:EtherCAT帧头为11bit数据长度;1bit 保留;4bit 类型,等于1时表示EtherCAT数据处于ESC通信中,其余保留。
EtherCAT帧头 | |||
---|---|---|---|
位数 | 11bits | 1bit | 4bits |
意义 | EtherCAT数据长度 | 保留 | 类型 |
说明 | 即所有子报文长度总和 |
0x01:EtherCAT DLPDU 0x04:network veriable 0x05:mailbox |
5. EtherCAT数据:数据区包含一个或多个EtherCAT 子报文,每一个子报文对应一个独立的从站设备。
1)EtherCAT子报文:
EtherCAT 数据区由不定数目的子报文组成,所有子报文对应操作单独的从站站点。
子报文数据段可根据需求嵌入 CoE、SoE等协议数据格式。
EtherCAT 子报文由子报文头、数据域和工作计数器组成。
2)子报文数据帧格式:
子报文 | ||||||||
子 报 文 头 |
位 数 |
8bits | 8bits | 32bits | 11bits | 4bits | 1bits | 16bits |
意 义 |
命令 | 索引 | 地址区 | 长度 | R | M | 状态位 | |
说 明 |
寻址方式及读写方式 | 帧编码 | 从站地址 | 报文数据区长度 | 保留 | 后续报文标志 | 中断到来标志 | |
数据 | 长度小于2486bytes | |||||||
WKC | 工作计数器,WKC 用来记录从站操作子报文的次数,主站给每个子报文预设了 WKC。设置发送子报文的工作计数器初值为 0,从站正确处理子报文后,工作计数器的值将增加一个增量,主站把返回的子报文中的 WKC 和预设的 WKC 作比较后判断子报文是否被从站正确处理。ESC 在处理数据帧的同时处理 WKC,由通信服务的不同决定 WKC 的增加方式。 |
3)命令码说明:
寻址方式 | 读写模式 | 命令名称 | 值 | 描述 |
顺 序 寻 址 |
读数据 | APRD | 0x01 | 主站使用顺序寻址从从站读取一定长度数据 |
写数据 | APWR | 0x02 | 主站使用顺序寻址向从站写入一定长度数据 | |
读/写 | APRW | 0x03 | 主站使用顺序寻址与从站交换数据 | |
设 置 寻 址 |
读数据 | FPRD | 0x04 | 主站使用设置寻址从从站读取一定长度数据 |
写数据 | FPWR | 0x05 | 主站使用设置寻址向从站写入一定长度数据 | |
读/写 | FPRW | 0x06 | 主站使用设置寻址与从站交换数据 | |
广 播 寻 址 |
读数据 | BRD | 0x07 | 主站从所有从站的物理地址读取数据 |
写数据 | BWR | 0x08 | 主站广播写入所有从站 | |
读/写 | BRW | 0x09 | 主站与所有从站交换数据,对读取的数据 | |
逻 辑 寻 址 |
读数据 | LRD | 0x0a | 主站使用逻辑地址读取一定长度数据 |
写数据 | LWR | 0x0b | 主站使用逻辑地址写入一定长度数据 | |
读/写 | LRW | 0x0c | 主站使用逻辑寻址与从站交换数据 |
6. FCS:帧校验
Ethercat 从站开发总结一:协议总结相关推荐
- EtherCAT从站开发入门
EtherCAT从站开发中,除了常见的ESC(FPGA IP)+DSP方案外,TI.瑞萨.英飞凌等芯片厂家也纷纷推出了集成ESC功能的芯片,本文介绍英飞凌XMC4800芯片的入门使用,并在后续文章中, ...
- Ethercat 从站开发总结四:从站硬件分析
之前的ethercat概述在这推荐一位博主,个人觉得写的很细,文末还有书籍推荐:https://blog.csdn.net/chenweizhen1991/article/details/104840 ...
- Ethercat 从站开发总结二:通讯地址
Ethercat有那么多从站,那么主站究竟如何判断每个从站的呢? 一.EtherCAT 寻址方式 1.网段寻址 EtherCAT 主站与网段之间存在着不同的寻址方式,利用以太网数据帧头的 MAC 地址 ...
- Ethercat 从站开发总结五:给每个从站一个名字——xml描述文件ESI(EtherCAT Slave Information)
从站设备描述文件ESI(EtherCAT Slave Information)是EtherCAT从站设备的配置文件,文件为XML格式.XML文件编写好后,通过主站程序下载到从站设备的EEPROM中,通 ...
- 基于赫优讯COMX嵌入式模块开发EtherCAT从站设备
摘要:随着实时工业以太网技术的发展,在最新版本的IEC61158 Ed.4标准中已经包含了Profinet,EtherCAT,Ethernet/IP,SERCOS III等11种实时以太网行规集.以n ...
- 使用EasyCAT快速开发EtherCAT从站
EasyCAT (Arduino Shield)使用说明 介绍 EasyCAT是Arduino 的扩展板(Arduino Shield),它通过Arduino技术,大大简化了EtherCAT从站的开发 ...
- 基于STM32的EtherCAT从站IO讲解
特别说明: 1.这是一个大佬的tao店:1.0 ha:/₴sklPcDGhJOy₤(我是买他的开发板的) 2.源代码设涉及版权问题,所以博客将不提供源码,请大家谅解 3.欢迎大家加我wx:wxk101 ...
- 【EtherCAT分析】三、EtherCAT从站设备描述文件设计
从站设备描述文件ESI(EtherCAT Slave Information)是EtherCAT从站设备的配置文件,文件为XML格式.XML文件编写好后,通过主站程序下载到从站设备的EEPROM中,通 ...
- 多通路fpga 通信_【论文精选】基于FPGA的EtherCAT从站通信链路分析与验证
原标题:[论文精选]基于FPGA的EtherCAT从站通信链路分析与验证 马保全1,2,姚旺君1,2,刘云龙1,2,张晓莉1,2,黄 兵1,2,赵德政1,2 (1.工业控制系统信息安全技术国家工程实验 ...
最新文章
- 艾宾浩斯计划表自动生成网站_施工进度计划表横道图,自动出图超方便,建议收藏...
- hadoop install start-dfs.sh 失败
- 暑期集训2:ACM基础算法 练习题C:CF-1008A
- zabbix如何配置微信报警
- springboot源码解析autoconfigure之WebMvcAutoConfiguration
- android radiobutton_时隔一年,用新知识重构一个Android控件老库
- oracle+标记要,oracle ORA-00031:session marked for kill(标记要终止的会话)解决方法
- 在C ++中检查一个数组是否是另一个数组的子数组
- Kaggle实战之一回归问题
- 服务器上怎么安虚拟主机呀,上线虚拟主机产品步骤
- 给Android系统瘦身,安卓优化大师:给系统瘦身
- 学界 | Ian Goodfellow最新论文:是猫还是狗?不光神经网络识别不了,你也能被忽悠...
- 移远4g LTE模块at指令集合
- 关于神经网络算法使用场景的思考
- Creator星球教程文章分类导航
- Premiere Pro CC2019安装详细教程
- ks系列服务器,Kimsufi KS4C服务器简单测试
- Oracle查询表名注释及表字段注释
- 可行方向法的matlab代码,zoutendijk 可行方向法的matlab实现
- apicloud模块和html,APICloud模块开发打包
热门文章
- OSINT和被动侦察
- 什么是“富人思维”?
- OpenGL深入探索——阴影贴图(二)
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。...
- 7-3 三维向量运算设计一个三维向量类,实现向量加法、减法以及向量与标量的乘法和除法运算。
- org.springframework.jdbc.BadSqlGrammarException: Error updating database
- android第三方播放器--饺子播放器的使用
- 谈谈Java对象的生命周期
- 汉字转换拼音 java_java 汉字转换拼音
- HCIA网络课程第一周作业