This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-AM243:调用 EtherCAT 从站的各种 PDO 回调函数的时序与周期时间不同步。

Guru**** 2553260 points
Other Parts Discussed in Thread: LP-AM243, TMDS64EVM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1540124/lp-am243-the-timing-of-calling-the-various-pdo-callback-functions-of-the-ethercat-slave-is-not-synchronized-with-the-cycle-time

器件型号:LP-AM243
Thread 中讨论的其他器件: TMDS64EVM

工具/软件:

你好

我正在使用 LP-AM243 电路板评估 EtherCAT 从站堆栈

SDK 版本为 ind_comms_sdk_am243x_09_02_00_08

示例工程使用 EtherCAT 从属设备中的 401_Simple。

我通过参考缓冲区处理 API 一章注册用于注册处理数据缓冲区和用户应用回调函数的回调函数。

InputPD 预读回调:appPreSeqInputPD ()
OutputPD 写前回调:appPreSeqOutputPD ()
加载回调后的 InputPD:appPostSeqInputPD ()
加载回调后的 OutputPD:appPostSeqOutputPD ()
用户应用程序回调: EC_SLV_APP_SS_applicationRun ()

当我使用处于此状态的主设备执行连接测试时、我确认调用了我设置的回调函数。

然而、即使主站的周期时间设置为 250us、
以 1ms 的间隔调用从设备的回调函数。

因此、我想确认以下两点。

  1. 由于从设备的各种回调函数是由帧接收触发的、因此在与周期时间相同的间隔调用各种 PDO 回调函数是否正确?

  2. 如果在 1 中的理解是正确的、您能告诉我如何与周期时间同步调用回调函数吗?

作为额外的信息、当我使用主器件的帧采集功能检查帧发送/接收间隔时、
可以根据周期时间设置发送和接收帧、因此似乎没有根据周期时间调用回调函数。

对此造成的不便、我们深表歉意、感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    我将尝试重现此问题并 向您提供反馈。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    进程数据缓冲区处理使用 API  EC_API_SLV_cbRegisterPreSeqInputPDBuffer ()、EC_API_SLV_cbRegisterPostSeqInputPDBuffer  ()、EC_API_SLV_cbRegisterPreSeqOutputPDBuffer   () 和 EC_API_SLV_cbRegisterSeqOutputPDBuffer () 注册的回调函数与 PDI 和中断同步。

     

    但是、即使主服务器的周期时间设置为 250us、
    以 1ms 的间隔调用从设备的回调函数。

    您能告诉我们您如何测量回调函数间隔吗?

    您是否在直流模式下测试过子器件?

    您正在使用哪个 EtherCAT 主设备进行测试?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复。
    我知道、您提供的回调函数是使用 PDI 和同步中断作为触发器来调用的。

    您能告诉我们您是如何测量回调函数间隔的?

    我使用 ClockP_getTimeUsec () 测量了回调函数之间的间隔,并使用示波器测量了回调函数内的 GPIO 开/关间隔,并确认在这两种情况下回调函数都是以 1ms 的间隔调用的。

    您是否在 DC 模式下测试了子设备?

    测试是在 SM 模式下执行的。

    您正在使用哪个 EtherCAT 主设备进行测试?

    主器件是 TMDS64EVM、我将运行 Acontis EC-Master 样本

    提前感谢您的考虑。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    在 SM 模式下、应 通过 PDI ISR 和 EtherCAT 应用程序触发回调。  您能否使用 TwinCAT 作为主器件和也在直流模式下测试回调触发间隔?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复。

    我们将考虑使用 TwinCAT 检查运行情况。

    但是、请理解、因为我的环境中没有使用 TwinCAT、所以需要一些时间来尝试。

    我也尝试了直流模式、并确认当周期时间设置为 500us 时、根据设置的周期时间值触发了回调。

    (但是,当设置了所需的 250us 时、由于另一个问题、P->S 转换时发生超时)