ZHCAEA5 August   2024 AM625 , AM6442 , AM69 , TDA4VM

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 什么是 EtherCAT?
    2. 1.2 什么是 PLC?
    3. 1.3 什么是 CODESYS?
  5. 2评估平台和方法
    1. 2.1 硬件
    2. 2.2 软件
    3. 2.3 测试拓扑
  6. 3性能指标
    1. 3.1 Cyclictest 性能指标
    2. 3.2 EtherCAT 性能指标
  7. 4优化
    1. 4.1 已实现的优化
    2. 4.2 未来注意事项
      1. 4.2.1 设置最大 CPU 频率
      2. 4.2.2 隔离核心
      3. 4.2.3 设置 CPU 亲和性
      4. 4.2.4 隔离核心并设置 CPU 亲和性
      5. 4.2.5 Ksoftirqs 到 FIFO
      6. 4.2.6 增加实时调度时间
      7. 4.2.7 禁用 irqbalance
      8. 4.2.8 使用独立的网络接口卡 (NIC)
      9. 4.2.9 禁用不必要的驱动程序
  8. 5总结
  9. 6参考资料
  10. 7附录 A:如何使用 CODESYS 协议栈将 TI 嵌入式处理器设置为 EtherCAT 控制器
    1. 7.1 硬件要求
    2. 7.2 软件要求
    3. 7.3 硬件设置
    4. 7.4 软件设置
      1. 7.4.1 Windows PC 设置
      2. 7.4.2 EtherCAT 控制器设置
      3. 7.4.3 CODESYS Development System 项目
      4. 7.4.4 执行
    5. 7.5 如何查看性能测量结果
      1. 7.5.1 附录 A 资源
  11. 8附录 B:如何在 CODESYS 协议栈上实现无限运行时间
    1. 8.1 CODESYS 许可背景
    2. 8.2 获取 CODESYS 许可证
    3. 8.3 激活 CODESYS 许可证
      1. 8.3.1 背景
      2. 8.3.2 建议的步骤
    4. 8.4 验证已应用 CODESYS 许可证
      1. 8.4.1 验证已应用 CODESYS 许可证的已知问题

未来注意事项

如上一节所述,通过另外几个步骤可以更好地了解 CODESYS EtherCAT 协议栈影响 CPU 负载和 KPI 的原因。这些步骤尚未得到广泛调查,但在此描述为未来可能采取的步骤。其中许多步骤基于 CODESYS 针对 Linux 系统优化资源的建议。

上一节中描述的优化主要是通过实验发现的。目前已知的是,当在每个硬件平台上启动 CODESYS 应用程序时,会出现与该应用程序相关的多个线程的列表。图 4-9 显示了使用 htop 捕获的此观察示例。此 htop 是在 Codemeter 应用程序导致 CPU 负载峰值时获取的。CODESYS 文档将这些线程称为“IEC 任务”。

优先级为 -56 的线程是使用 FIFO 优先级方案调度的 EtherCAT 任务。这一点可通过以下方法验证:在 CODESYS Development System 上进行检查,并在 CODESYS Linux 系统上的任务优先级映射资源中找到的关联优先级。理解其他 CODESYS 线程(“IEC 任务”)的功能要困难一些。

AM6442, AM625, AM69 AM62x 上的 CODESYS 相关线程图 4-9 AM62x 上的 CODESYS 相关线程

为了获得更多可见性,可以执行以下步骤:

  • 启用内核跟踪 (ftrace) 以检测中断或其他服务是否会干扰 EtherCAT 任务的性能

  • 在 CODESYS Development System 中实现 CPU 负载跟踪对象,以便更好地了解 CPU 负载随时间的变化

  • 在 CODESYS EtherCAT 应用程序在后台运行的同时运行 cyclictest,以查看各项指标是否与使用 stress-ng 运行的 cyclictest 显著不同。执行此任务的动机是查看各项指标是否与 EtherCAT 周期时间匹配,以及查看最大延迟是否以表明以太网流量很大的方式增加。

其他要尝试的实验包括以下各项。请记住,对于每个实验,首先使用 cyclictest 测试结果比从 CODESYS 捕获数据的更广泛过程更有益。