PWM整流器在由旋转坐标系下的数学模型
可以知道,该系统可以实现无差拍控制。
重复控制策略
1.重复控制原理
2.改进型重复控制
重复控制其的等效结构图:(主要是下面的公式)
3.重复控制补偿器
重复控制器设计(电流内环)
重复控制内膜Gn(Z)设计
补偿器设计
重复控制复合控制
重复控制—软件设计(以D轴为例)
-
重复控制会延迟一个周期才会起作用,所以第一个基波周期 PI
-
控制器起主导作用,快速响应输出补偿控制信号,降低系统的控制误差,从第二个基波
-
周期以后,重复控制器才会对误差进行调节,
重复控制参数:
下面展示一些 内联代码片
。
// A code block
var foo = 'bar';
输入参数:实际电流与参考电流误差.
TempErr = RefRecID - IinD;
/*重复控制器处理:第一个周期不会起作用*/
/*1.补偿器算法*/
if((RepZk + RpCnt) >= RpTolNum) /*重复控制,基波周期采样数*/
{ /*RpIdOut[RpCnt + RepZk - RpTolNum]为上一个周期的误差,在下面处理了*/
TempRpOut = (int32)RepKr * RpIdOut[RpCnt + RepZk - RpTolNum] / 1000; /*RepKr为补偿增益,RepZk超前环节*/
} /*RpCnt,重复控制次数,代表当前拍*/
else /*第一个基波周期*/
{
TempRpOut = (int32)RepKr * RpIdOut[RpCnt + RepZk] / 1000;
}
/*滤波*/
RpIdOutFltAcc = RpIdOutFltAcc + ((((int32)TempRpOut << 15) - RpIdOutFltAcc) >> 3);
/*2.重复控制内膜设计算法*/
iTempLAx = (int32)RepQz * RpIdOut[RpCnt] / 100 + TempErr; /*RepQz,内模参数Qz*/
/*内模输入,误差信号:为参考电流与实际电流的误差*/
if(iTempLAx > 1737)
{
iTempLAx = 1737;
}
else if(iTempLAx < -1737)
{
iTempLAx = -1737;
}
else;
RpIdOut[RpCnt] = iTempLAx;
/*复合控制,重复控制输出+电流PI环输出*/
RpIdOutFilt = RpIdOutFltAcc >> 15;
VinDRefPI = TempVdPI + RpIdOutFilt; /*输出参考VinDRef,由两个部分决定,第一部分IOPI控制器,第二部分重复控制器*/
if(VinDRefPI > 8687)
{
VinDRefPI = 8687;
}
else if(VinDRefPI < -8687)
{
VinDRefPI = -8687;
}
复合控制部分代码(将电流环PI与重复控制结合)
D轴控制为例子(Q轴与D轴一样,只是Q轴给定参考为0)
TempErr = RefRecID - IinD;
TempVdPI = PiRegulator(8687, -8687, CurLoopKp, CurLoopKi, &SumRecIDLong,TempErr);
/*重复控制器处理:第一个周期不会起作用*/
TempRpOut = (int32)RepKr * RpIdOut[RpCnt + RepZk] / 1000;
}
RpIdOutFltAcc = RpIdOutFltAcc + ((((int32)TempRpOut << 15) - RpIdOutFltAcc) >> 3);
RpIdOutFilt = RpIdOutFltAcc >> 15;
/*内模输入,误差信号:为参考电流与实际电流的误差*/
if(iTempLAx > 1737)
{
iTempLAx = 1737;
}
else if(iTempLAx < -1737)
{
iTempLAx = -1737;
}
else;
RpIdOut[RpCnt] = iTempLAx;
VinDRefPI = TempVdPI + RpIdOutFilt; /*输出参考VinDRef,由两个部分决定,第一部分IOPI控制器,第二部分重复控制器*/
if(VinDRefPI > 8687)
{
VinDRefPI = 8687;
}
else if(VinDRefPI < -8687)
{
VinDRefPI = -8687;
}