[电赛电力电子方向]单相并网逆变器(软件控制)(23年电赛A题)

参考

23年电赛A题
TMS320F280049C 学习笔记27 功率测量正弦分析仪 POWER_MEAS_SINE_ANALYZER

整体思路

  1. 对于基础部分只需要让逆变器1闭一个电压环做电压源就行。
  2. 并联运行带负载时逆变器一做电压源先启动提供稳定的电压波形,然后逆变器2做为电流源采集电压锁相,闭电流环。之前我想的是让逆变器12都做电流环,把电流控到4A再扭滑变把电压调到24V。但调试发现,输出的波形很丑,大概是因为没有稳定的参考信号,让逆变器1做电压源就有稳定的参考信号了。是否需要下垂控制(组委会说不能通信)?题目没有要求逆变器12按什么固定的比例分流,所以完全没必要下垂。你就让逆变器2电流闭环到1A,扭滑变到电流4A,逆变器1自然是分到3A电流的。
  3. 并网部分,逆变器1和2都是电流源,采集电网电压锁相,闭电流环。也是因为没通信,所以我们分流是单独调节每个逆变器的输出电流,来达到固定分流比的。
    上面说,逆变器2采逆变器1电压,还是采集电网电压,需要多做采集吗?因为都是并联的,所以采集自己的电压就是逆变器1(电网)的电压。因此,逆变器12都可以做成单独的模块。

电压闭环

电压闭环是直接用算出来的AD值直接PI做的。

电压有效值计算

有效值计算是用的TI POWER_MEAS_SINE_ANALYZER库里的函数算的。

static inline void POWER_MEAS_SINE_ANALYZER_reset(POWER_MEAS_SINE_ANALYZER *v);
static inline void POWER_MEAS_SINE_ANALYZER_config(POWER_MEAS_SINE_ANALYZER *v,
                                                   float32_t isrFrequency,
                                                   float32_t threshold,
                                                   float32_t gridMaxFreq,
                                                   float32_t gridMinFreq);
static inline void POWER_MEAS_SINE_ANALYZER_run(POWER_MEAS_SINE_ANALYZER *v);

上面是库里定义的三个函数,要使用首先要建立一个结构体.

POWER_MEAS_SINE_ANALYZER   Uo_analyze;					//创建一个输出正弦波分析结构体

复位结构体

POWER_MEAS_SINE_ANALYZER_reset(&Uo_analyze);

调用POWER_MEAS_SINE_ANALYZER_config,对结构体初始化

POWER_MEAS_SINE_ANALYZER_config(&Uo_analyze, 20000,0, 100, 5);

20000(20k)是采样频率,0是阈值用于检测输入信号在设定的标幺化阈值之间的穿越,默认情况下,阈值设置为零。100和5确定了采样信号的频率范围.
在定时器中断里(一次采样完成)对电压赋值(这次采到的值),然后送入POWER_MEAS_SINE_ANALYZER_run计算电压有效值

Uo_analyze.v = dtlb_fliter(&vol_dtlb_fliter_Struct, AD_Value[0]);			//对原始AD信号做了滤波处理
Uo_analyze.v = Uo_analyze.v - v_offset;												//注意要减去偏置,让电压标幺值在-1到1里
POWER_MEAS_SINE_ANALYZER_run(&Uo_analyze);
Uo_analyze.vRms就是计算出来的有效值.

一阶低通滤波器

为了让采集到的电压更加稳定,就使用了低通滤波器。毕竟采的稳定,才能的闭环的稳定。
表达式如下
y n = α x n + ( 1 − α ) y n − 1 α = T s T s + 1 2 π f c y_{n}=\alpha x_{n}+(1-\alpha)y_{n-1} \\ \alpha = \frac{T_s}{T_s +\frac{1}{2\pi f_c}} yn=αxn+(1α)yn1α=Ts+2πfc1Ts
代码实现如下

typedef struct
{
	unsigned short dtlb_Yn_l;			//上次滤波值
	float dtlb_q;						//系数
}dtlb_t;

void dtlb_fliter_init(dtlb_t *dtlb_struct,float q)
{
	dtlb_struct->dtlb_q = q;
	dtlb_struct->dtlb_Yn_l = 0;
}

/*一阶低通滤波器*/
unsigned short dtlb_fliter(dtlb_t *dtlb_struct, unsigned short xn)
{
    unsigned short dtlb_Yn = dtlb_struct->dtlb_q*xn + (1-dtlb_struct->dtlb_q)*dtlb_struct->dtlb_Yn_l;
    dtlb_struct->dtlb_Yn_l = dtlb_Yn;
    return dtlb_Yn;
}

锁相环

逆变器12输出必须同频同相才行,不然就会炸鸡。所以需要写锁相环。我用的是采集电压过SOGI得到bete轴分量,然后dq变换,把q轴闭环成0.
其实锁相环是为了得到基波的相位也就是wt。具体可以参考我之前写的一篇博客。
基于DQ坐标系的锁相环

电流闭环

电流环是使用的单P。按理使用PR,或者dq解耦控制更稳定。但能力有限,就没使用这些。
在这里插入图片描述
注意,这里采集的都是实时的电流电压值.
在这里插入图片描述

设定逆变器1电流有效值为1,逆变器2电流有效值为2,并网仿真的波形如上.
在这里插入图片描述
上图为并网总电流有效值波形.在0.3s前只有逆变1工作,0.3s后逆变器2以2A有效值并入.

欢迎加入扣扣交流群,群号:807477521

附:

在这里插入图片描述

  • 14
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值