0

我正在使用 SOEM 和 SOES 库实现 SDO 通信,但我遇到了一些问题,有人可以帮助我吗?更详细地说,我使用一台带有 Ubuntu 的 PC 作为 Ethercat 主机和一个使用 LAN9252 的 ethercat 从机。从机连接到带有窗口 10 的 PC,该窗口用于加载 SOES 程序,一旦加载了软件,它就会在调试模式下保持连接以检查变量。我的 SDO 通信有问题。当我在我的主服务器上使用可选参数 -sdo 从命令窗口运行 slaveinfo.c 程序(该程序包含在 SOEM 库中)时,我获得以下结果:

SOEM (Simple Open EtherCAT Master) Slaveinfo 在 enp2s0 上启动 slaveinfo ec_init 成功。找到并配置了 1 个从站。计算的工作计数器 3

从站:1 名称:SSC_Device 输出大小:1024 位 输入大小:1024 位 状态:4 延迟:0[ns] 有 DC:1 DCParentport:0 活动端口:1.0.0.0 配置地址:1001 人:00000afc ID:00010000 修订:00000001 SM0 A :1000 L:128 F:00010026 类型:1 SM1 A:1200 L:128 F:00010022 类型:2 SM2 A:1400 L:128 F:00010064 类型:3 SM3 A:1600 L:128 F:00010020 类型:4 FMMU0 Ls:00000000 Ll:128 Lsb:0 Leb:7 Ps:1400 Psb:0 Ty:02 Act:01 FMMU1 Ls:00000080 Ll:128 Lsb:0 Leb:7 Ps:1600 Psb:0 Ty:01 Act:01 FMMUfunc 0:1 1:2 2:0 3:0 MBX 长度 wr:128 rd:128 MBX 协议:04 CoE 详细信息:0d FoE 详细信息:00 EoE 详细信息:00 SoE 详细信息:00 Ebus 电流:0[mA] 仅 LRD /LWR:0 ec_slave[cnt].mbx_proto:04 printSDO:1 结束slaveinfo,关闭socket 结束程序

问题是我没有看到根据 CoE 的 PDO 映射。我检查了master和slave之间的包交换,我看到master发送了一个请求,我的slave收到了,然后slave发送了响应请求但是master没有收到。从从属调试器中,我检查了 SM_status(同步管理器状态 SM1 0x080d),它是指示 mailmox 是否已满以及主机是否可以读取的寄存器,我看到该寄存器没有改变值。有人知道是什么问题吗?eeprom 内存需要具有特定的结构以允许正确的 SDO 通信?或者也许只是从属软件的问题?

谢谢。

4

2 回答 2

0

sudo ./slaveinfo eth2 -map

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

Slave:1
 Name:Servo Drives
 Output size: 88bits
 Input size: 88bits
 State: 4
 Delay: 0[ns]
 Has DC: 1
 DCParentport:0
 Activeports:1.0.0.0
 Configured address: 1001
 Man: 0000029c ID: 02c30001 Rev: 00000003
 SM0 A:1000 L: 128 F:00010026 Type:1
 SM1 A:1400 L: 128 F:00010022 Type:2
 SM2 A:1800 L:  11 F:00010064 Type:4
 SM3 A:1c00 L:  11 F:00010020 Type:3
 FMMU0 Ls:00000000 Ll:  11 Lsb:0 Leb:7 Ps:1c00 Psb:0 Ty:02 Act:01
 FMMU1 Ls:0000000b Ll:  11 Lsb:0 Leb:7 Ps:1800 Psb:0 Ty:01 Act:01
 FMMUfunc 0:1 1:2 2:3 3:0
 MBX length wr: 128 rd: 128 MBX protocols : 0e
 CoE details: 2f FoE details: 01 EoE details: 01 SoE details: 00
 Ebus current: 0[mA]
 only LRD/LWR:0
PDO mapping according to CoE :
  SM2 inputs
     addr b   index: sub bitl data_type    name
Number of subindex: 4
  [0x000B.0] 0x6040:0x00 0x10 UNSIGNED16   Control Word
  [0x000D.0] 0x607A:0x00 0x20 INTEGER32    Position set-point
  [0x0011.0] 0x60FF:0x00 0x20 INTEGER32    Velocity set-point
  [0x0015.0] 0x6060:0x00 0x08 INTEGER8     Operation mode
  SM3 outputs
     addr b   index: sub bitl data_type    name
Number of subindex: 4
  [0x0000.0] 0x6041:0x00 0x10 UNSIGNED16   Status Word
  [0x0002.0] 0x6064:0x00 0x20 INTEGER32    Actual position
  [0x0006.0] 0x606C:0x00 0x20 INTEGER32    Actual velocity
  [0x000A.0] 0x6061:0x00 0x08 INTEGER8     Operation mode display
End slaveinfo, close socket
End program
于 2020-07-14T10:27:06.680 回答
0

使用参数 -map 调用 slaveinfo 程序

干杯马可

于 2020-07-06T14:18:04.253 回答