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.

[参考译文] TMS320F28335:PID (DCL)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1255409/tms320f28335-pid-dcl

器件型号:TMS320F28335

您好、我继续我的上一篇文章、因为我看不到那里的回复选项。 我几天都不在,不能回复最后一个问题,它现在被锁定了。 现在、我附加最后一个主题以继续。  

TMS320F28335:TMS320F28335:PID 仿真(DCL)- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛

我担心的是,YD 远远超出了+/-1的范围,它在图 5上显示12.9f,应该不是这样的。 如果我们 快速计算、P 路径的控制力度将是 ABS (YK - RK)* KP =(12.9 - 0.25)* 9 = 113.85、这个值会被钳位到1。

问题1:

在这里、我看到 QD 为0、而 QD 为1.2V 时的为12.9。 如果 ADC 值为0 且电压为0V、则必须钳位至+/-1;如果 ADC 值为4095且电压为3V、则必须钳位至如图所示的极值。 之前的回复说明 KP =9处的控制器反应过度,并显示最大的控制力度。 我想确认是否应该 将 KP 或其他控制参数设置为使 KD =+/-1?  您可以看一下 DCL 指南示例3、4和5。 RK 可以更改、英国可以更改、QD 必须介于-1和+1之间。  我应该做哪些更改才能将其保持 在+1和-1之间?

目前、您是否有任何反馈机制 允许 使用占空比并影响 ADC 输入? 如果没有任何反馈、 PID 控制器将永远无法达到目标电压、且其 I 路径最终会使反馈达到饱和。 如果 无法持续施加输入影响、控制器最终会在达到目标值时稳定在0%。 要让控制器 不断提供控制措施、唯一方法是 从不断施加影响开始。

问题2:

我 正在实施此电路、如下图所示。 在降压转换器物理设备模型中、输入 Vin 为20V 直流、输出 Vout 为10V 恒定直流。 但在这里、 将 针对我的测试将上述受控体模型与反馈部分分离、然后从外部电源提供0-3V 直流输出。 反馈部分将生成一个具有栅极晶体管(栅极驱动器)占空比的 EPWM 信号。 正如我之前说过的、我将删除上述 Buck 受控体模型、然后检查此变化的 占空比  0-3V 直流电源通过示波器测量电压和电流 。  在这里、我可以更改输出的电源值、如0V、1V、1.5V、2V 等 、并将看到相应的影响占空比。  现在是否有必要将工厂模型与反馈零件连接起来、以进行具有 PID 机制的初始设置? 在此设置中、如果没有工厂模型 、但仅使用外部电源0-3V、然后检查硬件上的仿真、PID 是否能够达到目标值(Vref 值)?

如果只需要基于 ADC 读数的成比例占空比、 则不需要 PID 来实现、直接将 ADC 读数分配到占空比寄存器就足够了、前提是不会对系统产生外部影响。

问题3:

在这 种情况下、  需要在 ADC 与占空比之间生成公式/关系、其中 ADC 分别具有两个极端值0 (0V)和4095 (3V)以及占空比0和100%。  如果任何此类值达到1.2V 或1638数字值、则中间的占空比约为45%或40%。 可以在我的代码中实现此公式、但 问题是、如果在启动降压转换器装置模型时输出变为高电平、并且您需要稳定在一个值、则不存在钳位/饱和或抗饱和复位设置。 这就是我使用 PID 的原因、它可以控制输出、并稳定在一个相对于参考/设置值 Vref 的值。  

uK/2.0f + 0.5f 是尝试将控制输出范围从-1.0~1.0f 标准化为0~1.0f、表示占空比的0%至100%。

问题4:

~是什么意思? 是否意味着-1到+1? 以及它如何等于0 ~ 1? 正如我所知道的这个公式 YK=((float) AdcRegs.ADCRESULT0 - 2048.0f)/ 2047.0f;它给出介于-1到+1之间的 Yk 值? 那么、它如何等于0 ~ 1?  

问题5

我在这里附加了一个代码。  如您之前所说、使用此程序时、占空比将不会是中间值、使用 PID 控制器时、占空比将是0%或100%。 我在 DCL 指南示例3、4和5中注意到了一件事。 LK 始终为1.0而非0。 但在本例中、它始终保持为0。 为什么?

0V 时、占空比为65535.0

在3V 时、占空比为0

在1.2V 时、占空比为  0.


请相应地提出上述问题的答案。

谢谢

此致

阿尔萨兰

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

    尊敬的 Arsalan:

    欢迎您回到网站首页,欢迎您的光临! 让我按相同的顺序回答您的问题:

    1、若不按比例缩小输入(反馈响应 YK),应按比例缩小 KP ,以补偿控制力 ABS(YK-Rk)*KP。 但是在您的情况下,309行应该通过将其缩放到+/-1来处理 YK,您可以通过跟踪代码来再次检查一下吗?309行后,它是否确实缩放到了+/-1?

    2.很抱歉,由于某种原因我看不到所附的图片,但感谢您的澄清。 您可以在不使用 Buck 受控体模型的情况下测试 PID 模型。 尽管如此、您仍必须非常细致地进行测试、因为您必须根据控制器输出来模拟您的 ADC 值。 我建议 在 ISR 例程中使用断点、以便您可以观察 UK 输出、同时为下一个 ISR 周期提供适当的 ADC 输入。 如果在每个周期中提供一个恒定的 ADC 值、控制器(P 路径立即饱和、或者 I 路径最终饱和)将输出一个饱和控制量 UK、这就是为什么无论您的调优如何、都可以看到最大/最小 UK 值。  

    3、得到了、我建议在你的情况下基于你的 ADC 值提供一个额外的偏移。 它是您的基本占空比值、因此当控制器处于稳定状态时、输出不是0%。  例如、当 ADC 为2048且控制器处于稳定状态(输出 UK 为0%)时、您可以添加50%的偏移、以确保占空比为50%。 偏移值就是您希望占空比稳定下来的值、在您的情形中、一个简单的内插值也可以很好地工作( 在第309行后 offest = YK/2.0f + 0.5f)。  请记住、需要钳制 Uk+OFFSET、以防止其超出范围。

    4.是的,在此对滥用符号表示歉意。 内部和外部钳位均确保 UK 保持在+/-1.0f 范围内、当 UK 为1时、UK/2.0f+0.5f 将其转换为1、当 UK 为-1时、将其转换为0。  

    5. LK = 0表示您的控制输出已饱和、请参见第317行。  LK 是一个抗饱和电流的度量、当 lk 为0时、I 路径值将在控制器计算中被忽略。

    此致!

    王森

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

    尊敬的 Seng:

    感谢您对所有问题的全面答复。 在这里、我只提及问题1和问题2。

    1、若不按比例缩小输入(反馈响应 YK),应按比例缩小 KP ,以补偿控制力 ABS(YK-Rk)*KP。 但是在您的情况下,309行应该通过将其缩放到+/-1来处理 YK,您可以通过跟踪代码来再次检查一下吗?309行后,它是否确实缩放到了+/-1?

    2.很抱歉,由于某种原因我看不到所附的图片,但感谢您的澄清。 您可以在不使用 Buck 受控体模型的情况下测试 PID 模型。 尽管如此、您仍必须非常细致地进行测试、因为您必须根据控制器输出来模拟您的 ADC 值。 我建议 在 ISR 例程中使用断点、以便您可以观察 UK 输出、同时为下一个 ISR 周期提供适当的 ADC 输入。 如果在每个周期中提供一个恒定的 ADC 值、控制器(P 路径立即饱和、或者 I 路径最终饱和)将输出一个饱和控制量 UK、这就是为什么无论您的调优如何、都可以看到最大/最小 UK 值。  

    现在、我将根据您的回答在此处添加结果和一些问题。 按照你的建议,为了检查操作,我使用了 YK,LK,UK,DUTY 的断点。 并每次按 debug (绿色按钮)操作即可查看结果。 阵列 Voltage1正在按位更新(0-9)

    在0电压(0)输入(ADCAN0)上:  从图片 adc1.jpg 转至 adc5.jpg 。 我注意到数组 Voltage1 (0-9)位正在按位更新其值、英国保持在 +/-1。 正确、YK 为0745、约为0。 Lk = 1、占空比为65535或0、英国也根据+/-1进行变化。    Voltage1数组的所有值都 按位顺序(逐步)从0开始、然后从1、2、..9开始、一直到。

    在3V 电压(4095)输入(ADCAN0)上:  从图片 adc6.jpg 转至 adc10.jpg 。 我注意到数组 Voltage1 (0-9)位正在按位更新其值、英国保持在 +/-1。 正确、Lk = 1、占空比为65535或0、英国也根据+/-1进行变化。  Voltage1数组的所有值都按位顺序(逐步)从0开始、然后从1、2、..9开始、一直到。  

    故障是3V 电压(4095)输入(ADCAN0)时,QD 始终保持在31。 如何 解决此问题?

     adc1.jpg

    adc2.jpg

    adc3.jpg

    adc4.jpg

    adc5.jpg

    adc6.jpg

    adc7.jpg

    adc8.jpg

    adc9.jpg

    adc10.jpg

    请给出相应的答案

    谢谢

    此致

    阿尔萨兰

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

    尊敬的 Arsalan:

    这个问题与内部代码逻辑有关、因此如果不复制您的代码、我将无法深入研究。  但是这个计算似乎有些偏差,如果你要根据读数手工计算出 YS,你会看到它应该是小于0.75,同样的也是在 YK 是31时。

    我唯一的建议是仔细检查 AdcRegs.ADCRESULT0的读数,并仔细检查以确保没有被 其他情况改变 YST. 问题与您的编程逻辑有关、您可以自行判断如何解决该问题。

    此致!

    王森

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

    尊敬的 Seng:

    感谢您的答复和建议。 它现在似乎按预期工作。 非常感谢!

    您对  AdcRegs.ADCRESULT0上的检查是正确的。 问题在于、 输入电压为3V 时的 AdcRegs.ADCRESULT0值为65320 (请参见图片)。 和 YK=(((float) AdcRegs.ADCRESULT0 - 2048.0f)/ 2047.0f  从不给你-/+1。

    所以我将这个值除以16:(float) AdcRegs.ADCRESULT0以使 y 保持在+/-1的范围内。

    我还有一个关于基准变化的问题。 请查看下面的帖子。  

    下面使用断点收集了结果:  

    1-  0V 时(使用断点) :

    图片 adc11.jpg 和 adc12.jpg 给出英国变化为-/+1 ,占空比变化是1250 (我已经改变我的 TBPRD 为120kHz=1250) 0r 0。 (Duty 0或1250)和 最重要的 YS =-0.9大约-1、

    adc11.jpg

    adc12.jpg

    2 - 1 -  3V (使用断点):

    图片 adc13.jpg 和 adc14.jpg 给出英国变化-/+1 ,占空比变化是1250 (我已经改变了我的 TBPRD 为120kHz=1250) 0r 0。 (Duty 0或1250)和  最重要的 YK=+1、

    adc13.jpg

    adc14.jpg

    现在我有几个问题;

    上图使用0.25处的参考值。 当我将 rk 值从0.25更改为2.0或任何其他超过0.25的值时、它不会在结果中进行任何更改。 如果我选择不同的基准 值、我可以实现什么变化? 请对此进行说明:

    在所有4个 pictures...adc21.jpg、 adc22.jpg、adc23.jpg、adc24.jpg 均为使用参考值2.0的值。  

    0V 时(使用断点):  adc21.jpg

    0V 时(使用断点):  adc22.jpg

    3V 时(使用断点):  adc23.jpg

    3V 时(使用断点):  adc24.jpg

    请给出相应的答案

    谢谢  

    此致

    阿尔萨兰

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

    尊敬的 Arsalan:  

    很高兴您解决了这个问题! 我还忽略了 ADC 读数的行306和307、建议该值应除以2^4。

    回到您的问题、请参阅本主题中对您的问题2的原始响应。 这里解释了您未看到任何英国更改的原因。 因此、您必须按照所述输入适当的 ADC 值、才能查看非饱和 UK 值。

    此外,一个简单的 P 路径计算可以被描述为 ABS(YK-RK)*KP,它是由 upi/lowerLim 钳制的。 因为 KP 值是9.0f、所以上部/下部 Lim 值是+/-1.0f。 您的 ABS (YK-RK)为1/9。 这意味着如果 YS, rk 差值大于0.111就会使您的控制工作饱和。 因此、为了 获得最佳结果、您可能需要修改 PID 参数。

    此致!

    王森

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

    尊敬的 Sen:

    感谢您的答复。 我将发布另一个线程来调整 pid,并将在我收集更多的数据后讨论 UK、Yk、e 和 lk 的响应图。

    谢谢

    此致

    阿尔萨兰

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