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 程序执行流程
- 系统初始化阶段(SunPower.c的main函数):
- 硬件初始化:GPIO、ADC、SCI、PWM等
- 软件初始化:PID参数、PLL参数、变量初始化
- 中断配置:定时器中断、ADC中断、SCI中断等
- 主循环阶段(SunPower.c的main函数while循环):
- 系统状态监控
- LED状态指示
- 显示通信处理
- 中断服务阶段(ISR.c和main.c的中断函数):
- PWM定时器中断:实时控制算法执行
- ADC中断:电压电流采样
- SCI中断:通信数据处理
- 保护中断:故障处理
- 控制算法执行阶段(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.c和S2R2.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 调试步骤
- 硬件检查:检查所有硬件连接是否正确
- 软件烧录:将程序烧录到DSP中
- 参数配置:配置系统参数
- 功能测试:测试各个功能模块
- 性能测试:测试系统性能指标
- 现场调试:在实际应用场景中进行调试
7.3 常见故障及处理
| 故障现象 | 可能原因 | 处理方法 |
|---|---|---|
| 系统无法启动 | 电源故障 | 检查电源连接和电压 |
| 无输出电流 | 驱动故障 | 检查IGBT驱动电路 |
| 补偿效果差 | 参数配置错误 | 重新配置系统参数 |
| 过压保护 | 电网电压波动 | 检查电网质量或调整保护参数 |
| 过流保护 | 负载异常 | 检查负载或调整保护参数 |
| 通信故障 | 通信线路故障 | 检查通信线路和接口 |
8. 程序升级与扩展
8.1 程序升级
- 备份原程序:备份当前运行的程序
- 下载新程序:将新版本程序下载到DSP中
- 参数配置:重新配置系统参数
- 功能测试:测试升级后的程序功能
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 参考文献
- 《电力电子技术》
- 《DSP原理与应用》
- 《SVG/APF技术手册》
- 《TI DSP281x系列用户手册》
- 《电力系统谐波治理技术》
- 《无功功率补偿技术》
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 | 增加按键使能判断 |
软件说明书编写完成
编写日期:2025-12-15
编写人:[自动生成]