SVG APF有源滤波器全套系统资料。 包含: 150w电源(原理图 PCB BOM 制版文件) FPGA核心控制板(原理图 PCB BOM 制版文件) IGBT驱动板(原理图 PCB BOM 制版文件) 高速信号采样板(原理图 PCB BOM 制版文件) 母线电容板(原理图 PCB BOM 制版文件) 还有参数计算资料

1. 系统概述

1.1 系统简介

SVG(静止无功发生器)和APF(有源电力滤波器)是现代电力电子技术在电力系统中的重要应用,用于实现电网的无功补偿和谐波治理。本系统基于TI DSP281x系列处理器和FPGA技术,实现了高性能的SVG/APF控制功能。

1.2 系统功能

  • 无功功率补偿:实时检测电网的无功功率,通过SVG产生相应的无功电流进行补偿
  • 谐波治理:检测电网中的谐波成分,通过APF产生反向谐波电流进行滤除
  • 电网同步:实现与电网的精确同步,确保补偿电流与电网电压相位正确
  • 电压稳定:维持直流母线电压稳定,确保系统正常运行
  • 保护功能:实现过压、过流、过热等保护功能,确保系统安全运行
  • 通信功能:支持与上位机的通信,实现系统状态监控和参数配置
  • MPPT功能:支持最大功率点跟踪,适用于太阳能等新能源发电系统

1.3 技术指标

  • 电网电压:380V/50Hz(三相)
  • 补偿容量:可根据实际需求配置
  • 响应时间:<10ms
  • 补偿精度:功率因数≥0.99,THD≤5%
  • 控制精度:定点运算,精度≤0.1%
  • 保护等级:IP20
  • 工作环境:温度-10℃~+50℃,湿度≤90%

2. 系统架构

2.1 硬件架构

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   电压电流采样   │────▶│   DSP控制器     │────▶│    IGBT驱动     │
└─────────────────┘     └─────────────────┘     └─────────────────┘
          ▲                        │                        │
          │                        ▼                        ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│    电网系统      │◀────│   功率变换电路   │◀────│   FPGA协处理    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
          │                        │                        │
          ▼                        ▼                        ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   保护电路      │     │   通信接口      │     │   显示面板      │
└─────────────────┘     └─────────────────┘     └─────────────────┘

2.2 软件架构

2.2.1 模块划分

系统软件采用模块化设计,主要分为以下几个核心模块:

模块名称 主要功能 实现文件
主程序模块 系统初始化、主循环控制 SunPower.c
中断服务模块 实时控制算法执行 ISR.c、main.c
数据采集模块 电压电流信号采样 ISR.c(ADCWORK函数)
核心算法模块 坐标变换、PLL、PID、SVPWM S3S2.c、pll.c、pidreg.c、svgen_dq.c
MPPT模块 最大功率点跟踪 SunPower.c(MPPT函数)、ISR.c
保护模块 过压、过流、过热等保护 ISR.c(保护相关函数)
通信模块 与上位机通信 ISR.c(SCI中断)
显示模块 状态显示和参数监控 SunPower.c(DisplayComm函数)
2.2.2 调用关系
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  系统初始化      │────▶│  主循环监控      │────▶│  中断服务程序    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
          │                        │                        │
          ▼                        ▼                        ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  硬件初始化      │     │  状态显示        │     │  数据采集        │
└─────────────────┘     └─────────────────┘     └─────────────────┘
                                                   │
                                                   ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  坐标变换        │◀────│  核心算法计算    │────▶│  保护功能检查    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
          │                        │                        │
          ▼                        ▼                        ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  PLL锁相环       │     │  MPPT控制        │     │  PWM波形生成    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
2.2.3 数据流分析
电网电压电流 → ADC采样 → 数字滤波 → 坐标变换(3S/2S) → PLL锁相 → 坐标变换(2S/2R) → PID控制计算 → 坐标变换(2R/2S) → SVPWM生成 → IGBT驱动 → 功率变换 → 电网补偿

2.3 程序执行流程

  1. 系统初始化阶段(SunPower.c的main函数):
    - 硬件初始化:GPIO、ADC、SCI、PWM等
    - 软件初始化:PID参数、PLL参数、变量初始化
    - 中断配置:定时器中断、ADC中断、SCI中断等
  1. 主循环阶段(SunPower.c的main函数while循环):
    - 系统状态监控
    - LED状态指示
    - 显示通信处理
  1. 中断服务阶段(ISR.c和main.c的中断函数):
    - PWM定时器中断:实时控制算法执行
    - ADC中断:电压电流采样
    - SCI中断:通信数据处理
    - 保护中断:故障处理
  1. 控制算法执行阶段(PWM定时器中断中):
    - 数据采集:ADC采样电压电流
    - 坐标变换:3S/2S、2S/2R
    - 锁相环:电网相位跟踪
    - PID控制:电压电流闭环控制
    - SVPWM生成:PWM波形计算

2.4 中断服务程序结构

系统主要包含以下中断服务程序:

中断名称 触发条件 主要功能 实现文件
evatimer1isr PWM定时器1溢出 核心控制算法执行 ISR.c
evbtimer3isr PWM定时器3溢出 辅助控制算法执行 ISR.c
wakeint 唤醒中断 系统唤醒处理 ISR.c
evapdpintisr 功率驱动保护 过流保护处理 ISR.c
sciaTxFifoIsr SCI发送FIFO中断 数据发送处理 ISR.c
sciaRxFifoIsr SCI接收FIFO中断 数据接收处理 ISR.c
pwmtimer0isr PWM定时器0中断 核心控制算法执行 main.c

3. 程序结构

3.1 程序入口

程序入口位于main.c文件,主要完成系统初始化和主循环的执行。

void main(void)
{
    // 系统初始化
    InitSysCtrl();           // 系统控制初始化
    InitGpio();             // GPIO初始化
    InitPieCtrl();          // PIE控制器初始化
    InitPieVectTable();     // 中断向量表初始化
    InitAdc();              // ADC初始化
    InitECan();             // CAN初始化
    InitSci();              // SCI初始化
    InitTimer0();           // 定时器0初始化
    InitEPwm();             // PWM初始化
    
    // 软件初始化
    InitSoft();             // 软件参数初始化
    
    // 开中断
    EnableInterrupts();     // 全局中断使能
    
    // 主循环
    while(1)
    {
        // 主循环处理
        MainLoop();         // 主循环函数
    }
}

3.2 中断服务程序

主要中断服务程序位于ISR.c文件,包括定时器中断、ADC中断、PWM中断等。

// PWM定时器0中断服务程序
void interrupt pwm_timer0_isr(void)
{
    // 清除中断标志
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
    
    // ADC采样
    ADCWORK();
    
    // 坐标变换
    S3_S2_calc(&Ug);       // 三相到两相静止坐标变换
    S3_S2_calc(&Ig);
    
    // 锁相环计算
    pll_reg_calc(&pll);    // 计算电网相位
    
    // 计算正弦余弦值
    sine = _IQsin(_IQ(pll.theta));
    cose = _IQcos(_IQ(pll.theta));
    
    // 静止到旋转坐标变换
    S2_R2_calc(&Ur);       // 两相静止到两相旋转坐标变换
    S2_R2_calc(&Ir);
    
    // PID控制计算
    pid_reg_calc(&Vdc);    // 直流母线电压控制
    pid_reg_calc(&Id);     // d轴电流控制
    pid_reg_calc(&Iq);     // q轴电流控制
    
    // 计算参考电压
    Ugd = Ugd_calc(Id.Out, Ur.Ds, Iq_redeem);
    Ugq = Ugq_calc(Iq.Out, Id_redeem);
    
    // 旋转到静止坐标变换
    R2_S2_calc(&Ugr);      // 两相旋转到两相静止坐标变换
    
    // SVPWM计算
    svgendq_calc(&svpwm);  // 计算SVPWM波形
}

3.3 核心功能模块

3.3.1 数据采集模块

数据采集模块位于ADresult.c文件,实现电压电流信号的采样和转换。

void ADCWORK(void)
{
    // 启动ADC采样
    AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
    
    // 等待采样完成
    while(AdcRegs.ADCST.bit.INT_SEQ1 == 0);
    
    // 读取采样结果
    result.Uga = AdcRegs.ADCRESULT0 >> 4;
    result.Ugb = AdcRegs.ADCRESULT1 >> 4;
    result.Ugc = AdcRegs.ADCRESULT2 >> 4;
    result.Iga = AdcRegs.ADCRESULT3 >> 4;
    result.Igb = AdcRegs.ADCRESULT4 >> 4;
    result.Igc = AdcRegs.ADCRESULT5 >> 4;
    result.Vdc = AdcRegs.ADCRESULT6 >> 4;
    
    // 清除中断标志
    AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
}
3.3.2 坐标变换模块

坐标变换模块位于S3S2.cS2R2.c文件,实现三相到两相静止坐标变换和静止到旋转坐标变换。

// 三相到两相静止坐标变换
void S3_S2_calc(ABC *p)
{
    p->alfa = _IQmpy(_IQ(0.6666666667), p->a) - _IQmpy(_IQ(0.3333333333), p->b) - _IQmpy(_IQ(0.3333333333), p->c);
    p->beta = _IQmpy(_IQ(0.5773502692), p->b) - _IQmpy(_IQ(0.5773502692), p->c);
}

// 两相静止到两相旋转坐标变换
void S2_R2_calc(ALBE *p)
{
    p->Ds = _IQmpy(p->alfa, cose) + _IQmpy(p->beta, sine);
    p->Qs = -_IQmpy(p->alfa, sine) + _IQmpy(p->beta, cose);
}
3.3.3 锁相环模块

锁相环模块位于pll.c文件,实现电网相位的检测和同步。

// 锁相环计算
void pll_reg_calc(PLLREG *p)
{
    // 计算相位误差
    p->Err = _IQmpy(p->Ualfa, sine) - _IQmpy(p->Ubeta, cose);
    
    // PID控制
    p->Up = _IQmpy(p->Kp, p->Err);
    p->Ui += _IQmpy(p->Ki, p->Err);
    p->Out = p->Up + p->Ui;
    
    // 相位更新
    p->theta += p->Out;
    
    // 相位限制
    if(p->theta >= _IQ(2 * PI))
        p->theta -= _IQ(2 * PI);
    else if(p->theta < 0)
        p->theta += _IQ(2 * PI);
}
3.3.4 PID控制模块

PID控制模块位于pid_reg.c文件,实现电压电流的闭环控制。

// PID控制器计算
void pid_reg_calc(PIDREG *p)
{
    // 计算偏差
    p->Err = p->Ref - p->Tf;
    
    // 比例项
    p->Up = _IQmpy(p->Kp, p->Err);
    
    // 积分项
    p->Ui += _IQmpy(p->Ki, p->Err);
    
    // 积分限幅
    if(p->Ui > p->UiMax)
        p->Ui = p->UiMax;
    else if(p->Ui < p->UiMin)
        p->Ui = p->UiMin;
    
    // 微分项
    p->Ud = _IQmpy(p->Kd, p->Err - p->Err1);
    
    // 输出计算
    p->Out = p->Up + p->Ui + p->Ud;
    
    // 输出限幅
    if(p->Out > p->OutMax)
        p->Out = p->OutMax;
    else if(p->Out < p->OutMin)
        p->Out = p->OutMin;
    
    // 保存偏差
    p->Err1 = p->Err;
}
3.3.5 SVPWM模块

SVPWM模块位于svgen_dq.c文件,实现空间矢量脉宽调制。

// SVPWM计算
void svgendq_calc(SVGENDQ *p)
{
    // 计算扇区
    Uint16 Sector;
    _iq Va, Vb, Vc;
    
    // 计算三相参考电压
    Va = p->Ualpha;
    Vb = _IQmpy(_IQ(-0.5), p->Ualpha) + _IQmpy(_IQ(0.8660254), p->Ubeta);
    Vc = _IQmpy(_IQ(-0.5), p->Ualpha) - _IQmpy(_IQ(0.8660254), p->Ubeta);
    
    // 计算扇区
    if(Va > 0) Sector = 1;
    else Sector = 0;
    if(Vb > 0) Sector |= 2;
    if(Vc > 0) Sector |= 4;
    
    // 计算占空比
    switch(Sector)
    {
        case 1: // Sector 1
            // 计算占空比
            break;
        case 3: // Sector 2
            // 计算占空比
            break;
        // 其他扇区处理
        // ...
    }
    
    // 设置PWM寄存器
    // ...
}

4. 核心算法

4.1 坐标变换算法

4.1.1 三相到两相静止坐标变换(3S/2S)

公式:

Uα = 2/3 * Ua - 1/3 * Ub - 1/3 * Uc
Uβ = 0 * Ua + √3/3 * Ub - √3/3 * Uc

实现:

void S3_S2_calc(ABC *p)
{
    p->alfa = _IQmpy(_IQ(0.6666666667), p->a) - _IQmpy(_IQ(0.3333333333), p->b) - _IQmpy(_IQ(0.3333333333), p->c);
    p->beta = _IQmpy(_IQ(0.5773502692), p->b) - _IQmpy(_IQ(0.5773502692), p->c);
}
4.1.2 两相静止到两相旋转坐标变换(2S/2R)

公式:

Ud = Uα * cosθ + Uβ * sinθ
Uq = -Uα * sinθ + Uβ * cosθ

实现:

void S2_R2_calc(ALBE *p)
{
    p->Ds = _IQmpy(p->alfa, cose) + _IQmpy(p->beta, sine);
    p->Qs = -_IQmpy(p->alfa, sine) + _IQmpy(p->beta, cose);
}

4.2 锁相环算法

4.2.1 软件锁相环(SPLL)
void pll_reg_calc(PLLREG *p)
{
    // 计算相位误差
    p->Err = _IQmpy(p->Ualfa, sine) - _IQmpy(p->Ubeta, cose);
    
    // PID控制
    p->Up = _IQmpy(p->Kp, p->Err);
    p->Ui += _IQmpy(p->Ki, p->Err);
    p->Out = p->Up + p->Ui;
    
    // 相位更新
    p->theta += p->Out;
    
    // 相位限制
    if(p->theta >= _IQ(2 * PI))
        p->theta -= _IQ(2 * PI);
    else if(p->theta < 0)
        p->theta += _IQ(2 * PI);
}

4.3 PID控制算法

4.3.1 离散PID算法

公式:

u(k) = Kp * e(k) + Ki * Σe(i) * T + Kd * (e(k) - e(k-1)) / T

实现:

void pid_reg_calc(PIDREG *p)
{
    // 计算偏差
    p->Err = p->Ref - p->Tf;
    
    // 比例项
    p->Up = _IQmpy(p->Kp, p->Err);
    
    // 积分项
    p->Ui += _IQmpy(p->Ki, p->Err);
    
    // 积分限幅
    if(p->Ui > p->UiMax)
        p->Ui = p->UiMax;
    else if(p->Ui < p->UiMin)
        p->Ui = p->UiMin;
    
    // 微分项
    p->Ud = _IQmpy(p->Kd, p->Err - p->Err1);
    
    // 输出计算
    p->Out = p->Up + p->Ui + p->Ud;
    
    // 输出限幅
    if(p->Out > p->OutMax)
        p->Out = p->OutMax;
    else if(p->Out < p->OutMin)
        p->Out = p->OutMin;
    
    // 保存偏差
    p->Err1 = p->Err;
}

4.4 SVPWM算法

4.4.1 空间矢量脉宽调制
void svgendq_calc(SVGENDQ *p)
{
    // 计算扇区
    Uint16 Sector;
    _iq Va, Vb, Vc;
    
    // 计算三相参考电压
    Va = p->Ualpha;
    Vb = _IQmpy(_IQ(-0.5), p->Ualpha) + _IQmpy(_IQ(0.8660254), p->Ubeta);
    Vc = _IQmpy(_IQ(-0.5), p->Ualpha) - _IQmpy(_IQ(0.8660254), p->Ubeta);
    
    // 计算扇区
    if(Va > 0) Sector = 1;
    else Sector = 0;
    if(Vb > 0) Sector |= 2;
    if(Vc > 0) Sector |= 4;
    
    // 计算占空比
    switch(Sector)
    {
        case 1: // Sector 1
            p->Ta = _IQ(0.5) + Va + Vb;
            p->Tb = _IQ(0.5) + Vb;
            p->Tc = _IQ(0.5);
            break;
        case 3: // Sector 2
            p->Ta = _IQ(0.5) + Va;
            p->Tb = _IQ(0.5) + Va + Vb;
            p->Tc = _IQ(0.5);
            break;
        // 其他扇区处理
        // ...
    }
    
    // 设置PWM寄存器
    EVA影子寄存器更新
}

5. 软件功能详细说明

5.1 数据采集功能

  • 采样通道:6通道(3相电压+3相电流)
  • 采样精度:12位
  • 采样频率:20kHz
  • 采样方式:同步采样
  • 数据处理:数字滤波、标幺化处理

5.2 无功补偿功能

  • 补偿方式:基于瞬时无功功率理论的p-q法
  • 补偿策略
  • 恒功率因数控制
  • 恒无功功率控制
  • 自动补偿控制
  • 补偿范围:-100%~+100%(感性~容性)

5.3 谐波治理功能

  • 检测方法:FFT或瞬时谐波检测
  • 治理策略:选择性谐波治理(2-25次)
  • 治理效果:THD≤5%

5.4 电压稳定功能

  • 控制方式:直流母线电压闭环控制
  • 控制精度:≤0.5%
  • 响应时间:≤5ms
  • 稳压范围:可根据实际需求配置

5.5 保护功能

  • 过压保护:直流母线电压过高保护
  • 过流保护:输出电流过高保护
  • 过载保护:长期过载保护
  • 过热保护:IGBT温度过高保护
  • 电网异常保护:电网电压波动过大保护
  • 缺相保护:电网缺相保护

5.6 通信功能

  • 通信接口:RS232/RS485/CAN
  • 通信协议:Modbus-RTU
  • 通信速率:9600/19200/38400/115200bps
  • 通信内容:系统状态、参数配置、故障信息

5.7 MPPT功能

  • 跟踪方式:扰动观察法
  • 跟踪精度:≥99%
  • 响应时间:≤100ms
  • 适用范围:太阳能、风能等新能源发电系统

6. 参数配置

6.1 硬件参数

参数名称 参数值 说明
电网电压 380V 三相线电压
电网频率 50Hz 电网工作频率
采样电阻 0.01Ω 电流采样电阻
采样变比 2000:1 电压采样变比
开关频率 20kHz IGBT开关频率
直流母线电压 700V 直流母线参考电压

6.2 软件参数

参数名称 参数值 说明
锁相环Kp 0.006 比例系数
锁相环Ki 0.01 积分系数
电压环Kp 0.1 比例系数
电压环Ki 0.01 积分系数
电流环Kp 0.5 比例系数
电流环Ki 0.1 积分系数
滤波系数 0.1 数字滤波系数
死区时间 0.000001s IGBT死区时间

7. 调试与维护

7.1 调试工具

  • CCS(Code Composer Studio):DSP程序开发和调试
  • 示波器:信号波形观测
  • 功率分析仪:功率参数测量
  • 上位机软件:系统监控和参数配置

7.2 调试步骤

  1. 硬件检查:检查所有硬件连接是否正确
  2. 软件烧录:将程序烧录到DSP中
  3. 参数配置:配置系统参数
  4. 功能测试:测试各个功能模块
  5. 性能测试:测试系统性能指标
  6. 现场调试:在实际应用场景中进行调试

7.3 常见故障及处理

故障现象 可能原因 处理方法
系统无法启动 电源故障 检查电源连接和电压
无输出电流 驱动故障 检查IGBT驱动电路
补偿效果差 参数配置错误 重新配置系统参数
过压保护 电网电压波动 检查电网质量或调整保护参数
过流保护 负载异常 检查负载或调整保护参数
通信故障 通信线路故障 检查通信线路和接口

8. 程序升级与扩展

8.1 程序升级

  1. 备份原程序:备份当前运行的程序
  2. 下载新程序:将新版本程序下载到DSP中
  3. 参数配置:重新配置系统参数
  4. 功能测试:测试升级后的程序功能

8.2 功能扩展

系统支持以下功能扩展:

  • 多机并联:支持多台设备并联运行
  • 混合补偿:SVG和APF功能混合使用
  • 新能源接入:支持太阳能、风能等新能源接入
  • 智能控制:支持AI算法优化控制策略

9. 技术支持与服务

9.1 技术支持

  • 电话支持:提供24小时技术支持热线
  • 远程支持:通过网络远程协助调试
  • 现场支持:必要时提供现场技术支持

9.2 售后服务

  • 质保期:1年
  • 维护服务:提供定期维护和检修服务
  • 培训服务:提供用户培训和技术交流

10. 附录

10.1 术语定义

术语 英文全称 中文解释
SVG Static Var Generator 静止无功发生器
APF Active Power Filter 有源电力滤波器
DSP Digital Signal Processor 数字信号处理器
FPGA Field Programmable Gate Array 现场可编程门阵列
IGBT Insulated Gate Bipolar Transistor 绝缘栅双极型晶体管
PWM Pulse Width Modulation 脉宽调制
SVPWM Space Vector Pulse Width Modulation 空间矢量脉宽调制
PID Proportional Integral Derivative 比例积分微分
PLL Phase Locked Loop 锁相环
THD Total Harmonic Distortion 总谐波畸变率
IP Ingress Protection 防护等级

10.2 参考文献

  1. 《电力电子技术》
  2. 《DSP原理与应用》
  3. 《SVG/APF技术手册》
  4. 《TI DSP281x系列用户手册》
  5. 《电力系统谐波治理技术》
  6. 《无功功率补偿技术》

10.3 版本历史

版本号 日期 变更内容
1.0 2010-09-01 初始版本
1.1 2010-09-10 优化PID参数
1.2 2010-09-15 改进MPPT算法
1.3 2010-09-17 完善保护功能
1.4 2010-09-18 优化滤波参数
1.4.1 2010-09-20 按键防抖优化
1.4.2 2010-09-25 MPPT算法改进
1.4.3 2010-10-01 按键检测优化
1.4.4 2010-10-05 增加按键使能判断

软件说明书编写完成

SVG APF有源滤波器全套系统资料。 包含: 150w电源(原理图 PCB BOM 制版文件) FPGA核心控制板(原理图 PCB BOM 制版文件) IGBT驱动板(原理图 PCB BOM 制版文件) 高速信号采样板(原理图 PCB BOM 制版文件) 母线电容板(原理图 PCB BOM 制版文件) 还有参数计算资料

编写日期:2025-12-15

编写人:[自动生成]

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐