法奥机械臂网络配置-Ubuntu

注意事项

  • 如果你的应用场景涉及机械臂 伺服位置控制模式 ,对通信速度还有稳定性有很高的要求。 需要将机械臂运动控制器直接连接 PC的有线网卡 (PCI网卡) 的网口。

    PCI网口要比USB转网口模块/无线连接更加稳定,通信速度也更快

  • 如果PC只有一个网卡(网口), PC同时也需要访问互联网。 此时可以使用USB转网口模块/无线网卡连接路由器上网。

设备接线

机械臂对外的网口在机械臂急停开关(按钮盒)上。 网线一头接急停开关,另外一头接电脑的有线网卡的网口。

配置主机的IP

机械臂运动控制器默认的IP地址为 192.168.58.2 ,PC端需要与机械臂控制器在同一个网段,例如设置固定IP为 192.168.58.10

打开有线连接的IPv4方式配置, 选择到 手动 。 然后做如下配置:

  • PC网卡的IP地址: 192.168.58.10

    注: 这个IP地址里面的设备地址不能跟运动控制器冲突, 不能等于 2

  • 子网掩码: 255.255.255.0

  • DNS选择自动,网关留空即可。

注意事项 :如果网线灯不亮,没有显示有线。说明链路没有通,取决于控制器内部网线接线。具体去看上文的 控制器接线 / 网线接线

修改完成之后, 点击右上角的 应用 按钮。

需要注意的是, 此时你之前的有线连接还是连通状态, 配置是改了但是并没有生效。 将有线连接按钮断开然后重新连接, 此时配置生效。

查看当前有线网卡的IP地址等信息:

访问机械臂Web APP界面

在Ubuntu主机的浏览器输入机械臂运动控制器的IP地址 192.168.58.2 访问机械臂Web管理界面。

输入登录信息:

  • 用户名: admin
  • 密码: 123

点击 登录 按钮。 就可以看到机械臂Web管理界面,可以预览机械臂3D模型以及遥控机械臂。

ping 指令

使用ping指令,可以检查局域网下的设备是否可达。

如果无法正常访问机械臂运动控制器的Web APP, 可以使用 ping 指令,来判断当前PC与机械臂运动控制器之间是否连通。

ping 192.168.58.2

注: 使用 CTRL + C 可以中断ping的进程。

ping指令背后使用的是ICMP协议(互联网控制报文协议), 用于在 IP 主机、路由器之间传递控制消息,属于 TCP/IP 协议族,是网络层协议。 主要用于网络连通性测试、网络延迟测量、路径探测的功能。

感兴趣的话, 可以看下面两个视频 :

这里就不展开讲了。

ethtool 网卡的工作模式

通过 ethtool 命令行工具,可以查看/修改网卡的工作模式。

安装 ethtool

sudo apt install ethtool

通过 ifconfig 命令行, 查看有线网卡的名称, 例如: enp0s31f6

查看特定有线网卡的配置:

sudo ethtool <网卡名称>

示例:

sudo ethtool enp0s31f6

输出日志

# 网卡enp0s31f6的配置项: 
Settings for enp0s31f6:
	Supported ports: [ TP ]
	# 支持的通信速度与半双工/全双工模式
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	# 支持通信速率协商: 是
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	# 建议的工作模式:
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	# 网卡当前的工作模式:
	# - 速度为 100 Mb/s
	Speed: 100Mb/s
	# - 全双工
	Duplex: Full
	# - 端口(传输介质): 双绞线
	Port: Twisted Pair
	PHYAD: 1
	Transceiver: internal
	# 自动沟通传输速率: 开
	# 注: 两个网络设备相互协商,找到双方都支持的最大传输速率
	Auto-negotiation: on
	MDI-X: on (auto)
	Supports Wake-on: pumbg
	Wake-on: g
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

网卡的自动协商机制

两个相互连接的网络设备的通信速度必须一致, 否则二者之间不能通信。

机械臂的有线网卡的通信速度最快是 100Mbps , 我PC的有线网卡最高通信速率为 1000Mbps 。 在连接创建的时候, 二者之间会自动进行沟通 auto-negotiation , 找到二者同时支持的最大通信速率。同时在自动协商的时候, 还可以协商双方的工作模式是全双工还是半双工。

通过上述 ethtool 的输出日志, 我们看到了协商结果为通信速度 100Mbps , 工作模式为全双工 Full

配置网卡为半双工模式

PC网卡与法奥机械臂进行网络连接下, 如果在默认的全双工模式下, 通信质量不稳定。 因此需要设定网卡为半双工工作模式。

查看网卡名称

通过 ifconfig 指令, 查看与机械臂进行有线连接的网卡名称。

ifconfig

可以看到,我这边的有线网卡名称为 enp0s31f6

注: 本文我就以 enp0s31f6 为例, 演示应该如何配置。

你需要修改为自己的网卡名称。

临时配置网卡为半双工模式

通过 ethtool 指令, 临时将网卡配置为半双工模式。

注: 电脑如果重启就会默认恢复为全双工模式, 如果是手动模式, 需要每次电脑开启都执行一次下面这个命令行。

sudo ethtool -s enp0s31f6 speed 100 duplex half autoneg off

查看当前的网络配置

sudo ethtool enp0s31f6

输出日志

ethtool enp0s31f6
Settings for enp0s31f6:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  Not reported
	Advertised pause frame use: No
	Advertised auto-negotiation: No
	Advertised FEC modes: Not reported
	Speed: 100Mb/s
	Duplex: Half
	Port: Twisted Pair
	PHYAD: 1
	Transceiver: internal
	Auto-negotiation: off
	MDI-X: on (auto)
Cannot get wake-on-lan settings: Operation not permitted
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

修改完成之后,再去使用机械臂的Web APP 或者SDK, 就可以看到网络通信稳定了。

开机自动设定网卡为半双工

编辑脚本文件

创建脚本文件

sudo gedit /usr/local/bin/set_half_duplex.sh

填写脚本内容

set_half_duplex.sh

#!/bin/bash
while ! ip link show enp0s31f6 &>/dev/null; do
    sleep 1
done
/sbin/ethtool -s enp0s31f6 speed 100 duplex half autoneg off

赋予脚本有可执行权限

sudo chmod +x /usr/local/bin/set_half_duplex.sh

编辑服务文件

创建服务文件

sudo gedit /etc/systemd/system/set-half-duplex.service

编写内容

[Unit]
Description=Configure enp0s31f6 to Half Duplex
After=network.target sys-subsystem-net-devices-enp0s31f6.device  # 确保网卡设备已就绪

[Service]
Type=oneshot
ExecStart=/usr/local/bin/set_half_duplex.sh

[Install]
WantedBy=multi-user.target

启用并启动服务

重新加载systemd配置:

sudo systemctl daemon-reload

启用服务以在开机时自动运行:

sudo systemctl enable set-half-duplex.service

立即启动服务(无需重启):

sudo systemctl start set-half-duplex.service

验证是否生效

查看服务的执行状态

sudo systemctl status set-half-duplex.service

重启电脑, 启动机械臂,然后查看是否生效。

查看当前的网络配置

sudo ethtool enp0s31f6

如果 Duplex 一栏显示 Half , 说明配置成功。