Ethercat“APWR配置从站地址”报文分析(0x0010:0x0011)

2024-01-02 18:10:02

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

APWR:Auto Increment Physical Write。

3b5688f5cce142d9919ac4a5ddd33eab.jpeg

一条Ethercat报文中可以包含多个子报文,每个子报文的地址由ADP+ADO组成,ADP即16 bit High Addr,ADO即16 bit Low Addr。APWR模式下,ADP代表的是从站在网络中按连线顺序的地址,比如与master连接的第一个从站的ADP=0x00,第二个从站的ADP=0x01,第三个从站的ADP=0x02,以此类推。ADO代表的是从站物理寄存器地址,寄存器地址可参考Beckhoff | New Automation Technology | Beckhoff Worldwide的资料《Section II – Register Description Register overview and detailed》。

APWR模式,从站只处理ADP=0的报文,出站后各子报文的ADP(High Addr)加1。

举个应用场景,系统第一次初始化时,通过ADO=0x0010寄存器配置从站地址:

07df650420844bd9b769dda3e06c6b45.png

报文到达第一个从站,处理子报文1(因为它的ADP=0x0000),将data区的值写入ADO寄存器中。报文从第一个从站出来后,子报文2的ADP = 0xFFFF+1 = 0x0000,子报文2的ADP = 0xFFFE+1 =?0xFFFF。报文到达从站2,从站2处理子报文2(因为它的ADP=0x0000),以此类推。

一、发送报文

1,IgH dmesg看到的报文

[ 2501.304424] EtherCAT DEBUG 0: frame size: 46
[ 2501.304424] EtherCAT DEBUG 0: Sending frame:
[ 2501.304425] EtherCAT DEBUG: FF FF FF FF FF FF 6C 24 08 29 52 19 88 A4 0E 10?
[ 2501.304429] EtherCAT DEBUG: 02 03 00 00 10 00 02 00 00 00 01 00 00 00 00 00?
[ 2501.304434] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?
[ 2501.304438] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00?

?2,报文解析

9318c774b0af4752841570964ce4ccbd.jpeg

3,wireshark报文

31870d67c0a64b9a95a9203ad3d9b08f.jpeg

二、接收报文

1,IgH dmesg看到的报文

[ 2501.412236] EtherCAT DEBUG 0: Received frame:
[ 2501.412237] EtherCAT DEBUG: FF FF FF FF FF FF 6E 24 08 29 52 19 88 A4 0E 10?
[ 2501.412242] EtherCAT DEBUG: 02 03 03 00 10 00 02 00 00 00 01 00 01 00 00 00?
[ 2501.412246] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?
[ 2501.412251] EtherCAT DEBUG: 00 00 00 00 00 00 00 00 00 00 00 00?

2,报文解析

c3d5b2319f384d9991054b51339766f1.jpeg

3,wireshark报文

dab95a878c884c8e96d8d3f68f64a7c3.jpeg

?注意:

1)箭头指的地方并不能说明地址为0x0003的从站的地址被改了,只能说明Ethercat数据帧经过的最后一个从站时0x0003。从wireshark报文中看不出哪个从站被修改了地址。

2)Working Cnt为1说明,3个从站中只有1个从站响应了报文。

文章来源:https://blog.csdn.net/geshifei/article/details/135184991
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。