BRD601 THOR EtherCAT功能使用#
功能说明#
SOEM(Simple Open EtherCAT Master)是一个轻量级的开源 EtherCAT 主站库。
Jetson的设备只能作为Master,而不能作为Slave。
EtherCAT 网络拓扑#
EtherCAT 设备通常采用菊花链(Daisy Chain)或总线拓扑:
PC (Master) ─── 设备 (Slave)
连接方式:
PC 通过网线直接连接到从站设备
从站设备的网口接 PC 的网口(如果有 OUT 口,可连接其他从站)
下载编译#
源码压缩包:SOEM-1.4.0.zip
# 从github仓库下载源码到设备中,或直接使用下载好的源码压缩包
git clone -b v1.4.0 https://github.com/OpenEtherCATsociety/SOEM.git
cd SOEM
# 编译
mkdir build
cd build
# CMake 3.9 or later
cmake .. && make
运行demo程序#
# simple_test,输出类似信息,说明主站软件运行正常
./test/linux/simple_test/simple_test
# SOEM (Simple Open EtherCAT Master)
# Simple test
# Usage: simple_test ifname1
# ifname = eth0 for example
# Available adapters:
# - lo (lo)
# - dummy0 (dummy0)
# - eth0 (eth0)
# - eth2 (eth2)
# - eth1 (eth1)
# - can2 (can2)
# - can4 (can4)
# - can3 (can3)
# - eth3 (eth3)
# - l4tbr0 (l4tbr0)
# - rndis0 (rndis0)
# - usb0 (usb0)
# - docker0 (docker0)
# End program
# 扫描接入主站网络的从站设备
sudo ./test/linux/simple_test/simple_test eth0
# SOEM (Simple Open EtherCAT Master)
# Simple test
# Starting simple test
# ec_init on eth0 succeeded.
# No slaves found!
# End simple test, close socket
# End program
# 查看从站信息(需要将从站连接到相应接口,例如eth1)
sudo ./test/linux/slaveinfo/slaveinfo eth1
# SOEM (Simple Open EtherCAT Master)
# Slaveinfo
# Starting slaveinfo
# ec_init on eth1 succeeded.
# 1 slaves found and configured.
# Calculated workcounter 3
# Slave:1
# Name:CANMOTOR
# Output size: 2048bits
# Input size: 144bits
# State: 4
# Delay: 0[ns]
# Has DC: 1
# DCParentport:0
# Activeports:1.0.0.0
# Configured address: 1001
# Man: 00000002 ID: 00020000 Rev: 00020000
# SM0 A:1000 L: 128 F:00010026 Type:1
# SM1 A:1080 L: 128 F:00010022 Type:2
# SM2 A:1100 L: 256 F:00010064 Type:3
# SM3 A:1400 L: 18 F:00010020 Type:4
# FMMU0 Ls:00000000 Ll: 256 Lsb:0 Leb:7 Ps:1100 Psb:0 Ty:02 Act:01
# FMMU1 Ls:00000100 Ll: 18 Lsb:0 Leb:7 Ps:1400 Psb:0 Ty:01 Act:01
# FMMUfunc 0:1 1:2 2:3 3:0
# MBX length wr: 128 rd: 128 MBX protocols : 00
# CoE details: 00 FoE details: 00 EoE details: 00 SoE details: 00
# Ebus current: 0[mA]
# only LRD/LWR:0
# End slaveinfo, close socket
# End program
# 部分输出信息说明
# 输入/输出大小:
# 输出 (主站到从站):2048 位 (256 字节)。
# 输入 (从站到主站):144 位 (18 字节)。
# 从站状态:
# 当前状态为 4,对应 EC_STATE_OPERATIONAL(操作状态)。
# 这意味着从站在 slaveinfo 程序中正常进入了操作状态。
# 同步管理器 (SM):
# SM0 (类型1) 和 SM1 (类型2) 用于邮箱通信。
# SM2 (类型3):用于 输出(主站到从站的过程数据)。
# 地址 0x1100,长度 256 字节。
# SM3 (类型4):用于 输入(从站到主站的过程数据)。
# 地址 0x1400,长度 18 字节。
# 分布式时钟 (DC):
# 从站支持分布式时钟 (Has DC: 1)。
# FMMU 映射:
# FMMU0:映射 输出 数据到逻辑地址 0x0000。
# FMMU1:映射 输入 数据到逻辑地址 0x0100。
# 邮箱支持:
# 邮箱长度为 128 字节。
# 该从站未启用 CoE、FoE、EoE、SoE 等协议。
通过以上过程,基本完成EtherCAT Master在设备上的支持,通过从站及相关外设资料,既可开发完成EtherCAT 协议支持和控制
验证方案(内部使用)#
连接方式#

以上示意图中网线连接至上位机设备任意以太网接口,例如eth0
使用及验证#
#命令1:电机开始转动。
#命令2:电机停止转动
方案一:编译#
源文件:turn_on_motor.c
# 替换 test/linux/simple_test/simple_test.c
cp turn_on_motor.c test/linux/simple_test/simple_test.c
# 重新编译
make
使用及验证
#命令1:电机开始转动。
sudo ./test/linux/simple_test/simple_test eth0
#命令2:电机停止转动(暂不支持)
# 直到电机转到支持的最大角度停止后,请断开电源!
方案二:安装deb包#
deb包 含有SOEM-1.4.0.zip,并完成编译工作;
工程根目录内放置好了simple_test、slaveinfo、turn_on_mottor、turn_on_motor.c
deb:miivii-SOEM-1.4.0.1-arm64.deb
# 安装deb包
sudo dpkg -i miivii-SOEM-1.4.0.1-arm64.deb
#用下列命令,查看是否安装成功
dpkg -l | grep miivii-soem
使用及验证
#命令1:电机开始转动。
sudo ./MIIVII-SOEM/turn_on_motor eth0
#命令2:电机停止转动(暂不支持)
# 直到电机转到支持的最大角度停止后,请断开电源!