【发布时间】:2020-10-22 21:40:54
【问题描述】:
我正在使用 SOEM 和 SOES 库实现 SDO 通信,但我遇到了一些问题,有人可以帮助我吗?更详细地说,我使用一台带有 Ubuntu 的个人电脑作为 Ethercat 主机和一台使用 LAN9252 的 ethercat 从机。从站连接到带有窗口 10 的 PC,该窗口用于加载 SOES 程序,一旦加载了软件,它就会保持连接在调试模式以检查变量。我的 SDO 通信有问题。当我在我的主服务器上运行 slaveinfo.c 程序(该程序包含在 SOEM 库中)时,从带有可选参数的命令窗口 -sdo 我获得以下结果:
SOEM(简单开放式 EtherCAT 主站) 从属信息 启动slaveinfo enp2s0 上的 ec_init 成功。 找到并配置了 1 个从站。 计算工作计数器 3
奴隶:1 名称:SSC_Device 输出大小:1024bits 输入大小:1024bits 状态: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 总线电流:0[mA] 仅 LRD/LWR:0 ec_slave[cnt].mbx_proto: 04 打印SDO:1 结束slaveinfo,关闭socket 结束程序
问题是我没有看到根据 CoE 的 PDO 映射。我查看了master和slave之间的包交换,我看到master发送了一个请求,我的slave收到了,然后slave发送了响应请求,但是master没有收到。从从属调试器中,我检查了 SM_status(同步管理器状态 SM1 0x080d),它是指示 mailmox 是否已满以及主机是否可以读取的寄存器,我看到该寄存器的值没有改变。有人知道是什么问题吗? eeprom 内存需要具有特定的结构以允许正确的 SDO 通信?或者可能只是从属软件的问题?
谢谢。
【问题讨论】: