问题描述
目前EtherCAT主站、从站间的通信方式为:通过网线直连后使用层二的EtherCAT数据帧通信。但在云化PLC工控场景中,伴随PLC上云,EtherCAT主站也需要在云端部署,云端与本地使用移动无线网络通信,如5G、WiFi。在这种情况下,层二的EtherCAT数据帧如何在层三网络传输成为问题。
解决方案
使用VxLAN隧道技术,直接在EtherCAT主站与从站间建立层二虚拟隧道,传输EtherCAT数据帧。
本文以Wi-Fi网络为例,设备A代表部署EtherCAT主站的设备,设备B代表从站侧前置设备,方案架构图如下。

实施步骤
设备A代表部署EtherCAT主站的设备,设备B代表从站侧前置设备
设备A配置
创建虚拟网络设备
创建veth,将其配置为EtherCAT主站网卡设备。在后续需要加入虚拟网桥中,这样veth0发出的EtherCAT数据帧会由虚拟网桥发送给VxLAN隧道端点进行封装。
1 | // 创建 |
配置EtherCAT网卡
1 | // 使用vim打开ethercat配置文件 |
1 | // 找到下方内容,将双引号内改为veth0的MAC地址 |
创建vetp
VTEP(VXLAN Tunnel Endpoints)是VXLAN隧道的端点,在两个设备上都要创建。vetp(vxlan0)后续要与veth0加入到同一虚拟网桥中,这样veth0发出的EtherCAT帧会由vxlan0接收,由vxlan0对EtherCAT数据帧封装上vxlan头后再封装udp头,使其成为层三数据帧,最后由设备A上实际的网卡(wlan0)发送出去。相应的其接收到上行的数据帧后也会从中解封装出EtherCAT数据帧,再发送给veth0。
1 | // remote后指定对端设备用于接收vxlan帧的网卡的IP,dev后指定本设备用于发送vxlan帧的网卡名 |
创建虚拟网桥
创建虚拟网桥br0,并将veth1和vxlan0加入其中,使两者能互相收发EtherCAT数据帧。
1 | // 创建虚拟网桥br0 |
设备B配置
创建vxlan
创建设备B上的VXLAN隧道的端点。
1 | ip link add vxlan0 type vxlan id 42 dstport 4789 remote 192.168.31.10 dev wlan0 |
创建虚拟网桥
将vxlan0和设备B连接EtherCAT从站的网口加入虚拟网桥br0。
1 | // 创建虚拟网桥br0 |
到此,EtherCAT主站与从站间的vxlan通道建立完成,EtherCAT主站并不会察觉底层网络的改变,使用和之前无异。但EtherCAT主从间的通信会受网络性能影响,在使用网线时能正常工作,但使用Wi-Fi时系统稳定性较差。
其他命令
1 | // 查看vxlan |