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.

[参考译文] TMS320F28069:F28069_PID 钳位 PID 影响其输出

Guru**** 2556970 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1237957/tms320f28069-f28069_pid-clamping-pid-effects-its-output

器件型号:TMS320F28069

您好!

我 在我的软件中测试了 DCL_runPID_C4和 DCL_runClamp_C1抗饱和复位。

调试过程中, 我使用电位器,并向我的 YK 端口提供信号,以测试控制器输出英国。

我把 rk 设置得高于我的 YS,我没有改变它。 这意味着控制器无法达到所需的值。

在监视调试屏幕期间、我看到 UK 会更改不同的值、如1。 尽管英国(UK)各不相同、但 REF_CMPSS_PEAK 没有变化。 会是怎样的?

float upperlim_PSFB_volt = 0.15f;
float lowerlim_PSFB_volt = 0.0f;

uk_PSFB_volt = DCL_runPID_C4(&pid_volt_hv2lv, rk_PSFB_volt, yk_PSFB_volt, lk_PSFB_volt); //Parallel form PID

clampactive_PSFB_volt = DCL_runClamp_C1(&uk_PSFB_volt, upperlim_PSFB_volt, lowerlim_PSFB_volt);
lk_PSFB_volt = (clampactive_PSFB_volt == 0U) ? 1.0f : 0.0f;

REF_CMPSS_PEAK = uk_PSFB_volt * PSFB_IRAMPMAX_SET_RATIO; //Inner PCMC Loop Peak Current Calculated

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

    尊敬的 Gokhan:


    如果您的 UK 发生了变化、并且 PSFB_IRAMPAX_SET_Ratio 可能是一个常数、我不明白 REF_CMPSS_PEAK 不变化的原因。 您的 YS_PSFB_VOLT 是否会增加? 由于你的 lowlim 为0、如果正 UK 反馈导致 YK 降低、那么控制器不能做任何处理、因为 lowlim 被钳位到0。 这里只是对潜在问题的一些想法。

    runPID 具有基于 DCL_PID 的最小值和最大值的内置钳位、 因此、您不需要另一个 runClamp 函数、并且只要设置了正确的 umin Umax 值、就可以始终将 lk_PSFB_volt 保持为1、具体请参阅此处的原理图:

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

    您好!

    您的 YS_PSFB_VOLT 是否一直增加?

    我可以使用电位器手动增大电压、具体取决于我。 我有时增加、有时不增加。 在我的测试设置中、我尝试获取电池充电盒。 这意味着我的英国将始终很高、直至达到电池电压。 我遇到了这种情况。 关于这个问题、您能帮助我吗?

    	// external clamp for anti-windup reset
    	clampactive = DCL_runClamp_C1(&uk, upperlim, lowerlim);
    	lk = (clampactive == 0U) ? 1.0f : 0.0f;

    但我需要这个问题来解决反饱和问题。  我在上面的 TI 示例工程中添加了代码片段。 (F28069_PID)

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

    感谢您提供背景信息 Gokhan、

    如果我理解正确、那么您说的 Rk 高于 YK、您的 REF_CMPSS_PEAK 就永远不会改变? 您的 REF_CMPSS_PEAK 是否始终卡在0.15*PSFB_IRAMPMAX_SET_RATIO? 是否有适当的反馈响应(即无论如何 REF_CMPSS_PEAK 的值改变了 YS?)

    关于 DCL_runClamp_C1、是的、这是一个外部饱和钳位、PID 也有一个内部饱和钳位、也可以防止反饱和、具体取决于您的 pid_volt_hv2lv 的 Umax 和 Umin。 这两者的默认值为+/-1、但您可以将其更改为0.15和0、因此无需在场景中使用额外的钳位。


    此致!

    王森

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

    尊敬的 Sen:

    如果我理解正确,您是说当您的 rk 高于 YK 时,您的 REF_CMPSS_PEAK 永远不会改变?

    是的、但正如您所说、这是正常的。 我始终在 PID 输出端获得 Umax。

    您的 REF_CMPSS_PEAK 是否始终卡在0.15*PSFB_IRAMPMAX_SET_RATIA比?

    是的、但正如您所说、这是正常的。 因为我的 rk 高于 Yk。

    我把 rk 设置得高于我的 YS,我没有改变它。 这意味着控制器无法达到所需的值。

    在监视调试屏幕期间、我看到 UK 会更改不同的值、如1。 尽管英国(UK)各不相同、但 REF_CMPSS_PEAK 没有变化。 会是怎样的?

    [/报价]

    1)这是真正的问题。 我的英国采取了一些有趣的值,如1,虽然它必须是0.15直到 YD 达到 rk。  尽管英国(UK)各不相同、但 REF_CMPSS_PEAK 没有变化。 会是怎样的?  

    在 F28069_PID 的参考软件中。 下面的钳位功能用于抗饱和复位。 PID_C4具有钳位功能、但为了正确使用它、我还需要编写 runClamp_C1。

    	// run PID controller
    	uk = DCL_runPID_C4(&pid1, rk, yk, lk);
    	
    	// external clamp for anti-windup reset
    	clampactive = DCL_runClamp_C1(&uk, upperlim, lowerlim);
    	lk = (clampactive == 0U) ? 1.0f : 0.0f

    提前感谢。

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

    尊敬的 Gokhan:

    感谢您的澄清、我不确定您的担忧是什么、现在我明白了。

    在调试屏幕中进行跟踪时、DCL_runPID_C4生成的第一个 UK 结果的范围为+/-1 (假设您使用的是 Umax 和 Umin 的默认值)。 尽管如此、外部钳位 DCL_runClamp_C1会进一步绑定 UK 至0.15~0 Ω(在这种情况下、如果 UK 超过0.15、则会被钳位至0.15)。 这就是为什么在  REF_CMPSS_PEAK 计算行中、尽管英国之前的值可能高于0.15、但 PSFB_IRAMPMAX_SET_RATIO 的值始终为0.15 *。

    调试 会话的一个奇怪之处是、相关的变量只会更改值  之后 该线已被追踪。 如果您希望稍微分解几行、则可以插入一行 asm (" NOP")或  asm (" ESTOP0")(软件断点)以进行调试、并在插入的行之前查看变量的状态。

     

    此致!

    王森