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.

[参考译文] TMS320F28388D:有关 DSP28388计算中的峰值的问题

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1085737/tms320f28388d-questions-about-spike-in-dsp28388-calculation

部件号:TMS320F28388D
“线程:测试”中讨论的其它部件

我在使用28388计算 PI 控制器时遇到问题。 在我看来,PI 控制器是为共振转换器设计的。 在 PI 控制器中,错误信号是通过将转换器的输出电压与固定参考进行比较而产生的。 (输出电压通过 ADC 感应并转换为数字。)  

以下是我的 PI 计算代码:

pI_err=pI_ref - pI_FDB;//通过比较参考和反馈输出电压计算出的错误  

PI_OUT = PI_OUT +(KP * PI_ERR + KI * PI_err2);// PI 输出计算(PI_OUT 确定谐振转换器的切换周期,在我的情况下,切换周期为1700 *5ns)

PI_err2 = PI_ERR;//错误的“集成”

 其中,KP = 0.5,KI =-0.48

问题是:在测试期间,闭环控制工作正常(我的参考电压为120V,实际输出电压调节为120+-0.3V)。 通过 ADC 转换这些数字后,错误(pI_err)介于-2到2之间,这意味着 pI_out 的更改应该非常平稳。 让我们举一个极端的例子,比如 pI_err=2,pI_err2=-2;然后 pI_out = pI_out +(0.5*2+(-0.48)*(-2)= pI_out + 0.98。 因此 pI_out 值在周期之间最多只能更改1。 但是,通过图形工具,我可以观察 到 PI_OUT 通常会出现尖峰(例如,从1703到1711 ,然后返回到1704)。 请参见下图。

这种峰值会使共振转换器变得“不稳定”。 但我不明白这种飙升是如何 产生的。 我认为这不应该根据计算结果发生。

有人能帮助解释或解决这个问题吗? 非常感谢!

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

    校正:

    上述愚蠢的错误:

    PI_OUT = PI_OUT +(0.5*2 +(-0.48)*(-2))= PI_OUT + 1.96,这意味着 PI_OUT 在两个周期之间的变化不应超过2

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

    您好,春阳,

    您是否已完全验证 ADC 感应反馈信号,并确保没有突然的噪音或类似的噪音?  

    此致,

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

    您好,春阳,

    请确认计算中使用的变量的数据类型吗? 您是否对所有数据使用浮点?

    我认为,PI_ERR 只有3种状态:-1,0和1来自数据收集结果。 请确认它是否为浮点值吗?

    您可以尝试的一种方法是将计算中的变量保存到设备上的缓冲区(RAM)中,并通过 CCS 转储数据。 然后,您可以 使用收集的输入值/输出值在计算机上运行计算验证。

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

    是的,ADC 信号非常平滑。  

    顺便说一句, 这个问题是根据汉的建议解决的。 谢谢大家!

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

    谢谢你,Han! 我没有对所有数据使用浮点。 这可能是问题的原因。 我已将所有变量更改为 int。 然后问题得到解决。 我没有尝试所有变量都是浮动的,但我想它也可以起作用。 谢谢!