EMS 知识库
首页 / knowledge/代码解析/midware/inverter

inverter.h

源文件路径:midware/inverter/inverter.h 所属模块:midware/inverter(逆变器统一抽象层的公共契约头) 代码行数:2263

1. 文件职责

本文件是整条逆变器(PCS)软件栈的总契约头:它把"逆变器"这个物理对象抽象成一张全局设备表 INVERTER_TABLE_T(inverter.h:1901-1915),表内再分为配置表、安规参数表、安规自检表、运行数据表、控制命令表、控制参数表、调试日志表、AFCI 表共 8 个子块,全工程所有对逆变器的读写都落在这张表上。

它同时定义了三类与机型强相关的编译期/运行期标识:编译期厂商开关 INVERTER_TYPE 及其派生的 INV_DC_CTRL/INV_AC_CTRL(inverter.h:172-181)、运行期厂商码 KELONG_TYPE~INOVANCE_TYPE(inverter.h:163-170)、以及 70 多个型号字符串宏 TYPE_SEEDS_G3_*/TYPE_BYTE_WATT_*/TYPE_SET_* 等(inverter.h:38-150),后者被 logic/、net/、hmi/ 用来做升级包匹配、Modbus/SunSpec 上报和界面型号显示。

第三块职责是安规参数与故障位域的字典:GRID_REGULATION_E(安规码,inverter.h:191-254)、INVERTER_SAFTY_INFO_T(300 多个电网保护点/P(U)/Q(U)/P-F/cosφ(P) 曲线参数,inverter.h:551-758)、以及三组 64 位故障字与两组 64 位告警字的位域联合体(inverter.h:960-1620)。

数据流位置:厂商驱动(kelong/set/ginlong/alphaess/goodwe/inovance)按 get_inverter_type() 分发后往 g_t_inv_info.t_run_info 写实时量 → logic/ 读实时量、算出目标功率并写回 t_safty_info/t_control_cmd/t_control_parameter → 厂商驱动把参数组帧下发。hmi/ 与 net/ 主要走本文件声明的 inverter_read_*/inverter_get_*/set_inverter_* 系列接口,但也有大量代码直接读写 g_t_inv_info.t_config_data(hmi/key.c 83 处、net/server.c 48 处、net/ems.c 21 处)。

本文件不含任何函数定义,只有 302 条函数原型声明(inverter.h:1933-2261)与 2 个 extern 全局变量(inverter.h:1929-1930),实现在 midware/inverter/inverter.c 与 6 个厂商驱动目录里。它驱动方是 user/main.c:其中声明的 task_inverter、task_inverter_can、task_parallel_sci 在此静态创建(user/main.c:189、user/main.c:244、user/main.c:299)。

2. 关键数据结构与宏

名称类型说明
DEBUG_INVERTER宏逆变器模块调试打印总开关,置 0 关闭(inverter.h:18)。
cWaitMode~cUpdateArm(0~10)宏逆变器运行模式码:待机/自检/检查/并网/离网UPS/旁路/直流/故障/升级主控/升级从机/升级ARM(inverter.h:20-30),与 t_run_info.u8_run_mode 对应。
VERSION_INV_HARD宏逆变器硬件版本字符串 "V1.01",被写入 t_config_data.u8_hw_ver[10](inverter.h:32)。
TYPE_ALPHA_ESS宏沃太自有品牌型号串(inverter.h:34)。
TYPE_KELONG_S6宏科华机型型号串(inverter.h:38)。
TYPE_SET / TYPE_SET_B3 / TYPE_SET_S5 / TYPE_SET_M5 / TYPE_SET_M10宏盛能杰系列型号串(inverter.h:41-45)。
TYPE_GINLONG / _T10 / _S5 / _S3_6 / _S4_6 / _B5 / _S6宏锦浪系列型号串(inverter.h:48-54)。
TYPE_BYTE_WATT 系列(S5/S3.6/S3/B5/B3.6/B3/T4/T5/T6/T8/T10/T12/T15/S8/S6/S10/B10)宏贝瓦系列型号串(inverter.h:57-74)。
TYPE_GOODWE 系列(AES7.6/AES9.6/ABP7.6/ABP9.6)宏固德威系列型号串(inverter.h:77-81)。
TYPE_INOVANCE 系列(T12/T15/T20)宏汇川系列型号串(inverter.h:84-87)。
TYPE_SEEDS_G3_*(18 项)宏沃太自研 SMILE-G3 平台对外型号串,形如 "SMILE-G3-T12-INV"(inverter.h:91-108)。
TYPE_SEEDS_*(S5/S6/S4.6/S3.6/B5/AES7.6/AES9.6/ABP7.6/ABP9.6 等)宏老平台 SMILE 系列型号串(inverter.h:110-127)。
ZOE_OEM_TYPE_* / SUNPOWER_OEM_TYPE_* / BYTE_WATT_OEM_TYPE_* / PEIMAR_OEM_TYPE_* / DIGIEN_OEM_TYPE_*宏贴牌(OEM)型号串,inverter_read_system_modle() 依据 g_t_system_base_info.u16_oem_flag 改用这些串(inverter.h:132-150)。
REGULATOR_SPEED_1~_5宏调节速率档位 1~5,get_inv_regulator_speed() 的返回值域(inverter.h:154-158)。
INVERTER_NULL/KELONG_TYPE/SET_TYPE/GINLONG_TYPE/ALPHAESS_TYPE/GOODWE_TYPE/INOVANCE_TYPE/INVERTER_MAX宏厂商类型码 0~7;INVERTER_MAX(7) 在条件编译里兼作"全部厂商都编进去"的哨兵(inverter.h:163-170)。
INVERTER_TYPE宏编译期烘焙的厂商开关,当前值 (INVERTER_NULL)(inverter.h:172);set/get_inverter_type() 运行时读的是 t_config_data.u8_inv_model,两者是两套东西。
INV_DC_CTRL / INV_AC_CTRL宏由 INVERTER_TYPE 条件定义:科华/盛能杰/锦浪/固德威/INVERTER_MAX 走 DC 侧控制,沃太/汇川/INVERTER_MAX 走 AC 侧控制(inverter.h:175-181),被 logic/dc_control.c、logic/ac_control.c 用 #ifdef 包住整个文件体。
PF_001_TO_01(val)宏0.001 精度 S16 → 0.01 精度 S8 转换宏:先四舍五入(正 +5/10、负 -5/10)再限幅到 ±127/±128,含赋值副作用(inverter.h:184-186)。
GRID_REGULATION_E枚举安规码表,VDE0126_50HZ(0) 起、含 AS4777_2、G98/G99、CEI021、NRS097_2_1、EN50549 各国变体、UL1741 系列、RD1699/RD647/RD413、NTS_Type_A 等,末位 Safety_Max 作范围校验(inverter.h:191-254)。
GRID_SAFESUB_E枚举安规子项,主要用于 AS4777.2 澳洲各州(VICTORIA/QUEENSLAND/SOUTH_AUSTRALIA/AUSGRID…)与 NEW_ZEALAND/VECTOR,末位 SAFESUB_MAX(inverter.h:256-277)。
BACKUP_STATUS_E枚举备电(UPS)使能三态 BACKUP_NULL=0/DISABLE/ENABLE,set_inverter_backup_enable() 的参数类型(inverter.h:279-284)。
INVERTER_OVERALL_STATUS_E枚举逆变器整体状态。注意枚举体内 INV_SHUTDOWN_NONE 又被赋 0,与 INV_POWER_NONE 同值(历史遗留写法,靠语义区分)(inverter.h:286-296)。
SYS_SHUTDOWN_STATUS_E枚举一键停机/租赁状态 SYS_SHUTDOWN_STOP/START/STOP_DAYS(inverter.h:298-303)。
INVERTER_SUB_E枚举子机型码 SUB_S3~SUB_B10 共 28 项(相数+容量细分),末位 SUB_MAX;get_inverter_sub() 用它做越界钳位(inverter.h:305-338)。
INVERTER_DATA_E枚举一个枚举承载两套语义:PV_CHANAEL1..4(1~4)/PV_CHANAL_ALL(5) 与 PHASE_L1..L3(1~3)/PHASE_ALL(4)。拼写不统一(CHANAEL / CHANAL)(inverter.h:340-354)。
INVERTER_SELF_INSPECTION_STATE_E枚举安规自检状态:未自检/自检中/自检完成(inverter.h:356-361)。
INVERTER_SELF_INSPECTION_FLAGS_E枚举自检启停标志:无/停止/启动(inverter.h:363-368)。
INVERTER_REACTPOWER_MODE_E枚举无功模式:无/固定PF/P-PF/固定Q/Q(U)/Volt-Var,inverter_get_reactpower_control_mode() 的返回值域(inverter.h:370-378)。
INVERTER_UPGRADE_ERR_E枚举固件升级错误码,按"发送/接收 × boot/master/master_last/slave/slave_last/arm/arm_last/end"排列,末位 UPGRADE_ERR_MAX(inverter.h:380-401)。
INVERTER_CATEGORY_E枚举机型大类:贝瓦单相/贝瓦三相/非贝瓦,get_inverter_type_category() 返回(inverter.h:403-407)。
EMS_N_N_SHORT_STATUS枚举N-N 短接检测状态:跟随配置/关闭/开启(inverter.h:409-414)。
#pragma pack(1) / #pragma pack()编译指令从 inverter.h:416 到 inverter.h:1916 之间全部结构体按 1 字节对齐,因为 INVERTER_CONFIG_TAB_T 要整块读写 Flash 并与 Modbus CRC 对齐。
SAFTY_MODE_ENABLE_U联合体安规模式使能位图(u16):volt_watt/volt_var/volt_freq/pf_curve/volt_watt_charge/reactice_power/fix_power_factor/fix_reactive_power/power_pf 共 9 位。成员名是 BIT(大写),与后面故障字的 .bit(小写)不一致(inverter.h:418-433)。
INVERTER_CONFIG_TAB_T结构体逆变器配置表(inverter.h:435-505):机型/硬件版本/AC-DC 额定功率/充放电截止/安规与子安规/并机与旁路/停机与防盗/有功无功控制使能/安规模式位图 等;末尾 u8_reserve[172] 补齐 + u16_crc_code(Modbus CRC16)。按 #pragma pack(1) 展开总长 256 字节,正好整除 4KB 扇区。
STATIC_ASSERT(...)宏定义于 midware/debug/debug.h:16,用"条件为假时数组长度为负"的技巧在编译期断言;此处断言 ASSERT_FLASH_SECTOR_SIZE % sizeof(INVERTER_CONFIG_TAB_T) == 0,其中 ASSERT_FLASH_SECTOR_SIZE = FLASH_SECTOR_SIZE = 4*1024(inverter.h:507、midware/debug/debug.h:19、hardware/flash/flash.h:27)。
GRID_PARA_TUNING_FALG_E枚举电网参数在线调节的标志:停止/固定功率因数/P-PF/固定无功/变模式(inverter.h:509-518)。
INVERTER_PHASE_SAFTY_INFO_T结构体意大利安规三相自检用的一/二/三阶过压欠压、10 分钟过压、一/二阶过频欠频保护点与时间(值为 0.1V/0.01S/0.01Hz 量纲)(inverter.h:520-549)。
INVERTER_SAFTY_INFO_T结构体本文件最大的参数表(inverter.h:551-758):安规码/国家/子安规、高低穿/P-Q 控制使能、SAFTY_MODE_ENABLE_U、PF 相位与固定无功、并网斜率与加载速率、P(U) 6 点曲线(另有 4 个贝瓦专用过压点与 4 个欠压预留点)、Q(U) 4 点+pin/pout/K/响应时间、S-PF 3 点、cosφ(P) 5 点、P-F 过频/欠频降载全套(模式/速率/触发退出延时/F1F2F3/恢复斜率)、三阶过压欠压过频欠频保护与恢复点、10 分钟过压、df/dt、ISO、DCI、GFCI 30/60/150/300mA、零电流模式、INVERTER_PHASE_SAFTY_INFO_T t_phase_safty_info[3]、奥地利电池充放电与有功斜坡等。
INVERTER_SAFTY_TEST_RESULT_U联合体安规自检结论位图(u16):过压/10min过压/欠压/三阶过压欠压/过频欠频各阶的"值"与"时间"共 16 位(inverter.h:760-785)。
INVERTER_SAFTY_TEST_T结构体单相自检报告:自检状态、数据获取状态、发送服务器/APP 标记、进度,以及 59.S1~S4 / 27.S1~S3 / 81>.S1~S3 / 81<.S1~S3 每条保护项的"标准值 vt/ft、标准时间 tt、设定值 vs/fs、实际值 vo/fo、实际保护时间 to"五元组(inverter.h:787-888)。
INV_FAULT_E枚举主故障位表,从 INV_FAULT_GRID_OVP 到 INV_FAULT_ZERO_GROUND_FAULT 恰好 64 项,与 64 位故障字一一对应(inverter.h:890-957)。
INVERTER_FAULT_U联合体主故障字:u64 u64_all / u8 byteData[8] / 8 个 BYTE 的 64 个 1bit 成员,成员名与 INV_FAULT_E 顺序严格对应(inverter.h:960-1047)。
INV_FAULT_EXTEND1_E / INVERTER_FAULT_EXTEND1_U枚举 + 联合体扩展故障字 1(同样 64 位满编):AC HCT/继电器/接地/PV 反接/风扇/软起超时/EMS SCI-CAN/各路 CT/NTC/看门狗/逆变开环/并机参数错误/线路异常 等(inverter.h:1049-1131、inverter.h:1134-1221)。
INV_FAULT_EXTEND2_E / INVERTER_FAULT_EXTEND2_U枚举 + 联合体扩展故障字 2(当前定义 25 位,25~63 位命名为 bit25~bit63 预留):零漂、FPGA、PV 控制环、自检失败、谐振、SPD、备电继电器、加热异常、AFCI 等(inverter.h:1223-1258、inverter.h:1260-1347)。
INV_WARNING_E / INVERTER_WARN_U枚举 + 联合体告警字(64 位满编):电池过欠压、过载、温度、母线、电网丢失/异常、PE 丢失、LN 反接、ISO/DCI/DCV/孤岛、风扇、Flash 读写、母线欠压、过频/过压/过温降载、HVRT/LVRT、并机告警等(inverter.h:1349-1430、inverter.h:1433-1520)。
INV_WARNING_EXTEND1_E / INVERTER_WARN_EXTEND1_U枚举 + 联合体扩展告警字,目前只用到 5 位:EMS-BMS 通信丢失、母线不平衡、PV 反接、电网电压波峰因数高、AFCI 告警(inverter.h:1522-1530、inverter.h:1532-1619)。
INVERTER_GROUND_FAULT_U联合体32 位接地/漏电故障字(GFCI 传感器、装置故障、地线断开、直流接地、ISO 错误…),与前面几个 64 位字长度不同(inverter.h:1621-1669)。
INVERTER_RUN_TABLE_T结构体运行数据表(inverter.h:1671-1842):通信丢失标志、SN 与主/从/ARM/硬件版本、AC/DC 额定功率、充放电截止、MPPT 百分比、DSP 调试数组 u16_dsp_debug[30]、PV1~4 电压电流功率、电网/逆变/备电三端口三相电压电流有功无功视在功率与频率、电池电压电流功率、并机从机 PV、机温、母线电压、运行 PF、绝缘门限、运行模式、各种保护实际值、5 个故障告警联合体、5 路电量累计、额定电压频率、并机数、空开状态、停机标志、旁路使能、操作模式、型号名、Modbus/CAN 协议版本等。
INVERTER_CONTROL_CMD_TABLE_T结构体控制命令表(inverter.h:1844-1857):启停、复位、UPS 使能、安规自检、清洁能源、GFCI 测试、继电器 N 测试、N-PE 短接、MPPT 扫描启动、复位 DSP EEPROM。厂商驱动消费后自行清 0(一次性命令语义)。
INVERTER_CONTROL_PARAMETER_TABLE_T结构体控制参数表(inverter.h:1859-1872):ATE 模式/复位标记、软启动、上电电池检查、故障清除,以及 5 个"数据就绪"标记(电池加热数据/CSIP 澳洲数据/加热命令/加热截止电压/加热继电器状态)。
INVERTER_DEBUG_LOG_T结构体升级与调试日志(inverter.h:1874-1885):升级状态、错误 tick、错误原因、BMS 状态、逆变频率、OS 时间戳、命令标志。
AFCI_TABLE_T结构体AFCI(电弧故障保护)状态表(inverter.h:1887-1899):自检结果、软件版本[16]、心跳、自检使能、自检计时、升级标志、支持标志、停机标志、升级结束计时。
INVERTER_TABLE_T结构体全局设备总表(inverter.h:1901-1915):u8_init_flag + INVERTER_CONFIG_TAB_T t_config_data + INVERTER_SAFTY_INFO_T t_safty_info + INVERTER_SAFTY_TEST_T t_safty_tset_info[3](注意 tset 拼写错误)+ INVERTER_RUN_TABLE_T t_run_info + 控制命令/参数表 + 调试日志 + AFCI 表。
SENERGYS5_QUERY_INV_REGISTER_T结构体盛能杰 S5 的"任意寄存器透传查询"通道(inverter.h:1918-1926):使能、标准/非标准 Modbus 标志、u8_send_data[10]、u8_rend_data[10]、读标志。定义于 #pragma pack 之外。
g_t_inv_info全局变量(extern)全工程唯一的逆变器设备表实例,定义于 midware/inverter/inverter.c:39(INVERTER_TABLE_T g_t_inv_info = {0};)(inverter.h:1929)。
senergys_query_inv_register全局变量(extern)盛能杰透传寄存器结构体实例,定义于 midware/inverter/set/set_comm_usart_s5.c:52(inverter.h:1930)。

3. 函数清单

本文件不含函数体,以下 302 条全部是"作用域=全局(extern 原型声明)",实现在 midware/inverter/inverter.c 及 6 个厂商驱动目录。声明行号取自 inverter.h:1933-2261。

函数名作用域声明行说明
task_inverter全局inverter.h:1933uCOS-II 任务入口:SCI(USART) 侧逆变器轮询、组帧、通信丢失判定主循环。
task_inverter_can全局inverter.h:1934uCOS-II 任务入口:CAN 侧逆变器通信(部分厂商走 CAN)。
task_parallel_sci全局inverter.h:1935uCOS-II 任务入口:并机 SCI 串口收发任务。
set_inverter_init全局inverter.h:1937置 g_t_inv_info.u8_init_flag = TRUE,标记设备表已初始化。
set_inverter_type全局inverter.h:1938写 t_config_data.u8_inv_model(厂商类型码)。
inverter_state_init全局inverter.h:1939按 get_inverter_type() 分发调用对应厂商的 *_comm_init() 通信初始化(如 kelong_comm_init()、senergy_comm_init(),inverter.c:63-113)。
get_inverter_type全局inverter.h:1940读厂商类型码;越界(>= INVERTER_MAX)时钳位为 INVERTER_NULL(inverter.c:1340)。
set_inverter_sub全局inverter.h:1941写子机型码 t_config_data.u8_inv_model_sub。
get_inverter_sub全局inverter.h:1942读子机型码;越界(>= SUB_MAX)时钳位为 SUB_NULL(inverter.c:1369)。
inverter_read_system_modle全局inverter.h:1943返回系统型号字符串(受 OEM 标志影响),供 Modbus/SunSpec/HMI/升级匹配使用(inverter.c:1386)。
inverter_read_inv_type全局inverter.h:1944返回厂商机型型号串(TYPE_* 宏),按 type+sub 二级映射(inverter.c:1656)。
inv3_upgradeable_flag全局inverter.h:1945当前机型是否允许升级第三台逆变器。
passthrough_detection_flag全局inverter.h:1946是否处于直通(passthrough)检测流程。
inverter_read_display_type全局inverter.h:1947读取显示配置类型(字符 LCD / 段码屏 / 无屏)。
bms_upgradeable_flag全局inverter.h:1948当前机型是否支持 BMS 固件升级(inverter.c:1939)。
g100_read_inv_type全局inverter.h:1949英国 G100 场景下的机型码映射(inverter.c:1967)。
set_inverter_control_bat_disable_flag全局inverter.h:1950置"禁止 EMS 控制电池"标志。
get_inverter_control_bat_disable_flag全局inverter.h:1951读"禁止 EMS 控制电池"标志。
get_storage_grid_air_switch_specs_state全局inverter.h:1952读储能并网空开规格状态。
inverter_get_grid_breaker_specs_enable全局inverter.h:1953并网空开规格检测是否使能。
get_inv_calculation_interval全局inverter.h:1954逆变器计算周期(ms),按机型返回常量(inverter.c:2310)。
get_inv_power_calculation_time全局inverter.h:1955功率计算周期。
get_dispatch_calculation_time全局inverter.h:1956调度(dispatch)计算周期。
get_generator_calculation_time全局inverter.h:1957油机(generator)相关计算周期。
get_inv_ac_power_fine_tuning_range全局inverter.h:1958AC 侧功率细调幅值(W)。
get_inv_dc_power_fine_tuning_range全局inverter.h:1959DC 侧功率细调幅值(W)。
get_inv_feedin_power_fine_tuning_range全局inverter.h:1960馈网(feed-in)功率细调幅值(W)。
get_inv_disturbance_flag全局inverter.h:1961是否允许功率扰动类功能。
get_inv_ups_reserve_soc_enable_default全局inverter.h:1962UPS 保留 SOC 使能的机型默认值。
get_inv_regulator_speed全局inverter.h:1963调节速率档位 REGULATOR_SPEED_1..5(inverter.c:2635)。
inverter_get_max_bat_volt全局inverter.h:1964机型允许的最高电池电压(1V)。
inverter_get_min_bat_volt全局inverter.h:1965机型允许的最低电池电压(1V)。
inverter_get_phase_number全局inverter.h:1966机型相数(1 或 3)。
inverter_get_bat_shutdown_flag全局inverter.h:1967是否支持电池侧停机。
inverter_get_feedin_time_charge_flag全局inverter.h:1968馈电时段是否允许充电。
inverter_get_over_power_flag全局inverter.h:1969机型是否具备超功率(过载)输出能力。
inverter_get_sys_ctrl_state全局inverter.h:1970系统控制状态(一键停机/租赁等,对应 SYS_SHUTDOWN_STATUS_E)。
inverter_get_parallel_mode全局inverter.h:1971并机模式(单相/三相、主机/从机)。
set_inverter_backup_enable全局inverter.h:1972设置备电(UPS/Backup)使能,参数类型 BACKUP_STATUS_E。
get_allow_inverter_low_current_discharge_from_bat_flag全局inverter.h:1973是否允许小电流从电池放电(低载维持)。
inverter_get_pv_start_volt全局inverter.h:1974PV 启机电压(1V)。
inverter_get_pv_state全局inverter.h:1975PV 状态(有无输入)。
inverter_get_battery_awaken_pv_start_volt全局inverter.h:1976电池休眠后被 PV 唤醒所需的起始电压。
inverter_get_pv_connect_state全局inverter.h:1977PV 接入状态位。
inverter_get_chg_from_grid_limit全局inverter.h:1978市电给电池充电的功率上限(W)。
inverter_get_control_accuracy全局inverter.h:1979功率控制精度(细调步进判定用)。
inverter_read_logic_control_mode全局inverter.h:1980读逻辑控制模式(AC/DC 控制路径选择)。
inverter_read_pv_volt全局inverter.h:1981读第 index 路 PV 电压(1V),index 取 PV_CHANAEL1..4。
inverter_read_pv_cur全局inverter.h:1982读第 index 路 PV 电流(0.1A)。
inverter_read_pv_power全局inverter.h:1983读第 index 路 PV 功率(0.1W)。
inverter_get_offset_maxfeedin_power全局inverter.h:1984最大馈网功率的偏置量(W)。
inverter_read_grid_volt全局inverter.h:1986读电网 A/B/C 相电压(1V),index 取 PHASE_L1..L3。
inverter_read_grid_cur全局inverter.h:1987读电网相电流(0.1A)。
inverter_read_grid_actpower全局inverter.h:1988读电网各相/总有功功率(1W)。
inverter_read_grid_freq全局inverter.h:1989读电网频率。
inverter_read_inv_curr全局inverter.h:1991读逆变侧输出电流。
inverter_read_inv_actpower全局inverter.h:1992读逆变侧有功功率。
inverter_read_inv_reactpower全局inverter.h:1993读逆变侧无功功率。
inverter_read_inv_apparentpower全局inverter.h:1994读逆变侧视在功率。
inverter_read_inv_freq全局inverter.h:1995读逆变侧输出频率。
inverter_read_backup_volt全局inverter.h:1997读备电(BACKUP)口电压。
inverter_read_backup_cur全局inverter.h:1998读备电口电流。
inverter_read_backup_actpower全局inverter.h:1999读备电口有功功率。
inverter_read_backup_apparentpower全局inverter.h:2000读备电口视在功率(总线级,无 index)。
inverter_read_backup_freq全局inverter.h:2001读备电口频率(0.01Hz)。
inverter_read_bat_volt全局inverter.h:2003读电池电压(1V)。
inverter_read_bat_curr全局inverter.h:2004读电池电流(0.1A)。
inverter_read_bat_power全局inverter.h:2005读电池功率(1W)。
inverter_get_pv_start_status全局inverter.h:2007PV 启机状态标志。
inverter_get_battery_awaken_pv_start_status全局inverter.h:2008电池唤醒流程的 PV 启机状态标志。
inverter_read_machine_temp全局inverter.h:2010读机内温度(℃,S8 有符号)。
inverter_read_run_mode全局inverter.h:2011读逆变器运行模式(cWaitMode~cUpdateArm)。
inverter_read_bus_volt全局inverter.h:2012读直流母线电压。
inverter_read_pf_value全局inverter.h:2014读运行功率因数(S8)。
inverter_read_fault_code全局inverter.h:2016读主故障字 u_fault_code(64 位联合体整体值)。
inverter_read_fault_code_extend全局inverter.h:2017读扩展故障字 1 u_fault_extend1_code。
inverter_read_fault_code_extend2全局inverter.h:2018读扩展故障字 2 u_fault_extend2_code。
inverter_read_fault_code_flag全局inverter.h:2019是否存在故障(故障字非零)。
inverter_read_warning_code全局inverter.h:2020读告警字 u_warning_code。
inverter_read_ground_fault_code全局inverter.h:2022读接地/漏电故障字(32 位)。
inverter_read_insulation_fault_code全局inverter.h:2024读绝缘(ISO)相关状态。
inverter_read_grid_fault_flag全局inverter.h:2025是否存在电网类故障(过欠压/过欠频)。
inverter_read_energy_pv_input全局inverter.h:2027PV 发电量(0.1kWh)。
inverter_read_energy_inv_output全局inverter.h:2028逆变输出电量(0.1kWh)。
inverter_read_energy_inv_input全局inverter.h:2029逆变输入电量(0.1kWh)。
inverter_read_energy_bat_charge全局inverter.h:2030电池充电累计电量(0.1kWh)。
inverter_read_energy_bat_dischg全局inverter.h:2031电池放电累计电量(0.1kWh)。
inverter_read_grid_rated_voltage全局inverter.h:2033电网额定电压。
inverter_read_grid_rated_freqency全局inverter.h:2034电网额定频率(函数名 freqency 为拼写错误,保留原名)。
inverter_read_grid_overload_factor全局inverter.h:2036并网过载系数,按机型分支硬编码(inverter.c:3664)。
inverter_read_rated_ac_charge_power全局inverter.h:2037AC 侧额定充电功率(W)。
inverter_read_rated_ac_discharge_power全局inverter.h:2038AC 侧额定放电功率(W)。
inverter_read_rated_dc_charge_power全局inverter.h:2039DC 侧额定充电功率(W)。
inverter_read_rated_dc_discharge_power全局inverter.h:2040DC 侧额定放电功率(W)。
inverter_read_sn全局inverter.h:2042返回逆变器 SN 首地址 t_run_info.u8_inv_sn。
inverter_read_ver_master全局inverter.h:2043返回主 DSP 版本数组首地址。
inverter_read_ver_slave全局inverter.h:2044返回从 DSP 版本数组首地址。
inverter_read_ver_arm全局inverter.h:2045返回 ARM 版本数组首地址。
inverter_read_hw_ver全局inverter.h:2046返回硬件版本字符串(char*),供升级校验。
inverter_read_upgrade_flag_master全局inverter.h:2048主控升级进行中标志。
inverter_read_upgrade_percent_master全局inverter.h:2049主控升级进度(%)。
inverter_read_upgrade_flag_slave全局inverter.h:2050从机升级进行中标志。
inverter_read_upgrade_percent_slave全局inverter.h:2051从机升级进度(%)。
inverter_read_upgrade_flag_arm全局inverter.h:2052ARM 升级进行中标志。
inverter_read_upgrade_percent_arm全局inverter.h:2053ARM 升级进度(%)。
inverter_read_comm_flag全局inverter.h:2055通信是否正常(u8_inverter_comm_lost_flag 取反)。
inverter_read_backup_flag全局inverter.h:2056备电口是否使能。
inverter_set_isolation_limit_value全局inverter.h:2058设置绝缘阻抗门限值(1kΩ)。
inverter_get_isolation_limit_value全局inverter.h:2059读绝缘阻抗门限值。
inverter_get_bat_breaker_statuse全局inverter.h:2060电池侧空开状态(函数名 statuse 拼写错误)。
inverter_power_none全局inverter.h:2062清启停命令(不做动作)。
inverter_power_on全局inverter.h:2063下发启机命令(注释"启机")。
inverter_power_off全局inverter.h:2064下发停机命令(注释"停机")。
inverter_startup全局inverter.h:2065开机;与 power_on 的区别是 Bypass 继电器也一并受控。
inverter_shutdown全局inverter.h:2066关机。
inverter_get_shutdown_sta全局inverter.h:2067读关机状态。
inverter_reset全局inverter.h:2068下发复位命令(厂商驱动消费后置 FALSE)。
inverter_clearing_fault全局inverter.h:2069下发故障清除命令。
inverter_mpptscan_start全局inverter.h:2070启动 MPPT 扫描。
inverter_energy_clear全局inverter.h:2071清除电量累计。
inverter_reset_dsp_eeprom全局inverter.h:2072复位 DSP EEPROM。
inverter_get_start_stop_value全局inverter.h:2073读启停命令值。
inverter_set_three_unbalance_mode全局inverter.h:2075设置三相不平衡输出使能。
inverter_get_three_unbalance_mode全局inverter.h:2076读三相不平衡输出使能。
inverter_set_micro_grid_chg_soc全局inverter.h:2078设置离网/微网充电目标 SOC。
inverter_read_micro_grid_chg_soc全局inverter.h:2079读离网/微网充电目标 SOC。
inverter_set_igfollow_mode全局inverter.h:2081设置 IG(发电机/市电跟随)模式使能。
inverter_get_igfollow_mode全局inverter.h:2082读 IG 跟随模式使能。
inverter_read_safety全局inverter.h:2084读安规码(GRID_REGULATION_E)。
inverter_write_safety全局inverter.h:2085写安规码。
inverter_read_safesub全局inverter.h:2086读子安规码(GRID_SAFESUB_E)。
inverter_write_safesub全局inverter.h:2087写子安规码。
inverter_set_volt_watt_mode全局inverter.h:2089设置 Volt-Watt 模式位。
inverter_set_safty_mode全局inverter.h:2090整体写 SAFTY_MODE_ENABLE_U(u16 位图)。
inverter_set_starting_slope_en全局inverter.h:2091启机斜率加载使能。
inverter_set_rev_machine_rate全局inverter.h:2092重连并网缓升速率(0.1%Pn/min)。
inverter_set_regulation_rate全局inverter.h:2093首次并网缓升速率(0.1%Pn/min)。
inverter_set_regulation_rate_enable全局inverter.h:2094并网缓升速率使能。
inverter_set_pf_value全局inverter.h:2095设置固定功率因数(0.01 精度)。
inverter_set_fix_reactpower_value全局inverter.h:2096设置固定无功功率值。
inverter_set_power_change_slope_limit全局inverter.h:2097功率变化斜率限值。
inverter_set_grid_waiting_time全局inverter.h:2098首次并网等待时间(1S),来自 LCD 设置。
inverter_set_reconnect_delay_time全局inverter.h:2099并网重连延时(1S),来自 LCD 设置。
inverter_set_n_n_short全局inverter.h:2100N-N 短接检测设置(LCD)。
inverter_read_n_n_short全局inverter.h:2101读 N-N 短接状态。
inverter_set_n_pe_short_enable全局inverter.h:2102N-PE 短接检测使能(LCD)。
inverter_set_gfci_detect_enable全局inverter.h:2103GFCI 漏电流检测使能(LCD)。
inverter_set_gfci_30mA_pro_threshold全局inverter.h:2104GFCI 30mA 保护门限(1mA)。
inverter_set_gfci_60mA_pro_threshold全局inverter.h:2105GFCI 60mA 保护门限(1mA)。
inverter_set_gfci_150mA_pro_threshold全局inverter.h:2106GFCI 150mA 保护门限(1mA)。
inverter_set_gfci_300mA_pro_threshold全局inverter.h:2107GFCI 300mA 保护门限(1mA)。
inverter_set_island_detect_enable全局inverter.h:2108孤岛检测使能。
inverter_set_ln_reserve_pro_enable全局inverter.h:2109LN 反接保护使能。
inverter_set_freq_change_pro_threshold全局inverter.h:2110频率变化率(df/dt)保护阈值(0.01Hz)。
inverter_set_freq_change_pro_time全局inverter.h:2111频率变化率保护时间(0.01S)。
inverter_set_iso_pro_enable全局inverter.h:2112ISO 绝缘阻抗保护使能。
inverter_set_iso_pro_threshold全局inverter.h:2113ISO 保护门限(1kΩ)。
inverter_set_dci_pro_enable全局inverter.h:2114DCI 直流分量保护使能。
inverter_set_dci_pro_threshold全局inverter.h:2115DCI 保护门限(1mA)。
inverter_set_dci_pro_time全局inverter.h:2116DCI 保护时间(0.01S)。
inverter_set_afci_detect_enable全局inverter.h:2117AFCI 电弧检测使能。
inverter_set_pv_curr_monitor_enable全局inverter.h:2118PV 电流监测使能。
inverter_set_dcv_pro_enable全局inverter.h:2119DCV 直流电压保护使能。
inverter_set_wave_detection_enable全局inverter.h:2120市电波形检测使能。
inverter_set_battery_activation_enable全局inverter.h:2121电池激活功能使能。
inverter_set_fast_wave_detection_enable全局inverter.h:2122快速波形检测使能。
inverter_set_ups_volt_pro_enable全局inverter.h:2123UPS 口过压保护使能。
inverter_set_pe_short_enable全局inverter.h:2124PE(地线)短接使能。
inverter_set_ovp_down_load_start全局inverter.h:2126过压降载起始点。
inverter_set_ovp_down_load_end全局inverter.h:2127过压降载终止点。
inverter_set_grid_ovp1_value全局inverter.h:2128一阶过压保护点(0.1V)。
inverter_set_grid_ovp1_time全局inverter.h:2129一阶过压保护时间(0.01S)。
inverter_set_grid_ovp2_value全局inverter.h:2130二阶过压保护点(0.1V)。
inverter_set_grid_ovp2_time全局inverter.h:2131二阶过压保护时间(0.01S)。
inverter_set_grid_ovp3_value全局inverter.h:2132三阶过压保护点(0.1V)。
inverter_set_grid_ovp3_time全局inverter.h:2133三阶过压保护时间(0.01S)。
inverter_set_grid_ovp10min_value全局inverter.h:2134十分钟过压保护点(0.1V)。
inverter_set_grid_ovp10min_time全局inverter.h:2135十分钟过压保护时间(1S)。
inverter_set_grid_uvp1_value全局inverter.h:2136一阶欠压保护点(0.1V)。
inverter_set_grid_uvp1_time全局inverter.h:2137一阶欠压保护时间(0.01S)。
inverter_set_grid_uvp2_value全局inverter.h:2138二阶欠压保护点(0.1V)。
inverter_set_grid_uvp2_time全局inverter.h:2139二阶欠压保护时间(0.01S)。
inverter_set_grid_uvp3_value全局inverter.h:2140三阶欠压保护点(0.1V)。
inverter_set_grid_uvp3_time全局inverter.h:2141三阶欠压保护时间(0.01S)。
inverter_set_grid_ofp1_value全局inverter.h:2142一阶过频保护点(0.01Hz)。
inverter_set_grid_ofp1_time全局inverter.h:2143一阶过频保护时间(0.01S)。
inverter_set_grid_ofp2_value全局inverter.h:2144二阶过频保护点(0.01Hz)。
inverter_set_grid_ofp2_time全局inverter.h:2145二阶过频保护时间(0.01S)。
inverter_set_grid_ofp3_value全局inverter.h:2146三阶过频保护点(0.01Hz)。
inverter_set_grid_ofp3_time全局inverter.h:2147三阶过频保护时间(0.01S)。
inverter_set_grid_ufp1_value全局inverter.h:2148一阶欠频保护点(0.01Hz)。
inverter_set_grid_ufp1_time全局inverter.h:2149一阶欠频保护时间(0.01S)。
inverter_set_grid_ufp2_value全局inverter.h:2150二阶欠频保护点(0.01Hz)。
inverter_set_grid_ufp2_time全局inverter.h:2151二阶欠频保护时间(0.01S)。
inverter_set_grid_ufp3_value全局inverter.h:2152三阶欠频保护点(0.01Hz)。
inverter_set_grid_ufp3_time全局inverter.h:2153三阶欠频保护时间(0.01S)。
inverter_set_ovp_restore全局inverter.h:2154过压恢复点(0.1V)。
inverter_set_uvp_restore全局inverter.h:2155欠压恢复点(0.1V)。
inverter_set_ofp_restore全局inverter.h:2156过频恢复点(0.01Hz)。
inverter_set_ufp_restore全局inverter.h:2157欠频恢复点(0.01Hz)。
inverter_set_reactive_control_percent全局inverter.h:2158无功功率控制百分比(1%)。
inverter_set_p_v_mode_v1全局inverter.h:2159P(U) 模式点 1 电压(0.1%Un)。
inverter_set_p_v_mode_p1全局inverter.h:2160P(U) 模式点 1 功率(0.1%Pn)。
inverter_set_p_v_mode_v2全局inverter.h:2161P(U) 模式点 2 电压(0.1%Un)。
inverter_set_p_v_mode_p2全局inverter.h:2162P(U) 模式点 2 功率(0.1%Pn)。
inverter_set_p_v_mode_v3全局inverter.h:2163P(U) 模式点 3 电压(0.1%Un)。
inverter_set_p_v_mode_p3全局inverter.h:2164P(U) 模式点 3 功率(0.1%Pn)。
inverter_set_p_v_mode_v4全局inverter.h:2165P(U) 模式点 4 电压(0.1%Un)。
inverter_set_p_v_mode_p4全局inverter.h:2166P(U) 模式点 4 功率(0.1%Pn)。
inverter_read_p_v_mode_v3全局inverter.h:2167回读 P(U) 模式点 3 电压。
inverter_read_p_v_mode_v4全局inverter.h:2168回读 P(U) 模式点 4 电压。
inverter_set_p_v_mode_trigger_voltage全局inverter.h:2169P(U) 模式触发电压。
inverter_set_p_v_mode_down_load_flag全局inverter.h:2170P(U)/电网电压降载方式使能。
inverter_set_p_v_mode_response_time全局inverter.h:2171P(U) 模式响应时间(0.1s)。
inverter_set_q_v_mode_v1全局inverter.h:2172Q(U) 模式点 1 电压(0.1%Un)。
inverter_set_q_v_mode_q1全局inverter.h:2173Q(U) 模式点 1 无功(0.1%Qn)。
inverter_set_q_v_mode_v2全局inverter.h:2174Q(U) 模式点 2 电压(0.1%Un)。
inverter_set_q_v_mode_q2全局inverter.h:2175Q(U) 模式点 2 无功(0.1%Qn)。
inverter_set_q_v_mode_v3全局inverter.h:2176Q(U) 模式点 3 电压(0.1%Un)。
inverter_set_q_v_mode_q3全局inverter.h:2177Q(U) 模式点 3 无功(0.1%Qn)。
inverter_set_q_v_mode_v4全局inverter.h:2178Q(U) 模式点 4 电压(0.1%Un)。
inverter_set_q_v_mode_q4全局inverter.h:2179Q(U) 模式点 4 无功(0.1%Qn)。
inverter_set_q_v_mode_pin全局inverter.h:2180Q(U) 模式 lock-in 功率点(0.1%Pn)。
inverter_set_q_v_mode_pout全局inverter.h:2181Q(U) 模式 lock-out 功率点(0.1%Pn)。
inverter_set_q_v_mode_k全局inverter.h:2182Q(U) 模式 K 系数(0.1)。
inverter_set_q_v_mode_response_time全局inverter.h:2183Q(U) 模式无功响应时间(0.1s)。
inverter_set_s_pf_mode_p1全局inverter.h:2184S-PF 模式有功点 1(1%)。
inverter_set_s_pf_mode_pf1全局inverter.h:2185S-PF 模式功率因数点 1(1%)。
inverter_set_s_pf_mode_p2全局inverter.h:2186S-PF 模式有功点 2(1%)。
inverter_set_s_pf_mode_pf2全局inverter.h:2187S-PF 模式功率因数点 2(1%)。
inverter_set_s_pf_mode_p3全局inverter.h:2188S-PF 模式有功点 3(1%)。
inverter_set_s_pf_mode_pf3全局inverter.h:2189S-PF 模式功率因数点 3(1%)。
inverter_set_s_pf_mode_pin全局inverter.h:2190S-PF 模式触发电压(0.1%)。
inverter_set_s_pf_mode_pout全局inverter.h:2191S-PF 模式退出电压(0.1%)。
inverter_set_p_f_mode_down_load_flag全局inverter.h:2192电网频率降载使能。
inverter_set_p_pf_mode_p1全局inverter.h:2193cosφ(P) 模式有功点 1(1%)。
inverter_set_p_pf_mode_pf1全局inverter.h:2194cosφ(P) 模式功率因数点 1(0.1%)。
inverter_set_p_pf_mode_p2全局inverter.h:2195cosφ(P) 模式有功点 2(1%)。
inverter_set_p_pf_mode_pf2全局inverter.h:2196cosφ(P) 模式功率因数点 2(0.1%)。
inverter_set_p_pf_mode_p3全局inverter.h:2197cosφ(P) 模式有功点 3(1%)。
inverter_set_p_pf_mode_pf3全局inverter.h:2198cosφ(P) 模式功率因数点 3(0.1%)。
inverter_set_p_pf_mode_p4全局inverter.h:2199cosφ(P) 模式有功点 4(1%)。
inverter_set_p_pf_mode_pf4全局inverter.h:2200cosφ(P) 模式功率因数点 4(0.1%)。
inverter_set_p_pf_mode_p5全局inverter.h:2201cosφ(P) 模式有功点 5(1%)。
inverter_set_p_pf_mode_pf5全局inverter.h:2202cosφ(P) 模式功率因数点 5(0.1%)。
inverter_set_p_f_mode全局inverter.h:2203P-F 模式选择(1 线性 / 2 滞回)。
inverter_set_p_f_over_freq_derating_rate全局inverter.h:2204过频降载速率(0.1%),LCD 可设。
inverter_set_p_f_under_freq_derating_rate全局inverter.h:2205欠频降载速率(0.1%),LCD 可设。
inverter_set_p_f_trigger_over_freq_delay全局inverter.h:2206过频降载触发延时(0.01S)。
inverter_set_p_f_trigger_under_freq_delay全局inverter.h:2207欠频降载触发延时(0.01S)。
inverter_set_p_f_exit_over_freq_delay全局inverter.h:2208过频降载退出延时(0.01S)。
inverter_set_p_f_exit_under_freq_delay全局inverter.h:2209欠频降载退出延时(0.01S)。
inverter_set_p_f_exit_over_freq_f1全局inverter.h:2210过频降载退出频率 F1(0.01Hz)。
inverter_set_p_f_trigger_over_freq_f2全局inverter.h:2211过频降载触发频率 F2(0.01Hz)。
inverter_set_p_f_cut_off_over_freq_f3全局inverter.h:2212过频降载截止频率 F3(0.01Hz)。
inverter_set_p_f_exit_under_freq_f3全局inverter.h:2213欠频降载退出频率 F3(0.01Hz)。
inverter_set_p_f_trigger_under_freq_f2全局inverter.h:2214欠频降载触发频率 F2(0.01Hz)。
inverter_set_p_f_cut_off_under_freq_f1全局inverter.h:2215欠频降载截止频率 F1(0.01Hz)。
inverter_set_p_f_trigger_over_freq_pm全局inverter.h:2216过频降载频率恢复后加载到 Pm 的斜率。
inverter_set_under_freq_mode全局inverter.h:2217欠频降载功能使能位。
inverter_set_ac_out_bat_power全局inverter.h:2218奥地利列明的电池充放电功率。
inverter_set_ofp_preference_mode全局inverter.h:2219过频降载参考功率指令。
inverter_set_p_f_trigger_under_freq_pn全局inverter.h:2220欠频降载频率恢复后加载到 Pn 的斜率。
inverter_set_ofp_down_load_zero_crossing_freq全局inverter.h:2221过频降载过零点频率(0.01Hz)。
inverter_set_ufp_down_load_zero_crossing_freq全局inverter.h:2222欠频降载过零点频率(0.01Hz)。
inverter_set_high_low_cross_enable全局inverter.h:2223高低电压穿越(HVRT/LVRT)使能。
inverter_set_actpower_control_enable全局inverter.h:2224有功功率控制使能。
inverter_set_reactpower_control_enable全局inverter.h:2225无功功率控制使能。
inverter_get_reactpower_control_mode全局inverter.h:2226获取当前无功控制模式(INVERTER_REACTPOWER_MODE_E)。
inverter_set_zero_current_mode_enable全局inverter.h:2227零电流模式使能。
inverter_set_zero_current_voltage_value全局inverter.h:2228零电流模式电压值。
inverter_set_low_cross_voltage_value全局inverter.h:2229低压穿越电压保护点(0.1V)。
inverter_set_high_cross_voltage_value全局inverter.h:2230高压穿越电压保护点(0.1V)。
inverter_set_pe_loss_check_flag全局inverter.h:2231地线(PE)检测标志。
inverter_set_mppt_percentage全局inverter.h:2233MPPT 限功率百分比(0.01)。
set_inverter_safty_test_flag全局inverter.h:2234置安规自检启动标志(START_SELF_INSPECTION)。
get_inverter_safty_test_info_send_server_flag全局inverter.h:2235读"自检数据待发服务器"标记。
set_inverter_safty_test_info_send_server_flag全局inverter.h:2236置/清"自检数据已发服务器"标记(单次有效)。
inverter_set_islanding_check_enable全局inverter.h:2237孤岛检测(islanding check)使能。
set_inverter_safty_test_info_send_app_flag全局inverter.h:2238置/清"自检数据发 APP"标记(一直有效)。
get_inverter_safty_test_info_send_app_flag全局inverter.h:2239读"自检数据发 APP"标记。
inverter_set_bypass_flag全局inverter.h:2240设置旁路(Bypass)使能。
inverter_set_phase_negation全局inverter.h:2241设置相序取反使能。
inverter_read_upgrade_file_offset全局inverter.h:2242读主控升级文件偏移(断点续传用)。
inverter_read_upgrade_file_offset_arm全局inverter.h:2243读 ARM 升级文件偏移。
inverter_set_operation_mode全局inverter.h:2244设置逆变器操作模式 t_run_info.u8_inv_operation_mode。
inverter_support_low_volt_bms_restart全局inverter.h:2245机型是否支持低压 BMS 重启。
inverter_get_offset_meter_power全局inverter.h:2246电表功率偏置(s32)。
inverter_get_backup_freq全局inverter.h:2247读备电口频率。
inverter_get_backup_freq_basic全局inverter.h:2248读备电口基础(额定)频率。
inverter_get_ac_machine_min_charg_power全局inverter.h:2249AC 机型最小充电功率(W)。
get_14a_enwg_bat_min_power全局inverter.h:2250德国 EnWG §14a 场景下的电池最小功率。
get_dma_data_debug_flag全局inverter.h:2251DMA 收发数据调试打印标志。
inverter_set_afci_self_check_clear全局inverter.h:2253清 AFCI 自检结果。
inverter_get_special_control_inv_type全局inverter.h:2254需特殊处理的机型标识(当前仅盛能杰 M5 返回 SNJ_M5_SPECIAL_HANDLE,inverter.c:7985)。
get_inverter_type_category全局inverter.h:2255返回机型大类 INVERTER_CATEGORY_E(贝瓦单相/三相/非贝瓦,inverter.c:8003)。
inverter_set_dc_double_charge_power全局inverter.h:2256DC 允许二倍功率充电使能。
inverter_set_italy_anti_backflow全局inverter.h:2257意大利防逆流使能。
inverter_read_safety_is_AS4777全局inverter.h:2258判定给定安规码是否属于 AS4777 族(含各州子安规,inverter.c:4315)。
get_risk_of_system_installation_plan全局inverter.h:2259系统是否存在电池适配方案错误风险(盛能杰 M10 返回 TRUE,inverter.c:8066)。
inverter_set_dnsp_regulation_rate全局inverter.h:2260按 DNSP 要求换算并下发首次并网/重连斜率(inverter.c:8087)。
inverter_get_dc_disturbance_count全局inverter.h:2261直流扰动次数掩码值(盛能杰 M10 返回 1 << (count-1),inverter.c:2748)。

4. 核心逻辑解析

本文件是头文件,其"逻辑"体现在类型契约、编译开关与量纲约定三件事上;下面按这三点分开讲。

4.1 编译期厂商开关与两套"type"的区分

文件里存在互不相干的两套类型标识:

  1. 编译期的 INVERTER_TYPE(inverter.h:172):只参与预处理,用来裁剪代码体积。6 家厂商驱动的每个函数体、logic/dc_control.c 全文、logic/ac_control.c 全文都用 #if ((INVERTER_TYPE == INVERTER_MAX) || (INVERTER_TYPE == XXX_TYPE)) 或 #ifdef INV_DC_CTRL/INV_AC_CTRL 包裹(logic/logic.c:554-567、logic/ac_control.c:21、logic/ac_control.h:56)。
  2. 运行期的厂商码(KELONG_TYPE…INOVANCE_TYPE)存在 g_t_inv_info.t_config_data.u8_inv_model 里,由 set_inverter_type() 写入、get_inverter_type() 读出(inverter.c:1328-1346),子机型码存在 u8_inv_model_sub(inverter.c:1357-1374)。两者还交叉校验:inverter.c:1071 用 (get_inverter_type() == INVERTER_NULL) || (INVERTER_TYPE == INVERTER_NULL) || ((get_inverter_type() != INVERTER_TYPE) && (INVERTER_TYPE != INVERTER_MAX)) 判定"机型与固件不匹配"并置故障位。

INV_DC_CTRL / INV_AC_CTRL 是控制架构分岔(inverter.h:175-181):科华/盛能杰/锦浪/固德威按 DC 侧下发充放电功率限值,沃太/汇川按 AC 侧下发。logic/logic.c:1744-1809 等处成对出现 #ifdef INV_DC_CTRL / #ifdef INV_AC_CTRL,说明同一套调度算法要分别适配两种控制口。

4.2 机型识别的三级索引

从"硬件是什么"到"用哪个型号字符串上报"是三级映射,全部在本文件的宏表里固化:

  1. u8_inv_model(厂商,inverter.h:163-170)
  2. u8_inv_model_sub(子机型,SUB_S3~SUB_B10,inverter.h:305-338)
  3. 型号字符串宏(TYPE_* / OEM 专属串,inverter.h:38-150)

映射体在 inverter.c:inverter_read_inv_type()(inverter.c:1656 起)按厂商+子机型返回 TYPE_SET_S5、TYPE_GINLONG_T10 等;inverter_read_system_modle()(inverter.c:1386 起)在此基础上再看 g_system_base_info.u16_oem_flag,命中贴牌则返回 ZOE_OEM_TYPE_SEEDS_S5、BYTE_WATT_OEM_TYPE_SEEDS_T10 等(inverter.h:132-150)。子机型码不是静态配置:厂商驱动解析到设备上报的型号后回写,例如 ginlong_comm_usart.c:1222-1257 按型号串分支调用 set_inverter_sub(SUB_T10/S5/B5/S6/S3_6/S4_6),kelong_comm.c:236 置 SUB_S6,set_comm_usart_s5.c:1915-1925 置 SUB_M10/S5_II/S5。

型号字符串的消费方:升级包匹配与上报(midware/interface/modbus/modbus.c:8714-8722、net/ems.c)、SunSpec 模型名(midware/interface/modbus/sunspec_business.c:1055)、LCD 型号显示(hmi/ui/ui_Information.c:44)。

4.3 配置表的 Flash 持久化契约

INVERTER_CONFIG_TAB_T(inverter.h:435-505)的设计约束由两条信息锁定:

读写流程:inverter_config_info_init() 先把旧 u8_inv_model 暂存、清零整表、写 u16_head 与 VERSION_INV_HARD、默认安规 AS4777_2、算 CRC、再调 feeprom_init_write(..., INVERTER_CONFIG_PAGE, 256),失败重试 3 次并上报 EEPROM 写故障标志(data/system_config/system_config.c:557-592)。反向的 inverter_config_info_restore() 同样读 3 次、校验 CRC 后再 memcpy 到 g_t_inv_info.t_config_data,失败则置读故障标志(data/system_config/system_config.c:1563-1599)。INVERTER_CONFIG_PAGE 为 4075(data/system_config/system_config.h:27)。

4.4 安规参数体系与量纲约定

INVERTER_SAFTY_INFO_T(inverter.h:551-758)是"电网侧行为"的完整字典,可分成 6 族:

族代表字段用途
电网保护点u16_ovp1_value/time … u16_ufp3_value/time、u16_ovp10min_*、u16_*_restore三阶过/欠压、过/欠频保护与恢复点
有功-电压曲线 P(U)u16_p_v_mode_v1..v4/p1..p4、u16_p_v_mode_trigger_voltage、u8_p_v_mode_down_load_enable过压降载
贝瓦专用 P(U) 点s16_ov_p_v_mode_v1..v4、s16_uv_p_v_mode_v1..v4点 1/2 与沃太点 3/4 互换,见源码注释 inverter.h:593-602
无功曲线 Q(U)u16_q_v_mode_v1..v4/q1..q4、pin、pout、k、response_time电压-无功
频率降载 P-Fu16_p_f_*(过频)与 u16_p_f_*under*(欠频)两套三元组 F1/F2/F3 + 速率 + 触发/退出延时 + 恢复斜率过/欠频降载线性或滞回
PF 曲线u8/s8_s_pf_mode_*(S-PF 3 点)、u16/s16_p_pf_mode_*(cosφ(P) 5 点)有功-功率因数

量纲约定(源码注释即规范):电压 0.1V 或 0.1%Un,频率 0.01Hz,时间 0.01S(10 分钟过压点用 1S),功率 0.1%Pn/1%Pn,无功 0.1%Qn,功率因数 0.01/0.1%,绝缘 1kΩ,漏电流 1mA。所有 inverter_set_* 原型(inverter.h:2058-2261)只做"值透传",量纲换算在各厂商驱动的组帧函数里。

安规模式位以 SAFTY_MODE_ENABLE_U(inverter.h:418-433)统一表达 9 种模式(Volt-Watt / Volt-Var / Volt-Freq / PF-Curve / Volt-Watt 充电 / 无功 / 固定 PF / 固定无功 / P-PF),inverter_set_safty_mode() 一次性写整个 u16。

4.5 故障/告警位域体系

5 个"状态字"全部采用同一模式:u64 整体值 + u8 byteData[8] + 8 字节位域结构体(inverter.h:960-1047、1134-1221、1260-1347、1433-1520、1532-1619),另有 1 个 32 位的接地故障字(inverter.h:1621-1669)。

4.6 运行表 / 控制命令 / 控制参数的"写-清"语义

INVERTER_TABLE_T(inverter.h:1901-1915)内三张表有明确分工,读写方向固定:

4.7 与 uCOS-II 的配合

本文件声明 3 个任务入口(inverter.h:1933-1935),全部在 user/main.c 用 OSTaskCreateExt 静态创建:

任务创建处使用栈与优先级宏
task_inverteruser/main.c:189TASK_INVERTER_STK / TASK_INVERTER_PRIO
task_inverter_canuser/main.c:244TASK_INVERTER_CAN_STK / TASK_INVERTER_CAN_PRIO
task_parallel_sciuser/main.c:299TASK_PARALLEL_SCI_STK / TASK_PARALLEL_SCI_PRIO(命名串误写成 "task_modbus_rtu")

任务节拍由 inverter.h:1954-1957 的 4 个周期函数统一给出(get_inv_calculation_interval、get_inv_power_calculation_time、get_dispatch_calculation_time、get_generator_calculation_time),也就是"调度周期按机型可变"。注意:g_t_inv_info 是全工程共享的裸全局变量,本文件及其实现 inverter.c 中没有任何信号量/互斥量/消息邮箱(在 midware/inverter/*.c 中检索 OSSemPend/OSSemPost/Mutex/OSMbox* 无结果),跨任务一致性完全依赖 uCOS-II 优先级抢占与字段级"写者唯一"约定。

4.8 关键全局变量的读写面

5. 对外接口

5.1 本文件导出

类别内容消费方
全局变量(extern)INVERTER_TABLE_T g_t_inv_info(inverter.h:1929)、SENERGYS5_QUERY_INV_REGISTER_T senergys_query_inv_register(inverter.h:1930)全工程;hmi/ 直接读 t_run_info/t_safty_info,net/、logic/ 直接读写 t_config_data,data/ 读故障字
函数原型(302 条)三大族:① 型号/机型/能力查询(get_inverter_type、inverter_read_inv_type、inverter_get_phase_number、get_inv_regulator_speed…);② 运行数据读取(inverter_read_*,含 PV/电网/逆变/备电/电池三端口与故障告警字);③ 参数与控制下发(inverter_set_*、inverter_power_*、inverter_startup/shutdown/reset)逐条清单见 §3;调用方以 hmi/ui/*、net/ems.c、net/server.c、midware/interface/*、logic/* 为主
类型定义INVERTER_TABLE_T、INVERTER_CONFIG_TAB_T、INVERTER_SAFTY_INFO_T、INVERTER_RUN_TABLE_T、INVERTER_SAFTY_TEST_T、5 个故障/告警联合体、SENERGYS5_QUERY_INV_REGISTER_T 及全部枚举厂商驱动、data/system_config、data/resume_data、data/fault_warn_log、hmi/、logic/
宏厂商/子机型/型号字符串宏、运行模式码、REGULATOR_SPEED_*、INVERTER_TYPE、INV_DC_CTRL/INV_AC_CTRL、PF_001_TO_01、DEBUG_INVERTER全工程条件编译与字符串比对

5.2 本文件调用的外部符号

外部符号来源用途
u8/u16/u32/s8/s16/s32/u64、TRUE/FALSEincludes.h → chip.h(GD32 标准外设库)全文件基础类型
OS_STK、OSTaskCreateExt 相关includes.h → UCOSII/uCOS-CONFIG/includes.h任务入口原型 void task_x(void *p_arg)
PARALLEL_MAX_NUM 等并机常量/类型parallel.h(inverter.h:13)并机与主从机相关声明
PV 充电器类型pvcharger.h(inverter.h:14)PV 充电器(外接 PV 控制器)接口
STATIC_ASSERT、ASSERT_FLASH_SECTOR_SIZEmidware/debug/debug.h:16,19(经 inverter.h:15)inverter.h:507 的编译期尺寸断言
FLASH_SECTOR_SIZEhardware/flash/flash.h:27(被 debug.h 引用)断言右值 = 4096

反方向的调用(本文件声明、实现在别处)见 §3 与 §6。

6. 依赖关系

依赖(本文件 include 或使用)

被依赖(哪些文件会用到它)

共 70 个文件 #include "inverter.h",按目录分布:

目录文件数代表文件
midware/inverter(含各厂商子目录)18inverter.c、parallel.c、pvcharger.c、parallel_comm/parallel_sci.c、kelong/*、set/*、ginlong/*、alphaess/*、goodwe/*、inovance/*
hmi/ui11ui_main.c、ui_status_grid.c、ui_status_solar.c、ui_status_ups.c、ui_test_report.c、ui_setting_admin_safety.c、ui_setting_admin_debug_power.c、ui_setting_user_func_grid_pq_mode_pow_fac.c、ui_ct_rate.c、ui_factory_mode.c、ui_Information.c
logic8logic.c、dispatch.c、ac_control.c、ac_control.h、dc_control.h、generator.c、csip_aus.c、self_test.c
midware/interface6modbus/modbus.c、modbus/sunspec_business.c、modbus/sunspec_modbus.c、dry_node/dry_node.c、drm/drm.c、interface.c
net5ems.c、server.c、ems_download.c、upd_download.c、afci_download.c
hmi 其它5key.c、lcd.c、led.c、led/app_led.c、led.h
data4system_config/system_config.c(配置表初始化/恢复/下发)、resume_data/flash/flash_data_store.c、fault_warn_log/fault_warn_log.h、data.c
midware/meter3meter.c、ct.c、backupbox.c
midware/bms3bms.c、alpha/battery_comm.c、alpha/battery_upgrade.c
midware/afci2afci_comm.c、afci_upgrade.c
midware/ethernt / midware/debug / midware/auxiliary3wireless/wireless_driver.c、debug/ate.c、auxiliary/system_aux.c
user / system2user/main.c(三个任务入口的创建处)、system/board_init/board_init.c

7. 备注与风险点

  1. INVERTER_TYPE 的取值与所有条件编译块自相矛盾(最需确认)。inverter.h:172 定义为 (INVERTER_NULL)(=0),而全工程的裁剪判据都是 #if ((INVERTER_TYPE == INVERTER_MAX) || (INVERTER_TYPE == XXX_TYPE))(inverter.h:175-181 及 inverter.c、各厂商驱动、hmi/key.c、midware/bms/bms.c、net/ems.c 的大量同类块)。按预处理字面展开,0 既不等于 7 也不等于任何厂商码,所有厂商分支与 INV_DC_CTRL/INV_AC_CTRL 都不会被定义,logic/dc_control.c、logic/ac_control.c、logic/logic.c 中的 #ifdef 块会整体消失。同时 inverter.c:1071 把 INVERTER_TYPE == INVERTER_NULL 当作"机型与固件不匹配"故障条件,hmi/key.c:8956-8957 明确把 INVERTER_NULL 排除在 LCD/按键功能之外,说明该值应视为"未配置"。若本仓库是要出整机固件,此宏应为 INVERTER_MAX 或具体厂商码;若确为裁剪占位,则 §3 中一半以上函数的实现会在链接期缺失。建议以实际编译产物复核。
  2. INVERTER_MAX 一值两义:既作运行期合法上界(get_inverter_type() 在 >= INVERTER_MAX 时钳位,inverter.c:1342;net/server.c:883、modbus.c:6920 同样用它做写值校验),又作编译期"全厂商"哨兵。因此类型码 7 本身是非法运行值,两处语义混用容易在新增厂商时踩坑。
  3. 故障/告警枚举与位域顺序强耦合且无编译期保护。INV_FAULT_E(64 项)、INV_FAULT_EXTEND1_E(64 项)、INV_WARNING_E(64 项)与对应联合体 bit 成员的顺序必须逐位对齐(inverter.h:890-957 vs 960-1047;1049-1131 vs 1134-1221;1349-1430 vs 1433-1520)。在枚举中间插入一项就会让后面所有位静默错位,而消费方 data/fault_warn_log/fault_warn_log.c:835-1098 正是按位遍历生成日志。建议加 STATIC_ASSERT 或末尾 *_MAX 哨兵做校验。
  4. 无终止符的枚举:INV_WARNING_EXTEND1_E 只有 5 项、没有 _MAX(对比 GRID_REGULATION_E.Safety_Max、GRID_SAFESUB_E.SAFESUB_MAX、INVERTER_SUB_E.SUB_MAX),无法做取值范围校验;INV_FAULT_EXTEND2_E 只用 25 位,其余位在联合体里以 bit25~bit63 占位(inverter.h:1299-1345),扩展时需同时改两处。
  5. 同一枚举承载两套语义:INVERTER_DATA_E(inverter.h:340-354)里 PV_CHANAEL1..4 = 1..4、PV_CHANAL_ALL = 5 与 PHASE_L1..L3 = 1..3、PHASE_ALL = 4 混在一起,传给 inverter_read_pv_volt(index) / inverter_read_grid_volt(index) 时无法靠类型区分,4 在 PV 场景是 L3、在相场景是"全部";拼写也不统一(CHANAEL / CHANAL)。
  6. 联合体成员名大小写不一致:SAFTY_MODE_ENABLE_U 用大写 BIT(inverter.h:432),而 INVERTER_SAFTY_TEST_RESULT_U、5 个故障/告警联合体都用小写 bit(inverter.h:784、1046…)。写代码时写错大小写会直接编译报错还算安全,但阅读与复制粘贴极易混淆。
  7. INVERTER_OVERALL_STATUS_E 枚举内重复赋 0:INV_POWER_NONE = 0 与 INV_SHUTDOWN_NONE = 0(inverter.h:288、292)位于同一枚举,语义靠命名区分,任一取值无法唯一判定归属。
  8. setter 只做透传、量纲全靠人脑:INVERTER_SAFTY_INFO_T 中功率因数有 0.01(s8_set_power_factor)与 0.1%(s16_p_pf_mode_pf1)两种刻度,功率有 0.1%Pn 与 1%Pn,时间有 0.01S 与 1S。inverter_set_*(inverter.h:2058-2261)全部只赋值不下发、不校验量纲,换算错误只能被测出来。
  9. 字段类型与命名/注释不一致:u16 u16_bat_curr; 实际声明为 s16(inverter.h:1762,电池电流必须为负才有意义);u16 u8_pe_loss_check_flag;(inverter.h:1812)前缀与类型不一致;u16 u16_dc_max_charge_power / u16_dc_max_dischg_power 注释标 1W 却用 u16(inverter.h:1688-1689,量程仅 65535W,大机型需确认);结构体成员 INVERTER_SAFTY_TEST_T t_safty_tset_info[3](inverter.h:1907,tset 拼写错误);函数名 inverter_read_grid_rated_freqency(inverter.h:2034)、inverter_get_bat_breaker_statuse(inverter.h:2060)拼写错误。以上仅影响可读性,不影响功能,但改名会牵连大量调用点,故保留。
  10. PF_001_TO_01(val) 是带副作用的赋值宏(inverter.h:184-186):展开为逗号表达式,先对 val 写入再限幅。实参必须是可写左值(源码注释已写"修改,传变量"),若传入表达式会编译失败,传入带副作用的表达式(如 a[i++])会重复求值。另外负值分支 ((val) - 5) / 10 依赖 C99 的向零截断实现"四舍五入",换编译器/优化等级需复核。
  11. #pragma pack(1) 作用域覆盖 1500 行且未用 push/pop(inverter.h:416 开、inverter.h:1916 关)。作用域内所有结构体都按 1 字节对齐,INVERTER_RUN_TABLE_T 这类含大量 u32/s32 的大表会造成非对齐访问;SENERGYS5_QUERY_INV_REGISTER_T(inverter.h:1918)反而定义在 #pragma pack() 之后,与前面所有结构体对齐方式不同——若将来把它并入 Flash 结构体,偏移会不一致。
  12. u8_reserve[172] 是尺寸垫片(inverter.h:503):它使 sizeof(INVERTER_CONFIG_TAB_T) == 256,从而满足 STATIC_ASSERT(4096 % 256 == 0)(inverter.h:507),支撑"4KB 扇区均分 16 槽"的 FEE 方案。字段增删必须同步调整 reserve 并更新 midware/inverter/inverter.c 侧所有 sizeof(INVERTER_CONFIG_TAB_T) 用法;好在断言会在编译期拦住(data/system_config/system_config.c:568、1569、2549、3028)。
  13. g_t_inv_info 无任何互斥保护:midware/inverter/*.c 中检索不到 OSSemPend/OSSemPost/OSMutex*/OSMbox*/OSQPost。而写入方至少有 task_inverter、task_inverter_can、task_parallel_sci 三个任务,加上 net/server.c(48 处直接写 t_config_data)、hmi/key.c(83 处)两个远端/本地配置入口,t_config_data 的读改写与 t_run_info 的多字段快照都存在竞态。t_control_cmd 更进一步是"一写多消费"的自清标志(如 u8_reset 被厂商驱动消费后置 FALSE),若 SCI 与 CAN 两条链路同时运行同一机型代码,存在命令重复下发或漏下发风险。
  14. 未闭环/遗留代码:① u8_tor_no_use_flag(inverter.h:752)命名直接表明废弃;② 过频降载有两套参数并存——u16_ofp_down_load_points/slope/delay_time/zero_crossing_freq(inverter.h:688-692)与新的 u16_p_f_* 族(inverter.h:648-674),存在写一套读另一套的隐患;③ t_safty_tset_info[3] 三相自检数据中 HMI 只读 [0](hmi/ui/ui_test_report.c:39-110),第二、三相无消费方;④ DEBUG_INVERTER 恒为 0(inverter.h:18),调试打印路径无法通过配置打开。
  15. SENERGYS5_QUERY_INV_REGISTER_T 的容量与实际使用不一致:数组声明为 [10],但 net/server.c:1500-1537 与 set_comm_usart_s5.c:6015-6113 都只用到 [0..7];成员 u8_rend_data 应为 read_data 的笔误;u8_start_en / u8_modbus_flag 语义是枚举/模式选择却以 u8_ 前缀命名,且是纯调试透传通道(可由服务器/APP 直接构造任意 Modbus 帧),存在被滥用的风险。