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.

[参考译文] AM2434:想了解调用 EtherCAT 子器件回调函数的时间

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1584031/am2434-want-to-know-the-timing-of-calling-callback-functions-of-ethercat-subdevice

器件型号: AM2434

您好、

客户对 EtherCAT 子器件的回调功能有疑问。 你能帮助回答他们在下面的问题吗?

 

从客户处、

--------------------------------------------------------------------------------

我想确认官方文档中列出的四个函数(包括 EC_API_SLV_cbRegisterPreSeqInputPDBuffer)的回调调用的时序。

https://software-dl.ti.com/processor-industrial-sw/esd/ind_comms_sdk/am243x/latest/docs/am243x/ethercat_subdevice/proc_data_mem_access.html

 

我的理解是否正确、即时间与随附表中所述的时间相对应?

如果没有、您能否说明正确的时间?

回调 Functions.xlsx 的时序 

----------------------------------------------------------------

谢谢。此致、

英明

 

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

    Hello Hideaki、

    所附工作表中描述的时序部分正确

    输出过程数据缓冲区由写入 PDO_OutputMapping () 、它与 SYNC0/SM 事件同步。 在此函数中、使用注册的回调  EC_API_SLV_cbRegisterPreSeqOutputPDBuffer () 调用以获取应用程序处理的输出 PD 缓冲区、并将输出 PD 从 本地缓冲区复制到 获取的 输出 PD 缓冲区中 、然后调用 使用注册的回调  EC_API_SLV_cbRegisterPostSeqOutputPDBuffer ()  将采集的输出 PD 缓冲区释放回应用程序。  将输出 PD 从 ESC 复制到本地缓冲区后、将触发这些回调。  堆栈内部函数也可以访问此输出 PD 缓冲器、以更新输出 PDO 对象值。

    同样、读取输入过程数据缓冲区  PDO_InputMapping() 、它 与 SYNC0/SM 事件同步。 在此函数中、使用注册的回调  EC_API_SLV_cbRegisterPreSeqInputPDBuffer () 调用以 获取  应用程序处理的输入 PD 缓冲区、并将输入 PD 从 获取的输入 PD 缓冲区复制到本地缓冲区 、然后调用 使用注册的回调  EC_API_SLV_cbRegisterPostSeqInputPDBuffer ()  将采集的输入 PD 缓冲区释放回应用程序。  这些回调会 在输入 PD 从本地缓冲区复制到 ESC 之前触发。  堆栈内部函数也可以访问此输入 PD 缓冲器、以便在写入输入 PDO 对象时更新此缓冲器。

    此致、

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

    尊敬的 Harsha:

    非常感谢您查看计时示意图。 您能否在下面查看他们的其他反馈?

    ------------------------------------------------

    它被提到的是用 EC_API_SLV_cbRegisterPreSeqOutputPDBuffer () 注册的回调与 SYNC0/SM 事件同步。
    是否有回调与 SM 事件显式同步?
    或者,在通过 EC_API_SLV_cbRegisterPreSeqOutputPDBuffer () 注册的回调中,是否有办法确定调用是由 SYNC0 还是由 SM 事件触发?
    ------------------------------------------------
    谢谢。此致、
    英明
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi Hideaki、

    没有从同步管理器事件触发的显式用户回调。 但在 SM 同步模式下、SubDevice 应用函数(例如 EC_SLV_APP_cia402Application)是从 Sync Manager 事件触发的。 在直流同步模式下、子器件应用从 Sync0 事件触发。
    通过 EC_API_SLV_cbRegisterPreSeqOutputPDBuffer () 注册的回调总是从 SM 事件触发(如果启用)。 如果禁用了 SM 事件、则  会在 DC 同步 模式下从 Sync0 事件触发回调。

    此致、

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

    尊敬的 Harsha:

    感谢您的回答、但很抱歉我延迟了回复。 我们已收到客户对您评论的反馈。

    ------------------------------------------------

    我们使用直流同步+ SM 事件。  我在用 ec_api_SLV_cbRegisterPreSeqOutputPDBuffer () 注册的回调内切换了一个 GPIO 以检查时序。  我发现回调在 DC 同步时序和 SM 事件时序(每个通信周期触发两次)时都被触发。

    我期望只能在 SM 事件计时时触发回调。  

    通常、在运动控制中、需要在 SM 事件时序处存储数据、并让每个内核在 DC 同步时序处同时开始处理。

    ----------------------------------------------------

    “你以为你赢了吗?

    谢谢。此致、

    英明

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

    Hello Hideaki、

    我们正在使用 DC 同步+ SM 事件。  我在用 ec_api_SLV_cbRegisterPreSeqOutputPDBuffer () 注册的回调内切换了一个 GPIO 以检查时序。  我发现在 DC 同步时序和 SM 事件时序(每个通信周期触发两次)时都会触发回调。

    使用  EC_API_SLV_cbRegisterPreSeqOutputPDBuffer () 注册的回调也将在 CiA402 应用函数  EC_SLV_APP_cia402Application () 中被调用。 此应用函数与 DC Sync0 同步。 因此、您观察到每个通信周期会触发两次回调。

    此致、