整流六—PWM整流器无差拍控制 二(重复控制算法)

本文详细介绍了PWM整流器中采用的重复控制策略,旨在实现无差拍控制。内容涵盖了重复控制的基本原理、改进型重复控制的结构以及补偿器设计。在软件设计部分,以D轴为例,展示了如何结合电流内环PI控制器实现重复控制,通过代码阐述了重复控制器如何在第一个基波周期后对误差进行调节,以提高系统响应速度和控制精度。同时,给出了关键参数如补偿增益和内模参数的设计方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
	}
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Not Dr.Wang422

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值