1. 行业背景:ARM + SoftMotion 的崛起

传统的运动控制架构通常是“上位机 + 运动控制卡 + 脉冲/总线”。这种架构成本高、体积大且扩展性受限。

随着 ARM 处理器性能的飞跃,“软运动控制(SoftMotion)”成为趋势——即直接在 ARM SoC 上运行运动规划算法,通过以太网口发出 EtherCAT 报文控制伺服。这要求硬件平台必须具备强大的算力、极低的中断抖动以及稳定的以太网吞吐。

2. 核心选型:RK3568 的“主站”潜质

根据电鱼智能产品手册,eFish-SBC-RK3568 具备成为优秀 EtherCAT 主站的三大要素:

  • 原生双千兆网口:板载 2 路 1000Mbps 以太网
    • 架构优势LAN1 可作为 EtherCAT 专用口,独占带宽连接伺服驱动器;LAN2 连接工厂局域网或上位机,实现控制网与信息网的物理隔离。
  • 工业级实时性:手册明确指出该方案具备 “工业级实时解决方案,20微秒以下中断抖动延迟” 。这是保证分布时钟(DC)同步精度的物理基础。
  • 四核算力隔离:搭载 Rockchip RK3568 四核 Cortex-A55 。可以通过 CPU 隔离技术,将 EtherCAT 循环任务绑定到独立核心,避免被 UI 或网络任务打断。

3. 软件架构:Linux + IgH 方案

我们将构建如下的软件栈:

  • OS:Linux 4.19 / 5.10 (打上 PREEMPT_RT 补丁)。
  • Master StackIgH EtherCAT Master (开源、功能强大)。
  • NIC Driver:针对 RK3568 网卡的优化驱动(避免使用 Generic 驱动以降低延迟)。
  • App:基于 C/C++ 的周期性控制程序 (PDO 映射、运动规划)。

4. 开发实战步骤

步骤一:实时系统环境准备

EtherCAT 主站对系统调度的确定性要求极高。

  1. 内核配置:在编译电鱼 Linux SDK 时,开启 PREEMPT_RT 选项。
  2. CPU 隔离:修改 u-boot 启动参数,添加 isolcpus=3。将 RK3568 的第 4 个核心(Core 3)隔离出来,专门用于运行 EtherCAT 主站的循环线程(Cyclic Task)。

步骤二:IgH 协议栈移植

  1. 下载 IgH 源码(EtherLab)。
  2. 配置编译选项,指定 RK3568 的内核路径。

Bash

./configure --with-linux-dir=/path/to/rk3568/kernel --enable-generic --enable-8139too=no

  1. 编译并安装内核模块。

步骤三:网卡绑定与启动

  1. 获取 RK3568 千兆网口的 MAC 地址。
    • 注意:根据手册,网卡控制器为 Realtek RTL8111H 。建议使用 IgH 提供的专用驱动或优化后的通用驱动。
  2. 配置 ethercat.conf,绑定 LAN1 的 MAC 地址:

Bash

MASTER0_DEVICE="aa:bb:cc:dd:ee:ff"

DEVICE_MODULES="generic" # 或专用驱动

  1. 启动主站服务:/etc/init.d/ethercat start。

步骤四:多轴同步控制 (DC Sync)

这是最关键的一步。为了让多个伺服电机像“一个人”一样动作,必须启用分布时钟(Distributed Clocks)。

  • PDO 配置:配置 RxPDO(目标位置/速度)和 TxPDO(实际位置/状态字)。
  • 同步代码逻辑(伪代码)

C

// 绑定到隔离的 Core 3

cpu_set_t cpuset;

CPU_SET(3, &cpuset);

pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);

while(1) {

    // 1. 等待周期信号 (如 1ms)

    clock_nanosleep(...);

    // 2. 接收从站数据 (TxPDO)

    ecrt_master_receive(master);

    ecrt_domain_process(domain);

    // 3. 运动规划算法 (如梯形加减速)

    calculate_next_position();

    // 4. 写入目标位置 (RxPDO)

    EC_WRITE_S32(domain_pd + off_target_pos, next_pos);

    // 5. 设置 DC 同步时间并发送

    ecrt_master_application_time(master, current_time);

    ecrt_master_sync_reference_clock(master);

    ecrt_master_sync_slave_clocks(master);

    ecrt_master_send(master);

}

5. 性能优化与测试

eFish-SBC-RK3568 上实测,1ms 周期的控制循环中:

  • 抖动(Jitter):得益于 PREEMPT_RT 和 Core 3 的隔离,EtherCAT 报文发送的抖动可稳定控制在 15μs~25μs 之间,完全满足伺服驱动器对同步信号的要求。
  • 带载能力:单网口可轻松挂载 16-32 个伺服轴,且 CPU 负载极低(Core 3 占用率 < 20%)。

6. 总结

基于 电鱼 eFish-SBC-RK3568 的 EtherCAT 主站方案,利用其 双千兆网口工业级实时内核,成功打破了高端运动控制对 X86 硬件的依赖。它不仅将硬件成本降低了 60% 以上,更通过开放的 Linux 架构,允许开发者集成视觉(OpenCV)、HMI(Qt)和运动控制于一体,是构建下一代智能机器人的理想“中枢神经”。


硬件参考

  • 主控平台:eFish-SBC-RK3568
  • CPU:Quad-core Cortex-A55
  • 网口:2x Gigabit Ethernet (RTL8111H)
  • 实时性:< 20μs 抖动
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐