法奥机械臂网络配置-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
, 说明配置成功。