Keep the root README concise while documenting MotorService, the Modbus TCP PLC runtime, the motor stack, and AUBO cabinet IO next to their owning code.
155 lines
3.8 KiB
Markdown
155 lines
3.8 KiB
Markdown
# CMVR-ES
|
||
|
||
## 简介
|
||
|
||
CMVR-ES 工程。
|
||
|
||
## 安装
|
||
|
||
### 1. 拉取 Git 子模块
|
||
|
||
```
|
||
git submodule update --init --recursive
|
||
```
|
||
|
||
### 2. 安装系统依赖
|
||
|
||
```shell
|
||
# 基础工具
|
||
sudo apt-get update
|
||
sudo apt install -y build-essential cmake git pkg-config patchelf libboost-all-dev libssl-dev
|
||
|
||
# OpenCV
|
||
sudo apt install -y \
|
||
libjpeg-dev libpng-dev libtiff-dev \
|
||
libavcodec-dev libavformat-dev libswscale-dev \
|
||
libv4l-dev libxvidcore-dev libx264-dev \
|
||
libgtk-3-dev
|
||
|
||
# PulseAudio
|
||
sudo apt-get install libpulse-dev
|
||
|
||
# OpenGL
|
||
sudo apt-get install libgl1-mesa-dev
|
||
|
||
# GLFW
|
||
sudo apt-get install libglfw3-dev
|
||
|
||
# Assimp
|
||
sudo apt-get install libassimp-dev
|
||
|
||
# visp
|
||
sudo apt-get install -y libx11-dev liblapack-dev libzbar-dev libpthread-stubs0-dev libdc1394-dev nlohmann-json3-dev
|
||
|
||
# RealSense
|
||
sudo apt-get install -y \
|
||
libusb-1.0-0-dev libudev-dev \
|
||
libglu1-mesa-dev
|
||
|
||
# Matplot++
|
||
sudo apt install gnuplot-qt
|
||
```
|
||
|
||
### 3. 配置 IgH EtherCAT
|
||
|
||
工程已内置 IgH EtherCAT 1.7.0 的 userspace 文件:
|
||
|
||
```text
|
||
dependency/x86/third_party/ethercat/v1.7.0
|
||
```
|
||
|
||
先设置本机路径:
|
||
|
||
```shell
|
||
export CMVR_ES_ROOT=/path/to/cmvr-es
|
||
export IGH_ETHERCAT_ROOT=$CMVR_ES_ROOT/dependency/x86/third_party/ethercat/v1.7.0
|
||
```
|
||
|
||
安装当前内核的 header:
|
||
|
||
```shell
|
||
sudo apt-get update
|
||
sudo apt-get install -y linux-headers-$(uname -r)
|
||
```
|
||
|
||
如果内置目录里已经有当前内核版本的 EtherCAT 内核模块,直接安装到系统:
|
||
|
||
```shell
|
||
sudo mkdir -p /lib/modules/$(uname -r)/ethercat
|
||
sudo cp -r $IGH_ETHERCAT_ROOT/lib/modules/$(uname -r)/ethercat/* /lib/modules/$(uname -r)/ethercat/
|
||
sudo depmod
|
||
```
|
||
|
||
内置内核模块只适用于相同内核版本。如果 `$IGH_ETHERCAT_ROOT/lib/modules/$(uname -r)` 不存在,说明这台机器的内核版本不匹配,需要在这台机器上重新编译安装 IgH EtherCAT:
|
||
|
||
```shell
|
||
sudo apt-get update
|
||
sudo apt-get install -y \
|
||
build-essential autoconf automake libtool pkg-config git \
|
||
linux-headers-$(uname -r)
|
||
|
||
cd /tmp
|
||
git clone --branch stable-1.7 --depth 1 https://gitlab.com/etherlab.org/ethercat.git ethercat-stable-1.7
|
||
cd ethercat-stable-1.7
|
||
|
||
./bootstrap
|
||
./configure \
|
||
--prefix=$IGH_ETHERCAT_ROOT \
|
||
--libdir=$IGH_ETHERCAT_ROOT/lib \
|
||
--includedir=$IGH_ETHERCAT_ROOT/include \
|
||
--sysconfdir=$IGH_ETHERCAT_ROOT/etc \
|
||
--with-systemdsystemunitdir=$IGH_ETHERCAT_ROOT/lib/systemd/system \
|
||
--enable-generic \
|
||
--with-linux-dir=/lib/modules/$(uname -r)/build
|
||
|
||
make -j$(nproc) all modules
|
||
make install
|
||
sudo make modules_install
|
||
sudo depmod
|
||
```
|
||
|
||
启动 EtherCAT。`eno1` 换成实际连接 EtherCAT 从站的网卡:
|
||
|
||
```shell
|
||
sudo script/ethercat/start_ethercat.sh eno1
|
||
```
|
||
|
||
脚本会写入内置 IgH 配置文件:
|
||
|
||
```text
|
||
$IGH_ETHERCAT_ROOT/etc/ethercat.conf
|
||
```
|
||
|
||
脚本会把该网卡的 MAC 写到 `MASTER0_DEVICE`,使用 `DEVICE_MODULES="generic"`,把网卡从 NetworkManager 断开,并通过 `ethercatctl -c` 启动 IgH master。
|
||
|
||
查看状态:
|
||
|
||
```shell
|
||
script/ethercat/status_ethercat.sh
|
||
|
||
$IGH_ETHERCAT_ROOT/bin/ethercat master
|
||
$IGH_ETHERCAT_ROOT/bin/ethercat slaves
|
||
$IGH_ETHERCAT_ROOT/bin/ethercat pdos
|
||
```
|
||
|
||
停止 EtherCAT:
|
||
|
||
```shell
|
||
sudo script/ethercat/stop_ethercat.sh eno1
|
||
sudo script/ethercat/stop_ethercat.sh eno1 --restore-network
|
||
```
|
||
|
||
## 组件文档
|
||
|
||
具体能力、配置、协议和安全边界由对应代码目录下的 README 维护:
|
||
|
||
- [MotorService gRPC 接口](cmvr-es/service/README.md#motorservice)
|
||
- [电机设备模块](cmvr-es/devices/motor/README.md)
|
||
- [Modbus TCP PLC runtime](cmvr-es/devices/motor/bus_runtime/modbus_tcp/README.md)
|
||
- [MotorService 与 CMVR PLC v1 完整协议](docs/motor_service_modbus_tcp.md)
|
||
- [AUBO 控制柜 Standard 数字 IO](cmvr-es/devices/arm/aubo_arm/README.md)
|
||
- [配置与部署规则](cmvr-es/config/README.md)
|
||
|
||
Modbus Quick Stop 只是功能性停止,不能替代硬接线急停或驱动器 STO。AUBO
|
||
JSON 接口只访问控制柜 Standard 数字 IO,不访问安全 IO。
|