Как использовать SOEM EtherCAT master на ПК для управления подчиненным устройством EtherCAT

Я пытаюсь управлять подчиненным EtherCAT, который является роботом-захватчиком. Информация о ведомом устройстве выглядит следующим образом, который извлекается с помощью примера программы slaveinfo внутри пакета SOEM:

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

и карта регистров подчиненного устройства выглядит следующим образом:

Теперь я хочу установить бит rACT, который равен 0 в байте 0 выходного регистра, на 1, чтобы я мог активировать устройство.

Я изменяю пример кода simple_test в SOEM. После перевода ведомого устройства в рабочее состояние я попытался:

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

Я не уверен, если это действительно записать значение 1 в бит0 байта0. Все, что я могу видеть, это то, что захват совсем не движется, что не является ожидаемым поведением.

Я полностью застрял здесь и не знаю, какой следующий шаг я должен попробовать, или какой материал я должен изучить. Любые предложения приветствуются! Благодарю.

0 ответов

Другие вопросы по тегам