如何在PC上使用SOEM EtherCAT主站来控制EtherCAT从站设备

时间:2014-09-14 10:08:00

标签: ethercat

我试图控制一个机器人抓手的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

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

enter image description here

enter image description here

我现在要做的是将rACT位(输出寄存器的byte0中的bit0)设置为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。我只能看到抓手根本不动,这不是预期的行为。

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

0 个答案:

没有答案