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.
你好!
希望大家都做得好。 得到了一些困惑、我非常希望能够为我的代码清除!
我现在已经在代码中的某个点对 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。
韩文