EtherCAT数据包分析
安装EtherCAT数据包抓取环境
安装tshark
$ sudo apt-get install tshark
抓取数据包
$ sudo tshark -i eth1 -f "ether proto 0x88a4" -w ./ethercat.pcap
数据包解析
EtherCAT报文数据帧结构
- 目的地址: ff ff ff ff ff ff 6个ff说明主从站采用直连模式,如果是开放模式,即EtherCAT网段连接到一个标志的以太网交换机上,那这个地址为第一个从站的ISO/IEC 8802.3的MAC地址。
- 源地址: 01:01:01:01:01:01 ?eth1的MAC地址并不是
- 帧类型: 88a4 固定为0x88A4,如果使用UDP/IP协议有传输EtherCAT数据,需开放UDP端口0x88A4,如下图所示:
- EtherCAT数据长度: 0x00d所有子报文长度总和,该数据长度为11位,发过来是完整的两字节小段模式,正确的排序是0x100d。Type: EtherCAT command(0x1)表示与从站通讯
命令列表
寻址方式 | 读写模式 | 命令名称和编号 | 解释 | WKC |
---|---|---|---|---|
空指令 | ---- | NOP(0) No Operation | 没有操作 | 0 |
顺序寻址 | 读数据 | APRD(1) Auto Increment Read | 主站使用顺序寻址从从站读取一定长度数据,从站对地址加1 | 1 |
顺序寻址 | 写数据 | APWR(2) Auto Increment Write | 主站使用顺序寻址向从站写入一定长度的数据,从站对地址加1 | 1 |
顺序寻址 | 读写 | APWR(3) Auto Increment Write | 主站使用顺序寻址与从站交换数据,从站对地址加1 | 3 |
设置寻址 | 读数据 | FPRD(4) Configured Address Read | 主站使用设置寻址从从站读取一定长度的数据 | 1 |
设置寻址 | 写数据 | FPWR(5) Configured Address Write | 主站使用设置寻址向从站写入一定长度的数据 | 1 |
设置寻址 | 读写 | FPRW(6) Configured Address Read Write | 主站使用设置寻址与从站交换数据 | 3 |
广播寻址 | 读数据 | BRD(7) Broadcast Read | 主站从所有从站的物理地址读取数据并做逻辑或操作,每个从站对地址加1 | 与寻址到从站个数相关 |
广播寻址 | 写数据 | BWR(8) Broadcast Write | 主站广播写入所有从站,每个从站对地址加1 | 与寻址到从站个数相关 |
广播寻址 | 读写 | BRW(9) Broadcast Read Write | 主站与所有从站交换数据,对读取的数据做逻辑或操作,每个从站对地址加1,一般不使用该命令 | 与寻址到从站个数相关 |
逻辑寻址 | 读数据 | LRD(10) Logical Memory Read | 读取的逻辑地址和从站设置FMMU一致时,读取一定长度的数据 | 与寻址到从站个数相关 |
逻辑寻址 | 写数据 | LWR(11) Logical Memory Write | 写入的逻辑地址和从站设置FMMU一致时,写入一定长度的数据 | 与寻址到从站个数相关 |
逻辑寻址 | 读写 | LRW(12) Logical Memory Read Write | 逻辑地址和从站设置FMMU一致时从站交换数据 | 与寻址到从站个数相关 |
顺序寻址 | 读,多重写 | ARMW(13) Auto Increment Read Multiple Write | 由从站读取数据,并写入以后所有从站相同的地址 | 与寻址到从站个数相关 |
设置寻址 | 读,多重写 | FRMW(14) Configured Read Multiple Write | 由从站读取数据,并写入以后所有从站相同的地址 | 与寻址到从站个数相关 |
EtherCAT 寻址方式
顺序寻址:自动增量寻址
- 从站地址由物理连接位置确定
- 每个从站地址自动加1
- 一般用于启动阶段,主站扫描硬件配置时
- 主站为从站设定地址,从站无需手动设置地址
设置寻址:固定寻址
- 通常在硬件扫描配置阶段指定
- 通过从站配置数据存储区加载,然后主站通过顺序寻址方式读取从站
- 从站地址跟物理连接位置无关
- 在掉电以后,固定地址会丢失
逻辑寻址
- 前面介绍的顺序地址和设置寻址并不常用
- 最常用的时逻辑寻址
- 逻辑寻址模式下,整个32位地址空间都将作为地址值。整个网段内有4GB的地址空间可以被寻址
逻辑寻址和FMMU
FMMU = 现场总线存储器管理单元
- 用于映射本地地址空间和全局地址空间之间的地址空间
- FMMU将逻辑地址转换为物理地址,逻辑地址最大4GB
- FMMU寄存器的地址空间在EtherCAT规范中定义
- 95%的应用,3各FMMU已经可以满足需求, MBoxState,Outputs,Inputs
- 仅存在于从站,从而消除了主站中存储管理负担
- 通常用于将过程数据映射到主站