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.

[参考译文] TMS320F28379D:实现3类控制器时的澄清

Guru**** 2577385 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1215627/tms320f28379d-clarification-in-implementing-the-type-3-controller

器件型号:TMS320F28379D

专家、您好!

我正在设计用于电感器电流控制的3类控制器。 得到的典型3补偿器如下所示。

COMP =  

333.9s^2 + 1.498e06 s + 4.428e09
-------------------------------------------------------
S^3 + 1.098e04 s^2 + 1.088e06 s

采样时间为20e-s 的数字时

0.003148 z^3 - 0.002862 z^2 - 0.003132 z + 0.002878
-------------------------------------------------------
z^3 - 2.802 z^2 + 2.604 z - 0.8021

我通过以下方式实现了上述内容。

#include

#定义 A1 2.802.
#define A2 - 2.604.
#define A3 0.8021.
#define B0 0.003148.
#define b1-0.002862.
#define b2-0.003132.
这是一个很好的例子

***** 某些随机代码*****

void inner_Loop_Control()


Cntrl3P3Z.set = 0;   
Cntrl3P3Z.FBK =(float) IL_filtered;

E[0]= Cntrl3P3Z.set - Cntrl3P3Z.FBK;

Y[0]= B0*E[0]+
B1*E[1]+
B2*E[2]+
B3*E[3]+
A1*Y[1]+
A2*Y[2]以上
A3*Y[3];

Y[0]=限制器(Y[0]、1000、0);//饱和 UL 1000和 LL -0
//存储先前的值
Y[3]=Y[2];
Y[2]=Y[1];
Y[1]=Y[0];
E[3]=E[2];
E[2]=E[1];
E[1]=E[0];

DacbRegs.DACVALS.all = 4*Y[0];
DacaRegs.DACVALS.all = Cntrl3P3Z.set;

}

首先、我将参考值设置为0、并在反馈中标记了一些偏移集、这会产生一些-ve 错误。 因此、我的控制器输出应该趋稳在较低的饱和值。 即0。 但我在一个周期后重复了一些值

因此、我将设定值设置为4000、FBK 具有一些小的偏移、从而产生巨大的+ve 误差。 因此、我希望我的控制器能够稳定在+ve 饱和限值、即1000、但在输出端仍显示相同的图形。  

 我的控制器实现是否正确?  有人能帮我找出我犯了错的地方吗?

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

    请参阅任何参考 TI DP SDK 设计中的示例代码、并正确设置您的最大值、最小值。  您的代码可能不包含饱和。  这种类型的控制已在许多此类参考设计中实现。

    参考设计:TIDM-2008、TIDM-2002

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

    尊敬的 shamim:  

    我将介绍上面提到的软件。

    我的控制器输出是占空比、因此我在3P3z 控制后应用了饱和、这由"限制器"功能调用、并且上限和下限值与该功能一起传递。 在示波器图像中、您可以看到蓝线点击3V 表示此时控制器输出为1000。

    DAC 输出为4*ControllerOut = 4*1000是模拟域中的3V

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

    这里看起来不错、