寻址方式帧包解析

接下来通过WireShark抓取实际EtherCAT数据包,来对不同寻址方式进行详细分析。

如图所示为某品牌六轴机械臂运行时收发的数据帧,主站通过串行方式直连6台伺服驱动器从站设备,抓包时机械臂各关节在位置模式下做简单运动。

EtherCAT发送数据帧

EtherCAT接收数据帧

可以看到EtherCAT数据帧中包含了顺序寻址(ARMW)、逻辑寻址(LWR、LRD)、设置寻址(FPRD)和广播寻址(BRD)报文。不同Cmd指令描述见表2.3。

可见发送出去和接收进来的报文种类数量都没有改变,但其中的数据内容和Working Counter(Cnt)在从站的操作下发生了相应的改变。下面对每种报文进行解析。

(1)ARMW报文

发送ARMW报文

接收ARMW报文

如图所示为发送和接收的ARMW报文。采用位置寻址,当从站接收到ADP为0时,将地址为ADO的寄存器内容写入报文数据,如果从站接收到ADP不为0时,则将报文数据写入地址为ADO的寄存器,操作完成后对ADP加1。

该报文用于DC时钟同步,链路上第一个具有DC功能的从站作为主时钟。因此发送数据帧ADP=0意味着只有第一个从站会把自己的0x910寄存器数值写入报文,报文中的数据就是第一个从站的系统时间,后面的从站就只是默默地把该数据读入自己的0x910寄存器中。

这里由于链路上第一个从站对该报文进行了1次写操作,另外五个从站对该报文进行了总共5次读操作,因此Cnt=1+1+5=7。

(2)LRD报文

发送LRD报文

接收LRD报文

如图所示为发送和接收的LRD报文。LWR、LRD都采用逻辑寻址,因此从站只需要按照约定(配置)好的,将内存中特定的数据写入报文数据中特定的位置即可。发送时该报文的数据为全零,接收回来的时候就已经被填上数据了。这里的数据内容无非就是PDO过程数据,比如伺服电机的位置、速度、电流、状态字什么的。

这里六个从站分别对该报文进行了1次写操作,因此Cnt=1+6=7。

(3)FPRD报文

发送FPRD报文

接收FPRD报文

如图所示为发送和接收的FPRD报文,采用节点寻址。从站接收到ADP与自己被配置的地址相符,就把ADO地址的寄存器数据写入报文。这里链路上某个从站地址被配置为0x3ec,然后读取它的0x130寄存器的数值写入报文数据。

这里由于链路上只有一个从站对该报文进行了1次写操作,因此Cnt=0+1=1。

(4)BRD报文

 发送BRD报文

接收BRD报文

如图所示为发送和接收的BRD报文。采用广播寻址,ADP没有实际意义,但每经过一个从站就会被加1。这里每个从站都会把ADO,也就是0x130地址的寄存器数值与报文中的数据按位或,然后写入报文。

查手册可知0x130寄存器存放的是从站的数据链路层状态(AL Status),当从站处于不同的状态,对应的比特位就会置1。也就是说,当报文数据中只有bit3为1时,可判断链路上所有从站都进入了OP状态;而当报文数据中bit2和bit3同时为1时(0x000c),链路上至少有一个从站处于SAFEOP且至少有一个处于OP,但具体哪一个也不知道。

这里六个从站分别对该报文进行了1次写操作,因此Cnt=2+6=8。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值