Ethercat “BRD读从站状态”报文分析(0x0130:0x0131)

BRD:Broadcast Read。

基于IgH主站接了3个从站,分析报文。

涉及的从站寄存器:Register AL Status 0x0130:0x0131 。

使用场景举例:

IgH启动时,ec_master_idle_thread线程中,通过ec_fsm_master_state_start 状态机封装0x0130:0x0131报文后,下一状态 ec_fsm_master_state_broadcast 广播读AL status报文,从站返回WKC,从而知道master下面挂了多少个从站。接着比较AL status报文的Working count(从站数datagram->working_counter) 和主站上一次记录的从站数fsm->slaves_responding,二者不相等说明网络拓扑改变了,需要重新扫描网络。

Ethercat的报文格式如下:

一、发送报文

1,IgH dmesg看到的报文

[ 2500.968421] EtherCAT DEBUG 0: frame size: 46
[ 2500.968422] EtherCAT DEBUG 0: Sending frame:
[ 2500.968422] EtherCAT DEBUG: FF FF FF FF FF FF 6C 24 08 29 52 19 88 A4 0E 10 
[ 2500.968427] EtherCAT DEBUG: 07 00 00 00 30 01 02 00 00 00 00 00 00 00 00 00 
[ 2500.968432] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
[ 2500.968436] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00 

2,报文解析

3,wireshark报文

二、响应报文

1,IgH dmesg看到的报文

[ 2501.084361] EtherCAT DEBUG 0: Received frame:
[ 2501.084362] EtherCAT DEBUG: FF FF FF FF FF FF 6E 24 08 29 52 19 88 A4 0E 10 
[ 2501.084367] EtherCAT DEBUG: 07 00 03 00 30 01 02 00 00 00 01 00 03 00 00 00 
[ 2501.084372] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
[ 2501.084376] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00 

2,报文解析

与发送报文差不多,有4个地方有变化:

  • “目的mac”被从站改动了一个字节,6C改成了6E。为什么这样改,不清楚,感觉没必要。
  • “从站地址ADP”,更新成了从站的地址。测试时有3个从站,响应报文中ADP设置为0x0003(报文图例中,低字节在左边) 。这里有个疑问,为什么ADP不是其他2个从站的地址?
  • “子报文数据”,更新成从站的响应数据,0x0130的响应数据2个字节,编码见上图。
  • “Working Count”有3个从站响应,所以计数值变成0x0003。

3,wireshark报文

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值