《INV-MCU Lab》汽油变频发电机逆变器软件用户手册

CMS_BAT139_DigInv 数字逆变器控制软件用户手册

版本:Rev0.1
日期:2026-05-11
适用工程:CMS_BAT139_DigInv_3KW230V_V01
适用 MCU:BAT32G139GK48FA / BAT32G139GH48 工程目标

声明与安全

本工程面向高压交流/直流功率变换场景。调试和运行时可能涉及 230 VAC 输出、数百伏直流母线、储能电容和高速开关器件。使用者应具备功率电子和嵌入式调试经验,并在隔离供电、限流、放电、示波器探头耐压和接地方式确认后再进行上电。

本文档不替代硬件规格书、安规测试报告、量产测试规范和最终产品用户说明书。产品级使用前,应完成硬件耐压、温升、短路、过载、EMC、异常掉电、并机投入和长期可靠性验证。

版本修订记录

版本 日期 说明 作者
Rev0.1 2026-05-11 基于源码生成用户手册初版 naiva

目录

  1. 简介
  2. 控制系统概述
  3. 开发环境与交付物
  4. 软件结构与运行时序
  5. 硬件接口与资源分配
  6. 开始调试
  7. 软件参数配置
  8. 数据采样、标定与换算
  9. 控制算法说明
  10. 故障保护与处理
  11. 维护、移植与二次开发
  12. 附录:

1. 简介

1.1 手册范围

本手册说明 BAT32G139 数字逆变器控制软件的工程结构、运行逻辑、参数配置、调试步骤、故障处理和二次开发注意事项。当前源码配置面向 230 VAC / 50 Hz 输出,功率等级宏配置为 Inv_Power_2000W,工程目录名称保留 3KW230V 字样。

需要确认的产品定义:

项目 当前源码/工程信息 说明
额定输出电压 230 VAC 谐波失真 THD ≤3%
输出频率 50 Hz,支持 60 Hz 表 50/60 Hz
额定功率 Inv_Power_Model = Inv_Power_3000W 2 kW/3 kW
直流母线 380/400VDC
MCU BAT32G139GK48FA
调试接口 Keil 工程、J-Link/CMSIS-DAP、UART1

1.2 适用读者

本文面向以下人员:

读者 关注内容
嵌入式开发 工程构建、状态机、外设初始化、中断调度、参数移植
功率算法开发 采样链路、双环控制、重复控制、限功率、下垂控制
硬件调试 引脚资源、ADC 通道、PWM 输出、过流/短路/温度保护
测试验证 故障注入、保护阈值、串口观测、回归清单
技术支持 故障码、LED/按键行为、恢复流程

1.3 手册编写依据

本手册依据以下工程文件整理:

内容 主要文件
工程目标与构建 keil/INVERTER.uvprojx
主循环 code/source/2_user_s/main.c
硬件初始化 code/source/2_user_s/sys_hardware_init.c
参数配置 code/head/2_user_h/sys_define_config.hsys_define_parar.h
状态机 code/source/2_user_s/sys_state_machine.c
中断调度 code/source/2_user_s/interrupt.c
采样计算 code/source/2_user_s/user_sample.c
故障保护 code/source/2_user_s/user_fault_check.c
逆变控制 code/source/3_powerlib_s/Inverter_Ctrl.c

2. 控制系统概述

2.1 系统功能

当前软件实现以下主要功能:

  1. 230 VAC / 50 Hz 单相逆变输出控制。
  2. 基于 TMM 的中心对称 SPWM 生成,当前载波频率 19.2 kHz。
  3. ADC 采样输出电压、电感电流、母线电压、辅助电源、温度、参考电压。
  4. 输出电压/电流闭环控制,支持单环/双环配置。
  5. 重复控制、PQ 下垂控制、限功率控制和直流分量校正。
  6. 母线、输出电压、输出电流、过载、短路、过温、转速、辅助电源、VREF 等保护。
  7. Ready/Run/Fault 等状态机管理。
  8. UART1 + DMA 调试输出,适配波形观测工具。
  9. 步进电机控制、按键、LED、并机/同步相关逻辑。

2.2 系统框图

graph TD Init["Sys_HardConfigInit 初始化外设"] --> Main["main.c 主循环"] Init --> TMM["TMM1 PWM中断"] Init --> SysTick["SysTick 1ms中断"] Init --> TMB["TMB输入捕获中断"] Main --> Context["State_Context_Func 状态转移"] Context --> Task["Sys_StateMachine_Task 状态任务"] Main --> Common["User_CommonFunction 慢任务"] Common --> Update["Update_AC_Data 计算RMS和功率"] Common --> UI["LED KEY 步进电机"] UI --> Context Pwr["直流母线和逆变功率级"] --> ADC["ADC软件触发采样"] ADC --> Sample["COM_VolSample COM_CurSample COM_Altern_Sample"] Sample --> Acc["User_EffectiveValue_Calc 周期累加"] Acc --> Back["整周期Back数据"] Back --> Update Pwr --> ACMP["ACMP0输出电压过零比较"] ACMP --> Freq["INV_ACOUT_FreCalc 频率和同步判定"] Freq --> Parallel["paralogiccontrol 同步状态"] Parallel --> Ready["Ready_State_Check 主从和投运判断"] Ready --> Context TMB --> Speed["发电机或外部速度计算"] Speed --> Protect SysTick --> Flags["置位system_1ms和faultCheck_1ms"] Flags --> Protect["Fault_State_Check 保护判定"] Update --> Protect Sample --> RunData["运行态采样快照"] RunData --> Ctrl["Inverter_AlgCtrl 逆变控制算法"] Protect --> Close["INV_CloseDrive 关SCR和PWM"] Close --> Context TMM --> Close TMM --> Freq TMM --> Sample TMM --> Acc TMM --> RunGate["CM_RUN_STATE运行态门控"] RunGate --> RunData Ctrl --> PWM["更新TMM PWM周期和比较值"] PWM --> Pwr TMM --> Debug["User_UART_View 调试数据选择"] Debug --> UART["UART1和DMA发送"]

2.3 控制模式

配置项 当前值 说明
OPERATING_MODE NORMAL_MODE 正常模式下启用保护逻辑;DEBUG_MODE 会跳过部分正常流程,需谨慎使用
CM_Inverter_Loop_Ctrl CM_Inverter_Double_Loop 逆变电压/电流双环
InvVol_Type Out_Vol_230 230 V 输出参数组
InvVol_Freq InvVol_Freq_50Hz 50 Hz 正弦表,19.2 kHz / 384 点
Inv_Power_Model Inv_Power_2000W 功率等级相关参数分支
INV_POWER_CTRL_SELECT INV_POWER_ENABLE 启用限功率控制
INV_SOFTWARE_CTRL_SELECT INV_SOFTWARE_DISABLE 当前关闭输出电压缓启动宏

3. 开发环境与交付物

3.1 硬件环境

条目 说明
控制器 BAT32G139GK48FA / BAT32G139GH48 工程目标
功率板 整流铝基板1、IGBT铝基板1
调试器 J-Link /CMSIS-DAP
供电 直流母线、电源限流、辅助电源规格
负载 阻性/感性/电机/整机负载规格

3.2 软件环境

条目 当前信息
操作系统 Windows,建议 Windows 10/11
IDE Keil MDK,工程文件 keil/INVERTER.uvprojx
编译目标 BAT32G139GH48
Device BAT32G139GK48FA
输出文件 Objects/INV_Ctrl.hex
语言 C

[补充] Keil MDK 版本 V5.32.0.0、BAT32G139 DFP/pack 版本 Cmsemicon.BAT32G139.1.0.4

3.3 交付物

类型 路径/说明
源码 code/sourcecode/head
Keil 工程 keil/INVERTER.uvprojxkeil/INVERTER.uvoptx
构建产物 keil/Objects/INV_Ctrl.hex
说明文档 本手册
硬件资料 原理图、PCB、BOM、接口定义]

4. 软件结构与运行时序

4.1 目录结构

CMS_BAT139_DigInv_3KW230V_V01/
├─ code/
│  ├─ head/
│  │  ├─ 1_driver_h/      MCU 外设驱动头文件
│  │  ├─ 2_user_h/        系统配置、状态机、用户层头文件
│  │  └─ 3_powerlib_h/    控制算法头文件
│  └─ source/
│     ├─ 1_driver_s/      ADC、TMM、TMB、SCI、DMA、GPIO 等驱动
│     ├─ 2_user_s/        主循环、状态机、采样、保护、人机接口
│     └─ 3_powerlib_s/    PID、重复控制、PQ 下垂、逆变控制、功率计算
├─ keil/                  Keil 工程、RTE、Objects、Listings
└─ docs/                  补充文档

4.2 软件分层

层级 目录 职责
驱动层 1_driver_* 直接配置 BAT32G139 外设寄存器,提供 ADC、TMM、TMB、SCI、DMA、GPIO 等基础接口
用户层 2_user_* 组织状态机、硬件初始化、采样处理、故障保护、按键/LED、并机和调试输出
算法层 3_powerlib_* 实现逆变控制、PID、重复控制、PQ 下垂、限功率和功率计算

二次开发时建议保持分层边界:硬件资源修改优先放在驱动/硬件初始化层,运行策略放在用户层,控制环路改动放在算法层。

4.3 主循环

main.c 的主流程如下:

Sys_HardConfigInit()
while (1) {
    State_Context.ContextPtr(&State_Context)
    Sys_StateMachine_Task()
    User_CommonFunction()
    处理 1ms 标志清零
}

主循环不直接执行高速闭环。高速采样和控制在 TMM1 PWM 中断内完成,主循环主要承担状态机推进和慢任务调度。

4.4 中断与任务优先级

优先级 入口 周期/触发 主要职责
最高 tmm1_interrupt() 19.2 kHz PWM 周期 关驱动检查、频率检测、采样、限功率、直流分量校正、逆变算法、PWM 更新、周期统计、串口观测触发
硬件 PWM 截止/INTP0 硬件触发 输入过流/强制截断,具体阈值与外部硬件相关
普通 SysTick_Handler() 1 ms 故障检测、步进电机节拍、温度恢复计时、短路检测窗口
main() 轮询 状态机、LED/按键、用户慢任务
tmb0_interrupt() 捕获触发 外部同步/转速信号捕获,计算频率/速度

注意:在 19.2 kHz 载波下,PWM 周期约 52 us。新增代码进入 tmm1_interrupt() 前必须评估最坏执行时间,避免 ADC 时序异常、PWM 更新延迟或控制不稳定。

4.5 状态机

状态机定义在 sys_state_machine.c,主要状态如下:

状态 进入条件 主要动作 退出条件
CM_INITIAL_STATE 上电/复位 软件变量初始化,绑定算法函数指针 Initial_Ok = E_TRUE
CM_WAITING_STATE 初始化完成或故障释放 使能 SCR,等待延时 Waiting_Ok = E_TRUE
CM_READY_STATE 等待完成 主从识别,母线/辅助电源/温度启动自检 Ready_Ok = E_TRUE 进入 Run;Ready_Ok = E_FAIL 进入 Fault
CM_RUN_STATE Ready 通过 开驱动,执行运行态故障检查/处理,高速中断进行闭环 停机指令或故障
CM_FAULT_STATE 自检失败或运行故障 关闭 SCR,保持故障,等待释放 Fault_Release = E_TRUE 返回 Waiting
CM_STOP_STATE 停机指令 停机占位 -

5. 硬件接口与资源分配

5.1 时钟与基础外设

资源 当前配置 文件
主频 外部晶振经 PLL,8 MHz * 16 / 2 = 64 MHz SystemClock_Init()
SysTick 1 ms SysTick_ConfigInit()
PWM TMM0/TMM1 互补 PWM,中心对称 EPWM_ConfigInit()
ADC 高速模式,软件触发,选择通道单次转换 ADC_ConfigInit()
TMB fCLK/8 = 8 MHz 输入捕获 TMB_InputCapture_Init()
ACMP0 内部 2.5 V 参考,用于输出过零/同步检测 ACMP0_ConfigInit()
UART1 SCI0 CH2/CH3,当前按 1 Mbps 配置 UART1_ConfigInit()
DMA DMA_VECTOR_ST1 发送 20 Byte 调试帧 Sys_HardConfigInit()

5.2 GPIO 与功能引脚

功能 引脚/端口 方向 说明
绿灯 P60 输出开漏 运行/状态指示
红灯 P61 输出开漏 故障/状态指示
逆变输出继电器 P70 输出 User_PWM_Enable/Disable 相关运行控制需结合硬件确认
SCR/整流使能 P30 输出 INV_SCR_ENABLE/DISABLE
故障复位输入 P31 上拉输入 FAULT_RST
ECO 模式输入 P74 上拉输入 ECOMODE
频率选择输入 P71 上拉输入 FRESWITCH,当前频率切换宏关闭
硬件过流/截止 P136 / INTP0 上拉输入 TMM 强制截断源
步进电机 A/B/C/D P24/P25/P26/P27 输出 24BYJ28 等步进控制
UART1 TXD P72 输出 调试发送
UART1 RXD P73 输入 当前接收配置被关闭
TMB 捕获 P50 输入 同步/转速捕获
ACMP0 输入 P22 模拟输入 输出电压比较输入

5.3 ADC 通道

通道 引脚 变量 说明
ANI0 / ADC_CHANNEL_0 P20 Temp_External_AD 散热器/外部温度
ANI3 / ADC_CHANNEL_3 P23 AC_Vol_Peak 逆变输出交流电压
ANI9 / ADC_CHANNEL_9 P10 ref_AD 参考电压/2.5 V 中点
ANI10 / ADC_CHANNEL_10 P01 Bus_Vol_AD 母线电压
ANI11 / ADC_CHANNEL_11 P00 Power_AuxVcc_AD 辅助电源
ANI15 / ADC_CHANNEL_15 P146 Inv_Cur_Peak 电感电流

当前 ADC 在中断内软件触发并阻塞等待转换完成。若提高载波频率或增加采样通道,需要重新评估 PWM 中断执行时间。

5.4 PWM 输出

项目 当前值
MCU_CLK 64 MHz
PWM_FREQ 19.2 kHz
DEADTIME 约 1.8 us
PWM_PERIOD MCU_CLK / (PWM_FREQ * 2) + DEADTIME - 2
输出方式 TMM 中心对称互补 PWM
更新点 TM1 下溢时从缓冲寄存器加载

6. 开始调试

6.1 调试前检查

上电前确认:

  1. 控制板、功率板、驱动电源和直流母线连接正确。
  2. 示波器、电流探头、差分探头量程和接地方式正确。
  3. 直流电源限流、电子负载或隔离负载配置正确。
  4. 功率级无短路,栅极驱动供电正常。
  5. Keil 工程目标、芯片型号和下载算法匹配。
  6. 当前宏配置符合硬件版本:电压增益、电流增益、母线增益、功率等级。

6.2 打开工程

  1. 打开 keil/INVERTER.uvprojx
  2. 确认 Target 为 BAT32G139GH48
  3. 确认 Device 为 BAT32G139GK48FA
  4. 确认 Include Path 包含:
    ..\code\head\3_powerlib_h;..\code\head\1_driver_h;..\code\head\2_user_h;..\code\source\2_user_s

Keil 工程窗口截图、Pack 安装截图、Debug Adapter 配置截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 编译与下载

建议流程:

  1. Clean
  2. Rebuild all target files
  3. 确认生成 Objects/INV_Ctrl.hex
  4. 连接 J-Link 下载。
  5. 下载后先低压/限流上电观察变量和 PWM 输出。

关键编译输出:

输出 说明
INV_Ctrl.axf 调试文件
INV_Ctrl.hex 烧录文件
INV_Ctrl.map 链接和内存占用分析

6.4 在线调试观察变量

建议优先观察:

变量 说明 正常期望
State_Context.State_Identifier 状态机状态 Initial -> Waiting -> Ready -> Run
System_ProtectFlag_Info.all 当前保护位 正常为 0
System_ProtectFlag_Info_First_Value 首次故障锁存 正常为 0
ADSample_Info.Bus_Vol_AD 母线原始 ADC 与母线电压对应
ADSample_Info.Bus_Vol_Filiter_AD 母线滤波值 稳定,无明显跳变
ADSample_Info.AC_Vol_RMS 输出电压有效值,0.25 V/LSB 230 V 约 920
ADSample_Info.Inv_Cur_RMS 电感电流 RMS 需结合负载
System_Power_Info.Active_Power_Total 有功功率 W 需结合负载
Inv_SineCtrl_Info.InvVol_SPWM_Duty SPWM 调制量 不应长期饱和
PID_Vol_Loop.Out / PID_Curr_Loop.Out 环路输出 不应异常发散

6.5 串口调试

当前工程初始化 UART1,P72 为 TXD1,DMA 从 txBuf[1]SCI0->TXD1 发送 19 字节,面向 20 Byte 调试帧。

项目 当前信息
端口 UART1 TXD1 / P72
波特率 1 Mbps
发送入口 User_UART_View()
调用位置 tmm1_interrupt()test_cnt >= 50
工具 VOFA/cktszsss32

串口帧格式

void Function_TxSendDebug(int32_t data1,int32_t data2,int32_t data3,int32_t data4)
{
    num[0] = data1;
    num[1] = data2;
    num[2] = data3;
    num[3] = data4; 

    memcpy(txBuf,(uint8_t *)num,16);

    txBuf[16] = 0x00;
    txBuf[17] = 0x00;
    txBuf[18] = 0x80;
    txBuf[19] = 0x7f;

    DMAVEC->CTRL[0].DMSAR = (uint32_t)(txBuf+1);
    DMAVEC->CTRL[0].DMACT = 19;
    DMA->DMAEN1 |= 1<<6;
    SCI0->TXD1 = txBuf[0];
}

当前 VOFA+ 发送格式没有 CRC,数据1 float + 数据2 float + 数据3 float + 数据4 float + 帧尾,也就是16字节数据 + 4字节帧尾

7. 软件参数配置

7.1 基本配置文件

文件 配置内容
sys_define_config.h PWM、串口、工作模式、输出电压/频率、功率等级、采样增益、正弦表点数
sys_define_parar.h 保护阈值、校准上下限、启动自检、功率等级参数、控制比例系数
sys_variable_init.c 运行时结构体初始化、函数指针绑定、PID/并机/重复控制/功率计算参数初始化

7.2 PWM 与频率

参数 当前值 修改影响
MCU_CLK 64 MHz 决定 PWM、定时和串口计算基础
PWM_FREQ 19.2 kHz 改变 PWM 周期和正弦表点数
DEADTIME 1.8 us 过小可能直通,过大影响输出波形
SPWMWAVE_DOT_50Hz 384 19.2 kHz / 384 = 50 Hz
SPWMWAVE_DOT_60Hz 320 19.2 kHz / 320 = 60 Hz

修改载波频率时必须同时核对:

  1. SPWMWAVE_DOT_* 点数是否能整除目标频率。
  2. 正弦表长度是否匹配。
  3. RepeatCtrl_Info.SPWM_Point 是否匹配。
  4. PWM 中断执行时间是否仍小于周期。
  5. 死区时间是否仍满足功率器件要求。

7.3 输出电压与功率等级

参数 当前值 说明
INV_AC_VOL_AMP_VAL_NORMAL_REF 2100 230 VAC 目标幅值对应的内部 ADC 码
INV_LOAD_PWR_SLOPE_NUM 30 负载功率对输出电压幅值补偿斜率
InvVol_Type Out_Vol_230 输出电压类型
Inv_Power_Model Inv_Power_2000W 功率等级参数分支
INV_POWER_CTRL_SELECT INV_POWER_ENABLE 启用限功率

7.4 采样增益

参数 当前值 说明
HW_ADC_REF 5.0 ADC 参考/供电基准
HW_VBUS_GAIN 144.4 母线电压分压倍数
HW_V_ACOUT_GAIN 256.0 输出电压采样倍数
HW_I_INDUC_GAIN 49.7 电感电流采样倍数
HW_AUX_POWER_GAIN 6.0 辅助电源采样倍数
HW_TEMP_DIVIDE_RES 10.00 kΩ NTC 分压上/下拉电阻之一

修改硬件采样电阻或放大倍数后,必须同步修改上述参数,并重新验证 RMS、功率、过压、欠压、过流和过温保护。

7.5 软启动和运行模式

参数 当前值 说明
INV_SOFTWARE_CTRL_SELECT INV_SOFTWARE_DISABLE 是否启用输出电压缓启动
INV_SOFTWARE_STEP_VALUE 50 缓启动每步递增值
INV_SOFTWARE_SHIFT_VALUE 6 缓启动缩放移位
INV_SOFTWARE_HOLD_INIT 450 << 6 缓启动初始幅值
OPERATING_MODE NORMAL_MODE 正常/调试模式

建议:调试模式会改变状态机和保护行为,只应在低压、限流、明确观察目标下使用。

8. 数据采样、标定与换算

8.1 采样链路

高速采样在 tmm1_interrupt() 内触发,核心链路为:

ADC原始码
-> 左移/读取
-> 上电偏置校准
-> 扣除 2.5 V 中点偏置
-> 峰值量写入 ADSample_Info
-> 周期内平方和/功率累加
-> 周期结束转存 Back
-> Update_AC_Data() 计算 RMS 和功率
-> 保护与控制算法读取

8.2 偏置校准

校准对象 样本数 合格范围 变量
VREF 512 3896 ~ 4296 AD_Correct_Vref
输出电压 1024 3896 ~ 4296 AD_Correct_V_ACOUT
电感电流 1024 3896 ~ 4296 AD_Correct_I_Induc

校准值用于扣除围绕 ADC 中点的直流偏置。若硬件偏置、电源或采样网络异常,校准无法置位,后续 RMS、功率和保护都会偏移。

8.3 输出电压换算

输出电压采样通道将 12 bit ADC 结果左移一位存储:

InvVol_Store_One = ADC->ADCR << 1
AC_Vol_Peak = InvVol_Store_One - AD_Correct_V_ACOUT.ADRef_Correct_Value

近似物理量换算:

Vadc_delta = (AC_Vol_Peak / 2) / 4096 * HW_ADC_REF
Vout_peak  = Vadc_delta * HW_V_ACOUT_GAIN
Vout_rms   = Vout_peak / sqrt(2)

ADSample_Info.AC_Vol_RMS 采用 0.25 V/LSB 存储,因此:

Vout_rms(V) = ADSample_Info.AC_Vol_RMS / 4

8.4 功率与电流

User_EffectiveValue_Calc() 在 PWM 周期内累加:

累加项 含义
AC_Vol_Sum 输出电压峰值平方和
Inv_Cur_Sum 电感电流峰值平方和
Load_Cur_Sum 估算负载电流平方和
AC_Active_Power_Sum 输出电压峰值 * 负载电流峰值

Update_AC_Data() 在整周期后计算 RMS、有功功率和视在功率,并写入 ADSample_InfoSystem_Power_Info

9. 控制算法说明

9.1 逆变算法入口

Inverter_AlgCtrl()sys_variable_init.c 中绑定到 Inv_SineCtrl_Info.Calc,并在 tmm1_interrupt() 运行态内调用。

主要步骤:

  1. 根据软启动配置调整目标幅值。
  2. 读取功率计算结果,执行 PQ 下垂控制。
  3. 根据母线电压和限功率输出修正幅值。
  4. 生成正弦电压参考。
  5. 计算虚拟阻抗补偿。
  6. 执行重复控制。
  7. 执行电压环 PI。
  8. 执行电流环 PI 和限幅。
  9. 根据开环/闭环、单机/并机模式生成调制量。
  10. 限幅后计算 PWM 周期和比较值。

9.2 电压/电流双环

环路 输入 输出 说明
电压环 PID_Vol_Loop 电压参考、输出电压峰值反馈 电流参考或调制修正量 保持输出电压
电流环 PID_Curr_Loop 电压环输出、电感电流峰值反馈 PWM 调制修正量 限制和调节电感电流

当前初始化中电流环限幅为 +800/-800,运行中还会根据电流 RMS 和功率进行补偿。

9.3 重复控制

重复控制使用当前正弦表索引 SineTab_Index,将电压参考和反馈误差映射到周期性补偿缓存,用于降低稳态周期误差。启用或修改重复控制参数时,需要同步确认:

  1. 正弦表点数与输出频率匹配。
  2. 缓存长度与 SPWM_Point 匹配。
  3. 故障释放时缓存是否清零。
  4. 负载突变下是否引入过冲。

9.4 PQ 下垂与并机

PQ_Droop_Ctrl() 读取有功/无功和母线电压,输出幅值与频率补偿。当前 InvVol_Omiga_MultiCalc 被固定为 4096,频率下垂输出未直接叠加;幅值补偿仍参与 InvVol_AM_MultiCalc

9.5 限功率控制

限功率由 INV_POWER_CTRL_SELECT 使能,相关入口包括:

模块 作用
INV_Power_Ctrl() 运行中根据功率限制输出幅值/参考
INV_PID_Power 限功率控制器输出
INV_LOAD_PWR_SLOPE_NUM 负载功率对电压幅值补偿

10. 故障保护与处理

10.1 保护判定机制

保护项通过 Protect_Check_Var_t 描述阈值、回差、延时和保护位。Get_The_Protect_Flag() 按比较类型进行计时,超过持续时间后锁存对应保护位。

Fault_State_Check() 在 1 ms 节拍下运行,仅在 CM_RUN_STATE 且当前无故障时继续判定。首次故障会记录到 System_ProtectFlag_Info_First_Value,用于追溯首因。

10.2 主要保护项

类别 变量 当前阈值/说明
输出过压 ADSample_Info.AC_Vol_RMS 255 V,300 ms,回差 5 V
输出欠压 ADSample_Info.AC_Vol_RMS 130 V 或 160 V 分支,1500 ms,回差 5 V
输出短路 AC_Vol_RMS + Inv_Cur_Peak 启动屏蔽后,低输出电压且高峰值电流触发
电感过流 ADSample_Info.Inv_Cur_RMS OCP1/OCP2,阈值在参数文件中配置
过载 System_Power_Info.Active_Power_Total OLP1~OLP4
母线过压 ADSample_Info.Bus_Vol_AD OVP1~OVP3
母线欠压 ADSample_Info.Bus_Vol_AD UVP1~UVP3
辅助电源 Power_AuxVcc_AD OVP/UVP,15.0 V / 8.5 V 相关
过温 Temp_External_AD 80℃、90℃ 对应 NTC 阈值
VREF 异常 ref_AD_Fir >> 1 1848 ~ 2248,回差 80
转速异常 s16_GeneratorSpeedAvg 过速/欠速

10.3 故障进入流程

保护条件持续满足
-> System_ProtectFlag_Info.all 置位
-> System_ProtectFlag_Info_First_Value 锁存
-> 状态机检测 Fault_Occur
-> 进入 CM_FAULT_STATE
-> 关闭 SCR / PWM / 驱动相关输出
-> 等待释放条件

10.4 故障释放

Protect_Release() 会清除故障标志、启动自检标志、保护计数、并机状态、重复控制缓存和 PID 积分,并置位 State_Context.flag.bit.Fault_Release,状态机随后返回 Waiting。

当前释放条件包括:

  1. 保护释放计数小于 20 且复位按键为 OFF。
  2. 首次故障为过温且温度恢复计时超过 3000 ms。

10.5 故障处理建议

现象 可能原因 检查方向
上电进入 Fault 母线/辅助电源/温度启动自检失败 检查 ADC 原码、分压倍数、启动阈值
输出电压偏低 电压采样增益、幅值目标、限功率、环路参数异常 核对 HW_V_ACOUT_GAININV_AC_VOL_AMP_VAL_NORMAL_REFINV_PID_Power.out
输出波形抖动 ADC 偏置、PWM ISR 超时、环路参数过激 观测偏置值、GPIO 翻转测 ISR 耗时、降低 PI
短路保护误触发 启动屏蔽时间、输出电压阈值、电流峰值噪声 调整 INV_ACOUT_SCP_*,检查电流采样滤波
过流保护 负载过大、采样增益错误、环路饱和 对比电流探头与 Inv_Cur_RMS
VREF 异常 2.5 V 偏置、ADC 参考、电源纹波 测量 P10/VREF 通道波形

11. 维护、移植与二次开发

11.1 修改硬件采样网络

修改采样电阻、运放增益或 ADC 参考后,必须同步更新:

  1. HW_VBUS_GAIN
  2. HW_V_ACOUT_GAIN
  3. HW_I_INDUC_GAIN
  4. HW_AUX_POWER_GAIN
  5. 保护阈值和启动自检阈值
  6. 串口显示换算
  7. 测试报告中的校准系数

11.2 修改输出频率或 PWM 频率

需要检查:

  1. PWM_FREQ
  2. SPWMWAVE_DOT_50Hz/60Hz
  3. 正弦表长度
  4. 重复控制缓存长度
  5. TMM 周期和死区
  6. PWM 中断执行时间
  7. ADC 采样相位和等待时间

11.3 修改功率等级

当前工程已有 1000 W、1600 W、2000 W 等宏分支。修改功率等级时,需要核对:

  1. Inv_Power_Model
  2. 电流限幅和过流保护
  3. 过载 OLP1~OLP4
  4. 限功率参数
  5. 温升测试
  6. 母线电压范围
  7. 功率器件 SOA

11.4 代码维护建议

  1. 不建议将 keil/Objectskeil/Listings、用户本地 .uvguix.* 作为长期人工维护对象。
  2. 新增功能优先保持在现有三层目录结构内。
  3. PWM 中断内只保留必须的高速闭环逻辑。
  4. 跨中断和主循环共享的关键变量应明确并发访问策略。
  5. 每次修改保护阈值、采样增益、PI 参数后,应补充测试记录。

12. 附录:

posted on 2026-05-11 14:18  Naiva  阅读(82)  评论(0)    收藏  举报

导航

↑ 顶部