您好 我想问您个F28035的程序问题,一个程序来实现移相全桥变换器的软启动功能,软起动程序写在了EPWM中断里,软起动程序是这样的:让移相全桥超前管与滞后管共同导通时间一点点增加的过程中,让PI调节也同时参与运算,由于刚开始时PI的输出大于软启动的输出,这个时候软启动起作用,当PI输出小与软启动输出后,PI开始进行调节输出电压,使输出电压问题。
interrupt void epwm3_isr(void)
{
if(ss_flag == 1)
{
if(ss_count<=25600)
{
Ue2=0;
ss_count++;
temp1=(long)((ss_count)>>7);
U1= AdcResult.ADCRESULT7; //U1电压, A7通道采U1
//pi程序
Ureal=_IQ(U1);
Uref=_IQ(U_Ref); //140v缩放为1.07,对应数字量为1335
Ue1=Uref-Ureal;
Ue2+=Ue1; //两者的误差
Up=_IQmpy(UKp,Ue1);
Ui=_IQmpy(UKi,Ue2);
Uo1=Up+Ui;
temp3=(long)((Uo1)>>16); //调制波得到数据
if(temp1>=temp3)
{
temp1=temp3;
ss_count=25602;
}
EPwm6Regs.CMPA.half.CMPA =300-temp1;
EPwm6Regs.CMPB=temp1;
}
我想问一下为什么每进一次都让误差累加值设为零呢?这样的方式模拟了UCC3895的软起动了吗