IgH EtherCat主站启动失败
- Linux内核升级导致的EtherCat内核模块不匹配
-
- 解决方法
-
- [1. 重新编译](#1. 重新编译)
- [2. 配置网卡MAC地址和驱动](#2. 配置网卡MAC地址和驱动)
- [3. 重启主站](#3. 重启主站)
Linux内核升级导致的EtherCat内核模块不匹配
报错信息:
bash
x@x-HP:~$ ethercat slaves
Failed to obtain number of masters: Failed to open master device /dev/EtherCAT0: No such file or directory
x@x-HP:~$ sudo /etc/init.d/ethercat start
Starting EtherCAT master 1.6.7 modprobe: FATAL: Module ec_master not found in directory /lib/modules/6.8.0-107-generic
failed
x@x-HP:~$ sudo /etc/init.d/ethercat status
Checking for EtherCAT master 1.6.7
Master0 dead
x@x-HP:~$ sudo /etc/init.d/ethercat restart
Shutting down EtherCAT master 1.6.7 done
Starting EtherCAT master 1.6.7 modprobe: FATAL: Module ec_master not found in directory /lib/modules/6.8.0-107-generic
failed
原因:Linux 内核升级(现在是 6.8.0-107),但 EtherCAT 的内核模块 ec_master 没有跟着重新编译,所以加载不了,导致启动失败。
解决方法
1. 重新编译
bash
# 进入ethercat的源码目录
cd ~/ethercat
# 清理旧编译
sudo make clean
# 重新编译安装 (启用通用网卡驱动)
sudo ./configure --enable-cycles --enable-8139too=no --prefix=/opt/etherlab --enable-generic=yes --with-linux-dir=/usr/src/linux-headers-$(uname -r)
sudo -s
make
make modules
make install
make modules_install
depmod
2. 配置网卡MAC地址和驱动
bash
# 查看网口地址
ifconfig -a
选定以字母e开头的MAC地址,编辑
- /etc/sysconfig/ethercat
- /opt/etherlab/etc/sysconfig/ethercat
修改:
bash
MASTER0_DEVICE="00:0c:29:xx:xx:xx" # 替换为网卡MAC地址
DEVICE_MODULES="generic" # 使用通用驱动
3. 重启主站
bash
# 重启主站
sudo /etc/init.d/ethercat restar
