61ic电子在线 首页 技术 查看内容

F28377 2P2Z(PID)设置与使用

2017-6-12 10:28


2P2Z是比较常用的电源环路补偿算法,这里对它的使用做一个简单的总结,便于后续使用
首先需要申明结构体:
 
//CNTL2P2Z  
volatile CNTL_2P2Z_F_C_Coeffs coeff1;//补偿参数结构体  
volatile CNTL_2P2Z_F_C_Vars var1;//控制相关结构体,var1.out就是控制的输出量  
然后在main函数里面将coeff1和var1这两个要用的结构体初始化,基本上都是赋零值
 
CNTL_2P2Z_F_C_VAR_INIT(var1);  
CNTL_2P2Z_F_C_COEFF_INIT(coeff1);  
往coeff1结构体内填充控制用的补偿参数:
[cpp] view plain copy
coeff1.Coeff_B2   = (float)(CNTL_3p3z_B2_1);                // B2  
coeff1.Coeff_B1   = (float)(CNTL_3p3z_B1_1);                // B1  
coeff1.Coeff_B0   = (float)(CNTL_3p3z_B0_1);                // B0  
coeff1.Coeff_A2   = (float)(CNTL_3p3z_A2_1);                // A2  
coeff1.Coeff_A1   = (float)(CNTL_3p3z_A1_1);                // A1  
coeff1.Max   = (float)CNTL_3p3z_Max_1;                      //Clamp Hi  
coeff1.Min   = (float)CNTL_3p3z_Min_1;                      //Clamp Min  
coeff1.IMin  = (float)CNTL_3p3z_IMin_1;                     //Clamp IMin  
连接var1结构体的输入量和参考量:
[cpp] view plain copy
var1.Ref = Vout_Ref_wInj;  
var1.Fdbk = Adc_Vout1;//0-1之间的值  
之后便可以在控制ISR函数里使用2P2Z进行控制了
 
    var1.Ref = Vout1SetSlewed;  
    Adc_Vout1 = ADCDRV_1ch_F_C(Vout1R);             //Read Vout and convert to float  
    var1.Fdbk = Adc_Vout1;  
    if (Start_Flag == 0 && No_2p2z == 0)  
    {  
        CNTL_2P2Z_F_C(coeff1,var1);  
        Duty1A = var1.Out;  
    }  
  
PWMDRV_1ch_F_C(BUCK_PWM_REG, BUCK_PWM_PERIOD, Duty1A);  

在部分程序里还有如下代码,但是在程序里的其他地方调用到:
 
struct CNTL_2P2Z_CoefStruct {  
    long b2;  
    long b1;  
    long b0;  
    long a2;  
    long a1;  
    long max;  
    long i_min;  
    long min;  
    };  
  
#pragma DATA_SECTION(CNTL_2P2Z_CoefStruct1, "CNTL_2P2Z_Coef");//程序里没用到  
struct CNTL_2P2Z_CoefStruct CNTL_2P2Z_CoefStruct1;//程序里没用到  

鲜花

握手

雷人

路过

鸡蛋

相关分类

推荐阅读

地址 :湖南省株洲市天元区利江花园
合作 Email: administration@61ic.com

  • 关注61ic官方微博
    了解最新动态

  • 关注61ic微信公众号
    这里有好玩的讯息

  • 加入61ic交流群
    不断在这里成长

© 2014-2017 HuNan 湖南索炜达电子科技有限公司 . All rights reserved.
湘公网安备 43020202000020号

Archiver|手机版|小黑屋||湘ICP备13001086号-2 QQ 
返回顶部