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

PWM整流器在由旋转坐标系下的数学模型

在这里插入图片描述

在这里插入图片描述
可以知道,该系统可以实现无差拍控制。

重复控制策略

1.重复控制原理

在这里插入图片描述

2.改进型重复控制

在这里插入图片描述
重复控制其的等效结构图:(主要是下面的公式)
在这里插入图片描述

3.重复控制补偿器

在这里插入图片描述
在这里插入图片描述

重复控制器设计(电流内环)

重复控制内膜Gn(Z)设计

在这里插入图片描述

补偿器设计

在这里插入图片描述
在这里插入图片描述

重复控制复合控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重复控制—软件设计(以D轴为例)

  • 复制代码
    1
    2
    3
    重复控制会延迟一个周期才会起作用,所以第一个基波周期 PI
  • 复制代码
    1
    2
    3
    控制器起主导作用,快速响应输出补偿控制信号,降低系统的控制误差,从第二个基波
  • 复制代码
    1
    2
    3
    周期以后,重复控制器才会对误差进行调节,

重复控制参数:

下面展示一些 内联代码片

复制代码
1
2
3
// A code block var foo = 'bar';
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
输入参数:实际电流与参考电流误差. 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)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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整流器无差拍控制内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部