diff --git a/CMakeLists.txt b/CMakeLists.txt index ca7498b2..7c168288 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,9 @@ set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/output" CACHE PATH "" FORCE) set(CMAKE_BUILD_RPATH "\$ORIGIN:\$ORIGIN/../lib") set(CMAKE_INSTALL_RPATH "\$ORIGIN:\$ORIGIN/../lib") -# Use RUNPATH (new dtags) generally preferable +# Use transitive RPATH so CLion can run build-tree test executables without +# manually setting LD_LIBRARY_PATH for indirect third-party dependencies. +add_link_options(-Wl,--disable-new-dtags) set(CMAKE_BUILD_WITH_INSTALL_RPATH OFF) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) diff --git a/README.md b/README.md index 03b74a5e..1bcb8565 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,25 @@ # CMVR-ES -## Overview +## 简介 -## Installation +CMVR-ES 工程。 -### 1. Git submodules install +## 安装 + +### 1. 拉取 Git 子模块 ``` git submodule update --init --recursive ``` -### 2. Dependency install +### 2. 安装系统依赖 ```shell -# basic +# 基础工具 sudo apt-get update sudo apt install -y build-essential cmake git pkg-config patchelf libboost-all-dev libssl-dev -# opencv +# OpenCV sudo apt install -y \ libjpeg-dev libpng-dev libtiff-dev \ libavcodec-dev libavformat-dev libswscale-dev \ @@ -39,7 +41,7 @@ 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 +# RealSense sudo apt-get install -y \ libusb-1.0-0-dev libudev-dev \ libglu1-mesa-dev @@ -48,4 +50,91 @@ sudo apt-get install -y \ 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 +``` diff --git a/docs/EYOU_ServoModule_ECAT_V145.xml b/docs/EYOU_ServoModule_ECAT_V145.xml new file mode 100644 index 00000000..92f89763 --- /dev/null +++ b/docs/EYOU_ServoModule_ECAT_V145.xml @@ -0,0 +1,5560 @@ + + + + #x1097 + Jiangsu Yiyou Robot Technology Co., Ltd. + 424d760500000000000036000000280000001f0000000e000000010018000000000040050000c40e0000c40e00000000000000000000abc1f68aa9f48aa9f39eb8f5ecf1fdffffffffffff6f95f1b5c8f8a4bcf67499f1fffffffffffff8f9fd608aefedf1fd94b0f4a5bdf6ffffffffffff6991f097b2f56c93f092aff4ffffffffffff88a7f3d8e2fbffffffa1b9f6c4d4f9000000d3defa93aff490adf492aff4ffffffffffffffffff99b4f590adf490acf4fefeffffffffffffff6f94f1becff890adf492aef5f6f8feffffffe9eefc2f66ebdae4fb678ff0678ff0ffffffffffffffffff5a85efdfe7fc97b2f5ffffff000000d1ddfa7096f181a2f2799cf2ffffffffffffb5c8f78dabf4c8d6f990adf4ffffffffffffffffffadc3f75481eea2baf591aef5ffffffffffffe2e9fc9db7f5527fee5d87ef93aff4ffffffffffffffffffe6ecfc225ce9ffffffffffff000000a0b9f64b7aed799cf25783efedf2fdffffffffffff5a86ef7d9ff27b9ef25381eeffffffffffff82a2f26d93f085a4f27397f2ffffffffffffffffff507eee9cb6f5608aef789bf1ffffffffffffffffffffffff5c87efffffffffffff000000e7edfcd4dffaa6bdf6d4dffaffffffffffffffffffcbd8f9f8f9fed3dffaf6f9fefffffffffffffafbfedce5fbd3dffacad8f9ffffffffffffffffffaac0f6e2eafcb2c6f7d0dcfaffffffffffffffffffffffffb6c9f7ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000003a6eeb366beb366beb366beb366beb366beb3167eb5c87efffffffffffffffffffc3d2f96b92f0ccd9f9ffffffffffffffffffaac0f6ffffffbccdf8fafbfeffffffffffffffffffffffffffffffa3bbf67ea0f2a4bcf6ffffffffffff000000094ae70346e70446e70446e70446e70446e70041e63369ebffffffffffffffffff94b0f4003de6a3bbf5fffffffefefe205be90035e4ffffff5380ee003ee6b7caf8fffffffffffff2f5fd114fe80748e70446e70748e71250e8f9fbfe000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99b4f50446e7a9bff6ffffff3066eb1250e82760eaffffff8eabf40849e70043e6edf1fdffffff396dec0f4ee8628bf0ccd9fa5f89ef0f4ee85280ee0000007096f16d93f16d93f16d93f16d93f16d93f16990f088a7f3ffffffffffffffffff9bb5f50446e7afc4f6eff3fd0446e7245eeaffffffffffffffffff80a1f20a4be77d9ff2ffffff0346e61755e9ffffffffffffffffff1552e8225ce90000000648e60144e60144e60144e60144e60144e6003fe63168ebffffffffffffffffff91adf40446e7aac0f6d9e3fb0748e74e7deeffffffffffffffffffb8cbf80849e76a91f0ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee9000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fafe094ae70748e7f1f4fdffffff0547e70d4ce7b8caf8fffffff4f7fe2961ea0849e7aac1f6ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee90000004475ec4072ec4072ec4072ec4072ec4072ec3b6eec648df0ffffffffffff2d64ea0345e7afc4f7ffffffffffff9bb5f50245e60039e5ffffff5480ee0446e73167ebffffffffffff0547e71e59e9ffffffffffffffffff1a57e8255ee9000000265fe9215be9215ce9215ce9215ce9215ce91b57e94a7aedffffff779bf20d4de76890f0ffffffffffffffffffffffffc0d1f92962eaffffff6f94f17ea0f2ffffffffffffffffff0a4be7235deaffffffffffffffffff1f5ae92961ea000000 + + + + + ServoDrive + Servo Drives + 424d760500000000000036000000280000001f0000000e000000010018000000000040050000c40e0000c40e00000000000000000000abc1f68aa9f48aa9f39eb8f5ecf1fdffffffffffff6f95f1b5c8f8a4bcf67499f1fffffffffffff8f9fd608aefedf1fd94b0f4a5bdf6ffffffffffff6991f097b2f56c93f092aff4ffffffffffff88a7f3d8e2fbffffffa1b9f6c4d4f9000000d3defa93aff490adf492aff4ffffffffffffffffff99b4f590adf490acf4fefeffffffffffffff6f94f1becff890adf492aef5f6f8feffffffe9eefc2f66ebdae4fb678ff0678ff0ffffffffffffffffff5a85efdfe7fc97b2f5ffffff000000d1ddfa7096f181a2f2799cf2ffffffffffffb5c8f78dabf4c8d6f990adf4ffffffffffffffffffadc3f75481eea2baf591aef5ffffffffffffe2e9fc9db7f5527fee5d87ef93aff4ffffffffffffffffffe6ecfc225ce9ffffffffffff000000a0b9f64b7aed799cf25783efedf2fdffffffffffff5a86ef7d9ff27b9ef25381eeffffffffffff82a2f26d93f085a4f27397f2ffffffffffffffffff507eee9cb6f5608aef789bf1ffffffffffffffffffffffff5c87efffffffffffff000000e7edfcd4dffaa6bdf6d4dffaffffffffffffffffffcbd8f9f8f9fed3dffaf6f9fefffffffffffffafbfedce5fbd3dffacad8f9ffffffffffffffffffaac0f6e2eafcb2c6f7d0dcfaffffffffffffffffffffffffb6c9f7ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000003a6eeb366beb366beb366beb366beb366beb3167eb5c87efffffffffffffffffffc3d2f96b92f0ccd9f9ffffffffffffffffffaac0f6ffffffbccdf8fafbfeffffffffffffffffffffffffffffffa3bbf67ea0f2a4bcf6ffffffffffff000000094ae70346e70446e70446e70446e70446e70041e63369ebffffffffffffffffff94b0f4003de6a3bbf5fffffffefefe205be90035e4ffffff5380ee003ee6b7caf8fffffffffffff2f5fd114fe80748e70446e70748e71250e8f9fbfe000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99b4f50446e7a9bff6ffffff3066eb1250e82760eaffffff8eabf40849e70043e6edf1fdffffff396dec0f4ee8628bf0ccd9fa5f89ef0f4ee85280ee0000007096f16d93f16d93f16d93f16d93f16d93f16990f088a7f3ffffffffffffffffff9bb5f50446e7afc4f6eff3fd0446e7245eeaffffffffffffffffff80a1f20a4be77d9ff2ffffff0346e61755e9ffffffffffffffffff1552e8225ce90000000648e60144e60144e60144e60144e60144e6003fe63168ebffffffffffffffffff91adf40446e7aac0f6d9e3fb0748e74e7deeffffffffffffffffffb8cbf80849e76a91f0ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee9000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fafe094ae70748e7f1f4fdffffff0547e70d4ce7b8caf8fffffff4f7fe2961ea0849e7aac1f6ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee90000004475ec4072ec4072ec4072ec4072ec4072ec3b6eec648df0ffffffffffff2d64ea0345e7afc4f7ffffffffffff9bb5f50245e60039e5ffffff5480ee0446e73167ebffffffffffff0547e71e59e9ffffffffffffffffff1a57e8255ee9000000265fe9215be9215ce9215ce9215ce9215ce91b57e94a7aedffffff779bf20d4de76890f0ffffffffffffffffffffffffc0d1f92962eaffffff6f94f17ea0f2ffffffffffffffffff0a4be7235deaffffffffffffffffff1f5ae92961ea000000 + + + + + EYOU_ServoModule_V145 + EYOU_ServoModule_ECAT_V145 + + + + 2000 + 9000 + 5000 + 200 + + + + + 100 + 2000 + + + + ServoDrive + + + 402 + + + + + + BIT2 + 2 + + + + BOOL + 1 + + + + DINT + 32 + + + + INT + 16 + + + + SINT + 8 + + + + UDINT + 32 + + + + UINT + 16 + + + + USINT + 8 + + + + REAL + 32 + + + + ARRAY [0..3] OF BYTE + USINT + 32 + + 0 + 4 + + + + + STRING(12) + 96 + + + + STRING(10) + 80 + + + + DT1010 + 112 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Store All Parameters + UDINT + 32 + 16 + + rw + o + + + + 2 + Store Communication Parameters + UDINT + 32 + 48 + + rw + o + + + + 3 + Store Application Parametesr + UDINT + 32 + 80 + + rw + o + + + + + + DT1011 + 112 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Restore All Parameters + UDINT + 32 + 16 + + rw + o + + + + 2 + Restore Communication Parameters + UDINT + 32 + 48 + + rw + o + + + + 3 + Restore Application Parametesr + UDINT + 32 + 80 + + rw + o + + + + + + DT1018 + 144 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Vendor ID + UDINT + 32 + 16 + + ro + o + + + + 2 + Product code + UDINT + 32 + 48 + + ro + o + + + + 3 + Revision + UDINT + 32 + 80 + + ro + o + + + + 4 + Serial number + UDINT + 32 + 112 + + ro + o + + + + + DT1C00ARR + USINT + 32 + + 1 + 4 + + + + DT1C00 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DT1C00ARR + 32 + 16 + + ro + o + + + + + + DT10F1 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Local Error Reaction + UDINT + 32 + 16 + + rw + o + + + + 2 + Sync Error Counter Limit + UDINT + 32 + 48 + + rw + o + + + + + + DT1C32 + 488 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + m + + + + 1 + Synchronization Type + UINT + 16 + 16 + + rw + o + + + + 2 + Cycle Time + UDINT + 32 + 32 + + ro + o + + + + 4 + Synchronization Types supported + UINT + 16 + 96 + + ro + o + + + + 5 + Minimum Cycle Time + UDINT + 32 + 112 + + ro + o + + + + 6 + Calc and Copy Time + UDINT + 32 + 144 + + ro + o + + + + 8 + Get Cycle Time + UINT + 16 + 208 + + rw + c + + + + 9 + Delay Time + UDINT + 32 + 224 + + ro + c + + + + 10 + Sync0 Cycle Time + UDINT + 32 + 256 + + rw + o + + + + 11 + SM-Event Missed + UINT + 16 + 288 + + ro + c + + + + 12 + Cycle Time Too Small + UINT + 16 + 304 + + ro + c + + + + 32 + Sync Error + BOOL + 1 + 480 + + ro + c + + + + + + DT1C33 + 488 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + m + + + + 1 + Synchronization Type + UINT + 16 + 16 + + rw + o + + + + 2 + Cycle Time + UDINT + 32 + 32 + + ro + o + + + + 4 + Synchronization Types supported + UINT + 16 + 96 + + ro + o + + + + 5 + Minimum Cycle Time + UDINT + 32 + 112 + + ro + o + + + + 6 + Calc and Copy Time + UDINT + 32 + 144 + + ro + o + + + + 8 + Get Cycle Time + UINT + 16 + 208 + + rw + c + + + + 9 + Delay Time + UDINT + 32 + 224 + + ro + c + + + + 10 + Sync0 Cycle Time + UDINT + 32 + 256 + + rw + o + + + + 11 + SM-Event Missed + UINT + 16 + 288 + + ro + c + + + + 12 + Cycle Time Too Small + UINT + 16 + 304 + + ro + c + + + + 32 + Sync Error + BOOL + 1 + 480 + + ro + c + + + + + DT1600 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + + + + 1 + 1st Output Object to be mapped + UDINT + 32 + 16 + + rw + o + + + + 2 + 2nd Output Object to be mapped + UDINT + 32 + 48 + + rw + o + + + + 3 + 3rd Output Object to be mapped + UDINT + 32 + 80 + + rw + o + + + + 4 + 4th Output Object to be mapped + UDINT + 32 + 112 + + rw + o + + + + 5 + 5th Output Object to be mapped + UDINT + 32 + 144 + + rw + o + + + + 6 + 6th Output Object to be mapped + UDINT + 32 + 176 + + rw + o + + + + 7 + 7th Output Object to be mapped + UDINT + 32 + 208 + + rw + o + + + + 8 + 8th Output Object to be mapped + UDINT + 32 + 240 + + rw + o + + + + 9 + 9th Output Object to be mapped + UDINT + 32 + 272 + + rw + o + + + + 10 + 10th Output Object to be mapped + UDINT + 32 + 304 + + rw + o + + + + + DT1601 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + + + + 1 + 1st Output Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Output Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Output Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Output Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Output Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Output Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Output Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Output Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Output Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Output Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1602 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + 1st Output Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Output Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Output Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Output Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Output Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Output Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Output Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Output Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Output Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Output Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1A00 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + + + + 1 + 1st Input Object to be mapped + UDINT + 32 + 16 + + rw + o + + + + 2 + 2nd Input Object to be mapped + UDINT + 32 + 48 + + rw + o + + + + 3 + 3rd Input Object to be mapped + UDINT + 32 + 80 + + rw + o + + + + 4 + 4th Input Object to be mapped + UDINT + 32 + 112 + + rw + o + + + + 5 + 5th Input Object to be mapped + UDINT + 32 + 144 + + rw + o + + + + 6 + 6th Input Object to be mapped + UDINT + 32 + 176 + + rw + o + + + + 7 + 7th Input Object to be mapped + UDINT + 32 + 208 + + rw + o + + + + 8 + 8th Input Object to be mapped + UDINT + 32 + 240 + + rw + o + + + + 9 + 9th Input Object to be mapped + UDINT + 32 + 272 + + rw + o + + + + 10 + 10th Input Object to be mapped + UDINT + 32 + 304 + + rw + o + + + + + DT1A01 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + 1st Input Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Input Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Input Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Input Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Input Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Input Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Input Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Input Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Input Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Input Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1A02 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + 1st Input Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Input Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Input Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Input Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Input Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Input Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Input Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Input Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Input Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Input Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1C12ARR + UINT + 32 + + 1 + 2 + + + + DT1C12 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + o + + + + Elements + DT1C12ARR + 32 + 16 + + rw + o + + + + + DT1C13ARR + UINT + 32 + + 1 + 2 + + + + DT1C13 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + o + + + + Elements + DT1C13ARR + 32 + 16 + + rw + o + + + + + DT2001 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Eu Node Id + USINT + 8 + 16 + + rw + o + + + + 2 + Eu Can BitRate + UINT + 16 + 32 + + rw + o + + + + + DT2010 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Current Loop Kp Default + UINT + 16 + 16 + + ro + o + + + + 2 + Current Loop Ki Default + UINT + 16 + 32 + + ro + o + + + + 3 + Current Loop Kp + UINT + 16 + 48 + + rw + o + + + + 4 + Current Loop Ki + UINT + 16 + 64 + + rw + o + + + + + DT2012 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Velocity Loop Kp Default + UINT + 16 + 16 + + ro + o + + + + 2 + Velocity Loop Ki Default + UINT + 16 + 32 + + ro + o + + + + 3 + Velocity Loop Kp + UINT + 16 + 48 + + rw + o + + + + 4 + Velocity Loop Ki + UINT + 16 + 64 + + rw + o + + + + + DT2013 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Position Loop Kp Default + UINT + 16 + 16 + + ro + o + + + + 2 + Position Loop Ki Default + UINT + 16 + 32 + + ro + o + + + + 3 + Position Loop Kp + UINT + 16 + 48 + + rw + o + + + + 4 + Position Loop Ki + UINT + 16 + 64 + + rw + o + + + + + DT2014 + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuBrakeControl + USINT + 8 + 16 + + rw + o + + + + 2 + EuBrakeState + USINT + 8 + 32 + + ro + o + + + + 3 + EuBrakeAutoState + USINT + 8 + 48 + + rw + o + + + + + DT2016 + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Servo Temperture + SINT + 8 + 16 + + ro + o + + + + 2 + EuHighTemperatureLimit + SINT + 8 + 32 + + rw + o + + + + 3 + EuHighTemperatureWindowsTime + UINT + 16 + 48 + + rw + o + + + + + DT2020 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuMotorBlockTorque + UINT + 16 + 16 + + ro + o + + + + 2 + EuMotorBlockTime + UINT + 16 + 32 + + rw + o + + + + 3 + EuMotorBlockVelocity + UDINT + 32 + 48 + + rw + o + + + + + DT2021 + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuVolecityFollowingErrorWindows + UDINT + 32 + 16 + + rw + o + + + + 2 + EuVolecityFollowingErrorTime + UINT + 16 + 48 + + rw + o + + + + + DT202D + 144 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuUnderVoltageThreshold + UDINT + 32 + 16 + + rw + o + + + + 2 + EuUnderVoltageTime + UDINT + 32 + 48 + + rw + o + + + + 3 + EuOverVoltageThreshold + UDINT + 32 + 80 + + rw + o + + + + 4 + EuOverVoltageTime + UDINT + 32 + 112 + + rw + o + + + + + DT202E + 128 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuVelocityFeedforwardControlSelect + INT + 16 + 16 + + rw + o + + + + 2 + EuVelocityFeedforwardFilterTimeConst + INT + 16 + 32 + + rw + o + + + + 3 + EuVelocityFeedforwardGain + INT + 16 + 48 + + rw + o + + + + 4 + EuVelocityFeedforwardOriginalValue + DINT + 32 + 64 + + ro + o + + + + 4 + EuVelocityFeedforwardFilteredValue + DINT + 32 + 96 + + ro + o + + + + + DT210F + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + FocCurBiasA + UINT + 16 + 16 + + ro + o + + + + 2 + FocCurBiasB + UINT + 16 + 32 + + ro + o + + + + 3 + FocCurBiasC + UINT + 16 + 48 + + ro + o + + + + + DT607D + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Min position limit + DINT + 32 + 16 + + rw + o + + + + 2 + Max position limit + DINT + 32 + 48 + + rw + o + + + + + DT6091 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Motor revolutions + UDINT + 32 + 16 + + ro + o + + + + 2 + Shaft revolutions + UDINT + 32 + 48 + + rw + o + + + + + DT60C1 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Interpolation data record + DINT + 32 + 16 + + rw + o + + + + + DT60C2 + 32 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Interpolation period + USINT + 8 + 16 + + rw + o + + + + 2 + Interpolation Index + SINT + 8 + 24 + + rw + o + + + + + DT60FF + 32 + + 0 + Target Velocity + UDINT + 32 + 0 + + rw + o + R + + + + + DT6502 + 32 + + 0 + Supported Drive Modes + UDINT + 32 + 0 + + ro + o + + + + + DTF000 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Module index distance + UINT + 16 + 16 + + ro + o + + + + 2 + Maximum number of modules + UINT + 16 + 32 + + ro + o + + + + + DTF010ARR + UDINT + 64 + + 1 + 2 + + + + DTF010 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DTF010ARR + 64 + 16 + + ro + o + + + + + + DTF030ARR + UDINT + 64 + + 1 + 2 + + + + DTF030 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DTF030ARR + 64 + 16 + + ro + o + + + + + + DTF050ARR + UDINT + 64 + + 1 + 2 + + + + DTF050 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DTF050ARR + 64 + 16 + + ro + o + + + + + + + + #x1000 + Device type + UDINT + 32 + + 92010200 + + + ro + m + + + + #x1001 + Error register + USINT + 8 + + 00 + + + ro + o + + + + #x1008 + Device name + STRING(12) + 96 + + 4575504878782d787878 + + + ro + o + + + + #x1009 + Hardware version + STRING(10) + 80 + + 56332e3046343035 + + + ro + o + + + + #x100a + Software version + STRING(10) + 80 + + 56313433 + + + ro + o + + + + #x1c00 + Sync manager type + DT1C00 + 48 + + + SubIndex 000 + + 04 + + + + SubIndex 001 + + 01 + + + + SubIndex 002 + + 02 + + + + SubIndex 003 + + 03 + + + + SubIndex 004 + + 04 + + + + + ro + o + + + + #x1010 + Store Parameters + DT1010 + 112 + + + SubIndex 000 + + 03 + + + + Store All Parameters + + 00 + + + + Store Communication Parameters + + 00 + + + + Store Application Parameters + + 00 + + + + + rw + o + + + + #x1011 + Restore Default Parameters + DT1011 + 112 + + + SubIndex 000 + + 03 + + + + Store All Parameters + + 00 + + + + Store Communication Parameters + + 00 + + + + Store Application Parameters + + 00 + + + + + rw + o + + + + #x1018 + Identity + DT1018 + 144 + + + SubIndex 000 + + 04 + + + + Vendor ID + + 9710 + + + + Product code + + 0624 + + + + Revision + + 0002 + + + + Serial number + + 00000000 + + + + + ro + o + + + + #x10F1 + Error Settings + DT10F1 + 80 + + + SubIndex 000 + + 04 + + + + Local Error Reaction + + 01 + + + + Sync Error Counter Limit + + 04 + + + + + ro + o + + + + #x1c32 + SM output parameter + DT1C32 + 488 + + + SubIndex 000 + + 20 + + + + Synchronization Type + + 0100 + + + + Cycle Time + + 00000000 + + + + Synchronization Types supported + + 1E40 + + + + Minimum Cycle Time + + 50C30000 + + + + Calc and Copy Time + + 00000000 + + + + Get Cycle Time + + 0000 + + + + Delay Time + + 00000000 + + + + Sync0 Cycle Time + + 00000000 + + + + SM-Event Missed + + 0000 + + + + Cycle Time Too Small + + 0000 + + + + Sync Error + + 00 + + + + + ro + o + + + + #x1c33 + SM input parameter + DT1C33 + 488 + + + SubIndex 000 + + 20 + + + + Synchronization Type + + 2200 + + + + Cycle Time + + 00000000 + + + + Synchronization Types supported + + 1E40 + + + + Minimum Cycle Time + + 50C30000 + + + + Calc and Copy Time + + 00000000 + + + + Get Cycle Time + + 0000 + + + + Delay Time + + 00000000 + + + + Sync0 Cycle Time + + 00000000 + + + + SM-Event Missed + + 0000 + + + + Cycle Time Too Small + + 0000 + + + + Sync Error + + 00 + + + + + ro + o + + + + #x1c12 + RxPDO assign + DT1C12 + 48 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 0016 + + + + SubIndex 002 + + 0000 + + + + + ro + o + + + + #x1c13 + TxPDO assign + DT1C13 + 48 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 001a + + + + SubIndex 002 + + 0000 + + + + + ro + o + + + + #x1600 + csp/csv/cst RxPDO + DT1600 + 336 + + + SubIndex 000 + + 00 + 10 + #x06 + + + + 1st Output Object to be mapped + + #x60400010 + + + + 2st Output Object to be mapped + + #x607A0020 + + + + 3st Output Object to be mapped + + #x60FF0020 + + + + 4st Output Object to be mapped + + #x60710010 + + + + 5st Output Object to be mapped + + #x60600008 + + + + 6st Output Object to be mapped + + #x00000000 + + + + 7st Output Object to be mapped + + #x00000000 + + + + 8st Output Object to be mapped + + #x00000000 + + + + 9st Output Object to be mapped + + #x00000000 + + + + 10st Output Object to be mapped + + #x00000000 + + + + + rw + o + + + + #x1601 + pp/pv/pt RxPDO + DT1601 + 336 + + + SubIndex 000 + + #x0A + + + + 1st Output Object to be mapped + + #x60400010 + + + + 2st Output Object to be mapped + + #x607A0020 + + + + 3st Output Object to be mapped + + #x60FF0020 + + + + 4st Output Object to be mapped + + #x60710010 + + + + 5st Output Object to be mapped + + #x60830020 + + + + 6st Output Object to be mapped + + #x60840020 + + + + 7st Output Object to be mapped + + #x60810020 + + + + 8st Output Object to be mapped + + #x60870010 + + + + 9st Output Object to be mapped + + #x60600008 + + + + 10st Output Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x1602 + pv RxPDO + DT1602 + 336 + + + SubIndex 000 + + #x06 + + + + 1st Output Object to be mapped + + #x60400010 + + + + 2st Output Object to be mapped + + #x60FF0020 + + + + 3st Output Object to be mapped + + #x60830020 + + + + 4st Output Object to be mapped + + #x60840020 + + + + 5st Output Object to be mapped + + #x60600008 + + + + 6st Output Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x1a00 + csp/csv/cst TxPDO + DT1A00 + 336 + + + SubIndex 000 + + 00 + 10 + #x07 + + + + 1st Input Object to be mapped + + #x60410010 + + + + 2st Input Object to be mapped + + #x60640020 + + + + 3st Input Object to be mapped + + #x606C0020 + + + + 4st Input Object to be mapped + + #x60770010 + + + + 5st Input Object to be mapped + + #x60610008 + + + + 6st Input Object to be mapped + + #x603F0010 + + + + 7st Input Object to be mapped + + #x00000000 + + + + 8st Input Object to be mapped + + #x00000000 + + + + 9st Input Object to be mapped + + #x00000000 + + + + 10st Input Object to be mapped + + #x00000000 + + + + + rw + o + + + + #x1a01 + pp/pv/pt TxPDO + DT1A01 + 336 + + + SubIndex 000 + + #x07 + + + + 1st Input Object to be mapped + + #x60410010 + + + + 2st Input Object to be mapped + + #x60640020 + + + + 3st Input Object to be mapped + + #x606C0020 + + + + 4st Input Object to be mapped + + #x60770020 + + + + 5st Input Object to be mapped + + #x60610008 + + + + 6st Input Object to be mapped + + #x603F0010 + + + + 7st Input Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x1a02 + pv TxPDO + DT1A02 + 336 + + + SubIndex 000 + + #x05 + + + + 1st Input Object to be mapped + + #x60410010 + + + + 2st Input Object to be mapped + + #x606C0020 + + + + 3st Input Object to be mapped + + #x60610008 + + + + 4st Input Object to be mapped + + #x603F0010 + + + + 5st Input Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x2000 + Eu Motor SN + UDINT + 32 + + + Eu Motor SN + + 00 + + + + + rw + o + + + + #x2001 + Servo Config + DT2001 + 48 + + + SubIndex 000 + + 02 + + + + Eu Node Id + + 01 + + + + Eu Can BitRate + + 1000 + + + + + ro + o + + + + #x2002 + Motor Para + UDINT + 32 + + + Motor Para + + 00 + + + + + rw + o + + + + #x2003 + Soft Limit State + UDINT + 32 + + + Soft Limit State + + 00 + + + + + rw + o + + + + #x2004 + EuCommMode + USINT + 8 + + + EuCommMode + + 00 + + + + + rw + o + + + + #x2010 + Current Loop Pi + DT2010 + 80 + + + SubIndex 000 + + 04 + + + + Current Loop Kp Default + + 0040 + + + + Current Loop Ki Default + + 0001 + + + + Current Loop Kp + + 0004 + + + + Current Loop Ki + + 0001 + + + + + ro + o + + + + #x2012 + Velocity Loop Pi + DT2012 + 80 + + + SubIndex 000 + + 04 + + + + Velocity Loop Kp Default + + D007 + + + + Velocity Loop Ki Default + + 64 + + + + Velocity Loop Kp + + D007 + + + + Velocity Loop Ki + + 64 + + + + + ro + o + + + + #x2013 + Position Loop Pi + DT2013 + 80 + + + SubIndex 000 + + 04 + + + + Position Loop Kp Default + + D007 + + + + Position Loop Ki Default + + 64 + + + + Position Loop Kp + + D007 + + + + Position Loop Ki + + 64 + + + + + ro + o + + + + #x2014 + brake control + DT2014 + 64 + + + SubIndex 000 + + 03 + + + + EuBrakeControl + + 00 + + + + EuBrakeState + + 00 + + + + EuBrakeAutoState + + 01 + + + + + ro + o + + + + #x2015 + Eu Pwm Inv + USINT + 8 + + + Eu Pwm Inv + + 00 + + + + + ro + o + + + + #x2016 + Servo Temperture + DT2016 + 64 + + + SubIndex 000 + + 03 + + + + EuTemperature + + 19 + + + + EuHighTemperatureLimit + + 55 + + + + EuHighTemperatureWindowsTime + + B80B + + + + + ro + o + + + + #x2017 + EuVelocityIntLimit + UINT + 16 + + + EuVelocityIntLimit + + D007 + + + + + rw + o + + + + #x2020 + Motor Block + DT2020 + 80 + + + SubIndex 000 + + 03 + + + + EuMotorBlockTorque + + E803 + + + + EuMotorBlockTime + + B80B + + + + EuMotorBlockVelocity + + 1027 + + + + + ro + o + + + + #x2021 + velocity floowing error + DT2021 + 64 + + + SubIndex 000 + + 02 + + + + EuVolecityFollowingErrorWindows + + A08601 + + + + EuVolecityFollowingErrorTime + + 0BB8 + + + + + ro + o + + + + #x2022 + torque window + UINT + 16 + + + torque window + + 0A + + + + + rw + o + + + + #x2023 + Torque window time + UINT + 16 + + + Torque window time + + 01 + + + + + rw + o + + + + #x2024 + EuOverSpeedThreshold + UDINT + 32 + + + EuOverSpeedThreshold + + AAAA42 + + + + + rw + o + + + + #x2025 + EuOverSpeedTime + UINT + 16 + + + EuOverSpeedTime + + 64 + + + + + rw + o + + + + #x2026 + EuBrakeDelayTime + USINT + 8 + + + EuBrakeDelayTime + + 64 + + + + + rw + o + + + + #x2027 + EuAutoMagnetAngleAlignmentFlag + UDINT + 32 + + + EuAutoMagnetAngleAlignmentFlag + + 00 + + + + + rw + o + + + + #x2028 + EuI2tLimit + UINT + 16 + + + EuI2tLimit + + 64 + + + + + rw + o + + + + #x2029 + EuI2tValue + UINT + 16 + + + EuI2tValue + + 00 + + + + + ro + o + + + + #x202A + EuFirstEncoderValue + DINT + 32 + + + EuFirstEncoderValue + + 00 + + + + + ro + o + + + + #x202B + EuSecondEncoderValue + DINT + 32 + + + EuSecondEncoderValue + + 00 + + + + + ro + o + + + + #x202C + EuThetaBias + DINT + 32 + + + EuThetaBias + + 00 + + + + + ro + o + + + + #x202D + Eu Voltage Threshold + DT202D + 144 + + + SubIndex 000 + + 04 + + + + EuUnderVoltageThreshold + + 283707 + + + + EuUnderVoltageTime + + 05 + + + + EuOverVoltageThreshold + + A00901 + + + + EuOverVoltageTime + + 05 + + + + + ro + o + + + + #x202E + Eu Velocity Feedforward + DT202E + 128 + + + SubIndex 000 + + 05 + + + + EuVelocityFeedforwardControlSelect + + 01 + + + + EuVelocityFeedforwardFilterTimeConst + + 00 + + + + EuVelocityFeedforwardGain + + 00 + + + + EuVelocityFeedforwardOriginalValue + + 00 + + + + EuVelocityFeedforwardFilteredValue + + 00 + + + + + ro + o + + + + #x2100 + EuDisableFpgaMu150Spi + DINT + 32 + + + EuDisableFpgaMu150Spi + + 00 + + + + + rw + o + + + + #x2104 + ServoMagnetAngleAlignment + UDINT + 32 + + + ServoMagnetAngleAlignment + + 00 + + + + + rw + o + + + + #x2109 + EuGoToBoot + DINT + 32 + + + EuGoToBoot + + 00 + + + + + rw + o + + + + #x210A + EuCompStart + DINT + 32 + + + EuCompStart + + 00 + + + + + rw + o + + + + #x210B + EuCompEn + DINT + 32 + + + EuCompEn + + 00 + + + + + rw + o + + + + #x210C + EuCompBias + DINT + 32 + + + EuCompBias + + 00 + + + + + rw + o + + + + #x210D + EuCompState + DINT + 32 + + + EuCompState + + 00 + + + + + rw + o + + + + #x210E + EuFocCurBiasSet + USINT + 8 + + + EuFocCurBiasSet + + 00 + + + + + rw + o + + + + #x210F + Foc Cur Bias + DT210F + 144 + + + SubIndex 000 + + 03 + + + + FocCurBiasA + + 00 + + + + FocCurBiasB + + 00 + + + + FocCurBiasC + + 00 + + + + + ro + o + + + + #x2110 + EuTorqueFactor + UINT + 16 + + + EuTorqueFactor + + E803 + + + + + rw + o + + + + #x2201 + EuSysOutPulseStep + UDINT + 32 + + + EuSysOutPulseStep + + 00 + + + + + rw + o + + + + #x2301 + Position Velocity Mix Position Kp + UINT + 16 + + + Position Velocity Mix Position Kp + + 00 + + + + + rw + o + + + + #x2302 + Position Velocity Mix Velocity Kd + UINT + 16 + + + Position Velocity Mix Velocity Kd + + 00 + + + + + rw + o + + + + #x603F + Error Code + UINT + 16 + + + Error Code + + 00 + + + + + ro + o + T + + + + #x6040 + Control Word + UINT + 16 + + + Control Word + + 00 + + + + + rw + o + R + + + + #x6041 + Status Word + UINT + 16 + + + Status Word + + 00 + + + + + ro + o + T + + + + #x605A + Quickstop Option Code + INT + 16 + + + Quickstop Option Code + + 02 + + + + + rw + o + + + + #x605B + Shutdown Option Code + INT + 16 + + + Shutdown Option Code + + 00 + + + + + rw + o + + + + #x605C + Disable Operation Option Code + INT + 16 + + + Disable Operation Option Code + + 01 + + + + + rw + o + + + + #x605D + Halt option code + INT + 16 + + + Halt option code + + 01 + + + + + rw + o + + + + #x605E + Fault Reaction Code + INT + 16 + + + Fault Reaction Code + + 02 + + + + + rw + o + + + + #x6060 + Modes of Operation + SINT + 8 + + + Modes of Operation + + 00 + + + + + rw + o + R + + + + #x6061 + Modes of Operation Display + SINT + 8 + + + Modes of Operation Display + + 00 + + + + + ro + o + T + + + + #x6062 + Position demannd value + DINT + 32 + + + Position demannd value + + 00 + + + + + ro + o + T + + + + #x6064 + Position Actual Value + DINT + 32 + + + Position Actual Value + + 00 + + + + + ro + o + T + + + + #x6065 + Maximal following error + UDINT + 32 + + + Maximal following error + + E09304 + + + + + rw + o + + + + #x6067 + Position window + UDINT + 32 + + + Position window + + 64 + + + + + rw + o + + + + #x6068 + Position window time + UINT + 16 + + + Position window time + + 01 + + + + + rw + o + + + + #x606B + Velocity demand value + DINT + 32 + + + Velocity demand value + + 00 + + + + + ro + o + T + + + + #x606C + Velocity Actual Value + DINT + 32 + + + Velocity Actual Value + + 00 + + + + + ro + o + T + + + + #x606D + Velocity window + UINT + 16 + + + Velocity window + + 1027 + + + + + ro + o + + + + #x606E + Velocity window time + UINT + 16 + + + Velocity window time + + 01 + + + + + ro + o + + + + #x606F + Velocity threshold + UINT + 16 + + + Velocity threshold + + E803 + + + + + ro + o + + + + #x6070 + Velocity threshold time + UINT + 16 + + + Velocity threshold time + + 01 + + + + + ro + o + + + + #x6071 + Target Torque + INT + 16 + + + Target Torque + + 00 + + + + + rw + o + + + + #x6072 + Max Torque + UINT + 16 + + + Max Torque + + D007 + + + + + rw + o + + + + #x6074 + Torque demand value + INT + 16 + + + Torque Actual Value + + 00 + + + + + ro + o + T + + + + #x6076 + Motor rated torque + UDINT + 32 + + + Motor rated torque + + 00 + + + + + rw + o + + + + #x6077 + Torque Actual Value + INT + 16 + + + Torque Actual Value + + 00 + + + + + ro + o + T + + + + #x6078 + Current actual value + INT + 16 + + + Current actual value + + 00 + + + + + ro + o + T + + + + #x6079 + DC link circuit voltage + UDINT + 32 + + + DC link circuit voltage + + 00 + + + + + rw + o + + + + #x607A + Target Position + DINT + 32 + + + Target Position + + 00 + + + + + rw + o + R + + + + #x607C + Home Offset + DINT + 32 + + + Home Offset + + 00 + + + + + rw + o + + + + #x607D + Software Position Limit + DT607D + 80 + + + SubIndex 000 + + 02 + + + + Min position limit + + 006CCA88 + + + + Max position limit + + 00943577 + + + + + ro + o + + + + #x607F + Max Profile Velocity + UDINT + 32 + + + Max Profile Velocity + + 00 + + + + + rw + o + + + + #x6081 + Profile Velocity + UDINT + 32 + + + Profile Velocity + + 00 + + + + + rw + o + R + + + + #x6083 + Profile Acceleration + UDINT + 32 + + + Profile Acceleration + + 00 + + + + + rw + o + R + + + + #x6084 + Profile Deceleration + UDINT + 32 + + + Profile Deceleration + + 00 + + + + + rw + o + R + + + + #x6085 + Quickstop Declaration + DINT + 32 + + + Quickstop Declaration + + 00 + + + + + rw + o + + + + #x6087 + Torque slope + UDINT + 32 + + + Torque slope + + E803 + + + + + rw + o + + + + #x6091 + Gear ratio + DT6091 + 80 + + + SubIndex 000 + + 02 + + + + Motor revolutions + + 000051 + + + + Shaft revolutions + + 000051 + + + + + ro + o + + + + #x60B1 + Velocity Offset + DINT + 32 + + + Velocity Offset + + 00 + + + + + rw + o + + + + #x60B2 + Torque Offset + INT + 16 + + + Torque Offset + + 00 + + + + + rw + o + + + + #x60C1 + Interpolation Data Record + DT60C1 + 48 + + + SubIndex 000 + + 01 + + + + Interpolation data record + + 00 + + + + + ro + o + + + + #x60C2 + Interpolation Time Period + DT60C2 + 32 + + + SubIndex 000 + + 02 + + + + Interpolation period + + 01 + + + + Interpolation Index + + -3 + + + + + ro + o + + + + #x60F4 + Following error actual value + DINT + 32 + + + Following error actual value + + 00 + + + + + ro + o + T + + + + #x60FF + Target Velocity + DINT + 32 + + + Target Velocity + + 00 + + + + + rw + o + R + + + + #x6502 + Supported Drive Modes + UDINT + 32 + + + Supported Drive Modes + + 0001 + + + + + ro + o + + + + #xf000 + Modular device profile + DTF000 + 48 + + + SubIndex 000 + + 02 + + + + Module index distance + + 2003 + + + + Maximum number of modules + + 02 + + + + + ro + o + + + + #xf010 + Module profile list + DTF010 + 80 + + + SubIndex 000 + + 02 + + + + SubIndex 001 + + 92010200 + + + + SubIndex 002 + + 00000000 + + + + + ro + o + + + + #xf030 + Configured module Ident list + DTF030 + 80 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 00983100 + + + + SubIndex 002 + + 00000000 + + + + + ro + o + + + + #xf050 + Module detected list + DTF050 + 80 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 00983100 + + + + SubIndex 002 + + 00000000 + + + + + ro + o + + + + + + Outputs + Inputs + MBoxState + MBoxOut + MBoxIn + Outputs + Inputs + + + + + + Synchron + SM-Synchron + #x0 + 0 + 0 + 0 + + + DC + DC-Synchron + #x300 + 0 + 0 + 0 + + + + + Axis 0 + #x119800 + #x219800 + #x319800 + + + + 2048 + 800E00CC8813f000000000800000 + + 424d760500000000000036000000280000001f0000000e000000010018000000000040050000c40e0000c40e00000000000000000000abc1f68aa9f48aa9f39eb8f5ecf1fdffffffffffff6f95f1b5c8f8a4bcf67499f1fffffffffffff8f9fd608aefedf1fd94b0f4a5bdf6ffffffffffff6991f097b2f56c93f092aff4ffffffffffff88a7f3d8e2fbffffffa1b9f6c4d4f9000000d3defa93aff490adf492aff4ffffffffffffffffff99b4f590adf490acf4fefeffffffffffffff6f94f1becff890adf492aef5f6f8feffffffe9eefc2f66ebdae4fb678ff0678ff0ffffffffffffffffff5a85efdfe7fc97b2f5ffffff000000d1ddfa7096f181a2f2799cf2ffffffffffffb5c8f78dabf4c8d6f990adf4ffffffffffffffffffadc3f75481eea2baf591aef5ffffffffffffe2e9fc9db7f5527fee5d87ef93aff4ffffffffffffffffffe6ecfc225ce9ffffffffffff000000a0b9f64b7aed799cf25783efedf2fdffffffffffff5a86ef7d9ff27b9ef25381eeffffffffffff82a2f26d93f085a4f27397f2ffffffffffffffffff507eee9cb6f5608aef789bf1ffffffffffffffffffffffff5c87efffffffffffff000000e7edfcd4dffaa6bdf6d4dffaffffffffffffffffffcbd8f9f8f9fed3dffaf6f9fefffffffffffffafbfedce5fbd3dffacad8f9ffffffffffffffffffaac0f6e2eafcb2c6f7d0dcfaffffffffffffffffffffffffb6c9f7ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000003a6eeb366beb366beb366beb366beb366beb3167eb5c87efffffffffffffffffffc3d2f96b92f0ccd9f9ffffffffffffffffffaac0f6ffffffbccdf8fafbfeffffffffffffffffffffffffffffffa3bbf67ea0f2a4bcf6ffffffffffff000000094ae70346e70446e70446e70446e70446e70041e63369ebffffffffffffffffff94b0f4003de6a3bbf5fffffffefefe205be90035e4ffffff5380ee003ee6b7caf8fffffffffffff2f5fd114fe80748e70446e70748e71250e8f9fbfe000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99b4f50446e7a9bff6ffffff3066eb1250e82760eaffffff8eabf40849e70043e6edf1fdffffff396dec0f4ee8628bf0ccd9fa5f89ef0f4ee85280ee0000007096f16d93f16d93f16d93f16d93f16d93f16990f088a7f3ffffffffffffffffff9bb5f50446e7afc4f6eff3fd0446e7245eeaffffffffffffffffff80a1f20a4be77d9ff2ffffff0346e61755e9ffffffffffffffffff1552e8225ce90000000648e60144e60144e60144e60144e60144e6003fe63168ebffffffffffffffffff91adf40446e7aac0f6d9e3fb0748e74e7deeffffffffffffffffffb8cbf80849e76a91f0ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee9000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fafe094ae70748e7f1f4fdffffff0547e70d4ce7b8caf8fffffff4f7fe2961ea0849e7aac1f6ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee90000004475ec4072ec4072ec4072ec4072ec4072ec3b6eec648df0ffffffffffff2d64ea0345e7afc4f7ffffffffffff9bb5f50245e60039e5ffffff5480ee0446e73167ebffffffffffff0547e71e59e9ffffffffffffffffff1a57e8255ee9000000265fe9215be9215ce9215ce9215ce9215ce91b57e94a7aedffffff779bf20d4de76890f0ffffffffffffffffffffffffc0d1f92962eaffffff6f94f17ea0f2ffffffffffffffffff0a4be7235deaffffffffffffffffff1f5ae92961ea000000 + + + + + Axis (csv,csp,cst) + dynamic switchbewteen csp/csv + + #x1600 + #x1601 + #x1602 + Outputs + + #x6040 + 0 + 16 + Control Word + object 0x6040:0 + UINT + + + #x607A + 0 + 32 + Target Position + object 0x607A:0 + DINT + + + #x60FF + 0 + 32 + Target Velocity + object 0x60FF:0 + DINT + + + #x6071 + 0 + 16 + Target Torque + object 0x6071:0 + INT + + + #x6060 + 0 + 8 + Mode Of Operation + object 0x6060:0 + SINT + + + #x0 + 0 + 8 + + + + #x1a00 + #x1a01 + #x1a02 + Inputs + + #x6041 + 0 + 16 + Status Word + object 0x6041:0 + UINT + + + #x6064 + 0 + 32 + Actual Position + object 0x6064:0 + DINT + + + #x606C + 0 + 32 + Actual Velocity + object 0x606C:0 + DINT + + + #x6077 + 0 + 16 + Actual Torque + object 0x6077:0 + INT + + + #x6061 + 0 + 8 + Mode Of OperationDisplay + object 0x6061:0 + SINT + + + #x603F + 0 + 16 + Error Code + object 0x603F:0 + UINT + + + #x0 + 0 + 8 + + + + 402 + + + + Axis (pp,pv,pt) + Axis only supports pp + + #x1601 + #x1600 + #x1602 + Outputs + + #x6040 + 0 + 16 + Control Word + object 0x6040:0 + UINT + + + #x607A + 0 + 32 + Target Position + object 0x607A:0 + DINT + + + #x60FF + 0 + 32 + Target Velocity + object 0x60FF:0 + DINT + + + #x6071 + 0 + 16 + Target Torque + object 0x6071:0 + INT + + + #x6083 + 0 + 32 + Profile Acceleration + object 0x6083:0 + UDINT + + + #x6084 + 0 + 32 + Profile Deceleration + object 0x6084:0 + UDINT + + + #x6081 + 0 + 32 + Profile Velocity + object 0x6081:0 + UDINT + + + #x6087 + 0 + 32 + Torque Slope + object 0x6087:0 + UDINT + + + #x6060 + 0 + 8 + Modes Of Operation + object 0x6060:0 + SINT + + + #x0 + 0 + 8 + + + + #x1a01 + #x1a00 + #x1a02 + Inputs + + #x6041 + 0 + 16 + Status Word + object 0x6041:0 + UINT + + + #x6064 + 0 + 32 + Actual Position + object 0x6064:0 + DINT + + + #x606C + 0 + 32 + Actual Velocity + object 0x606C:0 + DINT + + + #x6077 + 0 + 16 + Actual Torque + object 0x6077:0 + INT + + + #x6061 + 0 + 8 + Mode Of OperationDisplay + object 0x6061:0 + SINT + + + #x603F + 0 + 16 + Error Code + object 0x603F:0 + UINT + + + #x0 + 0 + 8 + + + + + + SO + #x6060 + 0 + 08 + Modes of operation + + + + + 402 + + + + pv - axis + Axis only supports pv + + #x1602 + #x1600 + #x1601 + Outputs + + #x6040 + 0 + 16 + Control Word + object 0x6040:0 + UINT + + + #x60FF + 0 + 32 + Target Velocity + object 0x60FF:0 + DINT + + + #x6083 + 0 + 32 + Profile Acceleration + object 0x6083:0 + UDINT + + + #x6084 + 0 + 32 + Profile Deceleration + object 0x6084:0 + UDINT + + + #x6060 + 0 + 8 + Modes Of Operation + object 0x6060:0 + SINT + + + #x0 + 0 + 8 + + + + #x1a02 + #x1a00 + #x1a01 + Inputs + + #x6041 + 0 + 16 + Status Word + object 0x6041:0 + UINT + + + #x606C + 0 + 32 + Actual Velocity + object 0x606C:0 + DINT + + + #x6061 + 0 + 8 + Mode Of OperationDisplay + object 0x6061:0 + SINT + + + #x603F + 0 + 16 + Error Code + object 0x603F:0 + UINT + + + #x0 + 0 + 8 + + + + + + SO + #x6060 + 0 + 08 + Modes of operation + + + + + 402 + + + + + diff --git a/docs/EYOU_ServoModule_ECAT_V145_no_slot.xml b/docs/EYOU_ServoModule_ECAT_V145_no_slot.xml new file mode 100644 index 00000000..d8204e8f --- /dev/null +++ b/docs/EYOU_ServoModule_ECAT_V145_no_slot.xml @@ -0,0 +1,5495 @@ + + + + #x1097 + Jiangsu Yiyou Robot Technology Co., Ltd. + 424d760500000000000036000000280000001f0000000e000000010018000000000040050000c40e0000c40e00000000000000000000abc1f68aa9f48aa9f39eb8f5ecf1fdffffffffffff6f95f1b5c8f8a4bcf67499f1fffffffffffff8f9fd608aefedf1fd94b0f4a5bdf6ffffffffffff6991f097b2f56c93f092aff4ffffffffffff88a7f3d8e2fbffffffa1b9f6c4d4f9000000d3defa93aff490adf492aff4ffffffffffffffffff99b4f590adf490acf4fefeffffffffffffff6f94f1becff890adf492aef5f6f8feffffffe9eefc2f66ebdae4fb678ff0678ff0ffffffffffffffffff5a85efdfe7fc97b2f5ffffff000000d1ddfa7096f181a2f2799cf2ffffffffffffb5c8f78dabf4c8d6f990adf4ffffffffffffffffffadc3f75481eea2baf591aef5ffffffffffffe2e9fc9db7f5527fee5d87ef93aff4ffffffffffffffffffe6ecfc225ce9ffffffffffff000000a0b9f64b7aed799cf25783efedf2fdffffffffffff5a86ef7d9ff27b9ef25381eeffffffffffff82a2f26d93f085a4f27397f2ffffffffffffffffff507eee9cb6f5608aef789bf1ffffffffffffffffffffffff5c87efffffffffffff000000e7edfcd4dffaa6bdf6d4dffaffffffffffffffffffcbd8f9f8f9fed3dffaf6f9fefffffffffffffafbfedce5fbd3dffacad8f9ffffffffffffffffffaac0f6e2eafcb2c6f7d0dcfaffffffffffffffffffffffffb6c9f7ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000003a6eeb366beb366beb366beb366beb366beb3167eb5c87efffffffffffffffffffc3d2f96b92f0ccd9f9ffffffffffffffffffaac0f6ffffffbccdf8fafbfeffffffffffffffffffffffffffffffa3bbf67ea0f2a4bcf6ffffffffffff000000094ae70346e70446e70446e70446e70446e70041e63369ebffffffffffffffffff94b0f4003de6a3bbf5fffffffefefe205be90035e4ffffff5380ee003ee6b7caf8fffffffffffff2f5fd114fe80748e70446e70748e71250e8f9fbfe000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99b4f50446e7a9bff6ffffff3066eb1250e82760eaffffff8eabf40849e70043e6edf1fdffffff396dec0f4ee8628bf0ccd9fa5f89ef0f4ee85280ee0000007096f16d93f16d93f16d93f16d93f16d93f16990f088a7f3ffffffffffffffffff9bb5f50446e7afc4f6eff3fd0446e7245eeaffffffffffffffffff80a1f20a4be77d9ff2ffffff0346e61755e9ffffffffffffffffff1552e8225ce90000000648e60144e60144e60144e60144e60144e6003fe63168ebffffffffffffffffff91adf40446e7aac0f6d9e3fb0748e74e7deeffffffffffffffffffb8cbf80849e76a91f0ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee9000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fafe094ae70748e7f1f4fdffffff0547e70d4ce7b8caf8fffffff4f7fe2961ea0849e7aac1f6ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee90000004475ec4072ec4072ec4072ec4072ec4072ec3b6eec648df0ffffffffffff2d64ea0345e7afc4f7ffffffffffff9bb5f50245e60039e5ffffff5480ee0446e73167ebffffffffffff0547e71e59e9ffffffffffffffffff1a57e8255ee9000000265fe9215be9215ce9215ce9215ce9215ce91b57e94a7aedffffff779bf20d4de76890f0ffffffffffffffffffffffffc0d1f92962eaffffff6f94f17ea0f2ffffffffffffffffff0a4be7235deaffffffffffffffffff1f5ae92961ea000000 + + + + + ServoDrive + Servo Drives + 424d760500000000000036000000280000001f0000000e000000010018000000000040050000c40e0000c40e00000000000000000000abc1f68aa9f48aa9f39eb8f5ecf1fdffffffffffff6f95f1b5c8f8a4bcf67499f1fffffffffffff8f9fd608aefedf1fd94b0f4a5bdf6ffffffffffff6991f097b2f56c93f092aff4ffffffffffff88a7f3d8e2fbffffffa1b9f6c4d4f9000000d3defa93aff490adf492aff4ffffffffffffffffff99b4f590adf490acf4fefeffffffffffffff6f94f1becff890adf492aef5f6f8feffffffe9eefc2f66ebdae4fb678ff0678ff0ffffffffffffffffff5a85efdfe7fc97b2f5ffffff000000d1ddfa7096f181a2f2799cf2ffffffffffffb5c8f78dabf4c8d6f990adf4ffffffffffffffffffadc3f75481eea2baf591aef5ffffffffffffe2e9fc9db7f5527fee5d87ef93aff4ffffffffffffffffffe6ecfc225ce9ffffffffffff000000a0b9f64b7aed799cf25783efedf2fdffffffffffff5a86ef7d9ff27b9ef25381eeffffffffffff82a2f26d93f085a4f27397f2ffffffffffffffffff507eee9cb6f5608aef789bf1ffffffffffffffffffffffff5c87efffffffffffff000000e7edfcd4dffaa6bdf6d4dffaffffffffffffffffffcbd8f9f8f9fed3dffaf6f9fefffffffffffffafbfedce5fbd3dffacad8f9ffffffffffffffffffaac0f6e2eafcb2c6f7d0dcfaffffffffffffffffffffffffb6c9f7ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000003a6eeb366beb366beb366beb366beb366beb3167eb5c87efffffffffffffffffffc3d2f96b92f0ccd9f9ffffffffffffffffffaac0f6ffffffbccdf8fafbfeffffffffffffffffffffffffffffffa3bbf67ea0f2a4bcf6ffffffffffff000000094ae70346e70446e70446e70446e70446e70041e63369ebffffffffffffffffff94b0f4003de6a3bbf5fffffffefefe205be90035e4ffffff5380ee003ee6b7caf8fffffffffffff2f5fd114fe80748e70446e70748e71250e8f9fbfe000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99b4f50446e7a9bff6ffffff3066eb1250e82760eaffffff8eabf40849e70043e6edf1fdffffff396dec0f4ee8628bf0ccd9fa5f89ef0f4ee85280ee0000007096f16d93f16d93f16d93f16d93f16d93f16990f088a7f3ffffffffffffffffff9bb5f50446e7afc4f6eff3fd0446e7245eeaffffffffffffffffff80a1f20a4be77d9ff2ffffff0346e61755e9ffffffffffffffffff1552e8225ce90000000648e60144e60144e60144e60144e60144e6003fe63168ebffffffffffffffffff91adf40446e7aac0f6d9e3fb0748e74e7deeffffffffffffffffffb8cbf80849e76a91f0ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee9000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fafe094ae70748e7f1f4fdffffff0547e70d4ce7b8caf8fffffff4f7fe2961ea0849e7aac1f6ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee90000004475ec4072ec4072ec4072ec4072ec4072ec3b6eec648df0ffffffffffff2d64ea0345e7afc4f7ffffffffffff9bb5f50245e60039e5ffffff5480ee0446e73167ebffffffffffff0547e71e59e9ffffffffffffffffff1a57e8255ee9000000265fe9215be9215ce9215ce9215ce9215ce91b57e94a7aedffffff779bf20d4de76890f0ffffffffffffffffffffffffc0d1f92962eaffffff6f94f17ea0f2ffffffffffffffffff0a4be7235deaffffffffffffffffff1f5ae92961ea000000 + + + + + EYOU_ServoModule_V145 + EYOU_ServoModule_ECAT_V145 + + + + 2000 + 9000 + 5000 + 200 + + + + + 100 + 2000 + + + + ServoDrive + + + 402 + + + + + + BIT2 + 2 + + + + BOOL + 1 + + + + DINT + 32 + + + + INT + 16 + + + + SINT + 8 + + + + UDINT + 32 + + + + UINT + 16 + + + + USINT + 8 + + + + REAL + 32 + + + + ARRAY [0..3] OF BYTE + USINT + 32 + + 0 + 4 + + + + + STRING(12) + 96 + + + + STRING(10) + 80 + + + + DT1010 + 112 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Store All Parameters + UDINT + 32 + 16 + + rw + o + + + + 2 + Store Communication Parameters + UDINT + 32 + 48 + + rw + o + + + + 3 + Store Application Parametesr + UDINT + 32 + 80 + + rw + o + + + + + + DT1011 + 112 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Restore All Parameters + UDINT + 32 + 16 + + rw + o + + + + 2 + Restore Communication Parameters + UDINT + 32 + 48 + + rw + o + + + + 3 + Restore Application Parametesr + UDINT + 32 + 80 + + rw + o + + + + + + DT1018 + 144 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Vendor ID + UDINT + 32 + 16 + + ro + o + + + + 2 + Product code + UDINT + 32 + 48 + + ro + o + + + + 3 + Revision + UDINT + 32 + 80 + + ro + o + + + + 4 + Serial number + UDINT + 32 + 112 + + ro + o + + + + + DT1C00ARR + USINT + 32 + + 1 + 4 + + + + DT1C00 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DT1C00ARR + 32 + 16 + + ro + o + + + + + + DT10F1 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Local Error Reaction + UDINT + 32 + 16 + + rw + o + + + + 2 + Sync Error Counter Limit + UDINT + 32 + 48 + + rw + o + + + + + + DT1C32 + 488 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + m + + + + 1 + Synchronization Type + UINT + 16 + 16 + + rw + o + + + + 2 + Cycle Time + UDINT + 32 + 32 + + ro + o + + + + 4 + Synchronization Types supported + UINT + 16 + 96 + + ro + o + + + + 5 + Minimum Cycle Time + UDINT + 32 + 112 + + ro + o + + + + 6 + Calc and Copy Time + UDINT + 32 + 144 + + ro + o + + + + 8 + Get Cycle Time + UINT + 16 + 208 + + rw + c + + + + 9 + Delay Time + UDINT + 32 + 224 + + ro + c + + + + 10 + Sync0 Cycle Time + UDINT + 32 + 256 + + rw + o + + + + 11 + SM-Event Missed + UINT + 16 + 288 + + ro + c + + + + 12 + Cycle Time Too Small + UINT + 16 + 304 + + ro + c + + + + 32 + Sync Error + BOOL + 1 + 480 + + ro + c + + + + + + DT1C33 + 488 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + m + + + + 1 + Synchronization Type + UINT + 16 + 16 + + rw + o + + + + 2 + Cycle Time + UDINT + 32 + 32 + + ro + o + + + + 4 + Synchronization Types supported + UINT + 16 + 96 + + ro + o + + + + 5 + Minimum Cycle Time + UDINT + 32 + 112 + + ro + o + + + + 6 + Calc and Copy Time + UDINT + 32 + 144 + + ro + o + + + + 8 + Get Cycle Time + UINT + 16 + 208 + + rw + c + + + + 9 + Delay Time + UDINT + 32 + 224 + + ro + c + + + + 10 + Sync0 Cycle Time + UDINT + 32 + 256 + + rw + o + + + + 11 + SM-Event Missed + UINT + 16 + 288 + + ro + c + + + + 12 + Cycle Time Too Small + UINT + 16 + 304 + + ro + c + + + + 32 + Sync Error + BOOL + 1 + 480 + + ro + c + + + + + DT1600 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + + + + 1 + 1st Output Object to be mapped + UDINT + 32 + 16 + + rw + o + + + + 2 + 2nd Output Object to be mapped + UDINT + 32 + 48 + + rw + o + + + + 3 + 3rd Output Object to be mapped + UDINT + 32 + 80 + + rw + o + + + + 4 + 4th Output Object to be mapped + UDINT + 32 + 112 + + rw + o + + + + 5 + 5th Output Object to be mapped + UDINT + 32 + 144 + + rw + o + + + + 6 + 6th Output Object to be mapped + UDINT + 32 + 176 + + rw + o + + + + 7 + 7th Output Object to be mapped + UDINT + 32 + 208 + + rw + o + + + + 8 + 8th Output Object to be mapped + UDINT + 32 + 240 + + rw + o + + + + 9 + 9th Output Object to be mapped + UDINT + 32 + 272 + + rw + o + + + + 10 + 10th Output Object to be mapped + UDINT + 32 + 304 + + rw + o + + + + + DT1601 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + + + + 1 + 1st Output Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Output Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Output Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Output Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Output Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Output Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Output Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Output Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Output Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Output Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1602 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + 1st Output Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Output Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Output Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Output Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Output Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Output Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Output Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Output Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Output Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Output Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1A00 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + + + + 1 + 1st Input Object to be mapped + UDINT + 32 + 16 + + rw + o + + + + 2 + 2nd Input Object to be mapped + UDINT + 32 + 48 + + rw + o + + + + 3 + 3rd Input Object to be mapped + UDINT + 32 + 80 + + rw + o + + + + 4 + 4th Input Object to be mapped + UDINT + 32 + 112 + + rw + o + + + + 5 + 5th Input Object to be mapped + UDINT + 32 + 144 + + rw + o + + + + 6 + 6th Input Object to be mapped + UDINT + 32 + 176 + + rw + o + + + + 7 + 7th Input Object to be mapped + UDINT + 32 + 208 + + rw + o + + + + 8 + 8th Input Object to be mapped + UDINT + 32 + 240 + + rw + o + + + + 9 + 9th Input Object to be mapped + UDINT + 32 + 272 + + rw + o + + + + 10 + 10th Input Object to be mapped + UDINT + 32 + 304 + + rw + o + + + + + DT1A01 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + 1st Input Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Input Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Input Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Input Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Input Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Input Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Input Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Input Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Input Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Input Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1A02 + 336 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + 1st Input Object to be mapped + UDINT + 32 + 16 + + ro + o + + + + 2 + 2nd Input Object to be mapped + UDINT + 32 + 48 + + ro + o + + + + 3 + 3rd Input Object to be mapped + UDINT + 32 + 80 + + ro + o + + + + 4 + 4th Input Object to be mapped + UDINT + 32 + 112 + + ro + o + + + + 5 + 5th Input Object to be mapped + UDINT + 32 + 144 + + ro + o + + + + 6 + 6th Input Object to be mapped + UDINT + 32 + 176 + + ro + o + + + + 7 + 7th Input Object to be mapped + UDINT + 32 + 208 + + ro + o + + + + 8 + 8th Input Object to be mapped + UDINT + 32 + 240 + + ro + o + + + + 9 + 9th Input Object to be mapped + UDINT + 32 + 272 + + ro + o + + + + 10 + 10th Input Object to be mapped + UDINT + 32 + 304 + + ro + o + + + + + DT1C12ARR + UINT + 32 + + 1 + 2 + + + + DT1C12 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + o + + + + Elements + DT1C12ARR + 32 + 16 + + rw + o + + + + + DT1C13ARR + UINT + 32 + + 1 + 2 + + + + DT1C13 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + rw + o + + + + Elements + DT1C13ARR + 32 + 16 + + rw + o + + + + + DT2001 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Eu Node Id + USINT + 8 + 16 + + rw + o + + + + 2 + Eu Can BitRate + UINT + 16 + 32 + + rw + o + + + + + DT2010 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Current Loop Kp Default + UINT + 16 + 16 + + ro + o + + + + 2 + Current Loop Ki Default + UINT + 16 + 32 + + ro + o + + + + 3 + Current Loop Kp + UINT + 16 + 48 + + rw + o + + + + 4 + Current Loop Ki + UINT + 16 + 64 + + rw + o + + + + + DT2012 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Velocity Loop Kp Default + UINT + 16 + 16 + + ro + o + + + + 2 + Velocity Loop Ki Default + UINT + 16 + 32 + + ro + o + + + + 3 + Velocity Loop Kp + UINT + 16 + 48 + + rw + o + + + + 4 + Velocity Loop Ki + UINT + 16 + 64 + + rw + o + + + + + DT2013 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Position Loop Kp Default + UINT + 16 + 16 + + ro + o + + + + 2 + Position Loop Ki Default + UINT + 16 + 32 + + ro + o + + + + 3 + Position Loop Kp + UINT + 16 + 48 + + rw + o + + + + 4 + Position Loop Ki + UINT + 16 + 64 + + rw + o + + + + + DT2014 + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuBrakeControl + USINT + 8 + 16 + + rw + o + + + + 2 + EuBrakeState + USINT + 8 + 32 + + ro + o + + + + 3 + EuBrakeAutoState + USINT + 8 + 48 + + rw + o + + + + + DT2016 + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Servo Temperture + SINT + 8 + 16 + + ro + o + + + + 2 + EuHighTemperatureLimit + SINT + 8 + 32 + + rw + o + + + + 3 + EuHighTemperatureWindowsTime + UINT + 16 + 48 + + rw + o + + + + + DT2020 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuMotorBlockTorque + UINT + 16 + 16 + + ro + o + + + + 2 + EuMotorBlockTime + UINT + 16 + 32 + + rw + o + + + + 3 + EuMotorBlockVelocity + UDINT + 32 + 48 + + rw + o + + + + + DT2021 + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuVolecityFollowingErrorWindows + UDINT + 32 + 16 + + rw + o + + + + 2 + EuVolecityFollowingErrorTime + UINT + 16 + 48 + + rw + o + + + + + DT202D + 144 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuUnderVoltageThreshold + UDINT + 32 + 16 + + rw + o + + + + 2 + EuUnderVoltageTime + UDINT + 32 + 48 + + rw + o + + + + 3 + EuOverVoltageThreshold + UDINT + 32 + 80 + + rw + o + + + + 4 + EuOverVoltageTime + UDINT + 32 + 112 + + rw + o + + + + + DT202E + 128 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + EuVelocityFeedforwardControlSelect + INT + 16 + 16 + + rw + o + + + + 2 + EuVelocityFeedforwardFilterTimeConst + INT + 16 + 32 + + rw + o + + + + 3 + EuVelocityFeedforwardGain + INT + 16 + 48 + + rw + o + + + + 4 + EuVelocityFeedforwardOriginalValue + DINT + 32 + 64 + + ro + o + + + + 4 + EuVelocityFeedforwardFilteredValue + DINT + 32 + 96 + + ro + o + + + + + DT210F + 64 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + FocCurBiasA + UINT + 16 + 16 + + ro + o + + + + 2 + FocCurBiasB + UINT + 16 + 32 + + ro + o + + + + 3 + FocCurBiasC + UINT + 16 + 48 + + ro + o + + + + + DT607D + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Min position limit + DINT + 32 + 16 + + rw + o + + + + 2 + Max position limit + DINT + 32 + 48 + + rw + o + + + + + DT6091 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Motor revolutions + UDINT + 32 + 16 + + ro + o + + + + 2 + Shaft revolutions + UDINT + 32 + 48 + + rw + o + + + + + DT60C1 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Interpolation data record + DINT + 32 + 16 + + rw + o + + + + + DT60C2 + 32 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Interpolation period + USINT + 8 + 16 + + rw + o + + + + 2 + Interpolation Index + SINT + 8 + 24 + + rw + o + + + + + DT60FF + 32 + + 0 + Target Velocity + UDINT + 32 + 0 + + rw + o + R + + + + + DT6502 + 32 + + 0 + Supported Drive Modes + UDINT + 32 + 0 + + ro + o + + + + + DTF000 + 48 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + 1 + Module index distance + UINT + 16 + 16 + + ro + o + + + + 2 + Maximum number of modules + UINT + 16 + 32 + + ro + o + + + + + DTF010ARR + UDINT + 64 + + 1 + 2 + + + + DTF010 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DTF010ARR + 64 + 16 + + ro + o + + + + + + DTF030ARR + UDINT + 64 + + 1 + 2 + + + + DTF030 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DTF030ARR + 64 + 16 + + ro + o + + + + + + DTF050ARR + UDINT + 64 + + 1 + 2 + + + + DTF050 + 80 + + 0 + SubIndex 000 + USINT + 8 + 0 + + ro + o + + + + Elements + DTF050ARR + 64 + 16 + + ro + o + + + + + + + + #x1000 + Device type + UDINT + 32 + + 92010200 + + + ro + m + + + + #x1001 + Error register + USINT + 8 + + 00 + + + ro + o + + + + #x1008 + Device name + STRING(12) + 96 + + 4575504878782d787878 + + + ro + o + + + + #x1009 + Hardware version + STRING(10) + 80 + + 56332e3046343035 + + + ro + o + + + + #x100a + Software version + STRING(10) + 80 + + 56313433 + + + ro + o + + + + #x1c00 + Sync manager type + DT1C00 + 48 + + + SubIndex 000 + + 04 + + + + SubIndex 001 + + 01 + + + + SubIndex 002 + + 02 + + + + SubIndex 003 + + 03 + + + + SubIndex 004 + + 04 + + + + + ro + o + + + + #x1010 + Store Parameters + DT1010 + 112 + + + SubIndex 000 + + 03 + + + + Store All Parameters + + 00 + + + + Store Communication Parameters + + 00 + + + + Store Application Parameters + + 00 + + + + + rw + o + + + + #x1011 + Restore Default Parameters + DT1011 + 112 + + + SubIndex 000 + + 03 + + + + Store All Parameters + + 00 + + + + Store Communication Parameters + + 00 + + + + Store Application Parameters + + 00 + + + + + rw + o + + + + #x1018 + Identity + DT1018 + 144 + + + SubIndex 000 + + 04 + + + + Vendor ID + + 9710 + + + + Product code + + 0624 + + + + Revision + + 0002 + + + + Serial number + + 00000000 + + + + + ro + o + + + + #x10F1 + Error Settings + DT10F1 + 80 + + + SubIndex 000 + + 04 + + + + Local Error Reaction + + 01 + + + + Sync Error Counter Limit + + 04 + + + + + ro + o + + + + #x1c32 + SM output parameter + DT1C32 + 488 + + + SubIndex 000 + + 20 + + + + Synchronization Type + + 0100 + + + + Cycle Time + + 00000000 + + + + Synchronization Types supported + + 1E40 + + + + Minimum Cycle Time + + 50C30000 + + + + Calc and Copy Time + + 00000000 + + + + Get Cycle Time + + 0000 + + + + Delay Time + + 00000000 + + + + Sync0 Cycle Time + + 00000000 + + + + SM-Event Missed + + 0000 + + + + Cycle Time Too Small + + 0000 + + + + Sync Error + + 00 + + + + + ro + o + + + + #x1c33 + SM input parameter + DT1C33 + 488 + + + SubIndex 000 + + 20 + + + + Synchronization Type + + 2200 + + + + Cycle Time + + 00000000 + + + + Synchronization Types supported + + 1E40 + + + + Minimum Cycle Time + + 50C30000 + + + + Calc and Copy Time + + 00000000 + + + + Get Cycle Time + + 0000 + + + + Delay Time + + 00000000 + + + + Sync0 Cycle Time + + 00000000 + + + + SM-Event Missed + + 0000 + + + + Cycle Time Too Small + + 0000 + + + + Sync Error + + 00 + + + + + ro + o + + + + #x1c12 + RxPDO assign + DT1C12 + 48 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 0016 + + + + SubIndex 002 + + 0000 + + + + + ro + o + + + + #x1c13 + TxPDO assign + DT1C13 + 48 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 001a + + + + SubIndex 002 + + 0000 + + + + + ro + o + + + + #x1600 + csp/csv/cst RxPDO + DT1600 + 336 + + + SubIndex 000 + + 00 + 10 + #x06 + + + + 1st Output Object to be mapped + + #x60400010 + + + + 2st Output Object to be mapped + + #x607A0020 + + + + 3st Output Object to be mapped + + #x60FF0020 + + + + 4st Output Object to be mapped + + #x60710010 + + + + 5st Output Object to be mapped + + #x60600008 + + + + 6st Output Object to be mapped + + #x00000000 + + + + 7st Output Object to be mapped + + #x00000000 + + + + 8st Output Object to be mapped + + #x00000000 + + + + 9st Output Object to be mapped + + #x00000000 + + + + 10st Output Object to be mapped + + #x00000000 + + + + + rw + o + + + + #x1601 + pp/pv/pt RxPDO + DT1601 + 336 + + + SubIndex 000 + + #x0A + + + + 1st Output Object to be mapped + + #x60400010 + + + + 2st Output Object to be mapped + + #x607A0020 + + + + 3st Output Object to be mapped + + #x60FF0020 + + + + 4st Output Object to be mapped + + #x60710010 + + + + 5st Output Object to be mapped + + #x60830020 + + + + 6st Output Object to be mapped + + #x60840020 + + + + 7st Output Object to be mapped + + #x60810020 + + + + 8st Output Object to be mapped + + #x60870010 + + + + 9st Output Object to be mapped + + #x60600008 + + + + 10st Output Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x1602 + pv RxPDO + DT1602 + 336 + + + SubIndex 000 + + #x06 + + + + 1st Output Object to be mapped + + #x60400010 + + + + 2st Output Object to be mapped + + #x60FF0020 + + + + 3st Output Object to be mapped + + #x60830020 + + + + 4st Output Object to be mapped + + #x60840020 + + + + 5st Output Object to be mapped + + #x60600008 + + + + 6st Output Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x1a00 + csp/csv/cst TxPDO + DT1A00 + 336 + + + SubIndex 000 + + 00 + 10 + #x07 + + + + 1st Input Object to be mapped + + #x60410010 + + + + 2st Input Object to be mapped + + #x60640020 + + + + 3st Input Object to be mapped + + #x606C0020 + + + + 4st Input Object to be mapped + + #x60770010 + + + + 5st Input Object to be mapped + + #x60610008 + + + + 6st Input Object to be mapped + + #x603F0010 + + + + 7st Input Object to be mapped + + #x00000000 + + + + 8st Input Object to be mapped + + #x00000000 + + + + 9st Input Object to be mapped + + #x00000000 + + + + 10st Input Object to be mapped + + #x00000000 + + + + + rw + o + + + + #x1a01 + pp/pv/pt TxPDO + DT1A01 + 336 + + + SubIndex 000 + + #x07 + + + + 1st Input Object to be mapped + + #x60410010 + + + + 2st Input Object to be mapped + + #x60640020 + + + + 3st Input Object to be mapped + + #x606C0020 + + + + 4st Input Object to be mapped + + #x60770020 + + + + 5st Input Object to be mapped + + #x60610008 + + + + 6st Input Object to be mapped + + #x603F0010 + + + + 7st Input Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x1a02 + pv TxPDO + DT1A02 + 336 + + + SubIndex 000 + + #x05 + + + + 1st Input Object to be mapped + + #x60410010 + + + + 2st Input Object to be mapped + + #x606C0020 + + + + 3st Input Object to be mapped + + #x60610008 + + + + 4st Input Object to be mapped + + #x603F0010 + + + + 5st Input Object to be mapped + + #x00000000 + + + + + ro + o + + + + #x2000 + Eu Motor SN + UDINT + 32 + + + Eu Motor SN + + 00 + + + + + rw + o + + + + #x2001 + Servo Config + DT2001 + 48 + + + SubIndex 000 + + 02 + + + + Eu Node Id + + 01 + + + + Eu Can BitRate + + 1000 + + + + + ro + o + + + + #x2002 + Motor Para + UDINT + 32 + + + Motor Para + + 00 + + + + + rw + o + + + + #x2003 + Soft Limit State + UDINT + 32 + + + Soft Limit State + + 00 + + + + + rw + o + + + + #x2004 + EuCommMode + USINT + 8 + + + EuCommMode + + 00 + + + + + rw + o + + + + #x2010 + Current Loop Pi + DT2010 + 80 + + + SubIndex 000 + + 04 + + + + Current Loop Kp Default + + 0040 + + + + Current Loop Ki Default + + 0001 + + + + Current Loop Kp + + 0004 + + + + Current Loop Ki + + 0001 + + + + + ro + o + + + + #x2012 + Velocity Loop Pi + DT2012 + 80 + + + SubIndex 000 + + 04 + + + + Velocity Loop Kp Default + + D007 + + + + Velocity Loop Ki Default + + 64 + + + + Velocity Loop Kp + + D007 + + + + Velocity Loop Ki + + 64 + + + + + ro + o + + + + #x2013 + Position Loop Pi + DT2013 + 80 + + + SubIndex 000 + + 04 + + + + Position Loop Kp Default + + D007 + + + + Position Loop Ki Default + + 64 + + + + Position Loop Kp + + D007 + + + + Position Loop Ki + + 64 + + + + + ro + o + + + + #x2014 + brake control + DT2014 + 64 + + + SubIndex 000 + + 03 + + + + EuBrakeControl + + 00 + + + + EuBrakeState + + 00 + + + + EuBrakeAutoState + + 01 + + + + + ro + o + + + + #x2015 + Eu Pwm Inv + USINT + 8 + + + Eu Pwm Inv + + 00 + + + + + ro + o + + + + #x2016 + Servo Temperture + DT2016 + 64 + + + SubIndex 000 + + 03 + + + + EuTemperature + + 19 + + + + EuHighTemperatureLimit + + 55 + + + + EuHighTemperatureWindowsTime + + B80B + + + + + ro + o + + + + #x2017 + EuVelocityIntLimit + UINT + 16 + + + EuVelocityIntLimit + + D007 + + + + + rw + o + + + + #x2020 + Motor Block + DT2020 + 80 + + + SubIndex 000 + + 03 + + + + EuMotorBlockTorque + + E803 + + + + EuMotorBlockTime + + B80B + + + + EuMotorBlockVelocity + + 1027 + + + + + ro + o + + + + #x2021 + velocity floowing error + DT2021 + 64 + + + SubIndex 000 + + 02 + + + + EuVolecityFollowingErrorWindows + + A08601 + + + + EuVolecityFollowingErrorTime + + 0BB8 + + + + + ro + o + + + + #x2022 + torque window + UINT + 16 + + + torque window + + 0A + + + + + rw + o + + + + #x2023 + Torque window time + UINT + 16 + + + Torque window time + + 01 + + + + + rw + o + + + + #x2024 + EuOverSpeedThreshold + UDINT + 32 + + + EuOverSpeedThreshold + + AAAA42 + + + + + rw + o + + + + #x2025 + EuOverSpeedTime + UINT + 16 + + + EuOverSpeedTime + + 64 + + + + + rw + o + + + + #x2026 + EuBrakeDelayTime + USINT + 8 + + + EuBrakeDelayTime + + 64 + + + + + rw + o + + + + #x2027 + EuAutoMagnetAngleAlignmentFlag + UDINT + 32 + + + EuAutoMagnetAngleAlignmentFlag + + 00 + + + + + rw + o + + + + #x2028 + EuI2tLimit + UINT + 16 + + + EuI2tLimit + + 64 + + + + + rw + o + + + + #x2029 + EuI2tValue + UINT + 16 + + + EuI2tValue + + 00 + + + + + ro + o + + + + #x202A + EuFirstEncoderValue + DINT + 32 + + + EuFirstEncoderValue + + 00 + + + + + ro + o + + + + #x202B + EuSecondEncoderValue + DINT + 32 + + + EuSecondEncoderValue + + 00 + + + + + ro + o + + + + #x202C + EuThetaBias + DINT + 32 + + + EuThetaBias + + 00 + + + + + ro + o + + + + #x202D + Eu Voltage Threshold + DT202D + 144 + + + SubIndex 000 + + 04 + + + + EuUnderVoltageThreshold + + 283707 + + + + EuUnderVoltageTime + + 05 + + + + EuOverVoltageThreshold + + A00901 + + + + EuOverVoltageTime + + 05 + + + + + ro + o + + + + #x202E + Eu Velocity Feedforward + DT202E + 128 + + + SubIndex 000 + + 05 + + + + EuVelocityFeedforwardControlSelect + + 01 + + + + EuVelocityFeedforwardFilterTimeConst + + 00 + + + + EuVelocityFeedforwardGain + + 00 + + + + EuVelocityFeedforwardOriginalValue + + 00 + + + + EuVelocityFeedforwardFilteredValue + + 00 + + + + + ro + o + + + + #x2100 + EuDisableFpgaMu150Spi + DINT + 32 + + + EuDisableFpgaMu150Spi + + 00 + + + + + rw + o + + + + #x2104 + ServoMagnetAngleAlignment + UDINT + 32 + + + ServoMagnetAngleAlignment + + 00 + + + + + rw + o + + + + #x2109 + EuGoToBoot + DINT + 32 + + + EuGoToBoot + + 00 + + + + + rw + o + + + + #x210A + EuCompStart + DINT + 32 + + + EuCompStart + + 00 + + + + + rw + o + + + + #x210B + EuCompEn + DINT + 32 + + + EuCompEn + + 00 + + + + + rw + o + + + + #x210C + EuCompBias + DINT + 32 + + + EuCompBias + + 00 + + + + + rw + o + + + + #x210D + EuCompState + DINT + 32 + + + EuCompState + + 00 + + + + + rw + o + + + + #x210E + EuFocCurBiasSet + USINT + 8 + + + EuFocCurBiasSet + + 00 + + + + + rw + o + + + + #x210F + Foc Cur Bias + DT210F + 144 + + + SubIndex 000 + + 03 + + + + FocCurBiasA + + 00 + + + + FocCurBiasB + + 00 + + + + FocCurBiasC + + 00 + + + + + ro + o + + + + #x2110 + EuTorqueFactor + UINT + 16 + + + EuTorqueFactor + + E803 + + + + + rw + o + + + + #x2201 + EuSysOutPulseStep + UDINT + 32 + + + EuSysOutPulseStep + + 00 + + + + + rw + o + + + + #x2301 + Position Velocity Mix Position Kp + UINT + 16 + + + Position Velocity Mix Position Kp + + 00 + + + + + rw + o + + + + #x2302 + Position Velocity Mix Velocity Kd + UINT + 16 + + + Position Velocity Mix Velocity Kd + + 00 + + + + + rw + o + + + + #x603F + Error Code + UINT + 16 + + + Error Code + + 00 + + + + + ro + o + T + + + + #x6040 + Control Word + UINT + 16 + + + Control Word + + 00 + + + + + rw + o + R + + + + #x6041 + Status Word + UINT + 16 + + + Status Word + + 00 + + + + + ro + o + T + + + + #x605A + Quickstop Option Code + INT + 16 + + + Quickstop Option Code + + 02 + + + + + rw + o + + + + #x605B + Shutdown Option Code + INT + 16 + + + Shutdown Option Code + + 00 + + + + + rw + o + + + + #x605C + Disable Operation Option Code + INT + 16 + + + Disable Operation Option Code + + 01 + + + + + rw + o + + + + #x605D + Halt option code + INT + 16 + + + Halt option code + + 01 + + + + + rw + o + + + + #x605E + Fault Reaction Code + INT + 16 + + + Fault Reaction Code + + 02 + + + + + rw + o + + + + #x6060 + Modes of Operation + SINT + 8 + + + Modes of Operation + + 00 + + + + + rw + o + R + + + + #x6061 + Modes of Operation Display + SINT + 8 + + + Modes of Operation Display + + 00 + + + + + ro + o + T + + + + #x6062 + Position demannd value + DINT + 32 + + + Position demannd value + + 00 + + + + + ro + o + T + + + + #x6064 + Position Actual Value + DINT + 32 + + + Position Actual Value + + 00 + + + + + ro + o + T + + + + #x6065 + Maximal following error + UDINT + 32 + + + Maximal following error + + E09304 + + + + + rw + o + + + + #x6067 + Position window + UDINT + 32 + + + Position window + + 64 + + + + + rw + o + + + + #x6068 + Position window time + UINT + 16 + + + Position window time + + 01 + + + + + rw + o + + + + #x606B + Velocity demand value + DINT + 32 + + + Velocity demand value + + 00 + + + + + ro + o + T + + + + #x606C + Velocity Actual Value + DINT + 32 + + + Velocity Actual Value + + 00 + + + + + ro + o + T + + + + #x606D + Velocity window + UINT + 16 + + + Velocity window + + 1027 + + + + + ro + o + + + + #x606E + Velocity window time + UINT + 16 + + + Velocity window time + + 01 + + + + + ro + o + + + + #x606F + Velocity threshold + UINT + 16 + + + Velocity threshold + + E803 + + + + + ro + o + + + + #x6070 + Velocity threshold time + UINT + 16 + + + Velocity threshold time + + 01 + + + + + ro + o + + + + #x6071 + Target Torque + INT + 16 + + + Target Torque + + 00 + + + + + rw + o + + + + #x6072 + Max Torque + UINT + 16 + + + Max Torque + + D007 + + + + + rw + o + + + + #x6074 + Torque demand value + INT + 16 + + + Torque Actual Value + + 00 + + + + + ro + o + T + + + + #x6076 + Motor rated torque + UDINT + 32 + + + Motor rated torque + + 00 + + + + + rw + o + + + + #x6077 + Torque Actual Value + INT + 16 + + + Torque Actual Value + + 00 + + + + + ro + o + T + + + + #x6078 + Current actual value + INT + 16 + + + Current actual value + + 00 + + + + + ro + o + T + + + + #x6079 + DC link circuit voltage + UDINT + 32 + + + DC link circuit voltage + + 00 + + + + + rw + o + + + + #x607A + Target Position + DINT + 32 + + + Target Position + + 00 + + + + + rw + o + R + + + + #x607C + Home Offset + DINT + 32 + + + Home Offset + + 00 + + + + + rw + o + + + + #x607D + Software Position Limit + DT607D + 80 + + + SubIndex 000 + + 02 + + + + Min position limit + + 006CCA88 + + + + Max position limit + + 00943577 + + + + + ro + o + + + + #x607F + Max Profile Velocity + UDINT + 32 + + + Max Profile Velocity + + 00 + + + + + rw + o + + + + #x6081 + Profile Velocity + UDINT + 32 + + + Profile Velocity + + 00 + + + + + rw + o + R + + + + #x6083 + Profile Acceleration + UDINT + 32 + + + Profile Acceleration + + 00 + + + + + rw + o + R + + + + #x6084 + Profile Deceleration + UDINT + 32 + + + Profile Deceleration + + 00 + + + + + rw + o + R + + + + #x6085 + Quickstop Declaration + DINT + 32 + + + Quickstop Declaration + + 00 + + + + + rw + o + + + + #x6087 + Torque slope + UDINT + 32 + + + Torque slope + + E803 + + + + + rw + o + + + + #x6091 + Gear ratio + DT6091 + 80 + + + SubIndex 000 + + 02 + + + + Motor revolutions + + 000051 + + + + Shaft revolutions + + 000051 + + + + + ro + o + + + + #x60B1 + Velocity Offset + DINT + 32 + + + Velocity Offset + + 00 + + + + + rw + o + + + + #x60B2 + Torque Offset + INT + 16 + + + Torque Offset + + 00 + + + + + rw + o + + + + #x60C1 + Interpolation Data Record + DT60C1 + 48 + + + SubIndex 000 + + 01 + + + + Interpolation data record + + 00 + + + + + ro + o + + + + #x60C2 + Interpolation Time Period + DT60C2 + 32 + + + SubIndex 000 + + 02 + + + + Interpolation period + + 01 + + + + Interpolation Index + + -3 + + + + + ro + o + + + + #x60F4 + Following error actual value + DINT + 32 + + + Following error actual value + + 00 + + + + + ro + o + T + + + + #x60FF + Target Velocity + DINT + 32 + + + Target Velocity + + 00 + + + + + rw + o + R + + + + #x6502 + Supported Drive Modes + UDINT + 32 + + + Supported Drive Modes + + 0001 + + + + + ro + o + + + + #xf000 + Modular device profile + DTF000 + 48 + + + SubIndex 000 + + 02 + + + + Module index distance + + 2003 + + + + Maximum number of modules + + 02 + + + + + ro + o + + + + #xf010 + Module profile list + DTF010 + 80 + + + SubIndex 000 + + 02 + + + + SubIndex 001 + + 92010200 + + + + SubIndex 002 + + 00000000 + + + + + ro + o + + + + #xf030 + Configured module Ident list + DTF030 + 80 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 00983100 + + + + SubIndex 002 + + 00000000 + + + + + ro + o + + + + #xf050 + Module detected list + DTF050 + 80 + + + SubIndex 000 + + 01 + + + + SubIndex 001 + + 00983100 + + + + SubIndex 002 + + 00000000 + + + + + ro + o + + + + + + Outputs + Inputs + MBoxState + MBoxOut + MBoxIn + Outputs + Inputs + + #x1600 + Outputs + + #x6040 + 0 + 16 + Control Word + object 0x6040:0 + UINT + + + #x607A + 0 + 32 + Target Position + object 0x607A:0 + DINT + + + #x60FF + 0 + 32 + Target Velocity + object 0x60FF:0 + DINT + + + #x6071 + 0 + 16 + Target Torque + object 0x6071:0 + INT + + + #x6060 + 0 + 8 + Mode Of Operation + object 0x6060:0 + SINT + + + #x0 + 0 + 8 + + + + #x1601 + Outputs + + #x6040 + 0 + 16 + Control Word + object 0x6040:0 + UINT + + + #x607A + 0 + 32 + Target Position + object 0x607A:0 + DINT + + + #x60FF + 0 + 32 + Target Velocity + object 0x60FF:0 + DINT + + + #x6071 + 0 + 16 + Target Torque + object 0x6071:0 + INT + + + #x6083 + 0 + 32 + Profile Acceleration + object 0x6083:0 + UDINT + + + #x6084 + 0 + 32 + Profile Deceleration + object 0x6084:0 + UDINT + + + #x6081 + 0 + 32 + Profile Velocity + object 0x6081:0 + UDINT + + + #x6087 + 0 + 32 + Torque Slope + object 0x6087:0 + UDINT + + + #x6060 + 0 + 8 + Modes Of Operation + object 0x6060:0 + SINT + + + #x0 + 0 + 8 + + + + #x1602 + Outputs + + #x6040 + 0 + 16 + Control Word + object 0x6040:0 + UINT + + + #x60FF + 0 + 32 + Target Velocity + object 0x60FF:0 + DINT + + + #x6083 + 0 + 32 + Profile Acceleration + object 0x6083:0 + UDINT + + + #x6084 + 0 + 32 + Profile Deceleration + object 0x6084:0 + UDINT + + + #x6060 + 0 + 8 + Modes Of Operation + object 0x6060:0 + SINT + + + #x0 + 0 + 8 + + + + #x1A00 + Inputs + + #x6041 + 0 + 16 + Status Word + object 0x6041:0 + UINT + + + #x6064 + 0 + 32 + Actual Position + object 0x6064:0 + DINT + + + #x606C + 0 + 32 + Actual Velocity + object 0x606C:0 + DINT + + + #x6077 + 0 + 16 + Actual Torque + object 0x6077:0 + INT + + + #x6061 + 0 + 8 + Mode Of OperationDisplay + object 0x6061:0 + SINT + + + #x603F + 0 + 16 + Error Code + object 0x603F:0 + UINT + + + #x0 + 0 + 8 + + + + #x1A01 + Inputs + + #x6041 + 0 + 16 + Status Word + object 0x6041:0 + UINT + + + #x6064 + 0 + 32 + Actual Position + object 0x6064:0 + DINT + + + #x606C + 0 + 32 + Actual Velocity + object 0x606C:0 + DINT + + + #x6077 + 0 + 16 + Actual Torque + object 0x6077:0 + INT + + + #x6061 + 0 + 8 + Mode Of OperationDisplay + object 0x6061:0 + SINT + + + #x603F + 0 + 16 + Error Code + object 0x603F:0 + UINT + + + #x0 + 0 + 8 + + + + #x1A02 + Inputs + + #x6041 + 0 + 16 + Status Word + object 0x6041:0 + UINT + + + #x606C + 0 + 32 + Actual Velocity + object 0x606C:0 + DINT + + + #x6061 + 0 + 8 + Mode Of OperationDisplay + object 0x6061:0 + SINT + + + #x603F + 0 + 16 + Error Code + object 0x603F:0 + UINT + + + #x0 + 0 + 8 + + + + + + + + Synchron + SM-Synchron + #x0 + 0 + 0 + 0 + + + DC + DC-Synchron + #x300 + 0 + 0 + 0 + + + + 2048 + 800E00CC8813f000000000800000 + + 424d760500000000000036000000280000001f0000000e000000010018000000000040050000c40e0000c40e00000000000000000000abc1f68aa9f48aa9f39eb8f5ecf1fdffffffffffff6f95f1b5c8f8a4bcf67499f1fffffffffffff8f9fd608aefedf1fd94b0f4a5bdf6ffffffffffff6991f097b2f56c93f092aff4ffffffffffff88a7f3d8e2fbffffffa1b9f6c4d4f9000000d3defa93aff490adf492aff4ffffffffffffffffff99b4f590adf490acf4fefeffffffffffffff6f94f1becff890adf492aef5f6f8feffffffe9eefc2f66ebdae4fb678ff0678ff0ffffffffffffffffff5a85efdfe7fc97b2f5ffffff000000d1ddfa7096f181a2f2799cf2ffffffffffffb5c8f78dabf4c8d6f990adf4ffffffffffffffffffadc3f75481eea2baf591aef5ffffffffffffe2e9fc9db7f5527fee5d87ef93aff4ffffffffffffffffffe6ecfc225ce9ffffffffffff000000a0b9f64b7aed799cf25783efedf2fdffffffffffff5a86ef7d9ff27b9ef25381eeffffffffffff82a2f26d93f085a4f27397f2ffffffffffffffffff507eee9cb6f5608aef789bf1ffffffffffffffffffffffff5c87efffffffffffff000000e7edfcd4dffaa6bdf6d4dffaffffffffffffffffffcbd8f9f8f9fed3dffaf6f9fefffffffffffffafbfedce5fbd3dffacad8f9ffffffffffffffffffaac0f6e2eafcb2c6f7d0dcfaffffffffffffffffffffffffb6c9f7ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000003a6eeb366beb366beb366beb366beb366beb3167eb5c87efffffffffffffffffffc3d2f96b92f0ccd9f9ffffffffffffffffffaac0f6ffffffbccdf8fafbfeffffffffffffffffffffffffffffffa3bbf67ea0f2a4bcf6ffffffffffff000000094ae70346e70446e70446e70446e70446e70041e63369ebffffffffffffffffff94b0f4003de6a3bbf5fffffffefefe205be90035e4ffffff5380ee003ee6b7caf8fffffffffffff2f5fd114fe80748e70446e70748e71250e8f9fbfe000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99b4f50446e7a9bff6ffffff3066eb1250e82760eaffffff8eabf40849e70043e6edf1fdffffff396dec0f4ee8628bf0ccd9fa5f89ef0f4ee85280ee0000007096f16d93f16d93f16d93f16d93f16d93f16990f088a7f3ffffffffffffffffff9bb5f50446e7afc4f6eff3fd0446e7245eeaffffffffffffffffff80a1f20a4be77d9ff2ffffff0346e61755e9ffffffffffffffffff1552e8225ce90000000648e60144e60144e60144e60144e60144e6003fe63168ebffffffffffffffffff91adf40446e7aac0f6d9e3fb0748e74e7deeffffffffffffffffffb8cbf80849e76a91f0ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee9000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fafe094ae70748e7f1f4fdffffff0547e70d4ce7b8caf8fffffff4f7fe2961ea0849e7aac1f6ffffff0648e71e5ae9ffffffffffffffffff1b57e8255ee90000004475ec4072ec4072ec4072ec4072ec4072ec3b6eec648df0ffffffffffff2d64ea0345e7afc4f7ffffffffffff9bb5f50245e60039e5ffffff5480ee0446e73167ebffffffffffff0547e71e59e9ffffffffffffffffff1a57e8255ee9000000265fe9215be9215ce9215ce9215ce9215ce91b57e94a7aedffffff779bf20d4de76890f0ffffffffffffffffffffffffc0d1f92962eaffffff6f94f17ea0f2ffffffffffffffffff0a4be7235deaffffffffffffffffff1f5ae92961ea000000 + + + + diff --git a/docs/ethercat_motor_tutorial.md b/docs/ethercat_motor_tutorial.md index 5720c0bc..2ba49119 100644 --- a/docs/ethercat_motor_tutorial.md +++ b/docs/ethercat_motor_tutorial.md @@ -1,25 +1,51 @@ # EtherCAT 电机接入教程 -这份文档只说明新增一种 EtherCAT 电机需要改哪里、怎么写。 +当前已接入意优 `EYOU_ServoModule_ECAT_V145`,协议为 EtherCAT CoE + CiA402,PDO 使用 `docs/EYOU_ServoModule_ECAT_V145_no_slot.xml` 中的 `0x1600/0x1A00` 映射。 -## 1. 增加 vendor +ESI XML 作为厂商通信说明和对照资料保存,运行时不直接解析 XML。实际 PDO 映射写在: -修改 `protos/cmvr/config/motor_config/motor_config.proto`: - -```proto -enum MotorVendor { - MOTOR_VENDOR_UNKNOWN = 0; - MOTOR_VENDOR_TI5 = 1; - MOTOR_VENDOR_MUJOCO = 2; - MOTOR_VENDOR_XXX = 3; -} +```text +cmvr-es/devices/motor/drivers/ethercat_motor/include/vendor/eyou/eyou_cia402_pdo_mapping.h ``` -`MOTOR_VENDOR_XXX` 改成真实厂商名,例如 `MOTOR_VENDOR_FOO`。不要复用 `TI5`。 +## 1. 系统依赖 -## 2. 写电机配置 +IgH EtherCAT userspace 已安装在: -新增配置文件: +```text +dependency/x86/third_party/ethercat/v1.7.0 +``` + +真机运行前,系统里还需要安装/加载 IgH master 内核模块。使用仓库脚本启动 EtherCAT master: + +```bash +sudo script/ethercat/start_ethercat.sh eno1 +script/ethercat/status_ethercat.sh +``` + +其中 `eno1` 是连接 EtherCAT 从站的网卡。脚本会读取该网卡 MAC,写入: + +```text +dependency/x86/third_party/ethercat/v1.7.0/etc/ethercat.conf +``` + +并通过 bundled IgH 的 `ethercatctl -c` 启动 master。能看到 EYOU slave 后再启动程序。 + +停止 EtherCAT: + +```bash +sudo script/ethercat/stop_ethercat.sh eno1 +``` + +如果这张网卡要恢复给普通网络使用: + +```bash +sudo script/ethercat/stop_ethercat.sh eno1 --restore-network +``` + +## 2. 电机配置 + +新增或修改: ```text cmvr-es/config/devices/motor/ethercat_motors.pb.txt @@ -34,20 +60,28 @@ motor { motor_groups { id: "right_arm_ethercat" bus_type: MOTOR_BUS_ETHERCAT - vendor: MOTOR_VENDOR_XXX + vendor: MOTOR_VENDOR_EYOU protocol: MOTOR_PROTOCOL_ETHERCAT_CIA402 - tool_frame: "R_FINGER_TIP" ethercat { - master_id: "eth0" + master_index: 0 cycle_us: 1000 - slaves { motor_id: 1 slave_index: 0 vendor_id: 0x00000000 product_code: 0x00000000 } - slaves { motor_id: 2 slave_index: 1 vendor_id: 0x00000000 product_code: 0x00000000 } - slaves { motor_id: 3 slave_index: 2 vendor_id: 0x00000000 product_code: 0x00000000 } - slaves { motor_id: 4 slave_index: 3 vendor_id: 0x00000000 product_code: 0x00000000 } - slaves { motor_id: 5 slave_index: 4 vendor_id: 0x00000000 product_code: 0x00000000 } - slaves { motor_id: 6 slave_index: 5 vendor_id: 0x00000000 product_code: 0x00000000 } - slaves { motor_id: 7 slave_index: 6 vendor_id: 0x00000000 product_code: 0x00000000 } + + cia402 { + profile_position_trigger_delay_ms: 2 + state_transition_timeout_ms: 1200 + velocity_stop_timeout_ms: 2000 + status_poll_period_ms: 10 + stopped_velocity_tolerance_rad_s: 0.001 + } + + slaves { motor_id: 1 alias: 0 position: 0 } + slaves { motor_id: 2 alias: 0 position: 1 } + slaves { motor_id: 3 alias: 0 position: 2 } + slaves { motor_id: 4 alias: 0 position: 3 } + slaves { motor_id: 5 alias: 0 position: 4 } + slaves { motor_id: 6 alias: 0 position: 5 } + slaves { motor_id: 7 alias: 0 position: 6 } } joint_limits { @@ -63,21 +97,26 @@ motor { } motors { - motors { id: 1 joint_name: "R_SHOULDER_P" } - motors { id: 2 joint_name: "R_SHOULDER_R" } - motors { id: 3 joint_name: "R_SHOULDER_Y" } - motors { id: 4 joint_name: "R_ELBOW_R" } - motors { id: 5 joint_name: "R_WRIST_P" } - motors { id: 6 joint_name: "R_WRIST_Y" } - motors { id: 7 joint_name: "R_WRIST_R" } + motors { id: 1 joint_name: "R_SHOULDER_P" encoder_counts_per_rev: 65536 gear_ratio: 101.0 } + motors { id: 2 joint_name: "R_SHOULDER_R" encoder_counts_per_rev: 65536 gear_ratio: 101.0 } + motors { id: 3 joint_name: "R_SHOULDER_Y" encoder_counts_per_rev: 65536 gear_ratio: 101.0 } + motors { id: 4 joint_name: "R_ELBOW_R" encoder_counts_per_rev: 65536 gear_ratio: 101.0 } + motors { id: 5 joint_name: "R_WRIST_P" encoder_counts_per_rev: 65536 gear_ratio: 101.0 } + motors { id: 6 joint_name: "R_WRIST_Y" encoder_counts_per_rev: 65536 gear_ratio: 101.0 } + motors { id: 7 joint_name: "R_WRIST_R" encoder_counts_per_rev: 65536 gear_ratio: 101.0 } } } } ``` -`motors.motors.id` 是系统内的电机逻辑 id。`ethercat.slaves.motor_id` 必须和它对应。 +字段说明: -`joint_limits` 按 `joint_name` 读取,和 CAN、MuJoCo 电机保持同一个风格。 +- `master_index`:IgH master 编号,第一张 EtherCAT master 是 `0`。 +- `alias`:EtherCAT alias,一般为 `0`。 +- `position`:slave 在 EtherCAT 链路上的顺序,从 `0` 开始。 +- `motor_id`:系统内电机 id,必须和 `motors.motors.id` 对应。 +- `encoder_counts_per_rev`:电机编码器每转 count 数,用于 `rad <-> count` 换算。 +- `gear_ratio`:电机轴到关节输出轴的减速比,用于接口层 `rad/rad/s` 和驱动器 raw count/counts/s 换算。 ## 3. 注册设备 @@ -98,15 +137,9 @@ devices { } ``` -## 4. 机械臂使用 EtherCAT group +## 4. 机械臂使用 EtherCAT 电机 -修改机械臂配置,例如: - -```text -cmvr-es/config/devices/arm/arm.pb.txt -``` - -把 motor backend 改成: +修改机械臂配置中的 motor backend: ```proto motor { @@ -122,116 +155,66 @@ motor { } ``` -## 5. 实现 bus runtime +## 5. 代码结构 -EtherCAT 总线资源放在: +EtherCAT 总线运行时: ```text cmvr-es/devices/motor/bus_runtime/ethercat/include/ethercat_motor_bus_runtime.h cmvr-es/devices/motor/bus_runtime/ethercat/src/ethercat_motor_bus_runtime.cpp ``` -`EthercatMotorBusRuntime` 负责: +它负责: + +- 打开 IgH master +- 创建 domain +- 使用 `vendor + protocol` 选择 PDO mapping +- 按 mapping 配置 `0x1600/0x1A00` PDO +- 注册每个非 padding PDO entry 的 offset +- 启动 cyclic loop +- 按 `motor_id + index + subindex` 提供通用 PDO 读写接口 + +CiA402 EtherCAT 电机驱动: ```text -读取 ethercat 配置 -初始化 EtherCAT master -扫描/校验 slave_index、vendor_id、product_code -启动 cyclic loop -保存 command/feedback buffer -停止 cyclic loop +cmvr-es/devices/motor/drivers/ethercat_motor/include/cia402/cia402_protocol.h +cmvr-es/devices/motor/drivers/ethercat_motor/include/cia402/cia402_objects.h +cmvr-es/devices/motor/drivers/ethercat_motor/include/vendor/motor_vendor_adapter.h +cmvr-es/devices/motor/drivers/ethercat_motor/src/cia402/cia402_protocol.cpp ``` -bus runtime 不创建具体电机,也不关心厂商;它只保存总线连接、线程和数据缓存。 - -## 6. 增加具体电机 driver - -新增目录: +EYOU 私有适配: ```text -cmvr-es/devices/motor/drivers/xxx_ethercat/ - CMakeLists.txt - include/xxx_ethercat_motor.h - include/xxx_ethercat_motor_protocol.h - src/xxx_ethercat_motor.cpp - src/xxx_ethercat_motor_protocol.cpp +cmvr-es/devices/motor/drivers/ethercat_motor/include/vendor/eyou/eyou_motor.h +cmvr-es/devices/motor/drivers/ethercat_motor/include/vendor/eyou/eyou_motor_adapter.h +cmvr-es/devices/motor/drivers/ethercat_motor/include/vendor/eyou/eyou_cia402_pdo_mapping.h +cmvr-es/devices/motor/drivers/ethercat_motor/include/vendor/eyou/eyou_objects.h +cmvr-es/devices/motor/drivers/ethercat_motor/src/vendor/eyou/eyou_motor.cpp +cmvr-es/devices/motor/drivers/ethercat_motor/src/vendor/eyou/eyou_motor_adapter.cpp ``` -`XxxEthercatMotor` 继承 `AbstractMotor`。 +它负责: -`XxxEthercatMotorProtocol` 继承 `MotorProtocolInterface`,把 `setTarget`、`setQd`、`getQ` 等接口转换成 EtherCAT command/feedback。 +- CiA402 `6040/6041` 状态机 +- 设置 `6060` 运行模式 +- 写 `607A/60FF/6071` +- 读 `6064/606C/6077/603F` +- `rad` 和 encoder count 的换算 -## 7. 在 MotorManager 里创建 EtherCAT 电机 - -修改: - -```text -cmvr-es/devices/motor/manager/src/motor_manager.cpp -``` - -在 `MotorManager::createEthercatMotors_()` 里按 `vendor + protocol` 创建具体电机: - -```cpp -auto ethercat_bus_runtime = - std::dynamic_pointer_cast(bus_runtime); - -if (group_cfg.vendor() == config::MOTOR_VENDOR_XXX && - group_cfg.protocol() == config::MOTOR_PROTOCOL_ETHERCAT_CIA402) { - auto protocol = std::make_shared(ethercat_bus_runtime); - - std::vector> motors; - motors.reserve(motor_cfgs.size()); - for (const auto& cfg : motor_cfgs) { - auto motor = std::make_shared(cfg); - motor->setProtocol(protocol); - if (!motor->init()) { - return {}; - } - motors.push_back(std::move(motor)); - } - return motors; -} -``` - -## 8. 加入 CMake - -修改: - -```text -cmvr-es/devices/motor/manager/CMakeLists.txt -``` - -给 `motor_manager` 链接新增的具体 EtherCAT 电机 target。 - -修改: - -```text -cmvr-es/devices/motor/CMakeLists.txt -``` - -加入: - -```cmake -add_subdirectory(drivers/xxx_ethercat) -``` - -## 9. 验证配置 - -先验证 proto: +## 6. 编译验证 ```bash -./output/bin/protoc \ - --encode=cmvr.config.MotorRootConfig \ - -I protos \ - protos/cmvr/config/motor_config/motor_config.proto \ - < cmvr-es/config/devices/motor/ethercat_motors.pb.txt \ - > /tmp/ethercat_motors.pb.bin +cmake -S . -B cmake-build-debug +cmake --build cmake-build-debug --target motor_manager ``` -再编译: +真机验证顺序: ```bash -cmake --build cmake-build-debug --target mujoco_manual_ui_test +sudo script/ethercat/start_ethercat.sh eno1 +script/ethercat/status_ethercat.sh +cmake --build cmake-build-debug --target cmvr_es ``` -真机联调时先只验证初始化日志:master 打开、slave 数量、vendor/product 校验、cyclic loop 启动、每个 motor 注册成功。然后再下发运动命令。 +第一次联调先不要大幅度运动。先看 master 是否打开、slave 是否进入 OP、状态字是否更新,再给单个电机小角度目标。 diff --git a/docs/意优CANopen&EtherCAT应用手册V2.2.pdf b/docs/意优CANopen&EtherCAT应用手册V2.2.pdf new file mode 100644 index 00000000..e1c3df2a Binary files /dev/null and b/docs/意优CANopen&EtherCAT应用手册V2.2.pdf differ diff --git a/request.txt b/request.txt index 9a4d60e2..08c18e74 100644 --- a/request.txt +++ b/request.txt @@ -33,5 +33,6 @@ third_party/modbus/3.1.11 third_party/visp/3.7.0 third_party/mainif/0.0.5 third_party/matplotplusplus/1.2.0 +third_party/ethercat/v1.7.0 diff --git a/script/ethercat/start_ethercat.sh b/script/ethercat/start_ethercat.sh new file mode 100755 index 00000000..269aef67 --- /dev/null +++ b/script/ethercat/start_ethercat.sh @@ -0,0 +1,133 @@ +#!/usr/bin/env bash +set -euo pipefail + +usage() { + cat <<'USAGE' +Usage: + sudo script/ethercat/start_ethercat.sh [iface] [ethercat_dev] [start_wait_sec] + Any pure numeric argument is treated as start_wait_sec. + +Example: + sudo script/ethercat/start_ethercat.sh eno1 + sudo script/ethercat/start_ethercat.sh 10 + sudo script/ethercat/start_ethercat.sh eno1 10 + sudo script/ethercat/start_ethercat.sh eno1 /dev/EtherCAT1 + sudo script/ethercat/start_ethercat.sh eno1 /dev/EtherCAT0 10 + sudo script/ethercat/start_ethercat.sh eno1 10 /dev/EtherCAT0 + +Environment: + DEVICE_MODULES=generic IgH device module list. + IGH_ROOT=... Override bundled IgH install path. + ETHERCAT_CONF=... Override ethercatctl config path. + ETHERCAT_DEV=/dev/EtherCAT0 Override EtherCAT character device node. + START_WAIT_SEC=5 Seconds to wait for link/slave discovery. +USAGE +} + +if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then + usage + exit 0 +fi + +if [[ "$(id -u)" -ne 0 ]]; then + echo "error: please run with sudo." >&2 + exit 1 +fi + +IFACE="${IFACE:-eno1}" +ETHERCAT_DEV="${ETHERCAT_DEV:-/dev/EtherCAT0}" +START_WAIT_SEC="${START_WAIT_SEC:-5}" + +NON_NUMERIC_ARG_COUNT=0 +for arg in "$@"; do + if [[ "${arg}" =~ ^[0-9]+$ ]]; then + START_WAIT_SEC="${arg}" + continue + fi + + case "${NON_NUMERIC_ARG_COUNT}" in + 0) + IFACE="${arg}" + ;; + 1) + ETHERCAT_DEV="${arg}" + ;; + *) + echo "error: unexpected argument: ${arg}" >&2 + usage >&2 + exit 1 + ;; + esac + NON_NUMERIC_ARG_COUNT=$((NON_NUMERIC_ARG_COUNT + 1)) +done +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" +IGH_ROOT="${IGH_ROOT:-${REPO_ROOT}/dependency/x86/third_party/ethercat/v1.7.0}" +DEVICE_MODULES="${DEVICE_MODULES:-generic}" +ETHERCAT_CONF="${ETHERCAT_CONF:-${IGH_ROOT}/etc/ethercat.conf}" +ETHERCATCTL="${IGH_ROOT}/sbin/ethercatctl" +ETHERCAT="${IGH_ROOT}/bin/ethercat" + +if [[ ! -d "/sys/class/net/${IFACE}" ]]; then + echo "error: network interface '${IFACE}' does not exist." >&2 + exit 1 +fi + +if [[ ! -x "${ETHERCATCTL}" ]]; then + echo "error: ethercatctl not found: ${ETHERCATCTL}" >&2 + exit 1 +fi + +if [[ ! -x "${ETHERCAT}" ]]; then + echo "error: ethercat command not found: ${ETHERCAT}" >&2 + exit 1 +fi + +MAC="$(cat "/sys/class/net/${IFACE}/address")" + +echo "EtherCAT interface: ${IFACE}" +echo "EtherCAT MAC: ${MAC}" +echo "EtherCAT device: ${ETHERCAT_DEV}" +echo "IgH root: ${IGH_ROOT}" +echo "IgH config: ${ETHERCAT_CONF}" +echo "Device modules: ${DEVICE_MODULES}" +echo "Start wait: ${START_WAIT_SEC}s" + +mkdir -p "$(dirname "${ETHERCAT_CONF}")" + +if [[ -f "${ETHERCAT_CONF}" ]]; then + echo "Stopping existing EtherCAT master with current config..." + "${ETHERCATCTL}" -c "${ETHERCAT_CONF}" stop >/dev/null 2>&1 || true + sleep 1 +fi + +cat >"${ETHERCAT_CONF}" </dev/null 2>&1; then + nmcli device disconnect "${IFACE}" >/dev/null 2>&1 || true +fi + +ip addr flush dev "${IFACE}" +ip link set "${IFACE}" up + +"${ETHERCATCTL}" -c "${ETHERCAT_CONF}" start + +if [[ -e "${ETHERCAT_DEV}" ]]; then + chmod 666 "${ETHERCAT_DEV}" +else + echo "warning: ${ETHERCAT_DEV} not found; skip chmod. Check with: ls -l /dev/EtherCAT*" >&2 +fi + +for ((i = 0; i < START_WAIT_SEC; ++i)); do + if "${ETHERCAT}" slaves 2>/dev/null | grep -qE '^[0-9]+[[:space:]]'; then + break + fi + sleep 1 +done + +"${ETHERCAT}" master +"${ETHERCAT}" slaves || true diff --git a/script/ethercat/status_ethercat.sh b/script/ethercat/status_ethercat.sh new file mode 100755 index 00000000..0533b0fb --- /dev/null +++ b/script/ethercat/status_ethercat.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +set -euo pipefail + +usage() { + cat <<'USAGE' +Usage: + script/ethercat/status_ethercat.sh + +Environment: + IGH_ROOT=... Override bundled IgH install path. + ETHERCAT_CONF=... Override ethercatctl config path. +USAGE +} + +if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then + usage + exit 0 +fi + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" +IGH_ROOT="${IGH_ROOT:-${REPO_ROOT}/dependency/x86/third_party/ethercat/v1.7.0}" +ETHERCAT_CONF="${ETHERCAT_CONF:-${IGH_ROOT}/etc/ethercat.conf}" +ETHERCATCTL="${IGH_ROOT}/sbin/ethercatctl" +ETHERCAT="${IGH_ROOT}/bin/ethercat" + +if [[ ! -x "${ETHERCATCTL}" ]]; then + echo "error: ethercatctl not found: ${ETHERCATCTL}" >&2 + exit 1 +fi + +if [[ ! -x "${ETHERCAT}" ]]; then + echo "error: ethercat command not found: ${ETHERCAT}" >&2 + exit 1 +fi + +echo "== ${ETHERCAT_CONF} ==" +if [[ -f "${ETHERCAT_CONF}" ]]; then + sed -n '1,80p' "${ETHERCAT_CONF}" +else + echo "missing" +fi + +echo +echo "== kernel modules ==" +lsmod | grep -E '(^ec_master|^ec_generic|^ec_)' || true + +echo +echo "== ethercatctl ==" +"${ETHERCATCTL}" -c "${ETHERCAT_CONF}" status || true + +echo +echo "== master ==" +"${ETHERCAT}" master || true + +echo +echo "== slaves ==" +"${ETHERCAT}" slaves || true + +echo +echo "== pdos ==" +"${ETHERCAT}" pdos || true diff --git a/script/ethercat/stop_ethercat.sh b/script/ethercat/stop_ethercat.sh new file mode 100755 index 00000000..2e0d6f33 --- /dev/null +++ b/script/ethercat/stop_ethercat.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +set -euo pipefail + +usage() { + cat <<'USAGE' +Usage: + sudo script/ethercat/stop_ethercat.sh [iface] [--restore-network] + +Examples: + sudo script/ethercat/stop_ethercat.sh eno1 + sudo script/ethercat/stop_ethercat.sh eno1 --restore-network + +Environment: + IGH_ROOT=... Override bundled IgH install path. + ETHERCAT_CONF=... Override ethercatctl config path. +USAGE +} + +if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then + usage + exit 0 +fi + +if [[ "$(id -u)" -ne 0 ]]; then + echo "error: please run with sudo." >&2 + exit 1 +fi + +IFACE="eno1" +RESTORE_NETWORK="false" + +for arg in "$@"; do + case "${arg}" in + --restore-network) + RESTORE_NETWORK="true" + ;; + -*) + echo "error: unknown option: ${arg}" >&2 + usage >&2 + exit 1 + ;; + *) + IFACE="${arg}" + ;; + esac +done + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" +IGH_ROOT="${IGH_ROOT:-${REPO_ROOT}/dependency/x86/third_party/ethercat/v1.7.0}" +ETHERCAT_CONF="${ETHERCAT_CONF:-${IGH_ROOT}/etc/ethercat.conf}" +ETHERCATCTL="${IGH_ROOT}/sbin/ethercatctl" + +if [[ ! -x "${ETHERCATCTL}" ]]; then + echo "error: ethercatctl not found: ${ETHERCATCTL}" >&2 + exit 1 +fi + +"${ETHERCATCTL}" -c "${ETHERCAT_CONF}" stop + +if [[ "${RESTORE_NETWORK}" == "true" ]]; then + ip link set "${IFACE}" up + if command -v nmcli >/dev/null 2>&1; then + nmcli device connect "${IFACE}" || true + fi + echo "Stopped EtherCAT and requested normal network restore on ${IFACE}." +else + echo "Stopped EtherCAT. Normal network restore skipped." + echo "Use '--restore-network' if this interface should return to NetworkManager." +fi