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.

[参考译文] C2000-digitary-control-library:有关 DF22 CLA 程序和 DCL 函数的问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/997765/c2000-digital-control-library-questions-about-the-df22-cla-programs-and-dcl-functions

器件型号:C2000数字控制库

你好!  

希望大家都做得好。 得到了一些困惑、我非常希望能够为我的代码清除!

我现在已经在代码中的某个点对 CLA 进行了编码、以便将预计算2p2z 控制器的控制工作返回到 CPU。  

我的理解是、调用 DCL 函数会返回浮点值(假设、因为钳位限制始终设置为浮点值!)

通过将该值放入 CMPA 寄存器、获取该值然后使用调制 PWM 寄存器的最佳方法是什么? 我认为这些寄存器采用 uint_16T、是否有有效的方法将浮点值转换为无符号16位整数?

在所有示例中、一组数组以 浮点形式填充了两者之间的完整、部分和差异结果。  

为什么所有 DCL 示例中的数据长度都很大、例如1601? 对于2P2Z 结果、您只需要存储之前结果中的3-4个结果、这难道不是事实吗? 为什么定义的数组如此大、无法计算下一个结果?

计算完整和部分结果后、程序将计算两者之间的"差异"。 这种"差值"是否与控制结果相同、因此我们应该使用"差值"数组来计算下一个占空比、频率或相位?


最后、如果我们确实需要如此大的阵列、我们使用其中的哪一部分来计算 PWM 信号的实际频率、占空比或相位? 如果数组中有1601个数据点、我们是否始终使用最新的结果来调制 PWM 寄存器?

提前感谢、
Joel

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

    Joel、

    由于评估原因、DCL 示例使用该数组记录控制器的输入/输出。 查看 F28069_DF22示例、u1k 和 u2k 是控制力度输出变量、两者都是浮点变量。

    要将单极 DCDC 控制力度输出的控制力度转换为 ePWM 压实器值、您需要将其缩放到0-1范围、并通过 ePWM 的 TBPRD 设置将其倍数。 通过这种方法、控制输出被缩放到控制力度的0%至100%。

    韩文

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

    您好、Han、

    感谢您的回复-将比例调整为0-1的最佳方式是什么?  

    我感到困惑的是、正如您所说的、控制力度是浮点的。 如果我们简单地将这个浮点值绑定在0和1之间、我们是否可以将它乘以 TBPRD 寄存器、而 TBPRD 寄存器不是浮点、没有任何问题?

    谢谢、
    Joel

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

    Joel、

    如前所述、您通常会使控制力度输出饱和。 一种常见的解决方案是直接将控制器输出饱和至0-1。 如果您希望以不同的值(例如 n)饱和控制力度、则可以在之后将控制器的输出乘以1/n、以将其降低到0-1。

    韩文

x 出现错误。请重试或与管理员联系。