2

我正在尝试控制作为机器人夹持器的 EtherCAT 从站。从机信息如下,使用SOEM包内的示例程序slaveinfo获取:

SOEM (Simple Open EtherCAT Master)
Slaveinfo
Starting slaveinfo
ec_init on eth2 succeeded.
wkc = 1
1 slaves found and configured.
Calculated workcounter 3

Slave:1
Name:netX
Output size: 128bits
Input size: 128bits
State: 4
Delay: 0[ns]
Has DC: 1
DCParentport:0
Activeports:1.0.0.0
Configured address: 1001
Man: 0000ffff ID: 0000000b Rev: 00000000
SM0 A:1000 L: 128 F:00010036 Type:1
SM1 A:1080 L: 128 F:00010032 Type:2
SM2 A:1100 L:  16 F:00010074 Type:3
SM3 A:1d00 L:  16 F:00010030 Type:4
FMMU0 Ls:00000000 Ll:  16 Lsb:0 Leb:7 Ps:1100 Psb:0 Ty:02 Act:01
FMMU1 Ls:00000010 Ll:  16 Lsb:0 Leb:7 Ps:1d00 Psb:0 Ty:01 Act:01
FMMUfunc 0:1 1:3 2:3 3:0
MBX length wr: 128 rd: 128 MBX protocols : 04
CoE details: 33 FoE details: 00 EoE details: 00 SoE details: 00
Ebus current: 0[mA]
only LRD/LWR:0
End slaveinfo, close socket
End program

,从设备的寄存器映射如下:

在此处输入图像描述

在此处输入图像描述

我现在要做的是将输出寄存器的byte0中的bit0的rACT位设置为1,这样我就可以激活设备了。

我修改了SOEM 中的simple_test示例代码。使从设备进入运行状态后,我尝试了:

uint8 * data_ptr;
data_ptr = ec_slave[1].outputs;
*data_ptr = 0x01;
ec_send_processdata();
ec_receive_processdata(EC_TIMEOUTRET);

我不确定这是否真的将值1写入byte0 的 bit0。我所能看到的是抓手根本没有移动,这不是预期的行为。

我完全被困在这里,不知道下一步我应该尝试什么,或者我应该学习什么样的材料。任何建议表示赞赏!谢谢。

4

0 回答 0