📄 ad.c
字号:
// **第三路电流 ACDINT5 CMPER3 **
I21_SAMPLE=AdcRegs.RESULT2>>4;
I21_ERROR=I21_REF-I21_SAMPLE;
I21_SUMERROR+=I21_ERROR;
if(I21_SUMERROR<-2000) I21_SUMERROR=-2000;
else if (I21_SUMERROR>2000) I21_SUMERROR=2000;
I21_IRESULT=I21_SUMERROR;
I21_IRESULT=I21_IRESULT>>8;
I21_IRESULT=I21_IRESULT*I_KI;
I21_PRESULT=I21_ERROR*I_KP;
I21_PRESULT=I21_PRESULT>>3;
I21_PIRESULT=I21_PRESULT+I21_IRESULT;
EvbRegs.CMPR4+=I21_PIRESULT;
if(EvbRegs.CMPR4<6000) EvbRegs.CMPR4=6000;
else if (EvbRegs.CMPR4>8500) EvbRegs.CMPR4=8500;
// EvbRegs.CMPR4=7500;
// **第四路电流 ACDINT4 T1CMPR**
I22_SAMPLE=AdcRegs.RESULT3>>4;
I22_ERROR=I22_REF-I22_SAMPLE;
I22_SUMERROR+=I22_ERROR;
if(I22_SUMERROR<-2000) I22_SUMERROR=-2000;
else if (I22_SUMERROR>2000) I22_SUMERROR=2000;
I22_IRESULT=I22_SUMERROR;
I22_IRESULT=I22_IRESULT>>8;
I22_IRESULT=I22_IRESULT*I_KI;
I22_PRESULT=I22_ERROR*I_KP;
I22_PRESULT=I22_PRESULT>>2;
I22_PIRESULT=I22_PRESULT+I22_IRESULT;
EvbRegs.CMPR5+=I22_PIRESULT;
if(EvbRegs.CMPR5<6000) EvbRegs.CMPR5=6000;
else if (EvbRegs.CMPR5>8500) EvbRegs.CMPR5=8500;
//EvbRegs.CMPR5=7500;
// **第五路电流 ACDINT3 CMPR4**
I31_SAMPLE=AdcRegs.RESULT3>>4;
I31_ERROR=I31_REF-I31_SAMPLE;
I31_SUMERROR+=I31_ERROR;
if(I31_SUMERROR<-2000) I31_SUMERROR=-2000;
else if (I31_SUMERROR>2000) I31_SUMERROR=2000;
I31_IRESULT=I31_SUMERROR;
I31_IRESULT=I31_IRESULT>>4;
I31_IRESULT=I31_IRESULT*I_KI;
I31_PRESULT=I31_ERROR*I_KP;
I31_PRESULT=I31_PRESULT;
I31_PIRESULT=I31_PRESULT+I31_IRESULT;
EvaRegs.CMPR3+=I31_PIRESULT;
if(EvaRegs.CMPR3<450) EvaRegs.CMPR3=450;
else if (EvaRegs.CMPR3>7200) EvaRegs.CMPR3=7200;
// **第六路电流 ACDINT2 CMPR5 **
I32_SAMPLE=AdcRegs.RESULT4>>4;
I32_ERROR=I32_REF-I32_SAMPLE;
I32_SUMERROR+=I32_ERROR;
if(I32_SUMERROR<-2000) I32_SUMERROR=-2000;
else if (I32_SUMERROR>2000) I32_SUMERROR=2000;
I32_IRESULT=I32_SUMERROR;
I32_IRESULT=I32_IRESULT>>4;
I32_IRESULT=I32_IRESULT*I_KI;
I32_PRESULT=I32_ERROR*I_KP;
I32_PRESULT=I32_PRESULT>>8;
I32_PIRESULT=I32_PRESULT+I32_IRESULT;
EvbRegs.CMPR6+=I32_PIRESULT;
if(EvbRegs.CMPR6<450) EvbRegs.CMPR6=450;
else if (EvbRegs.CMPR6>3200) EvbRegs.CMPR6=3200;
EvbRegs.CMPR6=7500;
// **第七路电流 ACDINT1 CMPR6 **
I41_SAMPLE=AdcRegs.RESULT1>>4;
I41_ERROR=I41_REF-I41_SAMPLE;
I41_SUMERROR+=I41_ERROR;
if(I41_SUMERROR<-5000) I41_SUMERROR=-5000;
else if (I41_SUMERROR>5000) I41_SUMERROR=5000;
I41_IRESULT=I41_SUMERROR;
I41_IRESULT=I41_IRESULT>>4;
I41_IRESULT=I41_IRESULT*I_KI;
I41_PRESULT=I41_ERROR*I_KP;
I41_PRESULT=I41_PRESULT>>8;
I41_PIRESULT=I41_PRESULT+I41_IRESULT;
EvaRegs.CMPR3+=I41_PIRESULT;
if(EvaRegs.CMPR3<450) EvaRegs.CMPR3=450;
else if (EvaRegs.CMPR3>3200) EvaRegs.CMPR3=3200;
EvaRegs.CMPR3=7500;
// **第八路电流 ACDINT0 T3CMPR **
I42_SAMPLE=AdcRegs.RESULT0>>4;
I42_ERROR=I42_REF-I42_SAMPLE;
I42_SUMERROR+=I42_ERROR;
if(I42_SUMERROR<-5000) I42_SUMERROR=-5000;
else if (I42_SUMERROR>5000) I42_SUMERROR=5000;
I42_IRESULT=I42_SUMERROR;
I42_IRESULT=I42_IRESULT>>4;
I42_IRESULT=I42_IRESULT*I_KI;
I42_PRESULT=I42_ERROR*I_KP;
I42_PRESULT=I42_PRESULT>>8;
I42_PIRESULT=I42_PRESULT+I42_IRESULT;
EvbRegs.T3CMPR+=I42_PIRESULT;
if(EvbRegs.T3CMPR<450) EvbRegs.T3CMPR=450;
else if (EvbRegs.T3CMPR>3200) EvbRegs.T3CMPR=3200;
// **第九路电流 ACDINT0 T2CMPR**
I51_SAMPLE=AdcRegs.RESULT0>>4;
I51_ERROR=I51_REF-I51_SAMPLE;
//fliter
// I51_ERR=3*I51_ERROR1+2*I51_ERROR2+4*I51_ERR1-I51_ERR2;
// I51_ERR=I51_ERR>>3;
// if(I51_ERROR>=800) I_KP=24;
// else if (I51_ERROR<=-800) I_KP=24;
// else if (-800<I51_ERROR<800) I_KP=2;
// I51_SUMERROR+=I51_ERROR;
// if(I51_SUMERROR<-2000) I51_SUMERROR=-2000;
// else if (I51_SUMERROR>2000) I51_SUMERROR=2000;
// I51_IRESULT=I51_SUMERROR;
// I51_IRESULT=I51_IRESULT>>10;
// I51_IRESULT=I51_IRESULT*I_KI;
I51_PRESULT=I51_ERROR*I_KP;
I51_PRESULT=I51_PRESULT>>8;
I51_IRESULT=I51_IRESULT+I51_PRESULT/10+I51_SATERR/10;
I51_PIRESULT=I51_PRESULT+I51_IRESULT;
if(I51_PIRESULT<-1000) I51_PI=-1000;
else if (I51_PIRESULT>1000) I51_PI=1000;
else I51_PI=I51_PIRESULT;
EvaRegs.T2CMPR+=I51_PI;
if(EvaRegs.T2CMPR<450) EvaRegs.T2CMPR=450;
else if (EvaRegs.T2CMPR>3200) EvaRegs.T2CMPR=3200;
I51_SATERR=I51_PI-I51_PIRESULT;
//I51_ERROR2=I51_ERROR1;
// I51_ERROR1=I51_ERROR;
// I51_ERR2=I51_ERR1;
// I51_ERR1=I51_ERR;
// **第十路电流 ACDINT1 T4CMPR **
/* I52_SAMPLE=AdcRegs.RESULT1>>4;
I52_ERROR=I52_REF-I52_SAMPLE;
// I52_SUMERROR+=I52_ERROR;
// if(I52_SUMERROR<-5000) I52_SUMERROR=-5000;
// else if (I52_SUMERROR>5000) I52_SUMERROR=5000;
// I52_IRESULT=I52_SUMERROR;
// I52_IRESULT=I52_IRESULT>>4;
// I52_IRESULT=I52_IRESULT*I_KI;
I52_PRESULT=I52_ERROR*I_KP;
I52_PRESULT=I52_PRESULT>>8;
I52_PIRESULT=I52_PRESULT+I52_IRESULT;
EvbRegs.T4CMPR+=I52_PIRESULT;
if(EvbRegs.T4CMPR<450) EvbRegs.T4CMPR=450;
else if (EvbRegs.T4CMPR>3200) EvbRegs.T4CMPR=3200;
*/
//*******************************************
//---------清三个中断--------
IFR=0x0000;
PieCtrl.PIEIFR1.all = 0;
PieCtrl.PIEACK.all=0xffff;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
// AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
EvaRegs.EVAIFRA.all=0xffff;
EvaRegs.EVAIFRB.all=0xffff;
EvaRegs.EVAIFRC.all=0xffff;
AdcRegs.ADCTRL2.bit.RST_SEQ1=1;//复位排序器,回到CONVOO
isss=isss+1;
EINT;
}
init_availables()
{
I_KP=2; //电流环比例系数
I_KI=1; //电流环积分系数
KP_T=10;
KI_T=8;
KD_T=20;
KP=0;
KI=0;
KD=0;
W1_SAMPLE=0;
W1_ERROR=0;
W1_ERR=0;
W1_REF=0;
W1_SUMERROR=0;
W1_IRESULT=0;
W1_PRESULT=0;
W1_DRESULT=0;
W1_PIDRESULT=0;
W2_SAMPLE=0;
W2_ERROR=0;
W2_ERR=0;
W2_REF=0;
W2_SUMERROR=0;
W2_IRESULT=0;
W2_PRESULT=0;
W2_DRESULT=0;
W2_PIDRESULT=0;
W3_SAMPLE=0;
W3_ERROR=0;
W3_ERR=0;
W3_REF=0;
W3_SUMERROR=0;
W3_IRESULT=0;
W3_PRESULT=0;
W3_DRESULT=0;
W3_PIDRESULT=0;
W4_SAMPLE=0;
W4_ERROR=0;
W4_ERR=0;
W4_REF=0;
W4_SUMERROR=0;
W4_IRESULT=0;
W4_PRESULT=0;
W4_DRESULT=0;
W4_PIDRESULT=0;
W5_SAMPLE=0;
W5_ERROR=0;
W5_ERR=0;
W5_REF=2641;
W5_SUMERROR=0;
W5_IRESULT=0;
W5_PRESULT=0;
W5_DRESULT=0;
W5_PIDRESULT=0;
I11_SAMPLE=0;
I11_ERROR=0; //本次电流偏差值
I11_REF=340; //电流设定值
I11_SUMERROR=0; //电流偏差累计和
I11_PIRESULT=0; //电流PID结果
I11_IRESULT=0;
I11_PRESULT=0;
I12_SAMPLE=0;
I12_ERROR=0; //本次电流偏差值
I12_REF=340; //电流设定值
I12_SUMERROR=0; //电流偏差累计和
I12_PIRESULT=0; //电流PID结果
I12_IRESULT=0;
I12_PRESULT=0;
I21_SAMPLE=0;
I21_ERROR=0; //本次电流偏差值
I21_REF=340; //电流设定值
I21_SUMERROR=0; //电流偏差累计和
I21_PIRESULT=0; //电流PID结果
I21_IRESULT=0;
I21_PRESULT=0;
I22_SAMPLE=0;
I22_ERROR=0; //本次电流偏差值
I22_REF=340; //电流设定值
I22_SUMERROR=0; //电流偏差累计和
I22_PIRESULT=0; //电流PID结果
I22_IRESULT=0;
I22_PRESULT=0;
I31_SAMPLE=0;
I31_ERROR=0; //本次电流偏差值
I31_REF=1365; //电流设定值
I31_SUMERROR=0; //电流偏差累计和
I31_PIRESULT=0; //电流PID结果
I31_IRESULT=0;
I31_PRESULT=0;
I32_SAMPLE=0;
I32_ERROR=0; //本次电流偏差值
I32_REF=1365; //电流设定值
I32_SUMERROR=0; //电流偏差累计和
I32_PIRESULT=0; //电流PID结果
I32_IRESULT=0;
I32_PRESULT=0;
I41_SAMPLE=0;
I41_ERROR=0; //本次电流偏差值
I41_REF=1365; //电流设定值
I41_SUMERROR=0; //电流偏差累计和
I41_PIRESULT=0; //电流PID结果
I41_IRESULT=0;
I41_PRESULT=0;
I42_SAMPLE=0;
I42_ERROR=0; //本次电流偏差值
I42_REF=1365; //电流设定值
I42_SUMERROR=0; //电流偏差累计和
I42_PIRESULT=0; //电流PID结果
I42_IRESULT=0;
I42_PRESULT=0;
I51_SAMPLE=0;
I51_ERROR=0; //本次电流偏差值
I51_REF=1365; //电流设定值
I51_SUMERROR=0; //电流偏差累计和
I51_PIRESULT=0; //电流PID结果
I51_IRESULT=0;
I51_PRESULT=0;
I51_ERROR1=0;
I51_ERROR2=0;
I51_ERR=0;
I51_ERR1=0;
I51_ERR2=0;
I51_SATERR=0;
I51_PI=0;
I52_SAMPLE=0;
I52_ERROR=0; //本次电流偏差值
I52_REF=1365; //电流设定值
I52_SUMERROR=0; //电流偏差累计和
I52_PIRESULT=0; //电流PID结果
I52_IRESULT=0;
I52_PRESULT=0;
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -