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.

TMS320F280049C: DCL_runDF22

Part Number: TMS320F280049C
Other Parts Discussed in Thread: CONTROLSUITE

您好,

    请问一下DCL_runDF22_C4,DCL_runDF22_C5,DCL_runDF22_C6与下面的2P2Z在使用时有什么区别呢,参数ek使用时必须进行标幺化吗?下面的代码来自controlSUITE。(C:\ti\controlSUITE\libs\app_libs\solar\v1.2\float\source)

  • 您好

    正在为您处理中,请耐心等待。

  • 您好

    我非常抱歉的疏忽和延迟的答复,不知道它是如何滑在我的雷达下,它也没有出现在我的轨道下。 按算术方式、您显示的 DF22和2P2Z 函数之间没有差别。 然而、它们具有不同的 API、DCL 的 DF22效率更高、因为它将每个部分分解为函数本身、用户可以充分挑选要使用的函数。 DCL_runDF22_CX 函数名称可能有点令人困惑、因此请参阅下表了解每个函数的功能。

    Fullscreen
    1
    2
    3
    4
    5
    6
    #define DCL_runDF22_C1 DCL_runDF22 // C28 ASM function
    #define DCL_runDF22_C2 DCL_runDF22PartialCompute // C28 ASM function
    #define DCL_runDF22_C3 DCL_runDF22PartialUpdate // C28 ASM function
    #define DCL_runDF22_C4 DCL_runDF22 // C28 C function
    #define DCL_runDF22_C5 DCL_runDF22PartialCompute // C28 C function
    #define DCL_runDF22_C6 DCL_runDF22PartialUpdate // C28 C function
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    如您所见、DCL_runDF22_C4是一个常规2p2z 补偿器、不带饱和钳位、用 C 语言编写、其中 C3/C6是部分函数的 C/汇编版本、用户可使用此函数将饱和/钳位添加到 DF22中。 前面提到的2P2Z 函数有一个饱和钳位、因此其类似的替代方案可如下所示:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    float32_t DCL_runDF22Clamp(DCL_DF22 *df, float32_t ek, float32_t Umax, float32_t Umin)
    {
    float32_t uk = DCL_runDF22_C2(df, ek);
    bool is_clamped = DCL_runClamp_C1(&uk, Umax, Umin);
    if(!is_clamped) DCL_runDF22_C3(df, ek, uk);
    return(uk);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    请注意、C2/C1/C3都是汇编函数、因此您必须在 DCL 的源文件夹下包含相应的.asm 文件。如果只想在不添加额外文件的情况下评估代码、则其等效的 C 函数为 C5/C2/C6。 对于 DF22和2P2Z 实现、只要所有参数都是相同的单位(EK、UK、UMIN、UMAX)、这些参数都是单元无关的。 如果通过 PU Ek 作为输入、则应将 UK in PU 作为输出。