我正在使用SOEM和some库实现SDO通信,但我遇到了一些问题,有人能帮我吗?为了更详细地说明,我使用了一台Pc,其中Ubuntu是Ethercat主机,而ethercat从主机使用的是LAN9252。从机连接到具有窗口10的pc,该窗口用于加载SOES程序,并且一旦加载了软件,它就保持连接在调试模式中以检查变量。我对SDO的通信有点问题。当我在我的主机上用可选参数-sdo从命令窗口运行slaveinfo.c程序(该程序包含在SOEM库中)时,我得到了以下结果:
SOEM (简单打开EtherCAT主机) Slaveinfo在enp2s0上启动slaveinfo ec_init成功。找到并配置了%1个从属。计算的工作计数器3
从:1名称: SSC_Device输出大小:1024位输入大小:1024位状态:4延迟:0 Ps具有DC: 1 DC父端口:0 Activeports:1.0.0.0已配置地址: 1001 Man: 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:0TY:02幕:01 FMMU1 Ls:00000080 Ll: 128LSB:0LEB:7 Ps:1600PSB :0 Ty:01幕:01 FMMUfunc 0:1 1:2 2:0 3:0MBX length wr: 128 rd: 128 MBX协议: 04 CoE details: 0d FoE details: 00 EoE details: 00 SoE details: 00 Ebus current: 0 0mA LRD/LWR:0 ec_slavecnt.mbx_proto: 04 printSDO: 1 End slaveinfo,关闭套接字结束程序
问题是,根据CoE,我看不到PDO映射。我检查了主机和从机之间的包交换,我看到主机发送了一个请求,我的从机收到了它,然后从机发送了响应请求,但主机没有收到它。在从调试器中,我检查了SM_status (同步管理器状态SM1 0x080d),这是一个寄存器,用于指示mailmox是否已满以及主设备是否可以读取,并且我看到该寄存器没有改变值。有人知道问题出在哪里吗?eeprom存储器需要具有特定的结构才能进行正确的SDO通信?或者可能只是一个从属软件问题?
谢谢。
发布于 2020-07-06 22:18:04
使用参数-map调用slaveinfo程序
干杯,马可
发布于 2020-07-14 18:27:07
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 programhttps://stackoverflow.com/questions/62693813
复制相似问题