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.

[参考译文] SFRA:SFRA 收集:命令与测量的可变采样延迟

Guru**** 2538955 points
Other Parts Discussed in Thread: SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1135236/sfra-sfra-collect-commanded-vs-measured-variable-sample-delay

器件型号:SFRA

您好!

我正在使用 SFRA 库、对 处理数据收集的示例和文档有疑问。

//! \brief Collects the response of the loop because of small signal disturbance
//!        injected
//! \param *control_output pointer to the variable where control output is saved
//!                        note though the parameter is passed by reference
//!                        it is unchanged by the module
//! \param *feedback pointer to the variable where control output is saved
//!                        note though the parameter is passed by reference
//!                        it is unchanged by the module
//! \return None
//!
extern void SFRA_F32_collect(float *control_output, float *feedback);
 

在 SFRA Collect 中、我们会在时间(T1)提供输出控制值和测量的反馈。   反馈应该来自时间 t0还是来自时间 t1?

图10 让我认为 、SFRA_COLLECT 应 使用 该输出的输出和测量效果进行调用。  即 SFRA_Collect (&LastDutyPu、Vout1_Read);

但是、代码片段会调用具有输出和最后一个输出效果的 SFRA_Collect。  即  SFRA_Collect (&DutyPu、Vout1_Read);

如果 ISR 频率运行迅速、我假设"off by one index"错误并不重要、但我想知道正确的方法是什么。

谢谢、

-科林

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

    您好、Colin、

    我们的专家将在今天再次讨论这个问题。

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

    您好、Colin、

    每一次扰动有一个扰动结果。 在该 ISR 中 、读数线位于扰动线之后。 因此、假设第一个读数为 nuid、则电流读数对应于最后一次扰动。 该对将用于计算一个频率下的传递函数 Mag 和 Ph。

    谢谢

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

    谢谢。  "noid"是否意味着空和空?

    我是否 正确地解释了您的答案、以表示示例.c 代码未正确执行?  它应该更像:

    float last_inject_val;

    ISR()

      adc_val = read_adc ();

      SFRA_COLLECT (LAST_INCING_val、ADC_val);

      Inject_val = SFRA_Inject ();

      SET_PWM (注入_val);

      LAST_INPLED_val = INPING_val;

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

    Colin、

    从数学角度而言、我同意您的解释。  实际上、您将首先注入扰动、然后收集一个有意义的扰动结果、这是一个有意义的结果。 SFRA 是一个扫描过程、而不是一个常数、因此起始点应该是注入扰动的时间、 因此、我不会说示例 c.code 不正确。  

    谢谢