WSL Ubuntu 18 上带有 SOEM 的 EtherCAT

问题描述

有没有人试过在 WSL linux 中通过 SOEM 连接到 EtherCAT 设备?

虽然 TwinCAT 成功连接到我的 Maxon EPOS4 并使用 RT-以太网中间驱动程序在 Windows 10 下的笔记本电脑上移动直流电机,但 SOEM slaveinfo 在 WSL 下的 eth0 上没有返回任何从站。

附言。我在笔记本电脑上使用以太网到 USB-c LAN 适配器、自动 IP 地址、安装了 Hyper-V 的 WSL 2 上的 Ubuntu 18.04,并测试了关闭我的 Windows 防火墙。由于编译问题,我还没有在windows下使用过SOEM。最初,我在 eth0 问题上没有找到套接字,但是在安装 hyper-V 并将我的 WSL 当前安装的 ubuntu-18.04 升级到 WSL 2 后它解决了。

我在 WSL Ubuntu 20 下遇到同样的问题,当防火墙被停用时,如果我禁用所有 TwinCAT 服务并从以太网属性窗口中卸载 TwinCAT 项目!

这是我所做的和输出

$ sudo setcap cap_net_raw+ep /opt/ros/melodic/bin/slaveinfo

$ sudo /opt/ros/melodic/bin/slaveinfo

SOEM (Simple Open EtherCAT Master)
Slaveinfo
Usage: slaveinfo ifname [options]
ifname = eth0 for example
Options :
 -sdo : print SDO info
 -map : print mapping
Available adapters
Description : lo,Device to use for wpcap: lo
Description : bond0,Device to use for wpcap: bond0
Description : dummy0,Device to use for wpcap: dummy0
Description : eth0,Device to use for wpcap: eth0
Description : sit0,Device to use for wpcap: sit0
End program

$ sudo /opt/ros/melodic/bin/slaveinfo eth0

SOEM (Simple Open EtherCAT Master)
Slaveinfo
Starting slaveinfo
ec_init on eth0 succeeded.
No slaves found!
End slaveinfo,close socket
End program

解决方法

你能详细说明你的以太网控制器吗?你有一个带有 TwinCAT 和 RT-Ethernet 驱动程序的 USB-C 适配器设置吗?如果是这样,我希望在 WSL 下在 Ubuntu 中运行的 SOEM 无法访问此控制器。

我会在没有安装 TwinCAT 的系统上进行测试,或者回滚 TwinCAT RT-Ethernet 驱动程序安装,以便以太网控制器可用于 Windows 并且大概是 WSL。或者您是否可以使用 TwinCAT 不可用的附加适配器?

,

对我来说,在 windows eth0 上对 epos4 不起作用。我不得不在控制台中编写 getmac 并复制该行

\Device\Tcpip_{------- copy this part ------}.

然后在我的代码中我会写

init_comm("\\Device\\NPF_{--- your copied part ---}");