EtherCAT 主站软件协议栈性能分析

在将 EtherCAT 技术作为现场总线使用时,性能往往起到决定性作用。但“性能”究竟指的是什么?多数情况下,性能被等同于速度。对于 EtherCAT 网络而言,这通常意味着较快的周期时间(如 1kHz 或更高),以实现快速的控制周期。然而,良好的性能也可以意味着处理大量数据的能力,或是能够由一个控制器同时管理众多设备的能力。

在 EtherCAT 网络中,这些性能考量最终归结为主站设备(MainDevice)的能力。因此,EtherCAT 主站软件应满足以下要求:

  • 支持短周期时间,实现快速设备更新速率
  • 支持大量周期性过程数据
  • 能够管理众多 EtherCAT 从站设备

此外,这一切必须在尽可能低的控制器负载下实现。对于高性能 EtherCAT 网络部署,功能性、错误检测、诊断选项以及在出现问题时的可靠性都不应妥协。

设计考量

要实现上述目标,EtherCAT 主站软件必须最大限度地高效利用计算时间。以下是实现这一目标的一些关键设计特性:

  • 集成高性能、具备实时能力的以太网驱动(链路层),可直接与以太网控制器交互
  • 周期处理组件不依赖操作系统
  • 支持无中断运行
  • 无内部任务调度
  • 支持时间片处理,将非关键、非周期性任务分散至多个周期中执行
  • 限制非周期性(邮箱)数据通信流量
  • 使用 C 语言宏与优化编译器

除了降低平均计算时间消耗外,控制器的峰值负载(最大计算时间或总线利用率)也是关键指标。主站软件应提供并管理多个参数设置,以降低峰值负载。目标始终是确保主站之上的实际应用拥有足够的计算资源,并始终遵守指定的时间要求。

系统变量

如今,EtherCAT 被广泛应用于各种场景中。控制器硬件从小型嵌入式 ARM 处理器(如 Cortex-M4),到强大的 ARM 多核处理器(如 Cortex-A57),甚至高端工业 PC/服务器处理器(如 Intel Core i5、i7、Xeon)不等。主站设备可以部署在这些系统上,但根据具体应用,可支持的最大从站数量、周期性数据大小以及最短周期时间可能差异巨大。

在设计 EtherCAT 系统时,选择处理器通常并不会优先考虑主站软件的需求,而是由实际应用的数据处理需求决定。

因此,以下因素将决定可实现的性能,并影响所需控制器硬件的选择:

  • 从站设备的数量与类型
  • 周期性过程数据的大小
  • 所需周期时间
  • 所需主站功能(如分布式时钟、热插拔、冗余等)
  • 应用所需的计算能力

如后文所示,acontis 的 EtherCAT 主站软件 EC-Master 综合考虑了上述设计因素,并能有效管理众多系统变量,通常仅占用 10–20% 的 CPU 可用时间。

性能测量方法

为了支持控制硬件的选型,或评估现有硬件在 EtherCAT 应用中的可行性,可参考已有性能数据或进行新测量。关键在于对主站软件在周期处理路径中的计算时间进行准确测量。
近年来,acontis 在不同系统与操作系统上,使用相同参考网络配置进行了大量性能测量。这些数据可用于对特定处理器的性能进行初步评估。

当然,最可靠的方式是在目标硬件上运行实际操作系统与网络配置进行实时测量。此类测量无需专业知识或额外设备,可通过 EC-Master 软件附带的示例应用轻松完成:EcMasterDemo 与 EcMasterDemoDc。应用会记录各个主站任务函数的执行时间(最小值、最大值、平均值)以及周期时间,并保存至日志文件或打印至控制台。

示例应用中的内置测量功能

在 acontis EC-Master 中,应用与主站协议栈的周期部分通过同步调用特定函数(即任务函数)完成,每个函数执行一个具体任务。这些函数通常由高优先级任务调用,以控制网络时序。多数情况下,该高优先级任务已存在于用户应用中,因此可直接调用这些函数。这些任务在应用上下文中执行,不与其他任务交互,因此可通过测量这些函数的执行时间,简单而准确地评估主站协议栈的计算时间消耗。

在一个周期开始时,首先会更新新接收到的数据(输入)。这一步通过调用 Process Inputs 任务函数,对之前接收到的 EtherCAT 帧进行解析来完成。随后,应用程序使用这些新接收的数据计算出需要发送到网络的输出数据。这些新的输出数据会在调用 Write Outputs 任务函数时发送出去。
借助 直接内存访问(DMA) 技术,数据帧可从内存传输至以太网控制器,无需占用 CPU 资源,并通过物理网络发送出去。该数据帧会依次经过网络中的所有 EtherCAT 设备,并在返回至 EC-Master 时自动被接收,无需中断触发。随后,通过调用 EC-Master Administration 任务函数,主站状态机以及各个从站设备的状态机将被执行。
在系统初始启动过程中,所有从站设备(SubDevices)必须通过一系列顺序步骤从 INIT 状态转换至 OPERATIONAL 状态。在正常运行期间,状态机还需处理非周期性通信,例如通过 EtherCAT 上的邮箱协议(CAN 应用协议,CoE)下载参数。

这些非周期性邮箱通信需要额外的数据帧,包含针对特定从站的读写命令。该非周期性数据帧通过调用 Send Acyclic Datagrams/Commands 任务函数发送。需要注意的是,EC-Master 必须具备限制此类非周期性数据流量的能力,否则可能导致网络或 CPU 过载。数据帧通过 DMA 从内存传输至以太网控制器,无需 CPU 负载,并在网络中传输后自动返回主站,无需中断。

使用示例应用进行性能测量

EC-Master 软件内置性能测量功能,可通过示例应用命令行参数 –perf 启用。启用后,应用将测量周期任务中各函数的执行时间,以及周期任务整体的计算时间。测量使用 API ecatPerfMeasStart() 与 ecatPerfMeasEnd() 实现高精度时间计算。

测量结果每隔几秒记录一次,并以如下格式打印至控制台:

PerfMsmt 'Cycle Time                     ' (min/avg/max) [usec]:  948.3/1000.0/1053.5
PerfMsmt 'Task Duration (JOB_Total + App)' (min/avg/max) [usec]:    7.4/  12.2/  77.0
PerfMsmt 'JOB_Total                      ' (min/avg/max) [usec]:    7.0/  11.4/  67.5
PerfMsmt 'JOB_ProcessAllRxFrames         ' (min/avg/max) [usec]:    1.3/   3.4/  46.2
PerfMsmt 'JOB_SendAllCycFrames           ' (min/avg/max) [usec]:    3.0/   3.9/  41.5
PerfMsmt 'JOB_MasterTimer                ' (min/avg/max) [usec]:    0.4/   1.5/  37.9
PerfMsmt 'JOB_SendAcycFrames             ' (min/avg/max) [usec]:    1.5/   2.4/  36.9
PerfMsmt 'myAppWorkPd                    ' (min/avg/max) [usec]:    0.0/   0.2/  27.9

测量结果示例

以下测量结果基于不同控制器、不同周期时间下,连接 16、32、64 个从站设备的测试。EC-Master 对 CPU 的负载百分比通过各任务函数的累计运行时间与周期时间的比值计算得出。

Texas Instruments AM3359, ARM Cortex-A8, 32-Bit, 600 MHz

EC-Master CPU Load on TI AM3359

NXP i.MX 8, ARM Cortex-A72, 64-Bit, 1 GHz

EC-Master CPU Load on NXP i.MX8

Intel Atom, Elkhart Lake x6425E, 64-Bit, 1.80 GHz

EC-Master CPU load on Intel Elkhart Lake x6425E

NVIDIA®Jetson AGX Orin™, Cortex®-A78AE, 64-Bit, 2.2 GHz

EC-Master CPU Load on NVIDIA®Jetson AGX Orin™

EC-Master 性能数据表

acontis 提供了涵盖多种 CPU 架构、主板、操作系统的 EC-Master 性能测量结果,详见 EC-Master Performance Data Sheet.