我是靠谱客的博主 潇洒铃铛,最近开发中收集的这篇文章主要介绍整流六—PWM整流器无差拍控制 二(重复控制算法),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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;
}

最后

以上就是潇洒铃铛为你收集整理的整流六—PWM整流器无差拍控制 二(重复控制算法)的全部内容,希望文章能够帮你解决整流六—PWM整流器无差拍控制 二(重复控制算法)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部