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:电机停止转动(暂不支持)
# 直到电机转到支持的最大角度停止后,请断开电源!