From 3d1a9e2b1de3430b061a5c6e28208e8908df758d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=20=E6=B3=BD=E9=9A=86?= Date: Sun, 3 Nov 2024 16:59:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=A0=B7=E6=9C=AC;=20=20-=20=E5=85=89=E4=BC=8F?= =?UTF-8?q?=E9=80=86=E5=8F=98=E5=99=A8=20=20-=20=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/param_defination/.gitkeep | 0 .../param/param_defination/param_comm.c | 107 ++ .../param/param_defination/param_comm.h | 63 + .../param_defination/param_comm_defination.h | 68 + .../param/param_defination/param_defination.h | 164 +++ .../param/param_defination/param_produce.c | 127 ++ .../param/param_defination/param_produce.h | 73 ++ .../param_produce_defination.h | 88 ++ .../param/param_defination/param_stable.c | 193 +++ .../param/param_defination/param_stable.h | 106 ++ .../param_stable_defination.h | 154 +++ .../param_defination/param_storage_config.c | 100 ++ test/CBB_Param/param_input.xlsx | Bin 0 -> 30053 bytes .../arm/mw_param_manager_arm_struct.c | 264 ++++ .../arm/mw_param_manager_arm_struct.h | 502 ++++++++ .../arm/mw_param_manager_dsp_struct.h | 1105 ++++++++++++++++ .../dsp/mw_param_manager_dsp_struct.c | 684 ++++++++++ .../dsp/mw_param_manager_dsp_struct.h | 1114 +++++++++++++++++ .../光伏逆变器2.1_通信地址表_V01.xlsx | Bin 0 -> 303077 bytes .../光伏逆变器2.1_通信地址表_V33.xlsx | Bin 0 -> 259315 bytes ...平台-光伏逆变器2.1_ARM通信地址表_V01.xlsx | Bin 0 -> 153310 bytes 21 files changed, 4912 insertions(+) create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/.gitkeep create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_comm.c create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_comm.h create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_comm_defination.h create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_defination.h create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_produce.c create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_produce.h create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_produce_defination.h create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_stable.c create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_stable.h create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_stable_defination.h create mode 100644 test/CBB_Param/param_code_generation/param/param_defination/param_storage_config.c create mode 100644 test/CBB_Param/param_input.xlsx create mode 100644 test/PV_Inverter/arm/mw_param_manager_arm_struct.c create mode 100644 test/PV_Inverter/arm/mw_param_manager_arm_struct.h create mode 100644 test/PV_Inverter/arm/mw_param_manager_dsp_struct.h create mode 100644 test/PV_Inverter/dsp/mw_param_manager_dsp_struct.c create mode 100644 test/PV_Inverter/dsp/mw_param_manager_dsp_struct.h create mode 100644 test/PV_Inverter/光伏逆变器2.1_通信地址表_V01.xlsx create mode 100644 test/PV_Inverter/光伏逆变器2.1_通信地址表_V33.xlsx create mode 100644 test/PV_Inverter/新平台-光伏逆变器2.1_ARM通信地址表_V01.xlsx diff --git a/test/CBB_Param/param_code_generation/param/param_defination/.gitkeep b/test/CBB_Param/param_code_generation/param/param_defination/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_comm.c b/test/CBB_Param/param_code_generation/param/param_defination/param_comm.c new file mode 100644 index 0000000..5181142 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_comm.c @@ -0,0 +1,107 @@ +/* + * ===================================================================================== + * + * Filename: param_comm.c + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#include + +#include "plm_type_def.h" +#include "../param_export.h" + +#include "./param_comm.h" + + +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET +update_comm_param_t g_update_comm_param_info; /*预存参数数据缓冲区 */ +#endif + +comm_param_t g_comm_param_in_ram; /*参数ram缓冲区*/ +uint16_t g_check_comm_param_crc[COMM_PARAM_NUM]; /*用于记录参数的校验crc结果*/ +#endif + +PARAM_CHANGE_FLAG_E g_comm_param_change_flag[COMM_PARAM_NUM]; /*用于记录参数的修改标记*/ + +const comm_param_t COMM_PARAM_DEFAULT_VALUE_TABLE = +{ + .remote_ip = {219, 147, 26, 62}, //主站IP + .remote_port = 5223, //主站端口号 + .interactive_cycle_4g = 10, //4G交互周期 + .gprs_com_over_time = 600, //4G通信超时阈值 + .can_enable = 0, //CAN使能 + .can_dev_id = 0, //CAN并机ID + .can_parallel_num = 0, //CAN并机数量 + .com_over_time = 180, //通信故障判定时间 + .log_level = 0, //日志级别 + .log_output = 0, //日志输出模式 + .log_channel = 0, //日志监控通道 + .log_file_size = 4096, //日志文件大小 + .log_file_cnt = 16, //日志文件数量 + .log_udp_port = 1234, //日志网络端口 + .log_udp_eth_ip = {127, 0, 0, 1}, //日志网络地址 + .plc_check_comm_period = 1440, //载波通信超时判断周期 +}; + + +const param_info_t COMM_PARAM_INDEX_TABLE[COMM_PARAM_NUM] = +{ + {.idx=PARA_IDX_REMOTE_IP, .identity=0x00000001, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=COMM_PARAM_REMOTE_IP_SIZE, .offset=offsetof(comm_param_t, remote_ip), .ratio=1, .min=0, .max=0, .check_func=ip_check, .update_func=remote_ip_callback,}, //主站IP + {.idx=PARA_IDX_REMOTE_PORT, .identity=0x00000002, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_REMOTE_PORT_SIZE, .offset=offsetof(comm_param_t, remote_port), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=remote_port_callback,}, //主站端口号 + {.idx=PARA_IDX_INTERACTIVE_CYCLE_4G, .identity=0x00000003, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_INTERACTIVE_CYCLE_4G_SIZE, .offset=offsetof(comm_param_t, interactive_cycle_4g), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=interactive_cycle_4g_callback,}, //4G交互周期 + {.idx=PARA_IDX_GPRS_COM_OVER_TIME, .identity=0x00000004, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_GPRS_COM_OVER_TIME_SIZE, .offset=offsetof(comm_param_t, gprs_com_over_time), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=gprs_com_over_time_callback,}, //4G通信超时阈值 + {.idx=PARA_IDX_CAN_ENABLE, .identity=0x00000005, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=COMM_PARAM_CAN_ENABLE_SIZE, .offset=offsetof(comm_param_t, can_enable), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=can_enable_callback,}, //CAN使能 + {.idx=PARA_IDX_CAN_DEV_ID, .identity=0x00000006, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_CAN_DEV_ID_SIZE, .offset=offsetof(comm_param_t, can_dev_id), .ratio=1, .min=0, .max=5, .check_func=NULL, .update_func=can_dev_id_callback,}, //CAN并机ID + {.idx=PARA_IDX_CAN_PARALLEL_NUM, .identity=0x00000007, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_CAN_PARALLEL_NUM_SIZE, .offset=offsetof(comm_param_t, can_parallel_num), .ratio=1, .min=0, .max=5, .check_func=NULL, .update_func=can_parallel_num_callback,}, //CAN并机数量 + {.idx=PARA_IDX_COM_OVER_TIME, .identity=0x00000008, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_COM_OVER_TIME_SIZE, .offset=offsetof(comm_param_t, com_over_time), .ratio=1, .min=0, .max=3600, .check_func=NULL, .update_func=com_over_time_callback,}, //通信故障判定时间 + {.idx=PARA_IDX_LOG_LEVEL, .identity=0x00000009, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=COMM_PARAM_LOG_LEVEL_SIZE, .offset=offsetof(comm_param_t, log_level), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=log_level_callback,}, //日志级别 + {.idx=PARA_IDX_LOG_OUTPUT, .identity=0x0000000A, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=COMM_PARAM_LOG_OUTPUT_SIZE, .offset=offsetof(comm_param_t, log_output), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=log_output_callback,}, //日志输出模式 + {.idx=PARA_IDX_LOG_CHANNEL, .identity=0x0000000B, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=COMM_PARAM_LOG_CHANNEL_SIZE, .offset=offsetof(comm_param_t, log_channel), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=log_channel_callback,}, //日志监控通道 + {.idx=PARA_IDX_LOG_FILE_SIZE, .identity=0x0000000C, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_LOG_FILE_SIZE_SIZE, .offset=offsetof(comm_param_t, log_file_size), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=log_file_size_callback,}, //日志文件大小 + {.idx=PARA_IDX_LOG_FILE_CNT, .identity=0x0000000D, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_LOG_FILE_CNT_SIZE, .offset=offsetof(comm_param_t, log_file_cnt), .ratio=1, .min=0, .max=32, .check_func=NULL, .update_func=log_file_cnt_callback,}, //日志文件数量 + {.idx=PARA_IDX_LOG_UDP_PORT, .identity=0x0000000E, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_LOG_UDP_PORT_SIZE, .offset=offsetof(comm_param_t, log_udp_port), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=log_udp_port_callback,}, //日志网络端口 + {.idx=PARA_IDX_LOG_UDP_ETH_IP, .identity=0x0000000F, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=COMM_PARAM_LOG_UDP_ETH_IP_SIZE, .offset=offsetof(comm_param_t, log_udp_eth_ip), .ratio=1, .min=0, .max=0, .check_func=ip_check, .update_func=log_udp_eth_ip_callback,}, //日志网络地址 + {.idx=PARA_IDX_PLC_CHECK_COMM_PERIOD, .identity=0x00000010, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=COMM_PARAM_PLC_CHECK_COMM_PERIOD_SIZE, .offset=offsetof(comm_param_t, plc_check_comm_period), .ratio=1, .min=1, .max=65535, .check_func=NULL, .update_func=plc_check_comm_period_callback,}, //载波通信超时判断周期 +}; + + + + +param_info_table_t COMM_PARAM_INFO = +{ +#if ENABLE_PARAM_MUTEX + .ptr_mutex = &g_param_resouce.param_mutex, +#endif + .ptr_category_name = COMM_REGION_NAME, + .ptr_default_value_table = (void*)&COMM_PARAM_DEFAULT_VALUE_TABLE, //默认参数值 + .ptr_index_table = (void*)COMM_PARAM_INDEX_TABLE, //参数索引表 + .param_num = COMM_PARAM_NUM, //参数个数 + .param_data_size = COMM_PARAM_STORAGE_SIZE, //数据长度 + .param_base_addr = COMM_PARAM_STORE_ADDR, //参数存储页地址 +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET + .ptr_preset_dataset = (void*)&g_update_comm_param_info.preset_table,//预设参数表 +#endif + .ptr_param_in_ram = (void*)&g_comm_param_in_ram, //参数ram缓冲区 + .ptr_crc_in_ram = g_check_comm_param_crc, //参数crc校验值 +#endif + .ptr_change_flag = g_comm_param_change_flag, //参数变更标记 + .backup_offset = 1024, //备份之间的偏移 + .idx_min = PARA_IDX_REMOTE_IP, //参数索引最小值 + .idx_max = PARA_IDX_PLC_CHECK_COMM_PERIOD, //参数索引最大值 + .ptr_exchange_unit = &g_param_resouce.ptr_param_unit_buff, //参数写入缓冲区 + .exchange_size = 1024, //按页写入的缓冲区的大小 +}; + diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_comm.h b/test/CBB_Param/param_code_generation/param/param_defination/param_comm.h new file mode 100644 index 0000000..f8ba650 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_comm.h @@ -0,0 +1,63 @@ +/* + * ===================================================================================== + * + * Filename: param_comm.h + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#ifndef __PARAM_COMM_H__ +#define __PARAM_COMM_H__ + +#include + +#include "./param_config.h" +#include "../param_functional/param_block.h" +#include "./param_comm_defination.h" + +#define COMM_PARAM_STORE_ADDR (4096) + + +#define COMM_PARAM_REMOTE_IP_OFFSET 0 +#define COMM_PARAM_REMOTE_PORT_OFFSET (COMM_PARAM_REMOTE_IP_OFFSET + COMM_PARAM_REMOTE_IP_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_INTERACTIVE_CYCLE_4G_OFFSET (COMM_PARAM_REMOTE_PORT_OFFSET + COMM_PARAM_REMOTE_PORT_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_GPRS_COM_OVER_TIME_OFFSET (COMM_PARAM_INTERACTIVE_CYCLE_4G_OFFSET + COMM_PARAM_INTERACTIVE_CYCLE_4G_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_CAN_ENABLE_OFFSET (COMM_PARAM_GPRS_COM_OVER_TIME_OFFSET + COMM_PARAM_GPRS_COM_OVER_TIME_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_CAN_DEV_ID_OFFSET (COMM_PARAM_CAN_ENABLE_OFFSET + COMM_PARAM_CAN_ENABLE_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_CAN_PARALLEL_NUM_OFFSET (COMM_PARAM_CAN_DEV_ID_OFFSET + COMM_PARAM_CAN_DEV_ID_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_COM_OVER_TIME_OFFSET (COMM_PARAM_CAN_PARALLEL_NUM_OFFSET + COMM_PARAM_CAN_PARALLEL_NUM_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_LOG_LEVEL_OFFSET (COMM_PARAM_COM_OVER_TIME_OFFSET + COMM_PARAM_COM_OVER_TIME_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_LOG_OUTPUT_OFFSET (COMM_PARAM_LOG_LEVEL_OFFSET + COMM_PARAM_LOG_LEVEL_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_LOG_CHANNEL_OFFSET (COMM_PARAM_LOG_OUTPUT_OFFSET + COMM_PARAM_LOG_OUTPUT_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_LOG_FILE_SIZE_OFFSET (COMM_PARAM_LOG_CHANNEL_OFFSET + COMM_PARAM_LOG_CHANNEL_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_LOG_FILE_CNT_OFFSET (COMM_PARAM_LOG_FILE_SIZE_OFFSET + COMM_PARAM_LOG_FILE_SIZE_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_LOG_UDP_PORT_OFFSET (COMM_PARAM_LOG_FILE_CNT_OFFSET + COMM_PARAM_LOG_FILE_CNT_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_LOG_UDP_ETH_IP_OFFSET (COMM_PARAM_LOG_UDP_PORT_OFFSET + COMM_PARAM_LOG_UDP_PORT_SIZE + PARAM_INFO_SIZE) +#define COMM_PARAM_PLC_CHECK_COMM_PERIOD_OFFSET (COMM_PARAM_LOG_UDP_ETH_IP_OFFSET + COMM_PARAM_LOG_UDP_ETH_IP_SIZE + PARAM_INFO_SIZE) + +#define COMM_PARAM_STORAGE_SIZE (COMM_PARAM_PLC_CHECK_COMM_PERIOD_OFFSET + COMM_PARAM_PLC_CHECK_COMM_PERIOD_SIZE + PARAM_INFO_SIZE) + + + +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET +typedef struct +{ + comm_param_t preset_table; +} update_comm_param_t; +#endif +#endif + +extern param_info_table_t COMM_PARAM_INFO; + +#endif /* ----- #ifndef __PARAM_COMM_H__ ----- */ diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_comm_defination.h b/test/CBB_Param/param_code_generation/param/param_defination/param_comm_defination.h new file mode 100644 index 0000000..1ce689c --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_comm_defination.h @@ -0,0 +1,68 @@ +/* + * ===================================================================================== + * + * Filename: param_comm_defination.h + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#ifndef __PARAM_COMM_DEFINATION_H__ +#define __PARAM_COMM_DEFINATION_H__ + +#include +#include + + +#define COMM_PARAM_NUM (16) + + +#define COMM_PARAM_REMOTE_IP_SIZE (4) +#define COMM_PARAM_REMOTE_PORT_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_INTERACTIVE_CYCLE_4G_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_GPRS_COM_OVER_TIME_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_CAN_ENABLE_SIZE (sizeof(uint8_t)) +#define COMM_PARAM_CAN_DEV_ID_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_CAN_PARALLEL_NUM_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_COM_OVER_TIME_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_LOG_LEVEL_SIZE (sizeof(uint8_t)) +#define COMM_PARAM_LOG_OUTPUT_SIZE (sizeof(uint8_t)) +#define COMM_PARAM_LOG_CHANNEL_SIZE (sizeof(uint8_t)) +#define COMM_PARAM_LOG_FILE_SIZE_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_LOG_FILE_CNT_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_LOG_UDP_PORT_SIZE (sizeof(uint16_t)) +#define COMM_PARAM_LOG_UDP_ETH_IP_SIZE (4) +#define COMM_PARAM_PLC_CHECK_COMM_PERIOD_SIZE (sizeof(uint16_t)) + + +typedef struct +{ + uint8_t remote_ip[COMM_PARAM_REMOTE_IP_SIZE]; /* 主站IP */ + uint16_t remote_port; /* 主站端口号 */ + uint16_t interactive_cycle_4g; /* 4G交互周期 */ + uint16_t gprs_com_over_time; /* 4G通信超时阈值 */ + uint8_t can_enable; /* CAN使能 */ + uint16_t can_dev_id; /* CAN并机ID */ + uint16_t can_parallel_num; /* CAN并机数量 */ + uint16_t com_over_time; /* 通信故障判定时间 */ + uint8_t log_level; /* 日志级别 */ + uint8_t log_output; /* 日志输出模式 */ + uint8_t log_channel; /* 日志监控通道 */ + uint16_t log_file_size; /* 日志文件大小 */ + uint16_t log_file_cnt; /* 日志文件数量 */ + uint16_t log_udp_port; /* 日志网络端口 */ + uint8_t log_udp_eth_ip[COMM_PARAM_LOG_UDP_ETH_IP_SIZE]; /* 日志网络地址 */ + uint16_t plc_check_comm_period; /* 载波通信超时判断周期 */ +} comm_param_t; + + +#endif /* ----- #ifndef __PARAM_COMM_DEFINATION_H__ ----- */ diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_defination.h b/test/CBB_Param/param_code_generation/param/param_defination/param_defination.h new file mode 100644 index 0000000..8d44915 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_defination.h @@ -0,0 +1,164 @@ +/* + * ===================================================================================== + * + * Filename: param_defination.h + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + + +#ifndef __PARAM_DEFINATION_H__ +#define __PARAM_DEFINATION_H__ + +#include + +/* ##### LOCAL INCLUDES #################################################### */ +#include "param_defination/param_stable_defination.h" /* STABLE参数个数及参数数据域大小 */ +#include "param_defination/param_comm_defination.h" /* COMM参数个数及参数数据域大小 */ +#include "param_defination/param_produce_defination.h" /* PRODUCE参数个数及参数数据域大小 */ + +/* ##### EXPORTED MACROS ######################################################## */ +#define STABLE_REGION_NAME "param_stable" /* STABLE存储区域名 */ +#define COMM_REGION_NAME "param_comm" /* COMM存储区域名 */ +#define PRODUCE_REGION_NAME "param_produce" /* PRODUCE存储区域名 */ + + +/* ##### EXPORTED DATA TYPES #################################################### */ + +typedef enum +{ + STABLE_PARAM, /*STABLE*/ + COMM_PARAM, /*COMM*/ + PRODUCE_PARAM, /*PRODUCE*/ + + PARAM_CATEGORY_MAX, /*参数表个数*/ +}PARAM_CATEGORY_E; /* ---------- end of enum PARAM_CATEGORY_E ---------- */ + + +typedef enum +{ + + /* STABLE */ + PARA_IDX_WORK_MODE_SVGC, //工作模式 + PARA_IDX_WORK_MODE_SVG, //补偿模式选择 + PARA_IDX_POWERON_MODE, //开机模式 + PARA_IDX_POWER_ON_DELAY, //自动开机延时 + PARA_IDX_POWER_ON_TIME_EN, //定时开关机使能 + PARA_IDX_POWER_ON_TIME, //定时开机时间 + PARA_IDX_POWER_OFF_TIME, //定时关机时间 + PARA_IDX_LOW_POWER_JUDGE_DELAY, //低功耗判断延时 + PARA_IDX_LOW_POWER_JUDGE_DELAY_QUIT, //退出低功耗判断延时 + PARA_IDX_AUTO_RESET_DELAY, //自动复位延时 + PARA_IDX_DSP_WD_ENABLE, //DSP看门狗复位使能 + PARA_IDX_FREEZE_SAVE_PERIOD, //分钟冻结周期 + PARA_IDX_RECORD_FRAME_EN, //报文记录使能 + PARA_IDX_RECORD_FRAME_DIR, //报文记录方向 + PARA_IDX_RECORD_FRAME_PORT, //报文记录端口 + PARA_IDX_RECORD_ERR_LOG_EN, //错误打印记录使能 + PARA_IDX_IMPD_DETE_EN, //绝缘阻值检测使能 + PARA_IDX_FAN_CTR_MODE, //风扇控制模式 + PARA_IDX_LEAK_CURRENT_MODE, //漏电流模式 + PARA_IDX_SYS_DISCHARGE_START_PWR, //放电起始功率 + PARA_IDX_ANTI_PID_EN, //抗PID使能 + PARA_IDX_ANTI_PID_TIME, //抗PID启动时间 + PARA_IDX_AUTO_RESTORE_DELAY, //自动清除故障模式 + PARA_IDX_PLC_ENABLE, //交流载波使能 + PARA_IDX_CONTROL_ENABLE_SHANXI, //逆变器控制使能 + PARA_IDX_FAN_AUTO_CTRL_FACTOR, //风扇自动控制因素 + PARA_IDX_MANUAL_FAN_PWM, //手动风扇占空比 + PARA_IDX_FAN_PWM_START, //风扇启动占空比 + PARA_IDX_FAN_PWM_MAX, //风扇最大占空比 + PARA_IDX_FAN_START_TEMP, //风扇启动温度 + PARA_IDX_FAN_MAX_TEMP, //风扇满速温度 + PARA_IDX_FAN_START_POWER, //风扇启动功率(额定值%) + PARA_IDX_FAN_MAX_POWER, //风扇满速功率(额定值%) + PARA_IDX_RESERVE_PARAM9_2, //幅值参考预留2 + PARA_IDX_RESERVE_PARAM9_3, //幅值参考预留3 + PARA_IDX_RESERVE_PARAM9_4, //幅值参考预留4 + PARA_IDX_RESERVE_PARAM9_5, //幅值参考预留5 + PARA_IDX_RESERVE_PARAM9_6, //幅值参考预留6 + PARA_IDX_RESERVE_PARAM9_7, //幅值参考预留7 + PARA_IDX_IMPD_FAULT_THRD, //绝缘阻值故障阈值 + PARA_IDX_IMPD_DETECT_CLOSE_TIME, //绝缘检测闭合时间 + PARA_IDX_IMPD_DETECT_OPEN_TIME, //绝缘检测断开时间 + PARA_IDX_FAN_SPEED_FAULT_THRD, //风扇故障转速阈值 + PARA_IDX_LEAK_CUR_FAULT_THRD, //漏电流故障阈值 + PARA_IDX_RESERVE_PARAM1_1, //阈值参考预留1 + PARA_IDX_OVER_TEMP_TIME, //过温判定时间 + PARA_IDX_SELF_CHECK_TIME, //自检超时判定时间 + PARA_IDX_INSU_BUS_VOLT_THD, //绝缘检测母线电压阈值 + PARA_IDX_INSU_RLY_VOLT_THD, //绝缘检测继电器电压阈值 + PARA_IDX_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA, //漏电流3级突变触发阈值 + PARA_IDX_LEAK_CURRENT_SLOW_THRESHOLD_MA, //漏电流缓变动作阈值 + PARA_IDX_LEAK_CURRENT_SLOW_TIME_MS, //漏电流缓变时间阈值 + PARA_IDX_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA, //漏电流1级突变触发阈值 + PARA_IDX_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA, //漏电流2级突变触发阈值 + PARA_IDX_LONGI_DEVICE_SN, //设备ID(用于隆基主站上报) + PARA_IDX_LONGI_PRODUCT_ID, //产品ID(用于隆基主站上报) + PARA_IDX_SHANXI_CAPACITY, //光伏板装机容量(陕西) + PARA_IDX_SHANXI_LONGITUDE, //设备经度(陕西) + PARA_IDX_SHANXI_LATITUDE, //设备纬度(陕西) + + /* COMM */ + PARA_IDX_REMOTE_IP, //主站IP + PARA_IDX_REMOTE_PORT, //主站端口号 + PARA_IDX_INTERACTIVE_CYCLE_4G, //4G交互周期 + PARA_IDX_GPRS_COM_OVER_TIME, //4G通信超时阈值 + PARA_IDX_CAN_ENABLE, //CAN使能 + PARA_IDX_CAN_DEV_ID, //CAN并机ID + PARA_IDX_CAN_PARALLEL_NUM, //CAN并机数量 + PARA_IDX_COM_OVER_TIME, //通信故障判定时间 + PARA_IDX_LOG_LEVEL, //日志级别 + PARA_IDX_LOG_OUTPUT, //日志输出模式 + PARA_IDX_LOG_CHANNEL, //日志监控通道 + PARA_IDX_LOG_FILE_SIZE, //日志文件大小 + PARA_IDX_LOG_FILE_CNT, //日志文件数量 + PARA_IDX_LOG_UDP_PORT, //日志网络端口 + PARA_IDX_LOG_UDP_ETH_IP, //日志网络地址 + PARA_IDX_PLC_CHECK_COMM_PERIOD, //载波通信超时判断周期 + + /* PRODUCE */ + PARA_IDX_MES_CODE, //设备MES码 + PARA_IDX_PRODUCT_ID, //12位出厂编号 + PARA_IDX_HB_TEST_RESULT, //板级生产检测结果 + PARA_IDX_SYS_TEST_RESULT, //工厂整机测试结果 + PARA_IDX_HW_CMPNT_NUM, //硬件组件号 + PARA_IDX_REGION_CODE, //行政区域码 + PARA_IDX_TERM_ADDR, //终端地址 + PARA_IDX_SCI_BAUDRATE, //对外串口波特率 + PARA_IDX_AC_PROTO_TYPE, //载波协议类型 + PARA_IDX_PROT645_TYPE, //645协议版本 + PARA_IDX_LEVEL_0_CIPHER, //0级密码 + PARA_IDX_LEVEL_1_CIPHER, //1级密码 + PARA_IDX_LEVEL_2_CIPHER, //2级密码 + PARA_IDX_ACCOUNT_NUM, //户号 + PARA_IDX_VIRTUAL_PLANT_NUM, //虚拟电厂编号 + PARA_IDX_LEAK_CURRENT_FACTOR, //漏电流校准系数 + PARA_IDX_LEAK_CURRENT_DC_ESTIMATE, //漏电流直流偏置AD值 + PARA_IDX_STATE_GRID_ADDR, //国网地址 + PARA_IDX_METER_CODE_NUM, //表号(ESAM用) + PARA_IDX_LEAK_CURRENT_INTER_REFER_MA, //漏电流内部参考值 + PARA_IDX_INVERTER_MODEL, //逆变器型号 + PARA_IDX_INVERTER_MANUFACTURER, //逆变器制造厂商 + PARA_IDX_SHANXI_HEIGHT, //设备海拔高度(陕西) + PARA_IDX_RATE_ACTIVE_POWER, //额定有功功率 + PARA_IDX_RATE_REACTIVE_POWER, //额定无功功率 + PARA_IDX_MINUTE_FREEZE_RELATED_COLUMNS, //分钟冻结关联列 + + PARA_IDX_MAX, /*参数索引总个数*/ +}PARAM_IDX_E; /* ---------- end of enum PARAM_IDX_E ---------- */ + + +#endif /* ----- #ifndef __PARAM_DEFINATION_H__ ----- */ + + \ No newline at end of file diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_produce.c b/test/CBB_Param/param_code_generation/param/param_defination/param_produce.c new file mode 100644 index 0000000..82a07b3 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_produce.c @@ -0,0 +1,127 @@ +/* + * ===================================================================================== + * + * Filename: param_produce.c + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#include + +#include "plm_type_def.h" +#include "../param_export.h" + +#include "./param_produce.h" + + +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET +update_produce_param_t g_update_produce_param_info; /*预存参数数据缓冲区 */ +#endif + +produce_param_t g_produce_param_in_ram; /*参数ram缓冲区*/ +uint16_t g_check_produce_param_crc[PRODUCE_PARAM_NUM]; /*用于记录参数的校验crc结果*/ +#endif + +PARAM_CHANGE_FLAG_E g_produce_param_change_flag[PRODUCE_PARAM_NUM]; /*用于记录参数的修改标记*/ + +const produce_param_t PRODUCE_PARAM_DEFAULT_VALUE_TABLE = +{ + .mes_code = {0}, //设备MES码 + .product_id = {0, 0, 0, 0, 1, 0}, //12位出厂编号 + .hb_test_result = 0, //板级生产检测结果 + .sys_test_result = 0, //工厂整机测试结果 + .hw_cmpnt_num = {0}, //硬件组件号 + .region_code = {0}, //行政区域码 + .term_addr = {0}, //终端地址 + .sci_baudrate = 0, //对外串口波特率 + .ac_proto_type = 0, //载波协议类型 + .prot645_type = 0, //645协议版本 + .level_0_cipher = {0}, //0级密码 + .level_1_cipher = {0}, //1级密码 + .level_2_cipher = {0}, //2级密码 + .account_num = {0}, //户号 + .virtual_plant_num = {0}, //虚拟电厂编号 + .leak_current_factor = 2028, //漏电流校准系数 + .leak_current_dc_estimate = 6250, //漏电流直流偏置AD值 + .state_grid_addr = {0}, //国网地址 + .meter_code_num = {0}, //表号(ESAM用) + .leak_current_inter_refer_mA = 0xFFFF, //漏电流内部参考值 + .inverter_model = {0}, //逆变器型号 + .inverter_manufacturer = {0}, //逆变器制造厂商 + .shanxi_height = {0}, //设备海拔高度(陕西) + .rate_active_power = 0, //额定有功功率 + .rate_reactive_power = 0, //额定无功功率 + .minute_freeze_related_columns = {0}, //分钟冻结关联列 +}; + + +const param_info_t PRODUCE_PARAM_INDEX_TABLE[PRODUCE_PARAM_NUM] = +{ + {.idx=PARA_IDX_MES_CODE, .identity=0x00000001, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_MES_CODE_SIZE, .offset=offsetof(produce_param_t, mes_code), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=mes_code_callback,}, //设备MES码 + {.idx=PARA_IDX_PRODUCT_ID, .identity=0x00000002, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_PRODUCT_ID_SIZE, .offset=offsetof(produce_param_t, product_id), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=product_id_callback,}, //12位出厂编号 + {.idx=PARA_IDX_HB_TEST_RESULT, .identity=0x00000003, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=PRODUCE_PARAM_HB_TEST_RESULT_SIZE, .offset=offsetof(produce_param_t, hb_test_result), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=hb_test_result_callback,}, //板级生产检测结果 + {.idx=PARA_IDX_SYS_TEST_RESULT, .identity=0x00000004, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=PRODUCE_PARAM_SYS_TEST_RESULT_SIZE, .offset=offsetof(produce_param_t, sys_test_result), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=sys_test_result_callback,}, //工厂整机测试结果 + {.idx=PARA_IDX_HW_CMPNT_NUM, .identity=0x00000005, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_HW_CMPNT_NUM_SIZE, .offset=offsetof(produce_param_t, hw_cmpnt_num), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=hw_cmpnt_num_callback,}, //硬件组件号 + {.idx=PARA_IDX_REGION_CODE, .identity=0x00000006, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_REGION_CODE_SIZE, .offset=offsetof(produce_param_t, region_code), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=region_code_callback,}, //行政区域码 + {.idx=PARA_IDX_TERM_ADDR, .identity=0x00000007, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_TERM_ADDR_SIZE, .offset=offsetof(produce_param_t, term_addr), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=term_addr_callback,}, //终端地址 + {.idx=PARA_IDX_SCI_BAUDRATE, .identity=0x00000008, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=PRODUCE_PARAM_SCI_BAUDRATE_SIZE, .offset=offsetof(produce_param_t, sci_baudrate), .ratio=1, .min=0, .max=3, .check_func=NULL, .update_func=sci_baudrate_callback,}, //对外串口波特率 + {.idx=PARA_IDX_AC_PROTO_TYPE, .identity=0x00000009, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=PRODUCE_PARAM_AC_PROTO_TYPE_SIZE, .offset=offsetof(produce_param_t, ac_proto_type), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=ac_proto_type_callback,}, //载波协议类型 + {.idx=PARA_IDX_PROT645_TYPE, .identity=0x0000000A, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=PRODUCE_PARAM_PROT645_TYPE_SIZE, .offset=offsetof(produce_param_t, prot645_type), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=prot645_type_callback,}, //645协议版本 + {.idx=PARA_IDX_LEVEL_0_CIPHER, .identity=0x0000000B, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_LEVEL_0_CIPHER_SIZE, .offset=offsetof(produce_param_t, level_0_cipher), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=level_0_cipher_callback,}, //0级密码 + {.idx=PARA_IDX_LEVEL_1_CIPHER, .identity=0x0000000C, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_LEVEL_1_CIPHER_SIZE, .offset=offsetof(produce_param_t, level_1_cipher), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=level_1_cipher_callback,}, //1级密码 + {.idx=PARA_IDX_LEVEL_2_CIPHER, .identity=0x0000000D, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_LEVEL_2_CIPHER_SIZE, .offset=offsetof(produce_param_t, level_2_cipher), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=level_2_cipher_callback,}, //2级密码 + {.idx=PARA_IDX_ACCOUNT_NUM, .identity=0x0000000E, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_ACCOUNT_NUM_SIZE, .offset=offsetof(produce_param_t, account_num), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=account_num_callback,}, //户号 + {.idx=PARA_IDX_VIRTUAL_PLANT_NUM, .identity=0x0000000F, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_VIRTUAL_PLANT_NUM_SIZE, .offset=offsetof(produce_param_t, virtual_plant_num), .ratio=1, .min=0, .max=0, .check_func=bcd_check, .update_func=virtual_plant_num_callback,}, //虚拟电厂编号 + {.idx=PARA_IDX_LEAK_CURRENT_FACTOR, .identity=0x00000010, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=PRODUCE_PARAM_LEAK_CURRENT_FACTOR_SIZE, .offset=offsetof(produce_param_t, leak_current_factor), .ratio=1, .min=1, .max=65535, .check_func=NULL, .update_func=leak_current_factor_callback,}, //漏电流校准系数 + {.idx=PARA_IDX_LEAK_CURRENT_DC_ESTIMATE, .identity=0x00000011, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=PRODUCE_PARAM_LEAK_CURRENT_DC_ESTIMATE_SIZE, .offset=offsetof(produce_param_t, leak_current_dc_estimate), .ratio=1, .min=1800, .max=2200, .check_func=NULL, .update_func=leak_current_dc_estimate_callback,}, //漏电流直流偏置AD值 + {.idx=PARA_IDX_STATE_GRID_ADDR, .identity=0x00000012, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_STATE_GRID_ADDR_SIZE, .offset=offsetof(produce_param_t, state_grid_addr), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=state_grid_addr_callback,}, //国网地址 + {.idx=PARA_IDX_METER_CODE_NUM, .identity=0x00000013, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_METER_CODE_NUM_SIZE, .offset=offsetof(produce_param_t, meter_code_num), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=meter_code_num_callback,}, //表号(ESAM用) + {.idx=PARA_IDX_LEAK_CURRENT_INTER_REFER_MA, .identity=0x00000014, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=PRODUCE_PARAM_LEAK_CURRENT_INTER_REFER_MA_SIZE, .offset=offsetof(produce_param_t, leak_current_inter_refer_mA), .ratio=1, .min=0, .max=300, .check_func=NULL, .update_func=leak_current_inter_refer_mA_callback,}, //漏电流内部参考值 + {.idx=PARA_IDX_INVERTER_MODEL, .identity=0x00000015, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_INVERTER_MODEL_SIZE, .offset=offsetof(produce_param_t, inverter_model), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=inverter_model_callback,}, //逆变器型号 + {.idx=PARA_IDX_INVERTER_MANUFACTURER, .identity=0x00000016, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_INVERTER_MANUFACTURER_SIZE, .offset=offsetof(produce_param_t, inverter_manufacturer), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=inverter_manufacturer_callback,}, //逆变器制造厂商 + {.idx=PARA_IDX_SHANXI_HEIGHT, .identity=0x00000017, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_SHANXI_HEIGHT_SIZE, .offset=offsetof(produce_param_t, shanxi_height), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=shanxi_height_callback,}, //设备海拔高度(陕西) + {.idx=PARA_IDX_RATE_ACTIVE_POWER, .identity=0x00000018, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=PRODUCE_PARAM_RATE_ACTIVE_POWER_SIZE, .offset=offsetof(produce_param_t, rate_active_power), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=rate_active_power_callback,}, //额定有功功率 + {.idx=PARA_IDX_RATE_REACTIVE_POWER, .identity=0x00000019, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=PRODUCE_PARAM_RATE_REACTIVE_POWER_SIZE, .offset=offsetof(produce_param_t, rate_reactive_power), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=rate_reactive_power_callback,}, //额定无功功率 + {.idx=PARA_IDX_MINUTE_FREEZE_RELATED_COLUMNS, .identity=0x0000001A, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=PRODUCE_PARAM_MINUTE_FREEZE_RELATED_COLUMNS_SIZE, .offset=offsetof(produce_param_t, minute_freeze_related_columns), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=minute_freeze_related_columns_callback,}, //分钟冻结关联列 +}; + + + + +param_info_table_t PRODUCE_PARAM_INFO = +{ +#if ENABLE_PARAM_MUTEX + .ptr_mutex = &g_param_resouce.param_mutex, +#endif + .ptr_category_name = PRODUCE_REGION_NAME, + .ptr_default_value_table = (void*)&PRODUCE_PARAM_DEFAULT_VALUE_TABLE, //默认参数值 + .ptr_index_table = (void*)PRODUCE_PARAM_INDEX_TABLE, //参数索引表 + .param_num = PRODUCE_PARAM_NUM, //参数个数 + .param_data_size = PRODUCE_PARAM_STORAGE_SIZE, //数据长度 + .param_base_addr = PRODUCE_PARAM_STORE_ADDR, //参数存储页地址 +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET + .ptr_preset_dataset = (void*)&g_update_produce_param_info.preset_table,//预设参数表 +#endif + .ptr_param_in_ram = (void*)&g_produce_param_in_ram, //参数ram缓冲区 + .ptr_crc_in_ram = g_check_produce_param_crc, //参数crc校验值 +#endif + .ptr_change_flag = g_produce_param_change_flag, //参数变更标记 + .backup_offset = 1024, //备份之间的偏移 + .idx_min = PARA_IDX_MES_CODE, //参数索引最小值 + .idx_max = PARA_IDX_MINUTE_FREEZE_RELATED_COLUMNS, //参数索引最大值 + .ptr_exchange_unit = &g_param_resouce.ptr_param_unit_buff, //参数写入缓冲区 + .exchange_size = 1024, //按页写入的缓冲区的大小 +}; + diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_produce.h b/test/CBB_Param/param_code_generation/param/param_defination/param_produce.h new file mode 100644 index 0000000..103e7a8 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_produce.h @@ -0,0 +1,73 @@ +/* + * ===================================================================================== + * + * Filename: param_produce.h + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#ifndef __PARAM_PRODUCE_H__ +#define __PARAM_PRODUCE_H__ + +#include + +#include "./param_config.h" +#include "../param_functional/param_block.h" +#include "./param_produce_defination.h" + +#define PRODUCE_PARAM_STORE_ADDR (8192) + + +#define PRODUCE_PARAM_MES_CODE_OFFSET 0 +#define PRODUCE_PARAM_PRODUCT_ID_OFFSET (PRODUCE_PARAM_MES_CODE_OFFSET + PRODUCE_PARAM_MES_CODE_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_HB_TEST_RESULT_OFFSET (PRODUCE_PARAM_PRODUCT_ID_OFFSET + PRODUCE_PARAM_PRODUCT_ID_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_SYS_TEST_RESULT_OFFSET (PRODUCE_PARAM_HB_TEST_RESULT_OFFSET + PRODUCE_PARAM_HB_TEST_RESULT_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_HW_CMPNT_NUM_OFFSET (PRODUCE_PARAM_SYS_TEST_RESULT_OFFSET + PRODUCE_PARAM_SYS_TEST_RESULT_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_REGION_CODE_OFFSET (PRODUCE_PARAM_HW_CMPNT_NUM_OFFSET + PRODUCE_PARAM_HW_CMPNT_NUM_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_TERM_ADDR_OFFSET (PRODUCE_PARAM_REGION_CODE_OFFSET + PRODUCE_PARAM_REGION_CODE_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_SCI_BAUDRATE_OFFSET (PRODUCE_PARAM_TERM_ADDR_OFFSET + PRODUCE_PARAM_TERM_ADDR_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_AC_PROTO_TYPE_OFFSET (PRODUCE_PARAM_SCI_BAUDRATE_OFFSET + PRODUCE_PARAM_SCI_BAUDRATE_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_PROT645_TYPE_OFFSET (PRODUCE_PARAM_AC_PROTO_TYPE_OFFSET + PRODUCE_PARAM_AC_PROTO_TYPE_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_LEVEL_0_CIPHER_OFFSET (PRODUCE_PARAM_PROT645_TYPE_OFFSET + PRODUCE_PARAM_PROT645_TYPE_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_LEVEL_1_CIPHER_OFFSET (PRODUCE_PARAM_LEVEL_0_CIPHER_OFFSET + PRODUCE_PARAM_LEVEL_0_CIPHER_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_LEVEL_2_CIPHER_OFFSET (PRODUCE_PARAM_LEVEL_1_CIPHER_OFFSET + PRODUCE_PARAM_LEVEL_1_CIPHER_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_ACCOUNT_NUM_OFFSET (PRODUCE_PARAM_LEVEL_2_CIPHER_OFFSET + PRODUCE_PARAM_LEVEL_2_CIPHER_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_VIRTUAL_PLANT_NUM_OFFSET (PRODUCE_PARAM_ACCOUNT_NUM_OFFSET + PRODUCE_PARAM_ACCOUNT_NUM_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_LEAK_CURRENT_FACTOR_OFFSET (PRODUCE_PARAM_VIRTUAL_PLANT_NUM_OFFSET + PRODUCE_PARAM_VIRTUAL_PLANT_NUM_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_LEAK_CURRENT_DC_ESTIMATE_OFFSET (PRODUCE_PARAM_LEAK_CURRENT_FACTOR_OFFSET + PRODUCE_PARAM_LEAK_CURRENT_FACTOR_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_STATE_GRID_ADDR_OFFSET (PRODUCE_PARAM_LEAK_CURRENT_DC_ESTIMATE_OFFSET + PRODUCE_PARAM_LEAK_CURRENT_DC_ESTIMATE_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_METER_CODE_NUM_OFFSET (PRODUCE_PARAM_STATE_GRID_ADDR_OFFSET + PRODUCE_PARAM_STATE_GRID_ADDR_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_LEAK_CURRENT_INTER_REFER_MA_OFFSET (PRODUCE_PARAM_METER_CODE_NUM_OFFSET + PRODUCE_PARAM_METER_CODE_NUM_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_INVERTER_MODEL_OFFSET (PRODUCE_PARAM_LEAK_CURRENT_INTER_REFER_MA_OFFSET + PRODUCE_PARAM_LEAK_CURRENT_INTER_REFER_MA_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_INVERTER_MANUFACTURER_OFFSET (PRODUCE_PARAM_INVERTER_MODEL_OFFSET + PRODUCE_PARAM_INVERTER_MODEL_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_SHANXI_HEIGHT_OFFSET (PRODUCE_PARAM_INVERTER_MANUFACTURER_OFFSET + PRODUCE_PARAM_INVERTER_MANUFACTURER_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_RATE_ACTIVE_POWER_OFFSET (PRODUCE_PARAM_SHANXI_HEIGHT_OFFSET + PRODUCE_PARAM_SHANXI_HEIGHT_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_RATE_REACTIVE_POWER_OFFSET (PRODUCE_PARAM_RATE_ACTIVE_POWER_OFFSET + PRODUCE_PARAM_RATE_ACTIVE_POWER_SIZE + PARAM_INFO_SIZE) +#define PRODUCE_PARAM_MINUTE_FREEZE_RELATED_COLUMNS_OFFSET (PRODUCE_PARAM_RATE_REACTIVE_POWER_OFFSET + PRODUCE_PARAM_RATE_REACTIVE_POWER_SIZE + PARAM_INFO_SIZE) + +#define PRODUCE_PARAM_STORAGE_SIZE (PRODUCE_PARAM_MINUTE_FREEZE_RELATED_COLUMNS_OFFSET + PRODUCE_PARAM_MINUTE_FREEZE_RELATED_COLUMNS_SIZE + PARAM_INFO_SIZE) + + + +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET +typedef struct +{ + produce_param_t preset_table; +} update_produce_param_t; +#endif +#endif + +extern param_info_table_t PRODUCE_PARAM_INFO; + +#endif /* ----- #ifndef __PARAM_PRODUCE_H__ ----- */ diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_produce_defination.h b/test/CBB_Param/param_code_generation/param/param_defination/param_produce_defination.h new file mode 100644 index 0000000..d1e9851 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_produce_defination.h @@ -0,0 +1,88 @@ +/* + * ===================================================================================== + * + * Filename: param_produce_defination.h + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#ifndef __PARAM_PRODUCE_DEFINATION_H__ +#define __PARAM_PRODUCE_DEFINATION_H__ + +#include +#include + + +#define PRODUCE_PARAM_NUM (26) + + +#define PRODUCE_PARAM_MES_CODE_SIZE (8) +#define PRODUCE_PARAM_PRODUCT_ID_SIZE (6) +#define PRODUCE_PARAM_HB_TEST_RESULT_SIZE (sizeof(uint16_t)) +#define PRODUCE_PARAM_SYS_TEST_RESULT_SIZE (sizeof(uint16_t)) +#define PRODUCE_PARAM_HW_CMPNT_NUM_SIZE (6) +#define PRODUCE_PARAM_REGION_CODE_SIZE (2) +#define PRODUCE_PARAM_TERM_ADDR_SIZE (2) +#define PRODUCE_PARAM_SCI_BAUDRATE_SIZE (sizeof(uint8_t)) +#define PRODUCE_PARAM_AC_PROTO_TYPE_SIZE (sizeof(uint8_t)) +#define PRODUCE_PARAM_PROT645_TYPE_SIZE (sizeof(uint8_t)) +#define PRODUCE_PARAM_LEVEL_0_CIPHER_SIZE (4) +#define PRODUCE_PARAM_LEVEL_1_CIPHER_SIZE (4) +#define PRODUCE_PARAM_LEVEL_2_CIPHER_SIZE (4) +#define PRODUCE_PARAM_ACCOUNT_NUM_SIZE (6) +#define PRODUCE_PARAM_VIRTUAL_PLANT_NUM_SIZE (6) +#define PRODUCE_PARAM_LEAK_CURRENT_FACTOR_SIZE (sizeof(uint16_t)) +#define PRODUCE_PARAM_LEAK_CURRENT_DC_ESTIMATE_SIZE (sizeof(uint16_t)) +#define PRODUCE_PARAM_STATE_GRID_ADDR_SIZE (12) +#define PRODUCE_PARAM_METER_CODE_NUM_SIZE (12) +#define PRODUCE_PARAM_LEAK_CURRENT_INTER_REFER_MA_SIZE (sizeof(uint16_t)) +#define PRODUCE_PARAM_INVERTER_MODEL_SIZE (32) +#define PRODUCE_PARAM_INVERTER_MANUFACTURER_SIZE (32) +#define PRODUCE_PARAM_SHANXI_HEIGHT_SIZE (6) +#define PRODUCE_PARAM_RATE_ACTIVE_POWER_SIZE (sizeof(uint16_t)) +#define PRODUCE_PARAM_RATE_REACTIVE_POWER_SIZE (sizeof(uint16_t)) +#define PRODUCE_PARAM_MINUTE_FREEZE_RELATED_COLUMNS_SIZE (32) + + +typedef struct +{ + uint8_t mes_code[PRODUCE_PARAM_MES_CODE_SIZE]; /* 设备MES码 */ + uint8_t product_id[PRODUCE_PARAM_PRODUCT_ID_SIZE]; /* 12位出厂编号 */ + uint16_t hb_test_result; /* 板级生产检测结果 */ + uint16_t sys_test_result; /* 工厂整机测试结果 */ + uint8_t hw_cmpnt_num[PRODUCE_PARAM_HW_CMPNT_NUM_SIZE]; /* 硬件组件号 */ + uint8_t region_code[PRODUCE_PARAM_REGION_CODE_SIZE]; /* 行政区域码 */ + uint8_t term_addr[PRODUCE_PARAM_TERM_ADDR_SIZE]; /* 终端地址 */ + uint8_t sci_baudrate; /* 对外串口波特率 */ + uint8_t ac_proto_type; /* 载波协议类型 */ + uint8_t prot645_type; /* 645协议版本 */ + uint8_t level_0_cipher[PRODUCE_PARAM_LEVEL_0_CIPHER_SIZE]; /* 0级密码 */ + uint8_t level_1_cipher[PRODUCE_PARAM_LEVEL_1_CIPHER_SIZE]; /* 1级密码 */ + uint8_t level_2_cipher[PRODUCE_PARAM_LEVEL_2_CIPHER_SIZE]; /* 2级密码 */ + uint8_t account_num[PRODUCE_PARAM_ACCOUNT_NUM_SIZE]; /* 户号 */ + uint8_t virtual_plant_num[PRODUCE_PARAM_VIRTUAL_PLANT_NUM_SIZE]; /* 虚拟电厂编号 */ + uint16_t leak_current_factor; /* 漏电流校准系数 */ + uint16_t leak_current_dc_estimate; /* 漏电流直流偏置AD值 */ + uint8_t state_grid_addr[PRODUCE_PARAM_STATE_GRID_ADDR_SIZE]; /* 国网地址 */ + uint8_t meter_code_num[PRODUCE_PARAM_METER_CODE_NUM_SIZE]; /* 表号(ESAM用) */ + uint16_t leak_current_inter_refer_mA; /* 漏电流内部参考值 */ + uint8_t inverter_model[PRODUCE_PARAM_INVERTER_MODEL_SIZE]; /* 逆变器型号 */ + uint8_t inverter_manufacturer[PRODUCE_PARAM_INVERTER_MANUFACTURER_SIZE]; /* 逆变器制造厂商 */ + uint8_t shanxi_height[PRODUCE_PARAM_SHANXI_HEIGHT_SIZE]; /* 设备海拔高度(陕西) */ + uint16_t rate_active_power; /* 额定有功功率 */ + uint16_t rate_reactive_power; /* 额定无功功率 */ + uint8_t minute_freeze_related_columns[PRODUCE_PARAM_MINUTE_FREEZE_RELATED_COLUMNS_SIZE]; /* 分钟冻结关联列 */ +} produce_param_t; + + +#endif /* ----- #ifndef __PARAM_PRODUCE_DEFINATION_H__ ----- */ diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_stable.c b/test/CBB_Param/param_code_generation/param/param_defination/param_stable.c new file mode 100644 index 0000000..916b772 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_stable.c @@ -0,0 +1,193 @@ +/* + * ===================================================================================== + * + * Filename: param_stable.c + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#include + +#include "plm_type_def.h" +#include "../param_export.h" + +#include "./param_stable.h" + + +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET +update_stable_param_t g_update_stable_param_info; /*预存参数数据缓冲区 */ +#endif + +stable_param_t g_stable_param_in_ram; /*参数ram缓冲区*/ +uint16_t g_check_stable_param_crc[STABLE_PARAM_NUM]; /*用于记录参数的校验crc结果*/ +#endif + +PARAM_CHANGE_FLAG_E g_stable_param_change_flag[STABLE_PARAM_NUM]; /*用于记录参数的修改标记*/ + +const stable_param_t STABLE_PARAM_DEFAULT_VALUE_TABLE = +{ + .work_mode_svgc = 0, //工作模式 + .work_mode_svg = 0, //补偿模式选择 + .poweron_mode = 1, //开机模式 + .power_on_delay = 15, //自动开机延时 + .power_on_time_en = 0, //定时开关机使能 + .power_on_time = {0}, //定时开机时间 + .power_off_time = {0}, //定时关机时间 + .low_power_judge_delay = 300, //低功耗判断延时 + .low_power_judge_delay_quit = 10, //退出低功耗判断延时 + .auto_reset_delay = 180, //自动复位延时 + .dsp_wd_enable = 0, //DSP看门狗复位使能 + .freeze_save_period = 5, //分钟冻结周期 + .record_frame_en = 0, //报文记录使能 + .record_frame_dir = 0, //报文记录方向 + .record_frame_port = 0, //报文记录端口 + .record_err_log_en = 0, //错误打印记录使能 + .impd_dete_en = 1, //绝缘阻值检测使能 + .fan_ctr_mode = 0, //风扇控制模式 + .leak_current_mode = 3, //漏电流模式 + .sys_discharge_start_pwr = 20, //放电起始功率 + .anti_pid_en = 0, //抗PID使能 + .anti_pid_time = 120, //抗PID启动时间 + .auto_restore_delay = 15, //自动清除故障模式 + .plc_enable = 0, //交流载波使能 + .control_enable_shanxi = 0, //逆变器控制使能 + .fan_auto_ctrl_factor = 0, //风扇自动控制因素 + .manual_fan_pwm = 95, //手动风扇占空比 + .fan_pwm_start = 35, //风扇启动占空比 + .fan_pwm_max = 100, //风扇最大占空比 + .fan_start_temp = 45, //风扇启动温度 + .fan_max_temp = 55, //风扇满速温度 + .fan_start_power = 33, //风扇启动功率(额定值%) + .fan_max_power = 67, //风扇满速功率(额定值%) + .reserve_param9_2 = 0, //幅值参考预留2 + .reserve_param9_3 = 0, //幅值参考预留3 + .reserve_param9_4 = 0, //幅值参考预留4 + .reserve_param9_5 = 0, //幅值参考预留5 + .reserve_param9_6 = 0, //幅值参考预留6 + .reserve_param9_7 = 0, //幅值参考预留7 + .impd_fault_thrd = 180, //绝缘阻值故障阈值 + .impd_detect_close_time = 1500, //绝缘检测闭合时间 + .impd_detect_open_time = 5000, //绝缘检测断开时间 + .fan_speed_fault_thrd = 2000, //风扇故障转速阈值 + .leak_cur_fault_thrd = 200, //漏电流故障阈值 + .reserve_param1_1 = 110, //阈值参考预留1 + .over_temp_time = 10, //过温判定时间 + .self_check_time = 60, //自检超时判定时间 + .insu_bus_volt_thd = 400, //绝缘检测母线电压阈值 + .insu_rly_volt_thd = 5, //绝缘检测继电器电压阈值 + .leak_current_L3_mutation_threshold_mA = 150, //漏电流3级突变触发阈值 + .leak_current_slow_threshold_mA = 0xFFFF, //漏电流缓变动作阈值 + .leak_current_slow_time_ms = 10, //漏电流缓变时间阈值 + .leak_current_L1_mutation_threshold_mA = 60, //漏电流1级突变触发阈值 + .leak_current_L2_mutation_threshold_mA = 60, //漏电流2级突变触发阈值 + .longi_device_sn = {0}, //设备ID(用于隆基主站上报) + .longi_product_id = {0}, //产品ID(用于隆基主站上报) + .shanxi_capacity = {0}, //光伏板装机容量(陕西) + .shanxi_longitude = {0}, //设备经度(陕西) + .shanxi_latitude = {0}, //设备纬度(陕西) +}; + + +const param_info_t STABLE_PARAM_INDEX_TABLE[STABLE_PARAM_NUM] = +{ + {.idx=PARA_IDX_WORK_MODE_SVGC, .identity=0x00000001, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_WORK_MODE_SVGC_SIZE, .offset=offsetof(stable_param_t, work_mode_svgc), .ratio=1, .min=0, .max=2, .check_func=NULL, .update_func=work_mode_svgc_callback,}, //工作模式 + {.idx=PARA_IDX_WORK_MODE_SVG, .identity=0x00000002, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_WORK_MODE_SVG_SIZE, .offset=offsetof(stable_param_t, work_mode_svg), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=work_mode_svg_callback,}, //补偿模式选择 + {.idx=PARA_IDX_POWERON_MODE, .identity=0x00000003, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_POWERON_MODE_SIZE, .offset=offsetof(stable_param_t, poweron_mode), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=poweron_mode_callback,}, //开机模式 + {.idx=PARA_IDX_POWER_ON_DELAY, .identity=0x00000004, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_POWER_ON_DELAY_SIZE, .offset=offsetof(stable_param_t, power_on_delay), .ratio=1, .min=0, .max=3600, .check_func=NULL, .update_func=power_on_delay_callback,}, //自动开机延时 + {.idx=PARA_IDX_POWER_ON_TIME_EN, .identity=0x00000005, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_POWER_ON_TIME_EN_SIZE, .offset=offsetof(stable_param_t, power_on_time_en), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=power_on_time_en_callback,}, //定时开关机使能 + {.idx=PARA_IDX_POWER_ON_TIME, .identity=0x00000006, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=STABLE_PARAM_POWER_ON_TIME_SIZE, .offset=offsetof(stable_param_t, power_on_time), .ratio=1, .min=0, .max=0, .check_func=time_check, .update_func=power_on_time_callback,}, //定时开机时间 + {.idx=PARA_IDX_POWER_OFF_TIME, .identity=0x00000007, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=STABLE_PARAM_POWER_OFF_TIME_SIZE, .offset=offsetof(stable_param_t, power_off_time), .ratio=1, .min=0, .max=0, .check_func=time_check, .update_func=power_off_time_callback,}, //定时关机时间 + {.idx=PARA_IDX_LOW_POWER_JUDGE_DELAY, .identity=0x00000008, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LOW_POWER_JUDGE_DELAY_SIZE, .offset=offsetof(stable_param_t, low_power_judge_delay), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=low_power_judge_delay_callback,}, //低功耗判断延时 + {.idx=PARA_IDX_LOW_POWER_JUDGE_DELAY_QUIT, .identity=0x00000009, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LOW_POWER_JUDGE_DELAY_QUIT_SIZE, .offset=offsetof(stable_param_t, low_power_judge_delay_quit), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=low_power_judge_delay_quit_callback,}, //退出低功耗判断延时 + {.idx=PARA_IDX_AUTO_RESET_DELAY, .identity=0x0000000A, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_AUTO_RESET_DELAY_SIZE, .offset=offsetof(stable_param_t, auto_reset_delay), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=auto_reset_delay_callback,}, //自动复位延时 + {.idx=PARA_IDX_DSP_WD_ENABLE, .identity=0x0000000B, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_DSP_WD_ENABLE_SIZE, .offset=offsetof(stable_param_t, dsp_wd_enable), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=dsp_wd_enable_callback,}, //DSP看门狗复位使能 + {.idx=PARA_IDX_FREEZE_SAVE_PERIOD, .identity=0x0000000C, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FREEZE_SAVE_PERIOD_SIZE, .offset=offsetof(stable_param_t, freeze_save_period), .ratio=1, .min=1, .max=15, .check_func=NULL, .update_func=freeze_save_period_callback,}, //分钟冻结周期 + {.idx=PARA_IDX_RECORD_FRAME_EN, .identity=0x0000000D, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_RECORD_FRAME_EN_SIZE, .offset=offsetof(stable_param_t, record_frame_en), .ratio=1, .min=0, .max=3, .check_func=NULL, .update_func=record_frame_en_callback,}, //报文记录使能 + {.idx=PARA_IDX_RECORD_FRAME_DIR, .identity=0x0000000E, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_RECORD_FRAME_DIR_SIZE, .offset=offsetof(stable_param_t, record_frame_dir), .ratio=1, .min=0, .max=2, .check_func=NULL, .update_func=record_frame_dir_callback,}, //报文记录方向 + {.idx=PARA_IDX_RECORD_FRAME_PORT, .identity=0x0000000F, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_RECORD_FRAME_PORT_SIZE, .offset=offsetof(stable_param_t, record_frame_port), .ratio=1, .min=0, .max=11, .check_func=NULL, .update_func=record_frame_port_callback,}, //报文记录端口 + {.idx=PARA_IDX_RECORD_ERR_LOG_EN, .identity=0x00000010, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_RECORD_ERR_LOG_EN_SIZE, .offset=offsetof(stable_param_t, record_err_log_en), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=record_err_log_en_callback,}, //错误打印记录使能 + {.idx=PARA_IDX_IMPD_DETE_EN, .identity=0x00000011, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_IMPD_DETE_EN_SIZE, .offset=offsetof(stable_param_t, impd_dete_en), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=impd_dete_en_callback,}, //绝缘阻值检测使能 + {.idx=PARA_IDX_FAN_CTR_MODE, .identity=0x00000012, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_FAN_CTR_MODE_SIZE, .offset=offsetof(stable_param_t, fan_ctr_mode), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=fan_ctr_mode_callback,}, //风扇控制模式 + {.idx=PARA_IDX_LEAK_CURRENT_MODE, .identity=0x00000013, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_LEAK_CURRENT_MODE_SIZE, .offset=offsetof(stable_param_t, leak_current_mode), .ratio=1, .min=0, .max=3, .check_func=NULL, .update_func=leak_current_mode_callback,}, //漏电流模式 + {.idx=PARA_IDX_SYS_DISCHARGE_START_PWR, .identity=0x00000014, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_SYS_DISCHARGE_START_PWR_SIZE, .offset=offsetof(stable_param_t, sys_discharge_start_pwr), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=sys_discharge_start_pwr_callback,}, //放电起始功率 + {.idx=PARA_IDX_ANTI_PID_EN, .identity=0x00000015, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_ANTI_PID_EN_SIZE, .offset=offsetof(stable_param_t, anti_pid_en), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=anti_pid_en_callback,}, //抗PID使能 + {.idx=PARA_IDX_ANTI_PID_TIME, .identity=0x00000016, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_ANTI_PID_TIME_SIZE, .offset=offsetof(stable_param_t, anti_pid_time), .ratio=1, .min=30, .max=1200, .check_func=NULL, .update_func=anti_pid_time_callback,}, //抗PID启动时间 + {.idx=PARA_IDX_AUTO_RESTORE_DELAY, .identity=0x00000017, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_AUTO_RESTORE_DELAY_SIZE, .offset=offsetof(stable_param_t, auto_restore_delay), .ratio=1, .min=0, .max=15, .check_func=NULL, .update_func=auto_restore_delay_callback,}, //自动清除故障模式 + {.idx=PARA_IDX_PLC_ENABLE, .identity=0x00000018, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_PLC_ENABLE_SIZE, .offset=offsetof(stable_param_t, plc_enable), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=plc_enable_callback,}, //交流载波使能 + {.idx=PARA_IDX_CONTROL_ENABLE_SHANXI, .identity=0x00000019, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_CONTROL_ENABLE_SHANXI_SIZE, .offset=offsetof(stable_param_t, control_enable_shanxi), .ratio=1, .min=0, .max=1, .check_func=NULL, .update_func=control_enable_shanxi_callback,}, //逆变器控制使能 + {.idx=PARA_IDX_FAN_AUTO_CTRL_FACTOR, .identity=0x0000001A, .store_type=PARAM_UINT8, .local_type=PARAM_UINT8, .size=STABLE_PARAM_FAN_AUTO_CTRL_FACTOR_SIZE, .offset=offsetof(stable_param_t, fan_auto_ctrl_factor), .ratio=1, .min=0, .max=2, .check_func=NULL, .update_func=fan_auto_ctrl_factor_callback,}, //风扇自动控制因素 + {.idx=PARA_IDX_MANUAL_FAN_PWM, .identity=0x0000001B, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_MANUAL_FAN_PWM_SIZE, .offset=offsetof(stable_param_t, manual_fan_pwm), .ratio=1, .min=0, .max=100, .check_func=NULL, .update_func=manual_fan_pwm_callback,}, //手动风扇占空比 + {.idx=PARA_IDX_FAN_PWM_START, .identity=0x0000001C, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FAN_PWM_START_SIZE, .offset=offsetof(stable_param_t, fan_pwm_start), .ratio=1, .min=10, .max=50, .check_func=NULL, .update_func=fan_pwm_start_callback,}, //风扇启动占空比 + {.idx=PARA_IDX_FAN_PWM_MAX, .identity=0x0000001D, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FAN_PWM_MAX_SIZE, .offset=offsetof(stable_param_t, fan_pwm_max), .ratio=1, .min=51, .max=100, .check_func=NULL, .update_func=fan_pwm_max_callback,}, //风扇最大占空比 + {.idx=PARA_IDX_FAN_START_TEMP, .identity=0x0000001E, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FAN_START_TEMP_SIZE, .offset=offsetof(stable_param_t, fan_start_temp), .ratio=1, .min=10, .max=150, .check_func=NULL, .update_func=fan_start_temp_callback,}, //风扇启动温度 + {.idx=PARA_IDX_FAN_MAX_TEMP, .identity=0x0000001F, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FAN_MAX_TEMP_SIZE, .offset=offsetof(stable_param_t, fan_max_temp), .ratio=1, .min=30, .max=150, .check_func=NULL, .update_func=fan_max_temp_callback,}, //风扇满速温度 + {.idx=PARA_IDX_FAN_START_POWER, .identity=0x00000020, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FAN_START_POWER_SIZE, .offset=offsetof(stable_param_t, fan_start_power), .ratio=1, .min=0, .max=100, .check_func=NULL, .update_func=fan_start_power_callback,}, //风扇启动功率(额定值%) + {.idx=PARA_IDX_FAN_MAX_POWER, .identity=0x00000021, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FAN_MAX_POWER_SIZE, .offset=offsetof(stable_param_t, fan_max_power), .ratio=1, .min=0, .max=100, .check_func=NULL, .update_func=fan_max_power_callback,}, //风扇满速功率(额定值%) + {.idx=PARA_IDX_RESERVE_PARAM9_2, .identity=0x00000022, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_RESERVE_PARAM9_2_SIZE, .offset=offsetof(stable_param_t, reserve_param9_2), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=reserve_param9_2_callback,}, //幅值参考预留2 + {.idx=PARA_IDX_RESERVE_PARAM9_3, .identity=0x00000023, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_RESERVE_PARAM9_3_SIZE, .offset=offsetof(stable_param_t, reserve_param9_3), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=reserve_param9_3_callback,}, //幅值参考预留3 + {.idx=PARA_IDX_RESERVE_PARAM9_4, .identity=0x00000024, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_RESERVE_PARAM9_4_SIZE, .offset=offsetof(stable_param_t, reserve_param9_4), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=reserve_param9_4_callback,}, //幅值参考预留4 + {.idx=PARA_IDX_RESERVE_PARAM9_5, .identity=0x00000025, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_RESERVE_PARAM9_5_SIZE, .offset=offsetof(stable_param_t, reserve_param9_5), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=reserve_param9_5_callback,}, //幅值参考预留5 + {.idx=PARA_IDX_RESERVE_PARAM9_6, .identity=0x00000026, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_RESERVE_PARAM9_6_SIZE, .offset=offsetof(stable_param_t, reserve_param9_6), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=reserve_param9_6_callback,}, //幅值参考预留6 + {.idx=PARA_IDX_RESERVE_PARAM9_7, .identity=0x00000027, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_RESERVE_PARAM9_7_SIZE, .offset=offsetof(stable_param_t, reserve_param9_7), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=reserve_param9_7_callback,}, //幅值参考预留7 + {.idx=PARA_IDX_IMPD_FAULT_THRD, .identity=0x00000028, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_IMPD_FAULT_THRD_SIZE, .offset=offsetof(stable_param_t, impd_fault_thrd), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=impd_fault_thrd_callback,}, //绝缘阻值故障阈值 + {.idx=PARA_IDX_IMPD_DETECT_CLOSE_TIME, .identity=0x00000029, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_IMPD_DETECT_CLOSE_TIME_SIZE, .offset=offsetof(stable_param_t, impd_detect_close_time), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=impd_detect_close_time_callback,}, //绝缘检测闭合时间 + {.idx=PARA_IDX_IMPD_DETECT_OPEN_TIME, .identity=0x0000002A, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_IMPD_DETECT_OPEN_TIME_SIZE, .offset=offsetof(stable_param_t, impd_detect_open_time), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=impd_detect_open_time_callback,}, //绝缘检测断开时间 + {.idx=PARA_IDX_FAN_SPEED_FAULT_THRD, .identity=0x0000002B, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_FAN_SPEED_FAULT_THRD_SIZE, .offset=offsetof(stable_param_t, fan_speed_fault_thrd), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=fan_speed_fault_thrd_callback,}, //风扇故障转速阈值 + {.idx=PARA_IDX_LEAK_CUR_FAULT_THRD, .identity=0x0000002C, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LEAK_CUR_FAULT_THRD_SIZE, .offset=offsetof(stable_param_t, leak_cur_fault_thrd), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=leak_cur_fault_thrd_callback,}, //漏电流故障阈值 + {.idx=PARA_IDX_RESERVE_PARAM1_1, .identity=0x0000002D, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_RESERVE_PARAM1_1_SIZE, .offset=offsetof(stable_param_t, reserve_param1_1), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=reserve_param1_1_callback,}, //阈值参考预留1 + {.idx=PARA_IDX_OVER_TEMP_TIME, .identity=0x0000002E, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_OVER_TEMP_TIME_SIZE, .offset=offsetof(stable_param_t, over_temp_time), .ratio=1, .min=0, .max=3600, .check_func=NULL, .update_func=over_temp_time_callback,}, //过温判定时间 + {.idx=PARA_IDX_SELF_CHECK_TIME, .identity=0x0000002F, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_SELF_CHECK_TIME_SIZE, .offset=offsetof(stable_param_t, self_check_time), .ratio=1, .min=0, .max=3600, .check_func=NULL, .update_func=self_check_time_callback,}, //自检超时判定时间 + {.idx=PARA_IDX_INSU_BUS_VOLT_THD, .identity=0x00000030, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_INSU_BUS_VOLT_THD_SIZE, .offset=offsetof(stable_param_t, insu_bus_volt_thd), .ratio=1, .min=0, .max=1200, .check_func=NULL, .update_func=insu_bus_volt_thd_callback,}, //绝缘检测母线电压阈值 + {.idx=PARA_IDX_INSU_RLY_VOLT_THD, .identity=0x00000031, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_INSU_RLY_VOLT_THD_SIZE, .offset=offsetof(stable_param_t, insu_rly_volt_thd), .ratio=1, .min=0, .max=1200, .check_func=NULL, .update_func=insu_rly_volt_thd_callback,}, //绝缘检测继电器电压阈值 + {.idx=PARA_IDX_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA, .identity=0x00000032, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA_SIZE, .offset=offsetof(stable_param_t, leak_current_L3_mutation_threshold_mA), .ratio=1, .min=30, .max=300, .check_func=NULL, .update_func=leak_current_L3_mutation_threshold_mA_callback,}, //漏电流3级突变触发阈值 + {.idx=PARA_IDX_LEAK_CURRENT_SLOW_THRESHOLD_MA, .identity=0x00000033, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LEAK_CURRENT_SLOW_THRESHOLD_MA_SIZE, .offset=offsetof(stable_param_t, leak_current_slow_threshold_mA), .ratio=1, .min=30, .max=700, .check_func=NULL, .update_func=leak_current_slow_threshold_mA_callback,}, //漏电流缓变动作阈值 + {.idx=PARA_IDX_LEAK_CURRENT_SLOW_TIME_MS, .identity=0x00000034, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LEAK_CURRENT_SLOW_TIME_MS_SIZE, .offset=offsetof(stable_param_t, leak_current_slow_time_ms), .ratio=1, .min=0, .max=100, .check_func=NULL, .update_func=leak_current_slow_time_ms_callback,}, //漏电流缓变时间阈值 + {.idx=PARA_IDX_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA, .identity=0x00000035, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA_SIZE, .offset=offsetof(stable_param_t, leak_current_L1_mutation_threshold_mA), .ratio=1, .min=20, .max=300, .check_func=NULL, .update_func=leak_current_L1_mutation_threshold_mA_callback,}, //漏电流1级突变触发阈值 + {.idx=PARA_IDX_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA, .identity=0x00000036, .store_type=PARAM_UINT16, .local_type=PARAM_UINT16, .size=STABLE_PARAM_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA_SIZE, .offset=offsetof(stable_param_t, leak_current_L2_mutation_threshold_mA), .ratio=1, .min=20, .max=300, .check_func=NULL, .update_func=leak_current_L2_mutation_threshold_mA_callback,}, //漏电流2级突变触发阈值 + {.idx=PARA_IDX_LONGI_DEVICE_SN, .identity=0x00000037, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=STABLE_PARAM_LONGI_DEVICE_SN_SIZE, .offset=offsetof(stable_param_t, longi_device_sn), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=longi_device_sn_callback,}, //设备ID(用于隆基主站上报) + {.idx=PARA_IDX_LONGI_PRODUCT_ID, .identity=0x00000038, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=STABLE_PARAM_LONGI_PRODUCT_ID_SIZE, .offset=offsetof(stable_param_t, longi_product_id), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=longi_product_id_callback,}, //产品ID(用于隆基主站上报) + {.idx=PARA_IDX_SHANXI_CAPACITY, .identity=0x00000039, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=STABLE_PARAM_SHANXI_CAPACITY_SIZE, .offset=offsetof(stable_param_t, shanxi_capacity), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=shanxi_capacity_callback,}, //光伏板装机容量(陕西) + {.idx=PARA_IDX_SHANXI_LONGITUDE, .identity=0x0000003A, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=STABLE_PARAM_SHANXI_LONGITUDE_SIZE, .offset=offsetof(stable_param_t, shanxi_longitude), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=shanxi_longitude_callback,}, //设备经度(陕西) + {.idx=PARA_IDX_SHANXI_LATITUDE, .identity=0x0000003B, .store_type=PARAM_ARRAY, .local_type=PARAM_ARRAY, .size=STABLE_PARAM_SHANXI_LATITUDE_SIZE, .offset=offsetof(stable_param_t, shanxi_latitude), .ratio=1, .min=0, .max=0, .check_func=NULL, .update_func=shanxi_latitude_callback,}, //设备纬度(陕西) +}; + + + + +param_info_table_t STABLE_PARAM_INFO = +{ +#if ENABLE_PARAM_MUTEX + .ptr_mutex = &g_param_resouce.param_mutex, +#endif + .ptr_category_name = STABLE_REGION_NAME, + .ptr_default_value_table = (void*)&STABLE_PARAM_DEFAULT_VALUE_TABLE, //默认参数值 + .ptr_index_table = (void*)STABLE_PARAM_INDEX_TABLE, //参数索引表 + .param_num = STABLE_PARAM_NUM, //参数个数 + .param_data_size = STABLE_PARAM_STORAGE_SIZE, //数据长度 + .param_base_addr = STABLE_PARAM_STORE_ADDR, //参数存储页地址 +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET + .ptr_preset_dataset = (void*)&g_update_stable_param_info.preset_table,//预设参数表 +#endif + .ptr_param_in_ram = (void*)&g_stable_param_in_ram, //参数ram缓冲区 + .ptr_crc_in_ram = g_check_stable_param_crc, //参数crc校验值 +#endif + .ptr_change_flag = g_stable_param_change_flag, //参数变更标记 + .backup_offset = 1024, //备份之间的偏移 + .idx_min = PARA_IDX_WORK_MODE_SVGC, //参数索引最小值 + .idx_max = PARA_IDX_SHANXI_LATITUDE, //参数索引最大值 + .ptr_exchange_unit = &g_param_resouce.ptr_param_unit_buff, //参数写入缓冲区 + .exchange_size = 1024, //按页写入的缓冲区的大小 +}; + diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_stable.h b/test/CBB_Param/param_code_generation/param/param_defination/param_stable.h new file mode 100644 index 0000000..180e763 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_stable.h @@ -0,0 +1,106 @@ +/* + * ===================================================================================== + * + * Filename: param_stable.h + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#ifndef __PARAM_STABLE_H__ +#define __PARAM_STABLE_H__ + +#include + +#include "./param_config.h" +#include "../param_functional/param_block.h" +#include "./param_stable_defination.h" + +#define STABLE_PARAM_STORE_ADDR (0) + + +#define STABLE_PARAM_WORK_MODE_SVGC_OFFSET 0 +#define STABLE_PARAM_WORK_MODE_SVG_OFFSET (STABLE_PARAM_WORK_MODE_SVGC_OFFSET + STABLE_PARAM_WORK_MODE_SVGC_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_POWERON_MODE_OFFSET (STABLE_PARAM_WORK_MODE_SVG_OFFSET + STABLE_PARAM_WORK_MODE_SVG_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_POWER_ON_DELAY_OFFSET (STABLE_PARAM_POWERON_MODE_OFFSET + STABLE_PARAM_POWERON_MODE_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_POWER_ON_TIME_EN_OFFSET (STABLE_PARAM_POWER_ON_DELAY_OFFSET + STABLE_PARAM_POWER_ON_DELAY_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_POWER_ON_TIME_OFFSET (STABLE_PARAM_POWER_ON_TIME_EN_OFFSET + STABLE_PARAM_POWER_ON_TIME_EN_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_POWER_OFF_TIME_OFFSET (STABLE_PARAM_POWER_ON_TIME_OFFSET + STABLE_PARAM_POWER_ON_TIME_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LOW_POWER_JUDGE_DELAY_OFFSET (STABLE_PARAM_POWER_OFF_TIME_OFFSET + STABLE_PARAM_POWER_OFF_TIME_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LOW_POWER_JUDGE_DELAY_QUIT_OFFSET (STABLE_PARAM_LOW_POWER_JUDGE_DELAY_OFFSET + STABLE_PARAM_LOW_POWER_JUDGE_DELAY_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_AUTO_RESET_DELAY_OFFSET (STABLE_PARAM_LOW_POWER_JUDGE_DELAY_QUIT_OFFSET + STABLE_PARAM_LOW_POWER_JUDGE_DELAY_QUIT_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_DSP_WD_ENABLE_OFFSET (STABLE_PARAM_AUTO_RESET_DELAY_OFFSET + STABLE_PARAM_AUTO_RESET_DELAY_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FREEZE_SAVE_PERIOD_OFFSET (STABLE_PARAM_DSP_WD_ENABLE_OFFSET + STABLE_PARAM_DSP_WD_ENABLE_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RECORD_FRAME_EN_OFFSET (STABLE_PARAM_FREEZE_SAVE_PERIOD_OFFSET + STABLE_PARAM_FREEZE_SAVE_PERIOD_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RECORD_FRAME_DIR_OFFSET (STABLE_PARAM_RECORD_FRAME_EN_OFFSET + STABLE_PARAM_RECORD_FRAME_EN_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RECORD_FRAME_PORT_OFFSET (STABLE_PARAM_RECORD_FRAME_DIR_OFFSET + STABLE_PARAM_RECORD_FRAME_DIR_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RECORD_ERR_LOG_EN_OFFSET (STABLE_PARAM_RECORD_FRAME_PORT_OFFSET + STABLE_PARAM_RECORD_FRAME_PORT_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_IMPD_DETE_EN_OFFSET (STABLE_PARAM_RECORD_ERR_LOG_EN_OFFSET + STABLE_PARAM_RECORD_ERR_LOG_EN_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_CTR_MODE_OFFSET (STABLE_PARAM_IMPD_DETE_EN_OFFSET + STABLE_PARAM_IMPD_DETE_EN_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LEAK_CURRENT_MODE_OFFSET (STABLE_PARAM_FAN_CTR_MODE_OFFSET + STABLE_PARAM_FAN_CTR_MODE_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_SYS_DISCHARGE_START_PWR_OFFSET (STABLE_PARAM_LEAK_CURRENT_MODE_OFFSET + STABLE_PARAM_LEAK_CURRENT_MODE_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_ANTI_PID_EN_OFFSET (STABLE_PARAM_SYS_DISCHARGE_START_PWR_OFFSET + STABLE_PARAM_SYS_DISCHARGE_START_PWR_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_ANTI_PID_TIME_OFFSET (STABLE_PARAM_ANTI_PID_EN_OFFSET + STABLE_PARAM_ANTI_PID_EN_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_AUTO_RESTORE_DELAY_OFFSET (STABLE_PARAM_ANTI_PID_TIME_OFFSET + STABLE_PARAM_ANTI_PID_TIME_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_PLC_ENABLE_OFFSET (STABLE_PARAM_AUTO_RESTORE_DELAY_OFFSET + STABLE_PARAM_AUTO_RESTORE_DELAY_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_CONTROL_ENABLE_SHANXI_OFFSET (STABLE_PARAM_PLC_ENABLE_OFFSET + STABLE_PARAM_PLC_ENABLE_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_AUTO_CTRL_FACTOR_OFFSET (STABLE_PARAM_CONTROL_ENABLE_SHANXI_OFFSET + STABLE_PARAM_CONTROL_ENABLE_SHANXI_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_MANUAL_FAN_PWM_OFFSET (STABLE_PARAM_FAN_AUTO_CTRL_FACTOR_OFFSET + STABLE_PARAM_FAN_AUTO_CTRL_FACTOR_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_PWM_START_OFFSET (STABLE_PARAM_MANUAL_FAN_PWM_OFFSET + STABLE_PARAM_MANUAL_FAN_PWM_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_PWM_MAX_OFFSET (STABLE_PARAM_FAN_PWM_START_OFFSET + STABLE_PARAM_FAN_PWM_START_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_START_TEMP_OFFSET (STABLE_PARAM_FAN_PWM_MAX_OFFSET + STABLE_PARAM_FAN_PWM_MAX_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_MAX_TEMP_OFFSET (STABLE_PARAM_FAN_START_TEMP_OFFSET + STABLE_PARAM_FAN_START_TEMP_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_START_POWER_OFFSET (STABLE_PARAM_FAN_MAX_TEMP_OFFSET + STABLE_PARAM_FAN_MAX_TEMP_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_MAX_POWER_OFFSET (STABLE_PARAM_FAN_START_POWER_OFFSET + STABLE_PARAM_FAN_START_POWER_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RESERVE_PARAM9_2_OFFSET (STABLE_PARAM_FAN_MAX_POWER_OFFSET + STABLE_PARAM_FAN_MAX_POWER_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RESERVE_PARAM9_3_OFFSET (STABLE_PARAM_RESERVE_PARAM9_2_OFFSET + STABLE_PARAM_RESERVE_PARAM9_2_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RESERVE_PARAM9_4_OFFSET (STABLE_PARAM_RESERVE_PARAM9_3_OFFSET + STABLE_PARAM_RESERVE_PARAM9_3_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RESERVE_PARAM9_5_OFFSET (STABLE_PARAM_RESERVE_PARAM9_4_OFFSET + STABLE_PARAM_RESERVE_PARAM9_4_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RESERVE_PARAM9_6_OFFSET (STABLE_PARAM_RESERVE_PARAM9_5_OFFSET + STABLE_PARAM_RESERVE_PARAM9_5_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RESERVE_PARAM9_7_OFFSET (STABLE_PARAM_RESERVE_PARAM9_6_OFFSET + STABLE_PARAM_RESERVE_PARAM9_6_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_IMPD_FAULT_THRD_OFFSET (STABLE_PARAM_RESERVE_PARAM9_7_OFFSET + STABLE_PARAM_RESERVE_PARAM9_7_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_IMPD_DETECT_CLOSE_TIME_OFFSET (STABLE_PARAM_IMPD_FAULT_THRD_OFFSET + STABLE_PARAM_IMPD_FAULT_THRD_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_IMPD_DETECT_OPEN_TIME_OFFSET (STABLE_PARAM_IMPD_DETECT_CLOSE_TIME_OFFSET + STABLE_PARAM_IMPD_DETECT_CLOSE_TIME_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_FAN_SPEED_FAULT_THRD_OFFSET (STABLE_PARAM_IMPD_DETECT_OPEN_TIME_OFFSET + STABLE_PARAM_IMPD_DETECT_OPEN_TIME_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LEAK_CUR_FAULT_THRD_OFFSET (STABLE_PARAM_FAN_SPEED_FAULT_THRD_OFFSET + STABLE_PARAM_FAN_SPEED_FAULT_THRD_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_RESERVE_PARAM1_1_OFFSET (STABLE_PARAM_LEAK_CUR_FAULT_THRD_OFFSET + STABLE_PARAM_LEAK_CUR_FAULT_THRD_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_OVER_TEMP_TIME_OFFSET (STABLE_PARAM_RESERVE_PARAM1_1_OFFSET + STABLE_PARAM_RESERVE_PARAM1_1_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_SELF_CHECK_TIME_OFFSET (STABLE_PARAM_OVER_TEMP_TIME_OFFSET + STABLE_PARAM_OVER_TEMP_TIME_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_INSU_BUS_VOLT_THD_OFFSET (STABLE_PARAM_SELF_CHECK_TIME_OFFSET + STABLE_PARAM_SELF_CHECK_TIME_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_INSU_RLY_VOLT_THD_OFFSET (STABLE_PARAM_INSU_BUS_VOLT_THD_OFFSET + STABLE_PARAM_INSU_BUS_VOLT_THD_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA_OFFSET (STABLE_PARAM_INSU_RLY_VOLT_THD_OFFSET + STABLE_PARAM_INSU_RLY_VOLT_THD_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LEAK_CURRENT_SLOW_THRESHOLD_MA_OFFSET (STABLE_PARAM_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA_OFFSET + STABLE_PARAM_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LEAK_CURRENT_SLOW_TIME_MS_OFFSET (STABLE_PARAM_LEAK_CURRENT_SLOW_THRESHOLD_MA_OFFSET + STABLE_PARAM_LEAK_CURRENT_SLOW_THRESHOLD_MA_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA_OFFSET (STABLE_PARAM_LEAK_CURRENT_SLOW_TIME_MS_OFFSET + STABLE_PARAM_LEAK_CURRENT_SLOW_TIME_MS_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA_OFFSET (STABLE_PARAM_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA_OFFSET + STABLE_PARAM_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LONGI_DEVICE_SN_OFFSET (STABLE_PARAM_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA_OFFSET + STABLE_PARAM_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_LONGI_PRODUCT_ID_OFFSET (STABLE_PARAM_LONGI_DEVICE_SN_OFFSET + STABLE_PARAM_LONGI_DEVICE_SN_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_SHANXI_CAPACITY_OFFSET (STABLE_PARAM_LONGI_PRODUCT_ID_OFFSET + STABLE_PARAM_LONGI_PRODUCT_ID_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_SHANXI_LONGITUDE_OFFSET (STABLE_PARAM_SHANXI_CAPACITY_OFFSET + STABLE_PARAM_SHANXI_CAPACITY_SIZE + PARAM_INFO_SIZE) +#define STABLE_PARAM_SHANXI_LATITUDE_OFFSET (STABLE_PARAM_SHANXI_LONGITUDE_OFFSET + STABLE_PARAM_SHANXI_LONGITUDE_SIZE + PARAM_INFO_SIZE) + +#define STABLE_PARAM_STORAGE_SIZE (STABLE_PARAM_SHANXI_LATITUDE_OFFSET + STABLE_PARAM_SHANXI_LATITUDE_SIZE + PARAM_INFO_SIZE) + + + +#if ENABLE_PARAM_IN_RAM +#if ENABLE_PARAM_PRESET +typedef struct +{ + stable_param_t preset_table; +} update_stable_param_t; +#endif +#endif + +extern param_info_table_t STABLE_PARAM_INFO; + +#endif /* ----- #ifndef __PARAM_STABLE_H__ ----- */ diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_stable_defination.h b/test/CBB_Param/param_code_generation/param/param_defination/param_stable_defination.h new file mode 100644 index 0000000..d745aa8 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_stable_defination.h @@ -0,0 +1,154 @@ +/* + * ===================================================================================== + * + * Filename: param_stable_defination.h + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#ifndef __PARAM_STABLE_DEFINATION_H__ +#define __PARAM_STABLE_DEFINATION_H__ + +#include +#include + + +#define STABLE_PARAM_NUM (59) + + +#define STABLE_PARAM_WORK_MODE_SVGC_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_WORK_MODE_SVG_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_POWERON_MODE_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_POWER_ON_DELAY_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_POWER_ON_TIME_EN_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_POWER_ON_TIME_SIZE (6) +#define STABLE_PARAM_POWER_OFF_TIME_SIZE (6) +#define STABLE_PARAM_LOW_POWER_JUDGE_DELAY_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LOW_POWER_JUDGE_DELAY_QUIT_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_AUTO_RESET_DELAY_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_DSP_WD_ENABLE_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_FREEZE_SAVE_PERIOD_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RECORD_FRAME_EN_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_RECORD_FRAME_DIR_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_RECORD_FRAME_PORT_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_RECORD_ERR_LOG_EN_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_IMPD_DETE_EN_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_FAN_CTR_MODE_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_LEAK_CURRENT_MODE_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_SYS_DISCHARGE_START_PWR_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_ANTI_PID_EN_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_ANTI_PID_TIME_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_AUTO_RESTORE_DELAY_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_PLC_ENABLE_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_CONTROL_ENABLE_SHANXI_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_AUTO_CTRL_FACTOR_SIZE (sizeof(uint8_t)) +#define STABLE_PARAM_MANUAL_FAN_PWM_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_PWM_START_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_PWM_MAX_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_START_TEMP_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_MAX_TEMP_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_START_POWER_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_MAX_POWER_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RESERVE_PARAM9_2_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RESERVE_PARAM9_3_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RESERVE_PARAM9_4_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RESERVE_PARAM9_5_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RESERVE_PARAM9_6_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RESERVE_PARAM9_7_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_IMPD_FAULT_THRD_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_IMPD_DETECT_CLOSE_TIME_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_IMPD_DETECT_OPEN_TIME_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_FAN_SPEED_FAULT_THRD_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LEAK_CUR_FAULT_THRD_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_RESERVE_PARAM1_1_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_OVER_TEMP_TIME_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_SELF_CHECK_TIME_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_INSU_BUS_VOLT_THD_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_INSU_RLY_VOLT_THD_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LEAK_CURRENT_SLOW_THRESHOLD_MA_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LEAK_CURRENT_SLOW_TIME_MS_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA_SIZE (sizeof(uint16_t)) +#define STABLE_PARAM_LONGI_DEVICE_SN_SIZE (64) +#define STABLE_PARAM_LONGI_PRODUCT_ID_SIZE (64) +#define STABLE_PARAM_SHANXI_CAPACITY_SIZE (4) +#define STABLE_PARAM_SHANXI_LONGITUDE_SIZE (10) +#define STABLE_PARAM_SHANXI_LATITUDE_SIZE (8) + + +typedef struct +{ + uint8_t work_mode_svgc; /* 工作模式 */ + uint8_t work_mode_svg; /* 补偿模式选择 */ + uint8_t poweron_mode; /* 开机模式 */ + uint16_t power_on_delay; /* 自动开机延时 */ + uint8_t power_on_time_en; /* 定时开关机使能 */ + uint8_t power_on_time[STABLE_PARAM_POWER_ON_TIME_SIZE]; /* 定时开机时间 */ + uint8_t power_off_time[STABLE_PARAM_POWER_OFF_TIME_SIZE]; /* 定时关机时间 */ + uint16_t low_power_judge_delay; /* 低功耗判断延时 */ + uint16_t low_power_judge_delay_quit; /* 退出低功耗判断延时 */ + uint16_t auto_reset_delay; /* 自动复位延时 */ + uint8_t dsp_wd_enable; /* DSP看门狗复位使能 */ + uint16_t freeze_save_period; /* 分钟冻结周期 */ + uint8_t record_frame_en; /* 报文记录使能 */ + uint8_t record_frame_dir; /* 报文记录方向 */ + uint8_t record_frame_port; /* 报文记录端口 */ + uint8_t record_err_log_en; /* 错误打印记录使能 */ + uint8_t impd_dete_en; /* 绝缘阻值检测使能 */ + uint8_t fan_ctr_mode; /* 风扇控制模式 */ + uint8_t leak_current_mode; /* 漏电流模式 */ + uint16_t sys_discharge_start_pwr; /* 放电起始功率 */ + uint8_t anti_pid_en; /* 抗PID使能 */ + uint16_t anti_pid_time; /* 抗PID启动时间 */ + uint16_t auto_restore_delay; /* 自动清除故障模式 */ + uint16_t plc_enable; /* 交流载波使能 */ + uint16_t control_enable_shanxi; /* 逆变器控制使能 */ + uint8_t fan_auto_ctrl_factor; /* 风扇自动控制因素 */ + uint16_t manual_fan_pwm; /* 手动风扇占空比 */ + uint16_t fan_pwm_start; /* 风扇启动占空比 */ + uint16_t fan_pwm_max; /* 风扇最大占空比 */ + uint16_t fan_start_temp; /* 风扇启动温度 */ + uint16_t fan_max_temp; /* 风扇满速温度 */ + uint16_t fan_start_power; /* 风扇启动功率(额定值%) */ + uint16_t fan_max_power; /* 风扇满速功率(额定值%) */ + uint16_t reserve_param9_2; /* 幅值参考预留2 */ + uint16_t reserve_param9_3; /* 幅值参考预留3 */ + uint16_t reserve_param9_4; /* 幅值参考预留4 */ + uint16_t reserve_param9_5; /* 幅值参考预留5 */ + uint16_t reserve_param9_6; /* 幅值参考预留6 */ + uint16_t reserve_param9_7; /* 幅值参考预留7 */ + uint16_t impd_fault_thrd; /* 绝缘阻值故障阈值 */ + uint16_t impd_detect_close_time; /* 绝缘检测闭合时间 */ + uint16_t impd_detect_open_time; /* 绝缘检测断开时间 */ + uint16_t fan_speed_fault_thrd; /* 风扇故障转速阈值 */ + uint16_t leak_cur_fault_thrd; /* 漏电流故障阈值 */ + uint16_t reserve_param1_1; /* 阈值参考预留1 */ + uint16_t over_temp_time; /* 过温判定时间 */ + uint16_t self_check_time; /* 自检超时判定时间 */ + uint16_t insu_bus_volt_thd; /* 绝缘检测母线电压阈值 */ + uint16_t insu_rly_volt_thd; /* 绝缘检测继电器电压阈值 */ + uint16_t leak_current_L3_mutation_threshold_mA; /* 漏电流3级突变触发阈值 */ + uint16_t leak_current_slow_threshold_mA; /* 漏电流缓变动作阈值 */ + uint16_t leak_current_slow_time_ms; /* 漏电流缓变时间阈值 */ + uint16_t leak_current_L1_mutation_threshold_mA; /* 漏电流1级突变触发阈值 */ + uint16_t leak_current_L2_mutation_threshold_mA; /* 漏电流2级突变触发阈值 */ + uint8_t longi_device_sn[STABLE_PARAM_LONGI_DEVICE_SN_SIZE]; /* 设备ID(用于隆基主站上报) */ + uint8_t longi_product_id[STABLE_PARAM_LONGI_PRODUCT_ID_SIZE]; /* 产品ID(用于隆基主站上报) */ + uint8_t shanxi_capacity[STABLE_PARAM_SHANXI_CAPACITY_SIZE]; /* 光伏板装机容量(陕西) */ + uint8_t shanxi_longitude[STABLE_PARAM_SHANXI_LONGITUDE_SIZE]; /* 设备经度(陕西) */ + uint8_t shanxi_latitude[STABLE_PARAM_SHANXI_LATITUDE_SIZE]; /* 设备纬度(陕西) */ +} stable_param_t; + + +#endif /* ----- #ifndef __PARAM_STABLE_DEFINATION_H__ ----- */ diff --git a/test/CBB_Param/param_code_generation/param/param_defination/param_storage_config.c b/test/CBB_Param/param_code_generation/param/param_defination/param_storage_config.c new file mode 100644 index 0000000..4a1aa27 --- /dev/null +++ b/test/CBB_Param/param_code_generation/param/param_defination/param_storage_config.c @@ -0,0 +1,100 @@ +/* + * ===================================================================================== + * + * Filename: param_storage_config.c + * + * Description: + * + * Version: 1.0 + * Created: 26/10/2024 17:20:06 + * Revision: none + * Compiler: gcc + * + * Author: Autogenerated + * Organization: Topscomm + * + * ===================================================================================== + */ + +#include "../param_storage/norflash_operation.h" +#include "../param_storage/eeprom_operation.h" +#include "../param_storage/file_system_operation.h" +#include "../param_storage/param_storage.h" + +#if FILE_SYSTEM_EXIST +const char g_param_file_path_prefix[FILE_NAME_MAX_LEN]="None"; /*存放参数文件的路径前缀*/ + +#define FILE_MAX_LEN (1024*3) /*文件最大长度*/ +#endif + +/* ##### VARIABLES - LOCAL TO THIS SOURCE FILE ################################ */ + + +static const storage_info_t all_storage_info_table[PARAM_CATEGORY_MAX] = +{ + /* STABLE */ + { + .ptr_name = STABLE_REGION_NAME, + .region = STABLE_PARAM, + #if FILE_SYSTEM_EXIST + .max_addr = 0+FILE_MAX_LEN - 1, + .min_addr = 0, + #else + .max_addr = 0+1024*3 - 1, + .min_addr = 0, + #endif + + .storage_read = norflash_read, + .storage_write = norflash_write, + .storage_clean = norflash_clean, + }, + /* COMM */ + { + .ptr_name = COMM_REGION_NAME, + .region = COMM_PARAM, + #if FILE_SYSTEM_EXIST + .max_addr = 0+FILE_MAX_LEN - 1, + .min_addr = 0, + #else + .max_addr = 4096+1024*3 - 1, + .min_addr = 4096, + #endif + + .storage_read = norflash_read, + .storage_write = norflash_write, + .storage_clean = norflash_clean, + }, + /* PRODUCE */ + { + .ptr_name = PRODUCE_REGION_NAME, + .region = PRODUCE_PARAM, + #if FILE_SYSTEM_EXIST + .max_addr = 0+FILE_MAX_LEN - 1, + .min_addr = 0, + #else + .max_addr = 8192+1024*3 - 1, + .min_addr = 8192, + #endif + + .storage_read = norflash_read, + .storage_write = norflash_write, + .storage_clean = norflash_clean, + }, + +}; + + +/* ##### FUNCTION DEFINITIONS - EXPORTED FUNCTIONS ############################ */ + + +/* + * === FUNCTION ====================================================================== + * Name: param_storage_get_info_table + * Description: 获取所有存储区域的汇总表,用于对存储区域进行检索 + * ===================================================================================== + */ +const storage_info_t* param_storage_get_info_table() +{ + return &all_storage_info_table[0]; +} /* ----- end of function param_storage_get_info_table ----- */ + diff --git a/test/CBB_Param/param_input.xlsx b/test/CBB_Param/param_input.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bbe490d0e589e3acc3a195012bbc3d7c2ad73fb2 GIT binary patch literal 30053 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 +#include "project.h" +#include "mw_param_manager_arm_struct.h" + + + + +const modbus_param_value_info_t s_ast_param_range[MAX_VALID_PARAM_ADDRESS + 1] = +{ + /*address, datatype, default_value, min_value, max_value*/ + {0, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {1, DATATYPE_UINT16_T, 0, 0, 65535, }, /*设备MES码*/ + {2, DATATYPE_UINT16_T, 0, 0, 65535, }, /*设备MES码*/ + {3, DATATYPE_UINT16_T, 0, 0, 65535, }, /*设备MES码*/ + {4, DATATYPE_UINT16_T, 0, 0, 65535, }, /*设备MES码*/ + {5, DATATYPE_UINT16_T, 0, 0, 65535, }, /*12位出厂编号*/ + {6, DATATYPE_UINT16_T, 0, 0, 65535, }, /*12位出厂编号*/ + {7, DATATYPE_UINT16_T, 1, 0, 65535, }, /*12位出厂编号*/ + {8, DATATYPE_UINT16_T, 0, 0, 65535, }, /*板级生产检测结果*/ + {9, DATATYPE_UINT16_T, 0, 0, 1, }, /*工厂整机测试结果*/ + {10, DATATYPE_UINT16_T, 0, 0, 65535, }, /*硬件组件号*/ + {11, DATATYPE_UINT16_T, 0, 0, 65535, }, /*硬件组件号*/ + {12, DATATYPE_UINT16_T, 0, 0, 65535, }, /*硬件组件号*/ + {13, DATATYPE_UINT16_T, 0, 0, 65535, }, /*行政区域码*/ + {14, DATATYPE_UINT16_T, 0, 0, 65535, }, /*终端地址*/ + {15, DATATYPE_UINT16_T, 0, 0, 3, }, /*对外串口波特率*/ + {16, DATATYPE_UINT16_T, 0, 0, 1, }, /*载波协议类型*/ + {17, DATATYPE_UINT16_T, 0, 0, 1, }, /*645协议版本*/ + {18, DATATYPE_UINT16_T, 0, 0, 65535, }, /*0级密码*/ + {19, DATATYPE_UINT16_T, 0, 0, 65535, }, /*0级密码*/ + {20, DATATYPE_UINT16_T, 0, 0, 65535, }, /*1级密码*/ + {21, DATATYPE_UINT16_T, 0, 0, 65535, }, /*1级密码*/ + {22, DATATYPE_UINT16_T, 0, 0, 65535, }, /*2级密码*/ + {23, DATATYPE_UINT16_T, 0, 0, 65535, }, /*2级密码*/ + {24, DATATYPE_UINT16_T, 0, 0, 65535, }, /*户号*/ + {25, DATATYPE_UINT16_T, 0, 0, 65535, }, /*户号*/ + {26, DATATYPE_UINT16_T, 0, 0, 65535, }, /*户号*/ + {27, DATATYPE_UINT16_T, 0, 0, 65535, }, /*虚拟电厂编号*/ + {28, DATATYPE_UINT16_T, 0, 0, 65535, }, /*虚拟电厂编号*/ + {29, DATATYPE_UINT16_T, 0, 0, 65535, }, /*虚拟电厂编号*/ + {30, DATATYPE_UINT16_T, 2028, 1800, 2200, }, /*漏电流直流偏置AD值*/ + {31, DATATYPE_UINT16_T, 6250, 1, 65535, }, /*漏电流校准系数*/ + {32, DATATYPE_UINT16_T, 0, 0, 65535, }, /*国网地址*/ + {33, DATATYPE_UINT16_T, 0, 0, 65535, }, /*国网地址*/ + {34, DATATYPE_UINT16_T, 0, 0, 65535, }, /*国网地址*/ + {35, DATATYPE_UINT16_T, 0, 0, 65535, }, /*国网地址*/ + {36, DATATYPE_UINT16_T, 0, 0, 65535, }, /*国网地址*/ + {37, DATATYPE_UINT16_T, 0, 0, 65535, }, /*国网地址*/ + {38, DATATYPE_UINT16_T, 0, 0, 65535, }, /*表号(ESAM用)*/ + {39, DATATYPE_UINT16_T, 0, 0, 65535, }, /*表号(ESAM用)*/ + {40, DATATYPE_UINT16_T, 0, 0, 65535, }, /*表号(ESAM用)*/ + {41, DATATYPE_UINT16_T, 0, 0, 65535, }, /*表号(ESAM用)*/ + {42, DATATYPE_UINT16_T, 0, 0, 65535, }, /*表号(ESAM用)*/ + {43, DATATYPE_UINT16_T, 0, 0, 65535, }, /*表号(ESAM用)*/ +#if defined(PV_INV30) + {44, DATATYPE_UINT16_T, 50, 0, 300, }, /*漏电流内部参考值*/ +#elif defined(PV_INV40) + {44, DATATYPE_UINT16_T, 65, 0, 300, }, /*漏电流内部参考值*/ +#elif defined(PV_INV50) + {44, DATATYPE_UINT16_T, 65, 0, 300, }, /*漏电流内部参考值*/ +#else + {44, DATATYPE_UINT16_T, 0, 0, 0 }, /*漏电流内部参考值*/ +#endif + {45, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {46, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {47, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {48, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {49, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {50, DATATYPE_UINT16_T, 0, 0, 1, }, /*设备开机*/ + {51, DATATYPE_UINT16_T, 0, 0, 1, }, /*设备关机*/ + {52, DATATYPE_UINT16_T, 0, 0, 1, }, /*故障复位*/ + {53, DATATYPE_UINT16_T, 0, 0, 1, }, /*解锁特殊操作*/ + {54, DATATYPE_UINT16_T, 0, 0, 1, }, /*设备重启*/ + {55, DATATYPE_UINT16_T, 0, 0, 1, }, /*功率单元自检(调试)*/ + {56, DATATYPE_UINT16_T, 0, 0, 1, }, /*功率单元重启*/ + {57, DATATYPE_UINT16_T, 0, 0, 1, }, /*功率单元强制复位*/ + {58, DATATYPE_UINT16_T, 0, 0, 1, }, /*参数还原*/ + {59, DATATYPE_UINT16_T, 0, 0, 1, }, /*复位4G*/ + {60, DATATYPE_UINT16_T, 0, 0, 1, }, /*直流载波复位*/ + {61, DATATYPE_UINT16_T, 0, 0, 1, }, /*交流载波复位*/ + {62, DATATYPE_UINT16_T, 0, 0, 1, }, /*手动录波*/ + {63, DATATYPE_UINT16_T, 0, 0, 1, }, /*所有记录数据擦除*/ + {64, DATATYPE_UINT16_T, 0, 0, 1, }, /*录波擦除*/ + {65, DATATYPE_UINT16_T, 0, 0, 1, }, /*事件擦除*/ + {66, DATATYPE_UINT16_T, 0, 0, 1, }, /*日志记录擦除*/ + {67, DATATYPE_UINT16_T, 0, 0, 1, }, /*分钟冻结数据擦除*/ + {68, DATATYPE_UINT16_T, 0, 0, 1, }, /*日冻结数据擦除*/ + {69, DATATYPE_UINT16_T, 0, 0, 1, }, /*月冻结数据擦除*/ + {70, DATATYPE_UINT16_T, 0, 0, 1, }, /*年冻结数据擦除*/ + {71, DATATYPE_UINT16_T, 0, 0, 1, }, /*报文记录数据擦除*/ + {72, DATATYPE_UINT16_T, 0, 0, 1, }, /*操作记录数据擦除*/ + {73, DATATYPE_UINT16_T, 0, 0, 1, }, /*电量记录数据擦除*/ + {74, DATATYPE_UINT16_T, 0, 0, 1, }, /*打印开关*/ + {75, DATATYPE_UINT16_T, 0, 0, 1, }, /*漏电流校准直流量(按钮)*/ + {76, DATATYPE_UINT16_T, 0, 0, 1, }, /*漏电流校准系数(按钮)*/ + {77, DATATYPE_UINT16_T, 0, 0, 1, }, /*漏电流自检(按钮)*/ + {78, DATATYPE_UINT16_T, 0, 0, 1, }, /*恢复出厂设置*/ + {79, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {80, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {81, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {82, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {83, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {84, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {85, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {86, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {87, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {88, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {89, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {90, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {91, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {92, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {93, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {94, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {95, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {96, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {97, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {98, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {99, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {100, DATATYPE_UINT16_T, 0, 0, 2, }, /*工作模式*/ + {101, DATATYPE_UINT16_T, 0, 0, 1, }, /*补偿模式选择*/ + {102, DATATYPE_UINT16_T, 0, 0, 1, }, /*开机模式*/ + {103, DATATYPE_UINT16_T, 15, 0, 3600, }, /*自动开机延时*/ + {104, DATATYPE_UINT16_T, 0, 0, 1, }, /*定时开关机使能*/ + {105, DATATYPE_UINT16_T, 0, 0, 23, }, /*定时开机时间*/ + {106, DATATYPE_UINT16_T, 0, 0, 59, }, /*定时开机时间*/ + {107, DATATYPE_UINT16_T, 0, 0, 59, }, /*定时开机时间*/ + {108, DATATYPE_UINT16_T, 0, 0, 23, }, /*定时关机时间*/ + {109, DATATYPE_UINT16_T, 0, 0, 59, }, /*定时关机时间*/ + {110, DATATYPE_UINT16_T, 0, 0, 59, }, /*定时关机时间*/ + {111, DATATYPE_UINT16_T, 300, 0, 65535, }, /*低功耗判断延时*/ + {112, DATATYPE_UINT16_T, 10, 0, 65535, }, /*退出低功耗判断延时*/ + {113, DATATYPE_UINT16_T, 180, 0, 65535, }, /*自动复位延时*/ + {114, DATATYPE_UINT16_T, 0, 0, 65535, }, /*DSP看门狗复位使能*/ + {115, DATATYPE_UINT16_T, 5, 1, 15, }, /*分钟冻结周期*/ + {116, DATATYPE_UINT16_T, 0, 0, 3, }, /*报文记录使能*/ + {117, DATATYPE_UINT16_T, 0, 0, 2, }, /*报文记录方向*/ + {118, DATATYPE_UINT16_T, 0, 0, 11, }, /*报文记录端口*/ + {119, DATATYPE_UINT16_T, 0, 0, 1, }, /*错误打印记录使能*/ + {120, DATATYPE_UINT16_T, 1, 0, 1, }, /*绝缘阻值检测使能*/ + {121, DATATYPE_UINT16_T, 0, 0, 1, }, /*风扇控制模式*/ + {122, DATATYPE_UINT16_T, 3, 0, 3, }, /*漏电流模式*/ + {123, DATATYPE_UINT16_T, 20, 0, 65535, }, /*放电起始功率*/ + {124, DATATYPE_UINT16_T, 0, 0, 1, }, /*抗PID使能*/ + {125, DATATYPE_UINT16_T, 120, 30, 1200, }, /*抗PID启动时间*/ + {126, DATATYPE_UINT16_T, 15, 0, 15, }, /*自动清除故障模式*/ + {127, DATATYPE_UINT16_T, 0, 0, 1, }, /*交流载波使能*/ + {128, DATATYPE_UINT16_T, 0, 0, 1, }, /*逆变器控制使能*/ + {129, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {130, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {131, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {132, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {133, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {134, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {135, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {136, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {137, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {138, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {139, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {140, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {141, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {142, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {143, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {144, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {145, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {146, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {147, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {148, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {149, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {150, DATATYPE_UINT16_T, 37851, 0, 65535, }, /*主站IP*/ + {151, DATATYPE_UINT16_T, 15898, 0, 65535, }, /*主站IP*/ + {152, DATATYPE_UINT16_T, 5223, 0, 65535, }, /*主站端口号*/ + {153, DATATYPE_UINT16_T, 10, 0, 65535, }, /*4G交互周期*/ + {154, DATATYPE_UINT16_T, 600, 0, 65535, }, /*4G通信超时阈值*/ + {155, DATATYPE_UINT16_T, 0, 0, 1, }, /*CAN使能*/ + {156, DATATYPE_UINT16_T, 0, 0, 5, }, /*CAN并机ID*/ + {157, DATATYPE_UINT16_T, 0, 0, 5, }, /*CAN并机数量*/ + {158, DATATYPE_UINT16_T, 180, 0, 3600, }, /*通信故障判定时间*/ + {159, DATATYPE_UINT16_T, 1440, 1, 65535, }, /*载波通信超时判断周期*/ + {160, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {161, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {162, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {163, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {164, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {165, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {166, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {167, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {168, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {169, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {170, DATATYPE_UINT16_T, 0, 0, 2, }, /*风扇自动控制因素*/ + {171, DATATYPE_UINT16_T, 95, 0, 100, }, /*手动风扇占空比*/ + {172, DATATYPE_UINT16_T, 35, 10, 50, }, /*风扇启动占空比*/ + {173, DATATYPE_UINT16_T, 100, 51, 100, }, /*风扇最大占空比*/ + {174, DATATYPE_UINT16_T, 45, 10, 150, }, /*风扇启动温度*/ + {175, DATATYPE_UINT16_T, 55, 30, 150, }, /*风扇满速温度*/ + {176, DATATYPE_UINT16_T, 33, 0, 100, }, /*风扇启动功率(额定值%)*/ + {177, DATATYPE_UINT16_T, 67, 0, 100, }, /*风扇满速功率(额定值%)*/ + {178, DATATYPE_UINT16_T, 42016, 1, 65535, }, /*幅值参考预留1*/ + {179, DATATYPE_UINT16_T, 0, 0, 65535, }, /*幅值参考预留2*/ + {180, DATATYPE_UINT16_T, 0, 0, 65535, }, /*幅值参考预留3*/ + {181, DATATYPE_UINT16_T, 0, 0, 65535, }, /*幅值参考预留4*/ + {182, DATATYPE_UINT16_T, 0, 0, 65535, }, /*幅值参考预留5*/ + {183, DATATYPE_UINT16_T, 0, 0, 65535, }, /*幅值参考预留6*/ + {184, DATATYPE_UINT16_T, 0, 0, 65535, }, /*幅值参考预留7*/ + {185, DATATYPE_UINT16_T, 180, 0, 65535, }, /*绝缘阻值故障阈值*/ + {186, DATATYPE_UINT16_T, 1500, 0, 65535, }, /*绝缘检测闭合时间*/ + {187, DATATYPE_UINT16_T, 5000, 0, 65535, }, /*绝缘检测断开时间*/ + {188, DATATYPE_UINT16_T, 2000, 0, 65535, }, /*风扇故障转速阈值*/ + {189, DATATYPE_UINT16_T, 200, 0, 65535, }, /*漏电流故障阈值*/ + {190, DATATYPE_UINT16_T, 110, 0, 65535, }, /*阈值参考预留1*/ + {191, DATATYPE_UINT16_T, 10, 0, 3600, }, /*过温判定时间*/ + {192, DATATYPE_UINT16_T, 60, 0, 3600, }, /*自检超时判定时间*/ + {193, DATATYPE_UINT16_T, 400, 0, 1200, }, /*绝缘检测母线电压阈值*/ + {194, DATATYPE_UINT16_T, 5, 0, 1200, }, /*绝缘检测继电器电压阈值*/ + {195, DATATYPE_UINT16_T, 150, 20, 300, }, /*漏电流3级突变触发阈值*/ +#if defined(PV_INV30) + {196, DATATYPE_UINT16_T, 300, 30, 700, }, /*漏电流缓变动作阈值*/ +#elif defined(PV_INV40) + {196, DATATYPE_UINT16_T, 400, 30, 700, }, /*漏电流缓变动作阈值*/ +#elif defined(PV_INV50) + {196, DATATYPE_UINT16_T, 500, 30, 700, }, /*漏电流缓变动作阈值*/ +#else + {196, DATATYPE_UINT16_T, 0, 0, 0 }, /*漏电流缓变动作阈值*/ +#endif + {197, DATATYPE_UINT16_T, 10, 0, 100, }, /*漏电流缓变时间阈值*/ + {198, DATATYPE_UINT16_T, 60, 20, 300, }, /*漏电流1级突变触发阈值*/ + {199, DATATYPE_UINT16_T, 60, 20, 300, }, /*漏电流2级突变触发阈值*/ +}; + + +bool_t mw_protocol_modbus_check_param_out_of_range(uint16_t us_address, uint16_t us_value) +{ + if(us_address > MAX_VALID_PARAM_ADDRESS) + { + return true; + } + if (DATATYPE_UINT16_T == s_ast_param_range[us_address].datatype) + { + if ((us_value < s_ast_param_range[us_address].min_value) || (us_value > s_ast_param_range[us_address].max_value)) + { + return true; + } + } + else if (DATATYPE_INT16_T == s_ast_param_range[us_address].datatype) + { + if (((int16_t)us_value < s_ast_param_range[us_address].min_value) || ((int16_t)us_value > s_ast_param_range[us_address].max_value)) + { + return true; + } + } + else + { + return true; + } + return false; +} + +uint16_t mw_protocol_modbus_get_param_default_value(uint16_t us_address) +{ + if(us_address > MAX_VALID_PARAM_ADDRESS) + { + return 0; + } + return (uint16_t)s_ast_param_range[us_address].default_value; +} diff --git a/test/PV_Inverter/arm/mw_param_manager_arm_struct.h b/test/PV_Inverter/arm/mw_param_manager_arm_struct.h new file mode 100644 index 0000000..ac25550 --- /dev/null +++ b/test/PV_Inverter/arm/mw_param_manager_arm_struct.h @@ -0,0 +1,502 @@ +/************************************************************************** +* @copyright Copyright (C), 2022, Qingdao Topscomm Communication Co. Ltd. +* @file mw_param_manager_arm_struct.h +* @brief arm参数表 +* @author +* @date 2024-10-26 16:34:50 +* @version +* @details +**************************************************************************/ +#ifndef __MW_PARAM_MANAGER_ARM_STRUCT_H__ +#define __MW_PARAM_MANAGER_ARM_STRUCT_H__ +#include "comm_datatype.h" + +#define APP_TABLE_VERSION 33 //地址表版本 + +typedef struct tag_arm_unrecovery_param_t +{ + uint16_t us_reserve1; /*0 预留*/ + uint16_t aus_mes_code[4]; /*1 设备MES码*/ + uint16_t aus_product_id[3]; /*5 12位出厂编号*/ + uint16_t us_hb_test_result; /*8 板级生产检测结果*/ + uint16_t us_sys_test_result; /*9 工厂整机测试结果*/ + uint16_t aus_hw_cmpnt_num[3]; /*10 硬件组件号*/ + uint16_t us_region_code; /*13 行政区域码*/ + uint16_t us_term_addr; /*14 终端地址*/ + uint16_t us_sci_baudrate; /*15 对外串口波特率*/ + uint16_t us_ac_proto_type; /*16 载波协议类型*/ + uint16_t us_prot645_type; /*17 645协议版本*/ + uint16_t aus_level_0_cipher[2]; /*18 0级密码*/ + uint16_t aus_level_1_cipher[2]; /*20 1级密码*/ + uint16_t aus_level_2_cipher[2]; /*22 2级密码*/ + uint16_t aus_account_num[3]; /*24 户号*/ + uint16_t aus_virtual_plant_num[3]; /*27 虚拟电厂编号*/ + uint16_t us_leak_current_dc_estimate; /*30 漏电流直流偏置AD值*/ + uint16_t us_leak_current_factor; /*31 漏电流校准系数*/ + uint16_t aus_state_grid_addr[6]; /*32 国网地址*/ + uint16_t aus_meter_code_num[6]; /*38 表号(ESAM用)*/ + uint16_t us_leak_current_inter_refer_mA; /*44 漏电流内部参考值*/ + uint16_t aus_reserve2[5]; /*45 预留*/ +}arm_unrecovery_param_t; + +typedef struct tag_arm_comm_cmd_t +{ + uint16_t us_start; /*50 设备开机*/ + uint16_t us_stop; /*51 设备关机*/ + uint16_t us_fault_rst; /*52 故障复位*/ + uint16_t us_unlock_set; /*53 解锁特殊操作*/ + uint16_t us_device_rst; /*54 设备重启*/ + uint16_t us_dsp_selfcheck; /*55 功率单元自检(调试)*/ + uint16_t us_dsp_rst_by_comm; /*56 功率单元重启*/ + uint16_t us_dsp_reboot; /*57 功率单元强制复位*/ + uint16_t us_resume_config; /*58 参数还原*/ + uint16_t us_4g_rst; /*59 复位4G*/ + uint16_t us_dc_carrier_rst; /*60 直流载波复位*/ + uint16_t us_ac_carrier_rst; /*61 交流载波复位*/ + uint16_t us_fault_record_manual; /*62 手动录波*/ + uint16_t us_data_restore_all; /*63 所有记录数据擦除*/ + uint16_t us_wave_record_restore; /*64 录波擦除*/ + uint16_t us_event_restore; /*65 事件擦除*/ + uint16_t us_error_log_restore; /*66 日志记录擦除*/ + uint16_t us_freeze_min_restore; /*67 分钟冻结数据擦除*/ + uint16_t us_freeze_day_restore; /*68 日冻结数据擦除*/ + uint16_t us_freeze_month_restore; /*69 月冻结数据擦除*/ + uint16_t us_freeze_year_restore; /*70 年冻结数据擦除*/ + uint16_t us_comm_frame_restore; /*71 报文记录数据擦除*/ + uint16_t us_operation_restore; /*72 操作记录数据擦除*/ + uint16_t us_power_gen_restore; /*73 电量记录数据擦除*/ + uint16_t elog_print_switch; /*74 打印开关*/ + uint16_t us_leak_current_dc_en; /*75 漏电流校准直流量(按钮)*/ + uint16_t us_leak_current_factor_en; /*76 漏电流校准系数(按钮)*/ + uint16_t us_leak_current_selfcheck_en; /*77 漏电流自检(按钮)*/ + uint16_t us_system_recover; /*78 恢复出厂设置*/ + uint16_t aus_reserve3[21]; /*79 预留*/ +}arm_comm_cmd_t; + +typedef struct tag_arm_devices_set_t +{ + uint16_t us_work_mode_svgc; /*100 工作模式*/ + uint16_t us_work_mode_svg; /*101 补偿模式选择*/ + uint16_t us_poweron_mode; /*102 开机模式*/ + uint16_t us_power_on_delay; /*103 自动开机延时*/ + uint16_t us_power_on_time_en; /*104 定时开关机使能*/ + uint16_t aus_power_on_time[3]; /*105 定时开机时间*/ + uint16_t aus_power_off_time[3]; /*108 定时关机时间*/ + uint16_t us_low_power_judge_delay; /*111 低功耗判断延时*/ + uint16_t us_low_power_judge_delay_quit; /*112 退出低功耗判断延时*/ + uint16_t us_auto_reset_delay; /*113 自动复位延时*/ + uint16_t us_dsp_wd_enable; /*114 DSP看门狗复位使能*/ + uint16_t us_freeze_save_period; /*115 分钟冻结周期*/ + uint16_t us_record_frame_en; /*116 报文记录使能*/ + uint16_t us_record_frame_dir; /*117 报文记录方向*/ + uint16_t us_record_frame_port; /*118 报文记录端口*/ + uint16_t us_record_err_log_en; /*119 错误打印记录使能*/ + uint16_t us_impd_dete_en; /*120 绝缘阻值检测使能*/ + uint16_t us_fan_ctr_mode; /*121 风扇控制模式*/ + uint16_t leak_current_mode; /*122 漏电流模式*/ + uint16_t us_sys_discharge_start_pwr; /*123 放电起始功率*/ + uint16_t us_anti_pid_en; /*124 抗PID使能*/ + uint16_t us_anti_pid_time; /*125 抗PID启动时间*/ + uint16_t us_auto_restore_delay_value; /*126 自动清除故障模式*/ + uint16_t us_plc_enable; /*127 交流载波使能*/ + uint16_t us_control_enable_shanxi; /*128 逆变器控制使能*/ + uint16_t aus_reserve4[21]; /*129 预留*/ +}arm_devices_set_t; + +typedef struct tag_arm_comm_t +{ + uint16_t aus_remote_ip[2]; /*150 主站IP*/ + uint16_t us_remote_port; /*152 主站端口号*/ + uint16_t us_interactive_cycle_4g; /*153 4G交互周期*/ + uint16_t us_gprs_com_over_time; /*154 4G通信超时阈值*/ + uint16_t us_can_enable; /*155 CAN使能*/ + uint16_t us_can_dev_id; /*156 CAN并机ID*/ + uint16_t us_can_parallel_num; /*157 CAN并机数量*/ + uint16_t us_com_over_time; /*158 通信故障判定时间*/ + uint16_t us_plc_check_comm_period_t; /*159 载波通信超时判断周期*/ + uint16_t aus_reserve5[10]; /*160 预留*/ +}arm_comm_t; + +typedef struct tag_arm_devices_limit_param_t +{ + uint16_t us_fan_auto_ctrl_factor; /*170 风扇自动控制因素*/ + uint16_t us_manual_fan_pwm; /*171 手动风扇占空比*/ + uint16_t us_fan_pwm_start; /*172 风扇启动占空比*/ + uint16_t us_fan_pwm_max; /*173 风扇最大占空比*/ + uint16_t us_fan_start_temp; /*174 风扇启动温度*/ + uint16_t us_fan_max_temp; /*175 风扇满速温度*/ + uint16_t us_fan_start_power; /*176 风扇启动功率(额定值%)*/ + uint16_t us_fan_max_power; /*177 风扇满速功率(额定值%)*/ + uint16_t us_reserve_param9_1; /*178 幅值参考预留1*/ + uint16_t us_reserve_param9_2; /*179 幅值参考预留2*/ + uint16_t us_reserve_param9_3; /*180 幅值参考预留3*/ + uint16_t us_reserve_param9_4; /*181 幅值参考预留4*/ + uint16_t us_reserve_param9_5; /*182 幅值参考预留5*/ + uint16_t us_reserve_param9_6; /*183 幅值参考预留6*/ + uint16_t us_reserve_param9_7; /*184 幅值参考预留7*/ +}arm_devices_limit_param_t; + +typedef struct tag_arm_devices_threshold_t +{ + uint16_t us_impd_fault_thrd; /*185 绝缘阻值故障阈值*/ + uint16_t us_impd_detect_close_time; /*186 绝缘检测闭合时间*/ + uint16_t us_impd_detect_open_time; /*187 绝缘检测断开时间*/ + uint16_t us_fan_speed_fault_thrd; /*188 风扇故障转速阈值*/ + uint16_t us_leak_cur_fault_thrd; /*189 漏电流故障阈值*/ + uint16_t us_reserve_param1_1; /*190 阈值参考预留1*/ + uint16_t us_over_temp_time; /*191 过温判定时间*/ + uint16_t us_self_check_time; /*192 自检超时判定时间*/ + uint16_t us_insu_bus_volt_thd; /*193 绝缘检测母线电压阈值*/ + uint16_t us_insu_rly_volt_thd; /*194 绝缘检测继电器电压阈值*/ + uint16_t us_leak_current_L3_mutation_threshold_mA; /*195 漏电流3级突变触发阈值*/ + uint16_t us_leak_current_slow_threshold_mA; /*196 漏电流缓变动作阈值*/ + uint16_t us_leak_current_slow_time_ms; /*197 漏电流缓变时间阈值*/ + uint16_t us_leak_current_L1_mutation_threshold_mA; /*198 漏电流1级突变触发阈值*/ + uint16_t us_leak_current_L2_mutation_threshold_mA; /*199 漏电流2级突变触发阈值*/ +}arm_devices_threshold_t; + +typedef struct tag_arm_devices_data_file_t +{ + uint16_t aus_system_time[6]; /*200 系统时间*/ + uint16_t us_device_type; /*206 设备类型*/ + uint16_t us_device_capacity; /*207 设备容量*/ + uint16_t us_system_run_status; /*208 设备状态*/ + uint16_t us_arm_protocol_version; /*209 ARM地址表协议版本号*/ + uint16_t us_can_comm_status; /*210 CAN并机状态*/ + uint16_t us_can_detection_num; /*211 CAN并机检测数量*/ + uint16_t aus_main_version[2]; /*212 主控程序版本*/ + uint16_t aus_main_boot_version[2]; /*214 主控底层程序版本*/ + uint16_t aus_main_cmpnt_num[3]; /*216 主控程序组件号*/ + uint16_t amain_version_new[16]; /*219 主控程序版本新格式*/ + uint16_t aus_reserve6[15]; /*235 预留*/ +}arm_devices_data_file_t; + +typedef struct tag_arm_comm_ex_device_t +{ + uint16_t aus_ac_carrier_version[3]; /*250 交流载波芯片版本号(年月日版本)*/ + uint16_t aus_dc_carrier_version[3]; /*253 直流载波芯片版本号(年月日版本)*/ + uint16_t aus_reserve7[34]; /*256 预留*/ +}arm_comm_ex_device_t; + +typedef struct tag_arm_fault_code_t +{ + uint16_t us_arm_fault_code1; /*290 ARM故障1*/ + uint16_t us_arm_fault_code2; /*291 ARM故障2*/ + uint16_t us_arm_fault_code3; /*292 ARM故障3*/ + uint16_t us_arm_alarm_code1; /*293 ARM告警1*/ + uint16_t us_arm_alarm_code2; /*294 ARM告警2*/ + uint16_t aus_reserve8[5]; /*295 预留*/ +}arm_fault_code_t; + +typedef struct tag_arm_data_hardware_t +{ + int16_t sh_temp1; /*300 腔体1温度*/ + int16_t sh_temp2; /*301 腔体2温度*/ + int16_t sh_temp3; /*302 散热片温度*/ + int16_t sh_temp_reserve1; /*303 预留测温1*/ + uint16_t us_inside_fan1_spd; /*304 内部风扇转速1*/ + uint16_t us_outside_fan1_spd; /*305 外部风扇转速1*/ + uint16_t us_outside_fan2_spd; /*306 外部风扇转速2*/ + uint16_t us_impd_val_on; /*307 绝缘继电器闭合电压*/ + uint16_t us_impd_val_off; /*308 绝缘继电器断开电压*/ + int16_t us_impd_res_val; /*309 绝缘检测阻值*/ + uint16_t us_ac_leak_cur_rms; /*310 交流漏电流有效值*/ + uint16_t us_pid_relay_stat; /*311 PID继电器状态*/ + int16_t us_impd_res_val_2; /*312 绝缘检测阻值2*/ + uint16_t us_leak_cur_ad; /*313 漏电流AD值*/ + int16_t us_prevent_inv_curr_a; /*314 防逆变电流A相*/ + int16_t us_prevent_inv_curr_b; /*315 防逆变电流B相*/ + int16_t us_prevent_inv_curr_c; /*316 防逆变电流C相*/ + uint16_t us_inside_fan2_spd; /*317 内部风扇转速2*/ + uint16_t us_outside_fan3_spd; /*318 外部风扇转速3*/ + uint16_t us_out_leak_cur_rms; /*319 外部漏电流有效值*/ + uint16_t aus_reserve9[10]; /*320 预留*/ +}arm_data_hardware_t; + +typedef struct tag_arm_thd_data_t +{ + uint16_t us_THD_grid_voltage_a; /*330 网侧电压THD_A*/ + uint16_t us_THD_grid_voltage_b; /*331 网侧电压THD_B*/ + uint16_t us_THD_grid_voltage_c; /*332 网侧电压THD_C*/ + uint16_t us_THD_grid_current_a; /*333 网侧电流THD_A*/ + uint16_t us_THD_grid_current_b; /*334 网侧电流THD_B*/ + uint16_t us_THD_grid_current_c; /*335 网侧电流THD_C*/ + uint16_t us_THD_load_current_a; /*336 负载电流THD_A*/ + uint16_t us_THD_load_current_b; /*337 负载电流THD_B*/ + uint16_t us_THD_load_current_c; /*338 负载电流THD_C*/ + uint16_t aus_THD_harm_grid_voltage_a[50]; /*339 网侧电压谐波THD A相*/ + uint16_t aus_THD_harm_grid_voltage_b[50]; /*389 网侧电压谐波THD B相*/ + uint16_t aus_THD_harm_grid_voltage_c[50]; /*439 网侧电压谐波THD C相*/ + uint16_t aus_THD_harm_device_current_a[50]; /*489 交流电流谐波THD A相*/ + uint16_t aus_THD_harm_device_current_b[50]; /*539 交流电流谐波THD B相*/ + uint16_t aus_THD_harm_device_current_c[50]; /*589 交流电流谐波THD C相*/ + uint16_t aus_reserve10[61]; /*639 预留*/ +}arm_thd_data_t; + +typedef struct tag_arm_devices_state_data_t +{ + uint16_t us_arm_logic_label; /*700 ARM逻辑状态*/ + uint16_t us_arm_run_state; /*701 ARM运行状态*/ + uint16_t us_dsp_run_state; /*702 DSP运行状态*/ + uint16_t us_data_reserve2; /*703 预留数据1_2*/ + uint16_t us_data_reserve3; /*704 预留数据1_3*/ + uint16_t aus_reserve11[5]; /*705 预留*/ +}arm_devices_state_data_t; + +typedef struct tag_arm_record_data_t +{ + uint16_t aus_power_gen_total[2]; /*710 累计发电量*/ + uint16_t aus_power_cons_total[2]; /*712 累计耗电量*/ + uint16_t aus_power_gen_year[2]; /*714 年发电量*/ + uint16_t aus_power_cons_year[2]; /*716 年耗电量*/ + uint16_t aus_power_gen_month[2]; /*718 月发电量*/ + uint16_t aus_power_cons_month[2]; /*720 月耗电量*/ + uint16_t aus_power_gen_day[2]; /*722 日发电量*/ + uint16_t aus_power_cons_day[2]; /*724 日耗电量*/ + uint16_t aus_runtime_total[2]; /*726 总并网运行时间*/ + uint16_t aus_reserve12[2]; /*728 预留*/ +}arm_record_data_t; + + +typedef struct tag_arm_config_param_t +{ + arm_devices_set_t st_arm_devices_set; + arm_comm_t st_arm_comm; + arm_devices_limit_param_t st_arm_devices_limit_param; + arm_devices_threshold_t st_arm_devices_threshold; +}arm_config_param_t; + +typedef struct tag_arm_monitor_params_t +{ + arm_devices_data_file_t st_arm_devices_data_file; + arm_comm_ex_device_t st_arm_comm_ex_device; + arm_fault_code_t st_arm_fault_code; + arm_data_hardware_t st_arm_data_hardware; + arm_thd_data_t st_arm_thd_data; + arm_devices_state_data_t st_arm_devices_state_data; + arm_record_data_t st_arm_record_data; +}arm_monitor_params_t; + +typedef struct tag_arm_comm_params_t +{ + arm_unrecovery_param_t st_arm_unrecovery_param; + arm_comm_cmd_t st_arm_cmd; + arm_config_param_t st_config_param; + arm_monitor_params_t st_monitor_params; +}arm_comm_params_t; + +/*参数地址宏定义*/ +//arm_unrecovery_param_t +#define ARM_MES_CODE_PARAM_ADDR 1 /*设备MES码*/ +#define ARM_PRODUCT_ID_PARAM_ADDR 5 /*12位出厂编号*/ +#define ARM_HB_TEST_RESULT_PARAM_ADDR 8 /*板级生产检测结果*/ +#define ARM_SYS_TEST_RESULT_PARAM_ADDR 9 /*工厂整机测试结果*/ +#define ARM_HW_CMPNT_NUM_PARAM_ADDR 10 /*硬件组件号*/ +#define ARM_REGION_CODE_PARAM_ADDR 13 /*行政区域码*/ +#define ARM_TERM_ADDR_PARAM_ADDR 14 /*终端地址*/ +#define ARM_SCI_BAUDRATE_PARAM_ADDR 15 /*对外串口波特率*/ +#define ARM_AC_PROTO_TYPE_PARAM_ADDR 16 /*载波协议类型*/ +#define ARM_PROT645_TYPE_PARAM_ADDR 17 /*645协议版本*/ +#define ARM_LEVEL_0_CIPHER_PARAM_ADDR 18 /*0级密码*/ +#define ARM_LEVEL_1_CIPHER_PARAM_ADDR 20 /*1级密码*/ +#define ARM_LEVEL_2_CIPHER_PARAM_ADDR 22 /*2级密码*/ +#define ARM_ACCOUNT_NUM_PARAM_ADDR 24 /*户号*/ +#define ARM_VIRTUAL_PLANT_NUM_PARAM_ADDR 27 /*虚拟电厂编号*/ +#define ARM_LEAK_CURRENT_DC_ESTIMATE_PARAM_ADDR 30 /*漏电流直流偏置AD值*/ +#define ARM_LEAK_CURRENT_FACTOR_PARAM_ADDR 31 /*漏电流校准系数*/ +#define ARM_STATE_GRID_ADDR_PARAM_ADDR 32 /*国网地址*/ +#define ARM_METER_CODE_NUM_PARAM_ADDR 38 /*表号(ESAM用)*/ +#define ARM_LEAK_CURRENT_INTER_REFER_MA_PARAM_ADDR 44 /*漏电流内部参考值*/ +//arm_comm_cmd_t +#define ARM_START_PARAM_ADDR 50 /*设备开机*/ +#define ARM_STOP_PARAM_ADDR 51 /*设备关机*/ +#define ARM_FAULT_RST_PARAM_ADDR 52 /*故障复位*/ +#define ARM_UNLOCK_SET_PARAM_ADDR 53 /*解锁特殊操作*/ +#define ARM_DEVICE_RST_PARAM_ADDR 54 /*设备重启*/ +#define ARM_DSP_SELFCHECK_PARAM_ADDR 55 /*功率单元自检(调试)*/ +#define ARM_DSP_RST_BY_COMM_PARAM_ADDR 56 /*功率单元重启*/ +#define ARM_DSP_REBOOT_PARAM_ADDR 57 /*功率单元强制复位*/ +#define ARM_RESUME_CONFIG_PARAM_ADDR 58 /*参数还原*/ +#define ARM_4G_RST_PARAM_ADDR 59 /*复位4G*/ +#define ARM_DC_CARRIER_RST_PARAM_ADDR 60 /*直流载波复位*/ +#define ARM_AC_CARRIER_RST_PARAM_ADDR 61 /*交流载波复位*/ +#define ARM_FAULT_RECORD_MANUAL_PARAM_ADDR 62 /*手动录波*/ +#define ARM_DATA_RESTORE_ALL_PARAM_ADDR 63 /*所有记录数据擦除*/ +#define ARM_WAVE_RECORD_RESTORE_PARAM_ADDR 64 /*录波擦除*/ +#define ARM_EVENT_RESTORE_PARAM_ADDR 65 /*事件擦除*/ +#define ARM_ERROR_LOG_RESTORE_PARAM_ADDR 66 /*日志记录擦除*/ +#define ARM_FREEZE_MIN_RESTORE_PARAM_ADDR 67 /*分钟冻结数据擦除*/ +#define ARM_FREEZE_DAY_RESTORE_PARAM_ADDR 68 /*日冻结数据擦除*/ +#define ARM_FREEZE_MONTH_RESTORE_PARAM_ADDR 69 /*月冻结数据擦除*/ +#define ARM_FREEZE_YEAR_RESTORE_PARAM_ADDR 70 /*年冻结数据擦除*/ +#define ARM_COMM_FRAME_RESTORE_PARAM_ADDR 71 /*报文记录数据擦除*/ +#define ARM_OPERATION_RESTORE_PARAM_ADDR 72 /*操作记录数据擦除*/ +#define ARM_POWER_GEN_RESTORE_PARAM_ADDR 73 /*电量记录数据擦除*/ +#define ARM_G_PRINT_SWITCH_PARAM_ADDR 74 /*打印开关*/ +#define ARM_LEAK_CURRENT_DC_EN_PARAM_ADDR 75 /*漏电流校准直流量(按钮)*/ +#define ARM_LEAK_CURRENT_FACTOR_EN_PARAM_ADDR 76 /*漏电流校准系数(按钮)*/ +#define ARM_LEAK_CURRENT_SELFCHECK_EN_PARAM_ADDR 77 /*漏电流自检(按钮)*/ +#define ARM_SYSTEM_RECOVER_PARAM_ADDR 78 /*恢复出厂设置*/ +//arm_devices_set_t +#define ARM_WORK_MODE_SVGC_PARAM_ADDR 100 /*工作模式*/ +#define ARM_WORK_MODE_SVG_PARAM_ADDR 101 /*补偿模式选择*/ +#define ARM_POWERON_MODE_PARAM_ADDR 102 /*开机模式*/ +#define ARM_POWER_ON_DELAY_PARAM_ADDR 103 /*自动开机延时*/ +#define ARM_POWER_ON_TIME_EN_PARAM_ADDR 104 /*定时开关机使能*/ +#define ARM_POWER_ON_TIME_PARAM_ADDR 105 /*定时开机时间*/ +#define ARM_POWER_OFF_TIME_PARAM_ADDR 108 /*定时关机时间*/ +#define ARM_LOW_POWER_JUDGE_DELAY_PARAM_ADDR 111 /*低功耗判断延时*/ +#define ARM_LOW_POWER_JUDGE_DELAY_QUIT_PARAM_ADDR 112 /*退出低功耗判断延时*/ +#define ARM_AUTO_RESET_DELAY_PARAM_ADDR 113 /*自动复位延时*/ +#define ARM_DSP_WD_ENABLE_PARAM_ADDR 114 /*DSP看门狗复位使能*/ +#define ARM_FREEZE_SAVE_PERIOD_PARAM_ADDR 115 /*分钟冻结周期*/ +#define ARM_RECORD_FRAME_EN_PARAM_ADDR 116 /*报文记录使能*/ +#define ARM_RECORD_FRAME_DIR_PARAM_ADDR 117 /*报文记录方向*/ +#define ARM_RECORD_FRAME_PORT_PARAM_ADDR 118 /*报文记录端口*/ +#define ARM_RECORD_ERR_LOG_EN_PARAM_ADDR 119 /*错误打印记录使能*/ +#define ARM_IMPD_DETE_EN_PARAM_ADDR 120 /*绝缘阻值检测使能*/ +#define ARM_FAN_CTR_MODE_PARAM_ADDR 121 /*风扇控制模式*/ +#define ARM_K_CURRENT_MODE_PARAM_ADDR 122 /*漏电流模式*/ +#define ARM_SYS_DISCHARGE_START_PWR_PARAM_ADDR 123 /*放电起始功率*/ +#define ARM_ANTI_PID_EN_PARAM_ADDR 124 /*抗PID使能*/ +#define ARM_ANTI_PID_TIME_PARAM_ADDR 125 /*抗PID启动时间*/ +#define ARM_AUTO_RESTORE_DELAY_VALUE_PARAM_ADDR 126 /*自动清除故障模式*/ +#define ARM_PLC_ENABLE_PARAM_ADDR 127 /*交流载波使能*/ +#define ARM_CONTROL_ENABLE_SHANXI_PARAM_ADDR 128 /*逆变器控制使能*/ +//arm_comm_t +#define ARM_REMOTE_IP_PARAM_ADDR 150 /*主站IP*/ +#define ARM_REMOTE_PORT_PARAM_ADDR 152 /*主站端口号*/ +#define ARM_INTERACTIVE_CYCLE_4G_PARAM_ADDR 153 /*4G交互周期*/ +#define ARM_GPRS_COM_OVER_TIME_PARAM_ADDR 154 /*4G通信超时阈值*/ +#define ARM_CAN_ENABLE_PARAM_ADDR 155 /*CAN使能*/ +#define ARM_CAN_DEV_ID_PARAM_ADDR 156 /*CAN并机ID*/ +#define ARM_CAN_PARALLEL_NUM_PARAM_ADDR 157 /*CAN并机数量*/ +#define ARM_COM_OVER_TIME_PARAM_ADDR 158 /*通信故障判定时间*/ +#define ARM_PLC_CHECK_COMM_PERIOD_T_PARAM_ADDR 159 /*载波通信超时判断周期*/ +//arm_devices_limit_param_t +#define ARM_FAN_AUTO_CTRL_FACTOR_PARAM_ADDR 170 /*风扇自动控制因素*/ +#define ARM_MANUAL_FAN_PWM_PARAM_ADDR 171 /*手动风扇占空比*/ +#define ARM_FAN_PWM_START_PARAM_ADDR 172 /*风扇启动占空比*/ +#define ARM_FAN_PWM_MAX_PARAM_ADDR 173 /*风扇最大占空比*/ +#define ARM_FAN_START_TEMP_PARAM_ADDR 174 /*风扇启动温度*/ +#define ARM_FAN_MAX_TEMP_PARAM_ADDR 175 /*风扇满速温度*/ +#define ARM_FAN_START_POWER_PARAM_ADDR 176 /*风扇启动功率(额定值%)*/ +#define ARM_FAN_MAX_POWER_PARAM_ADDR 177 /*风扇满速功率(额定值%)*/ +#define ARM_RESERVE_PARAM9_1_PARAM_ADDR 178 /*幅值参考预留1*/ +#define ARM_RESERVE_PARAM9_2_PARAM_ADDR 179 /*幅值参考预留2*/ +#define ARM_RESERVE_PARAM9_3_PARAM_ADDR 180 /*幅值参考预留3*/ +#define ARM_RESERVE_PARAM9_4_PARAM_ADDR 181 /*幅值参考预留4*/ +#define ARM_RESERVE_PARAM9_5_PARAM_ADDR 182 /*幅值参考预留5*/ +#define ARM_RESERVE_PARAM9_6_PARAM_ADDR 183 /*幅值参考预留6*/ +#define ARM_RESERVE_PARAM9_7_PARAM_ADDR 184 /*幅值参考预留7*/ +//arm_devices_threshold_t +#define ARM_IMPD_FAULT_THRD_PARAM_ADDR 185 /*绝缘阻值故障阈值*/ +#define ARM_IMPD_DETECT_CLOSE_TIME_PARAM_ADDR 186 /*绝缘检测闭合时间*/ +#define ARM_IMPD_DETECT_OPEN_TIME_PARAM_ADDR 187 /*绝缘检测断开时间*/ +#define ARM_FAN_SPEED_FAULT_THRD_PARAM_ADDR 188 /*风扇故障转速阈值*/ +#define ARM_LEAK_CUR_FAULT_THRD_PARAM_ADDR 189 /*漏电流故障阈值*/ +#define ARM_RESERVE_PARAM1_1_PARAM_ADDR 190 /*阈值参考预留1*/ +#define ARM_OVER_TEMP_TIME_PARAM_ADDR 191 /*过温判定时间*/ +#define ARM_SELF_CHECK_TIME_PARAM_ADDR 192 /*自检超时判定时间*/ +#define ARM_INSU_BUS_VOLT_THD_PARAM_ADDR 193 /*绝缘检测母线电压阈值*/ +#define ARM_INSU_RLY_VOLT_THD_PARAM_ADDR 194 /*绝缘检测继电器电压阈值*/ +#define ARM_LEAK_CURRENT_L3_MUTATION_THRESHOLD_MA_PARAM_ADDR 195 /*漏电流3级突变触发阈值*/ +#define ARM_LEAK_CURRENT_SLOW_THRESHOLD_MA_PARAM_ADDR 196 /*漏电流缓变动作阈值*/ +#define ARM_LEAK_CURRENT_SLOW_TIME_MS_PARAM_ADDR 197 /*漏电流缓变时间阈值*/ +#define ARM_LEAK_CURRENT_L1_MUTATION_THRESHOLD_MA_PARAM_ADDR 198 /*漏电流1级突变触发阈值*/ +#define ARM_LEAK_CURRENT_L2_MUTATION_THRESHOLD_MA_PARAM_ADDR 199 /*漏电流2级突变触发阈值*/ +//arm_devices_data_file_t +#define ARM_SYSTEM_TIME_PARAM_ADDR 200 /*系统时间*/ +#define ARM_DEVICE_TYPE_PARAM_ADDR 206 /*设备类型*/ +#define ARM_DEVICE_CAPACITY_PARAM_ADDR 207 /*设备容量*/ +#define ARM_SYSTEM_RUN_STATUS_PARAM_ADDR 208 /*设备状态*/ +#define ARM_ARM_PROTOCOL_VERSION_PARAM_ADDR 209 /*ARM地址表协议版本号*/ +#define ARM_CAN_COMM_STATUS_PARAM_ADDR 210 /*CAN并机状态*/ +#define ARM_CAN_DETECTION_NUM_PARAM_ADDR 211 /*CAN并机检测数量*/ +#define ARM_MAIN_VERSION_PARAM_ADDR 212 /*主控程序版本*/ +#define ARM_MAIN_BOOT_VERSION_PARAM_ADDR 214 /*主控底层程序版本*/ +#define ARM_MAIN_CMPNT_NUM_PARAM_ADDR 216 /*主控程序组件号*/ +#define ARM_N_VERSION_NEW_PARAM_ADDR 219 /*主控程序版本新格式*/ +//arm_comm_ex_device_t +#define ARM_AC_CARRIER_VERSION_PARAM_ADDR 250 /*交流载波芯片版本号(年月日版本)*/ +#define ARM_DC_CARRIER_VERSION_PARAM_ADDR 253 /*直流载波芯片版本号(年月日版本)*/ +//arm_fault_code_t +#define ARM_ARM_FAULT_CODE1_PARAM_ADDR 290 /*ARM故障1*/ +#define ARM_ARM_FAULT_CODE2_PARAM_ADDR 291 /*ARM故障2*/ +#define ARM_ARM_FAULT_CODE3_PARAM_ADDR 292 /*ARM故障3*/ +#define ARM_ARM_ALARM_CODE1_PARAM_ADDR 293 /*ARM告警1*/ +#define ARM_ARM_ALARM_CODE2_PARAM_ADDR 294 /*ARM告警2*/ +//arm_data_hardware_t +#define ARM_TEMP1_PARAM_ADDR 300 /*腔体1温度*/ +#define ARM_TEMP2_PARAM_ADDR 301 /*腔体2温度*/ +#define ARM_TEMP3_PARAM_ADDR 302 /*散热片温度*/ +#define ARM_TEMP_RESERVE1_PARAM_ADDR 303 /*预留测温1*/ +#define ARM_INSIDE_FAN1_SPD_PARAM_ADDR 304 /*内部风扇转速1*/ +#define ARM_OUTSIDE_FAN1_SPD_PARAM_ADDR 305 /*外部风扇转速1*/ +#define ARM_OUTSIDE_FAN2_SPD_PARAM_ADDR 306 /*外部风扇转速2*/ +#define ARM_IMPD_VAL_ON_PARAM_ADDR 307 /*绝缘继电器闭合电压*/ +#define ARM_IMPD_VAL_OFF_PARAM_ADDR 308 /*绝缘继电器断开电压*/ +#define ARM_IMPD_RES_VAL_PARAM_ADDR 309 /*绝缘检测阻值*/ +#define ARM_AC_LEAK_CUR_RMS_PARAM_ADDR 310 /*交流漏电流有效值*/ +#define ARM_PID_RELAY_STAT_PARAM_ADDR 311 /*PID继电器状态*/ +#define ARM_IMPD_RES_VAL_2_PARAM_ADDR 312 /*绝缘检测阻值2*/ +#define ARM_LEAK_CUR_AD_PARAM_ADDR 313 /*漏电流AD值*/ +#define ARM_PREVENT_INV_CURR_A_PARAM_ADDR 314 /*防逆变电流A相*/ +#define ARM_PREVENT_INV_CURR_B_PARAM_ADDR 315 /*防逆变电流B相*/ +#define ARM_PREVENT_INV_CURR_C_PARAM_ADDR 316 /*防逆变电流C相*/ +#define ARM_INSIDE_FAN2_SPD_PARAM_ADDR 317 /*内部风扇转速2*/ +#define ARM_OUTSIDE_FAN3_SPD_PARAM_ADDR 318 /*外部风扇转速3*/ +#define ARM_OUT_LEAK_CUR_RMS_PARAM_ADDR 319 /*外部漏电流有效值*/ +//arm_thd_data_t +#define ARM_THD_GRID_VOLTAGE_A_PARAM_ADDR 330 /*网侧电压THD_A*/ +#define ARM_THD_GRID_VOLTAGE_B_PARAM_ADDR 331 /*网侧电压THD_B*/ +#define ARM_THD_GRID_VOLTAGE_C_PARAM_ADDR 332 /*网侧电压THD_C*/ +#define ARM_THD_GRID_CURRENT_A_PARAM_ADDR 333 /*网侧电流THD_A*/ +#define ARM_THD_GRID_CURRENT_B_PARAM_ADDR 334 /*网侧电流THD_B*/ +#define ARM_THD_GRID_CURRENT_C_PARAM_ADDR 335 /*网侧电流THD_C*/ +#define ARM_THD_LOAD_CURRENT_A_PARAM_ADDR 336 /*负载电流THD_A*/ +#define ARM_THD_LOAD_CURRENT_B_PARAM_ADDR 337 /*负载电流THD_B*/ +#define ARM_THD_LOAD_CURRENT_C_PARAM_ADDR 338 /*负载电流THD_C*/ +#define ARM_THD_HARM_GRID_VOLTAGE_A_PARAM_ADDR 339 /*网侧电压谐波THD A相*/ +#define ARM_THD_HARM_GRID_VOLTAGE_B_PARAM_ADDR 389 /*网侧电压谐波THD B相*/ +#define ARM_THD_HARM_GRID_VOLTAGE_C_PARAM_ADDR 439 /*网侧电压谐波THD C相*/ +#define ARM_THD_HARM_DEVICE_CURRENT_A_PARAM_ADDR 489 /*交流电流谐波THD A相*/ +#define ARM_THD_HARM_DEVICE_CURRENT_B_PARAM_ADDR 539 /*交流电流谐波THD B相*/ +#define ARM_THD_HARM_DEVICE_CURRENT_C_PARAM_ADDR 589 /*交流电流谐波THD C相*/ +//arm_devices_state_data_t +#define ARM_ARM_LOGIC_LABEL_PARAM_ADDR 700 /*ARM逻辑状态*/ +#define ARM_ARM_RUN_STATE_PARAM_ADDR 701 /*ARM运行状态*/ +#define ARM_DSP_RUN_STATE_PARAM_ADDR 702 /*DSP运行状态*/ +#define ARM_DATA_RESERVE2_PARAM_ADDR 703 /*预留数据1_2*/ +#define ARM_DATA_RESERVE3_PARAM_ADDR 704 /*预留数据1_3*/ +//arm_record_data_t +#define ARM_POWER_GEN_TOTAL_PARAM_ADDR 710 /*累计发电量*/ +#define ARM_POWER_CONS_TOTAL_PARAM_ADDR 712 /*累计耗电量*/ +#define ARM_POWER_GEN_YEAR_PARAM_ADDR 714 /*年发电量*/ +#define ARM_POWER_CONS_YEAR_PARAM_ADDR 716 /*年耗电量*/ +#define ARM_POWER_GEN_MONTH_PARAM_ADDR 718 /*月发电量*/ +#define ARM_POWER_CONS_MONTH_PARAM_ADDR 720 /*月耗电量*/ +#define ARM_POWER_GEN_DAY_PARAM_ADDR 722 /*日发电量*/ +#define ARM_POWER_CONS_DAY_PARAM_ADDR 724 /*日耗电量*/ +#define ARM_RUNTIME_TOTAL_PARAM_ADDR 726 /*总并网运行时间*/ + + +typedef struct tag_modbus_param_value_info_t +{ + uint16_t address; + uint16_t datatype; /*0:uint16_t 1:int16_t*/ + int32_t default_value; + int32_t min_value; + int32_t max_value; +}modbus_param_value_info_t; + +#define MAX_VALID_PARAM_ADDRESS 199 +#define DATATYPE_UINT16_T 0 +#define DATATYPE_INT16_T 1 +bool_t mw_protocol_modbus_check_param_out_of_range(uint16_t us_address, uint16_t us_value); + + +uint16_t mw_protocol_modbus_get_param_default_value(uint16_t us_address); + + +#endif /* __MW_PARAM_MANAGER_ARM_STRUCT_H__ */ diff --git a/test/PV_Inverter/arm/mw_param_manager_dsp_struct.h b/test/PV_Inverter/arm/mw_param_manager_dsp_struct.h new file mode 100644 index 0000000..1538d92 --- /dev/null +++ b/test/PV_Inverter/arm/mw_param_manager_dsp_struct.h @@ -0,0 +1,1105 @@ +/************************************************************************** +* @copyright Copyright (C), 2022, Qingdao Topscomm Communication Co. Ltd. +* @file mw_param_manager_dsp_struct.h +* @brief dsp参数表 +* @author +* @date 2024-10-26 16:34:50 +* @version +* @details +**************************************************************************/ +#ifndef __MW_PARAM_MANAGER_DSP_STRUCT_H__ +#define __MW_PARAM_MANAGER_DSP_STRUCT_H__ +#include "comm_datatype.h" + +typedef struct tag_dsp_unrecovery_param_t +{ + uint16_t us_grd_A_volt_calib_coff; /*0 A相采样校准a(网侧交流电压采样)*/ + int16_t us_grd_A_volt_calib_bias; /*1 A相采样校准b(网侧交流电压采样)*/ + uint16_t us_grd_B_volt_calib_coff; /*2 B相采样校准a(网侧交流电压采样)*/ + int16_t us_grd_B_volt_calib_bias; /*3 B相采样校准b(网侧交流电压采样)*/ + uint16_t us_grd_C_volt_calib_coff; /*4 C相采样校准a(网侧交流电压采样)*/ + int16_t us_grd_C_volt_calib_bias; /*5 C相采样校准b(网侧交流电压采样)*/ + uint16_t us_inv_A_cur_calib_coff; /*6 A相采样校准a(逆变侧电感电流)*/ + int16_t us_inv_A_cur_calib_bias; /*7 A相采样校准b(逆变侧电感电流)*/ + int16_t us_inv_A_cur_phase_offset; /*8 A相逆变电流相位偏移量*/ + uint16_t us_inv_B_cur_calib_coff; /*9 B相采样校准a(逆变侧电感电流)*/ + int16_t us_inv_B_cur_calib_bias; /*10 B相采样校准b(逆变侧电感电流)*/ + int16_t us_inv_B_cur_phase_offset; /*11 B相逆变电流相位偏移量*/ + uint16_t us_inv_C_cur_calib_coff; /*12 C相采样校准a(逆变侧电感电流)*/ + int16_t us_inv_C_cur_calib_bias; /*13 C相采样校准b(逆变侧电感电流)*/ + int16_t us_inv_C_cur_phase_offset; /*14 C相逆变电流相位偏移量*/ + uint16_t us_cap_A_cur_calib_coff; /*15 A相LCL电容电流系数*/ + int16_t us_cap_A_cur_phase_offset; /*16 A相LCL电容电流相位偏移量*/ + uint16_t us_cap_B_cur_calib_coff; /*17 B相LCL电容电流系数*/ + int16_t us_cap_B_cur_phase_offset; /*18 B相LCL电容电流相位偏移量*/ + uint16_t us_cap_C_cur_calib_coff; /*19 C相LCL电容电流系数*/ + int16_t us_cap_C_cur_phase_offset; /*20 C相LCL电容电流相位偏移量*/ + uint16_t us_bst1_cur_calib_coff; /*21 采样校准a(BOOST1电感电流)*/ + int16_t us_bst1_cur_calib_bias; /*22 采样校准b(BOOST1电感电流)*/ + uint16_t us_bst2_cur_calib_coff; /*23 采样校准a(BOOST2电感电流)*/ + int16_t us_bst2_cur_calib_bias; /*24 采样校准b(BOOST2电感电流)*/ + uint16_t us_bst3_cur_calib_coff; /*25 采样校准a(BOOST3电感电流)*/ + int16_t us_bst3_cur_calib_bias; /*26 采样校准b(BOOST3电感电流)*/ + uint16_t us_bst4_cur_calib_coff; /*27 采样校准a(BOOST4电感电流)*/ + int16_t us_bst4_cur_calib_bias; /*28 采样校准b(BOOST4电感电流)*/ + uint16_t us_pv1_volt_calib_coff; /*29 采样校准a支路1(输入电压)*/ + int16_t us_pv1_volt_calib_bias; /*30 采样校准b支路1(输入电压)*/ + uint16_t us_pv2_volt_calib_coff; /*31 采样校准a支路2(输入电压)*/ + int16_t us_pv2_volt_calib_bias; /*32 采样校准b支路2(输入电压)*/ + uint16_t us_pv3_volt_calib_coff; /*33 采样校准a支路3(输入电压)*/ + int16_t us_pv3_volt_calib_bias; /*34 采样校准b支路3(输入电压)*/ + uint16_t us_pv4_volt_calib_coff; /*35 采样校准a支路4(输入电压)*/ + int16_t us_pv4_volt_calib_bias; /*36 采样校准b支路4(输入电压)*/ + uint16_t us_tmpr_calib_coff; /*37 采样校准a(温度补偿)*/ + int16_t us_tmpr_calib_bias; /*38 采样校准b(温度补偿)*/ + uint16_t aus_reserve1[12]; /*39 预留*/ +}dsp_unrecovery_param_t; + +typedef struct tag_dsp_command_t +{ + uint16_t us_start; /*51 开机*/ + uint16_t us_stop; /*52 关机*/ + uint16_t us_rst; /*53 故障复位*/ + uint16_t us_reboot; /*54 芯片复位重启*/ + uint16_t us_slf_chk; /*55 功率单元自检(调试)*/ + uint16_t us_resume_config; /*56 参数还原*/ + uint16_t us_over_temp_flag; /*57 过温限功率标志*/ + uint16_t aus_reserve2[43]; /*58 预留*/ +}dsp_command_t; + +typedef struct tag_dsp_devices_set_t +{ + uint16_t us_work_en; /*101 工作使能*/ + uint16_t us_anti_islanding_en; /*102 孤岛检测使能*/ + uint16_t us_lvrt_en; /*103 LVRT使能*/ + uint16_t us_hvrt_en; /*104 HVRT使能*/ + uint16_t us_mppt_en; /*105 MPPT使能*/ + uint16_t us_insult_rstr_en; /*106 老化测试使能*/ + uint16_t us_neg_seq_run_en; /*107 相序异常运行使能*/ + uint16_t us_reserve_param1_3; /*108 预留参数1_3*/ + uint16_t us_dc_start_TH; /*109 直流输入电压开机阈值*/ + uint16_t us_dc_stop_TH; /*110 直流输入电压关机阈值*/ + uint16_t us_pwr_output_lmt; /*111 最大输出功率限值*/ + uint16_t us_pwr_rate_lmt; /*112 功率变化率上限*/ + uint16_t us_rctv_pwr_ctr_mode; /*113 无功生成模式*/ + int16_t sh_rctv_pwr_ref; /*114 恒无功控制给定所需的无功功率*/ + int16_t sh_pf_ref; /*115 恒功率因数控制给定所需的功率因数*/ + uint16_t us_grd_volt_ref; /*116 恒电网电压控制给定目标电网电压*/ + uint16_t us_reserve_param1_5; /*117 预留参数1_5*/ + uint16_t us_reserve_param1_6; /*118 预留参数1_6*/ + uint16_t us_reserve_param1_7; /*119 预留参数1_7*/ + uint16_t us_reserve_param1_8; /*120 预留参数1_8*/ + uint16_t us_mult_peak_en; /*121 多峰扫描使能*/ + uint16_t us_mult_peak_time_step; /*122 多峰扫描时间间隔*/ + uint16_t us_pwr_freq_ctr_rate; /*123 频率-有功控制斜率*/ + uint16_t us_grd_rcvr_time; /*124 电网恢复等待时间*/ + uint16_t us_island_rspns_time_lmt; /*125 孤岛响应时间上限*/ + uint16_t us_reserve_param1_9; /*126 预留参数1_9*/ + uint16_t us_mppt_min_volt_step; /*127 MPPT最小扰动步长*/ + uint16_t us_stop_sta_bus_bal_en; /*128 待机母线均压使能*/ + uint16_t us_stop_time_lmt; /*129 关机上限时间*/ + uint16_t us_start_volt_up_lmt; /*130 开机电压上限*/ + uint16_t us_mppt_volt_up_lmt; /*131 追踪电压上限*/ + uint16_t us_low_volt_pwr_lmt_en; /*132 低压降额使能*/ + uint16_t us_high_volt_pwr_lmt_en; /*133 过压降额使能*/ + uint16_t us_single_input_mode; /*134 共用一路输入模式*/ + uint16_t us_fault_mode; /*135 故障模式*/ + uint16_t us_reserve_param1_10; /*136 预留参数1_10*/ + uint16_t us_pv1_mode; /*137 PV1连接关系*/ + uint16_t us_pv2_mode; /*138 PV2连接关系*/ + uint16_t us_pv3_mode; /*139 PV3连接关系*/ + uint16_t us_pv4_mode; /*140 PV4连接关系*/ + uint16_t us_mppt_distb_en; /*141 MPPT波动处理逻辑使能*/ + uint16_t us_act_pwr_auto_en; /*142 有功功率自动调整*/ + int16_t sh_rctv_pwr_comp; /*143 无功补偿量*/ + uint16_t us_rctv_ctr_en; /*144 无功闭环补偿使能*/ + uint16_t us_inv_cur_comp_en; /*145 逆变电流补偿使能*/ + uint16_t us_inv_cur_comp_coff; /*146 逆变电流补偿系数*/ + int16_t sh_inv_cur_delay; /*147 逆变电路延迟角度*/ + int16_t sh_cap_cur_delay; /*148 电容电流延迟角度*/ + uint16_t us_cap_cur_coff; /*149 电容电流比例系数*/ + uint16_t us_pv_cur_coff; /*150 PV电流比例校准系数*/ + uint16_t us_pv_cur_calb_en; /*151 PV输入校准标志*/ + uint16_t us_dc_pwr_comp_en; /*152 直流功率补偿*/ + uint16_t us_bst_run_mode; /*153 BOOST运行模式*/ + uint16_t us_bst1_en; /*154 第1路BOOST使能*/ + uint16_t us_bst2_en; /*155 第2路BOOST使能*/ + uint16_t us_bst3_en; /*156 第3路BOOST使能*/ + uint16_t us_bst4_en; /*157 第4路BOOST使能*/ + uint16_t us_vol_freq_protcet_en; /*158 分段保护使能*/ + uint16_t us_pv_inversed_detcet_en; /*159 PV反接检测使能*/ + uint16_t us_pv_backward_detcet_en; /*160 PV回灌检测使能*/ + uint16_t us_anti_islanding_protect_freq_en; /*161 孤岛保护兼容频率适应性*/ + uint16_t us_pwr_control_rctv_prio_en; /*162 功率控制时无功优先使能*/ + uint16_t us_bus_uv_dect_en; /*163 母线欠压检测使能*/ + uint16_t us_hlvrt_mode_flag; /*164 高低穿模式切换*/ + uint16_t us_reserve_param1_4; /*165 预留参数1_4*/ + uint16_t us_vol_rctv_pwr_ctr_mode; /*166 电压无功控制模式*/ + uint16_t us_accu_judge_mode; /*167 精度判断模式*/ + uint16_t aus_reserve3[13]; /*168 预留*/ +}dsp_devices_set_t; + +typedef struct tag_dsp_rec_ctr_param_t +{ + uint16_t us_dc_volt_kp; /*181 外环PI控制:Kp*/ + uint16_t us_dc_volt_ki; /*182 外环PI控制:Ki*/ + uint16_t us_dc_volt_lmt; /*183 外环PI控制:OutLimit*/ + uint16_t us_volt_bal_kp; /*184 均压环PI控制:Kp*/ + uint16_t us_volt_bal_ki; /*185 均压环PI控制:Ki*/ + uint16_t us_volt_bal_lmt; /*186 均压环PI控制:OutLimit*/ + uint16_t us_ac_cur_kp; /*187 电流环Kp */ + uint16_t us_act_dmp_coff; /*188 有源阻尼Kp*/ + uint16_t us_rctv_pwt_kp; /*189 无功稳压控制Kp*/ + uint16_t us_rctv_pwt_ki; /*190 无功稳压控制Ki*/ + uint16_t us_cur_q_kp; /*191 电流环q轴PI控制:Ki*/ + uint16_t us_cur_q_lmt; /*192 电流环q轴PI控制:OutLimit*/ + uint16_t us_zero_ord_cur_kp; /*193 零序电流PI控制:Kp*/ + uint16_t us_zero_ord_cur_ki; /*194 零序电流PI控制:Ki*/ + uint16_t us_zero_ord_cur_lmt; /*195 零序电流PI控制:OutLimit*/ + uint16_t us_kr_1; /*196 1次谐振增益*/ + uint16_t us_kr_2; /*197 2次谐振增益*/ + uint16_t us_kr_3; /*198 3次谐振增益*/ + uint16_t us_kr_4; /*199 4次谐振增益*/ + uint16_t us_kr_5; /*200 5次谐振增益*/ + uint16_t us_kr_6; /*201 6次谐振增益*/ + uint16_t us_kr_7; /*202 7次谐振增益*/ + uint16_t us_kr_8; /*203 8次谐振增益*/ + uint16_t us_kr_9; /*204 9次谐振增益*/ + uint16_t us_kr_10; /*205 10次谐振增益*/ + uint16_t us_kr_11; /*206 11次谐振增益*/ + uint16_t us_kr_12; /*207 12次谐振增益*/ + uint16_t us_kr_13; /*208 13次谐振增益*/ + uint16_t us_bst_volt_kp; /*209 boost电压环Kp*/ + uint16_t us_bst_volt_ki; /*210 boost电压环Ki*/ + uint16_t us_bst_cur_kp; /*211 boost电流环Kp*/ + uint16_t us_bst_cur_ki; /*212 boost电流环Ki*/ + uint16_t us_lvrt_coff; /*213 低电压穿越系数*/ + uint16_t us_hvrt_coff; /*214 高电压穿越系数*/ + uint16_t us_pwm_mode; /*215 调制方式*/ + uint16_t us_ffwd_mode; /*216 电压前馈方式*/ + uint16_t us_bus_volt_ref_dwn_lmt; /*217 母线电压参考值下限*/ + uint16_t us_zero_ctr_kp; /*218 零序分量控制kp参数*/ + uint16_t us_ffwd_coff; /*219 加权前馈的占比系数*/ + uint16_t us_pwr_lmt_mode_en; /*220 限功率模式使能*/ + uint16_t us_island_kp; /*221 孤岛保护Kp*/ + uint16_t us_CPWM_m_TH; /*222 进入CPWM调制度阈值*/ + uint16_t us_DPWM_m_TH; /*223 进入DPWM调制度阈值*/ + uint16_t us_CPWM_bus_volt_TH; /*224 进入CPWM母线电压阈值*/ + uint16_t us_DPWM_bus_volt_TH; /*225 进入DPWM母线电压阈值*/ + uint16_t us_dc_volt_ref; /*226 直流电压参考*/ + uint16_t us_ac_volt_ref; /*227 交流电压参考*/ + int16_t sh_rctv_cur_ref; /*228 无功电流参考*/ + uint16_t us_boost_cur_ref1; /*229 boost1电流参考值*/ + uint16_t us_boost_cur_ref2; /*230 boost2电流参考值*/ + uint16_t us_boost_cur_ref3; /*231 boost3电流参考值*/ + uint16_t us_boost_cur_ref4; /*232 boost4电流参考值*/ + int16_t sh_actv_cur_ref; /*233 有功电流参考*/ + uint16_t us_reactive_voltage_coff; /*234 无功调压系数*/ + uint16_t us_com_mode_cur_TH; /*235 共模电流幅值阈值*/ + uint16_t us_com_mode_cur_cpwm_TH; /*236 CPWM共模电流次数*/ + uint16_t us_com_mode_cur_dpwm_TH; /*237 DPWM共模电流次数*/ + uint16_t aus_reserve4[13]; /*238 预留*/ +}dsp_rec_ctr_param_t; + +typedef struct tag_dsp_ctr_th_param_t +{ + uint16_t us_open_crct_ov_TH; /*251 开路电压过高阈值*/ + uint16_t us_dc_input_ov_TH; /*252 直流输入过压阈值*/ + uint16_t us_bus_ov_TH; /*253 直流母线过压阈值*/ + uint16_t us_bus_uv_TH; /*254 直流母线欠压阈值*/ + uint16_t us_inv_oc_TH; /*255 逆变电流保护瞬时值*/ + uint16_t us_inv_rms_oc_TH; /*256 逆变电流保护有效值*/ + uint16_t us_inv_cbc_TH; /*257 逆变电流逐波限流封锁阈值*/ + uint16_t us_inv_cbc_unlck_TH; /*258 逆变电流逐波限流解封阈值*/ + uint16_t us_bst1_oc_TH; /*259 Boost1过流软件保护阈值*/ + uint16_t us_bst2_oc_TH; /*260 Boost2过流软件保护阈值*/ + uint16_t us_bst_3_oc_TH; /*261 Boost3过流软件保护阈值*/ + uint16_t us_bst4_oc_TH; /*262 Boost4过流软件保护阈值*/ + uint16_t us_pv_sc_volt_TH; /*263 MPPT短路电压阈值*/ + uint16_t us_pv_sc_cur_TH; /*264 MPPT短路电流阈值*/ + uint16_t us_grd_phase_loss_TH; /*265 额定电网保护电压*/ + uint16_t us_grd_ov_TH; /*266 电网过压阈值*/ + uint16_t us_grd_uv_TH; /*267 电网欠压阈值*/ + uint16_t us_grd_ov_2nd_TH; /*268 电网欠压二级保护阈值*/ + uint16_t us_grd_ov_1st_TH; /*269 电网欠压一级保护阈值*/ + uint16_t us_grd_uv_1st_TH; /*270 电网过压一级保护阈值*/ + uint16_t us_grd_uv_2nd_TH; /*271 电网过压二级保护阈值*/ + uint16_t us_ov_lmt_pwr_TH; /*272 过压降额阈值*/ + uint16_t us_freq_ov_lgc; /*273 电网频率上限*/ + uint16_t us_freq_und_lgc; /*274 电网频率下限*/ + uint16_t us_grd_und_freq_5th_TH; /*275 电网欠频五级保护阈值*/ + uint16_t us_grd_und_freq_4th_TH; /*276 电网欠频四级保护阈值*/ + uint16_t us_grd_und_freq_3rd_TH; /*277 电网欠频三级保护阈值*/ + uint16_t us_grd_und_freq_2nd_TH; /*278 电网欠频二级保护阈值*/ + uint16_t us_grd_und_freq_1st_TH; /*279 电网欠频一级保护阈值*/ + uint16_t us_grd_over_freq_1st_TH; /*280 电网过频一级保护阈值*/ + uint16_t us_grd_over_freq_2nd_TH; /*281 电网过频二级保护阈值*/ + uint16_t us_grd_over_freq_3rd_TH; /*282 电网过频三级保护阈值*/ + uint16_t us_ov_freq_lmt_pwr_TH; /*283 过频降额阈值*/ + uint16_t us_cap_oc_TH; /*284 滤波电容过流保护阈值*/ + uint16_t us_cap_ov_TH; /*285 滤波电容过压保护阈值*/ + uint16_t us_inslt_rstr_TH; /*286 绝缘阻抗检测阈值*/ + uint16_t us_grd_flt_dis_inner_flt_en; /*287 电网故障屏蔽内部故障*/ + uint16_t us_act_island_dtct_TH; /*288 主动反孤岛阈值*/ + uint16_t us_act_island_dtct_var_TH; /*289 反孤岛无功电流余量*/ + uint16_t us_pv_line_dtct_en; /*290 PV接线检测(未启用)*/ + uint16_t us_pv_inversed_input_vol_TH; /*291 PV反接电压阈值*/ + uint16_t us_pv_inversed_input_curr_TH; /*292 PV反接电感电流阈值*/ + uint16_t us_pv_backward_input_vol_TH; /*293 PV回灌电压阈值*/ + uint16_t us_pv_branch_input_curr_TH; /*294 支路输入电流阈值*/ + int16_t us_pv_branch_input_curr_TH1; /*295 支路输入电流阈值1*/ + uint16_t us_pv_branch_input_curr_TH2; /*296 支路输入电流阈值2*/ + uint16_t us_eco_warning_1; /*297 节能告警阈值1*/ + uint16_t us_eco_warning_2; /*298 节能告警阈值2*/ + uint16_t us_cavity_overtemp_TH; /*299 腔体过温阈值*/ + uint16_t us_cavity_overtemp_TH2; /*300 腔体2过温阈值*/ + uint16_t us_collfin_overtemp_TH; /*301 散热片过温阈值*/ + uint16_t us_q_u_low_vol_th; /*302 Q-U低压系数阈值*/ + uint16_t us_q_u_high_vol_th; /*303 Q-U高压系数阈值*/ + uint16_t us_lvrt_border_th; /*304 低穿穿越边界*/ + uint16_t us_hvrt_border_th; /*305 高穿穿越边界*/ + uint16_t us_over_cap_current_time_ms; /*306 滤波电容过流保护时间*/ + uint16_t us_over_rms_current_time_ms; /*307 逆变过流保护时间*/ + uint16_t us_grid_over_volt_L0_time_ms; /*308 电网过压L0保护时间*/ + uint16_t us_grid_over_volt_L1_time_ms; /*309 电网过压L1保护时间*/ + uint16_t us_grid_over_volt_L2_time_ms; /*310 电网过压L2保护时间*/ + uint16_t us_grid_below_volt_L0_time_ms; /*311 电网欠压L0保护时间*/ + uint16_t us_grid_below_volt_L1_time_ms; /*312 电网欠压L1保护时间*/ + uint16_t us_grid_below_volt_L2_time_ms; /*313 电网欠压L2保护时间*/ + uint16_t us_grid_over_freq_L0_time_ms; /*314 电网过频L0保护时间*/ + uint16_t us_grid_over_freq_L1_time_s; /*315 电网过频L1保护时间*/ + uint16_t us_grid_over_freq_L2_time_s; /*316 电网过频L2保护时间*/ + uint16_t us_grid_over_freq_L3_time_ms; /*317 电网过频L3保护时间*/ + uint16_t us_grid_below_freq_L0_time_ms; /*318 电网欠频L0保护时间*/ + uint16_t us_grid_below_freq_L1_time_s; /*319 电网欠频L1保护时间*/ + uint16_t us_grid_below_freq_L2_time_s; /*320 电网欠频L2保护时间*/ + uint16_t us_grid_below_freq_L3_time_s; /*321 电网欠频L3保护时间*/ + uint16_t us_grid_below_freq_L4_time_s; /*322 电网欠频L4保护时间*/ + uint16_t us_grid_below_freq_L5_time_ms; /*323 电网欠频L5保护时间*/ + uint16_t us_over_bus_volt_time_ms; /*324 母线欠压保护时间*/ + uint16_t aus_reserve5[6]; /*325 预留*/ +}dsp_ctr_th_param_t; + +typedef struct tag_dsp_ctr_limit_param_t +{ + uint16_t us_rt_rctv_cur_lmt; /*331 高低穿无功电流限幅值*/ + uint16_t us_inv_cur_lmt; /*332 逆变总电流限幅值*/ + uint16_t us_inv_act_cur_lmt; /*333 逆变有功电流限幅值*/ + uint16_t us_inv_rctv_cur_lmt; /*334 逆变无功电流限幅值*/ + uint16_t us_bst1_cur_lmt; /*335 Boost1单路电流限幅值*/ + uint16_t us_bst2_cur_lmt; /*336 Boost2单路电流限幅值*/ + uint16_t us_bst3_cur_lmt; /*337 Boost3单路电流限幅值*/ + uint16_t us_bst4_cur_lmt; /*338 Boost4单路电流限幅值*/ + uint16_t us_5th_cur_lmt; /*339 5次谐波电流限幅值*/ + uint16_t us_7th_cur_lmt; /*340 7次谐波电流限幅值*/ + uint16_t us_11th_cur_lmt; /*341 11次谐波电流限幅值*/ + uint16_t us_13th_cur_lmt; /*342 13次谐波电流限幅值*/ + uint16_t us_17th_cur_lmt; /*343 17次谐波电流限幅值*/ + uint16_t us_19th_cur_lmt; /*344 19次谐波电流限幅值*/ + uint16_t us_2th_cur_lmt; /*345 2次谐波电流限幅值*/ + uint16_t us_4th_cur_lmt; /*346 4次谐波电流限幅值*/ + uint16_t us_6th_cur_lmt; /*347 6次谐波电流限幅值*/ + uint16_t us_8th_cur_lmt; /*348 8次谐波电流限幅值*/ + uint16_t us_10th_cur_lmt; /*349 10次谐波电流限幅值*/ + uint16_t us_14th_cur_lmt; /*350 14次谐波电流限幅值*/ + uint16_t us_16th_cur_lmt; /*351 16次谐波电流限幅值*/ + uint16_t us_20th_cur_lmt; /*352 20次谐波电流限幅值*/ + uint16_t us_DPWM_ap_TH; /*353 进入DPWM视在功率阈值*/ + uint16_t us_CPWM_ap_TH; /*354 进入CPWM视在功率阈值*/ + uint16_t us_lead_comp_kp; /*355 零序超前补偿kp*/ + uint16_t us_collfin_overtemp_lmt_th; /*356 散热片过温降功率阈值*/ + uint16_t us_cavity_overtemp_lmt_th; /*357 腔体过温降功率阈值*/ + uint16_t us_cavity2_overtemp_lmt_th; /*358 腔体2过温降功率阈值*/ + uint16_t us_overtemp_pwr_down_th; /*359 过温降额功率下限*/ + uint16_t us_fan_fault_pwr_down_th; /*360 风扇故障降额功率下限*/ + uint16_t us_overtemp_pwr_up_th; /*361 过温降额功率上限*/ + uint16_t us_overtemp_pwr_change_down_th; /*362 过温降额功率变化率上限*/ + uint16_t aus_reserve6[18]; /*363 预留*/ +}dsp_ctr_limit_param_t; + +typedef struct tag_dsp_debug_test_control_t +{ + uint16_t us_reserve_param5_0; /*381 预留参数5_0*/ + uint16_t us_reserve_param5_1; /*382 预留参数5_1*/ + uint16_t us_reserve_param5_2; /*383 预留参数5_2*/ + uint16_t us_reserve_param5_3; /*384 预留参数5_3*/ + uint16_t us_systm_sta; /*385 整机状态*/ + uint16_t us_inv_sta; /*386 逆变状态*/ + uint16_t us_mppt1_state; /*387 MPPT1状态(debug)*/ + uint16_t us_mppt2_state; /*388 MPPT2状态(debug)*/ + uint16_t us_mppt3_state; /*389 MPPT3状态(debug)*/ + uint16_t us_mppt4_state; /*390 MPPT4状态(debug)*/ + uint16_t us_low_pwr_flg; /*391 功率不足标志*/ + uint16_t us_mppt_manual_reference; /*392 MPPT手动参考标志位*/ + uint16_t us_mppt_manual_reference_value; /*393 MPPT手动参考值*/ + uint16_t us_volt_bal_th; /*394 母线均压开启阈值*/ + uint16_t us_reserve_param5_4; /*395 预留参数5_4*/ + uint16_t us_reserve_param5_5; /*396 预留参数5_5*/ + uint16_t aus_reserve7[23]; /*397 预留*/ +}dsp_debug_test_control_t; + +typedef struct tag_dsp_calibrate_t +{ + uint16_t us_auto_calibrate_en; /*420 自动化校准使能*/ + uint16_t us_auto_calibrate_state; /*421 自动化校准状态*/ + uint16_t us_auto_calibrate_cmd; /*422 自动化校准指令*/ + uint16_t us_auto_calibrate_result; /*423 自动化校准结果*/ + uint16_t us_auto_calibrate_refresh_flag; /*424 自动化校准刷新标志*/ + uint16_t us_reserve_param6_6; /*425 预留参数6_6*/ + uint16_t us_reserve_param6_7; /*426 预留参数6_7*/ + uint16_t us_reserve_param6_8; /*427 预留参数6_8*/ + uint16_t us_reserve_param6_9; /*428 预留参数6_9*/ + uint16_t us_reserve_param6_10; /*429 预留参数6_10*/ + uint16_t us_reserve_param6_11; /*430 预留参数6_11*/ + uint16_t us_reserve_param6_12; /*431 预留参数6_12*/ + uint16_t us_reserve_param6_13; /*432 预留参数6_13*/ + uint16_t us_reserve_param6_14; /*433 预留参数6_14*/ + uint16_t us_reserve_param6_15; /*434 预留参数6_15*/ + uint16_t us_reserve_param6_16; /*435 预留参数6_16*/ + uint16_t us_reserve_param6_17; /*436 预留参数6_17*/ + uint16_t us_reserve_param6_18; /*437 预留参数6_18*/ + uint16_t us_reserve_param6_19; /*438 预留参数6_19*/ + uint16_t us_reserve_param6_20; /*439 预留参数6_20*/ + uint16_t us_reserve_param6_21; /*440 预留参数6_21*/ + uint16_t us_reserve_param6_22; /*441 预留参数6_22*/ + uint16_t us_reserve_param6_23; /*442 预留参数6_23*/ + uint16_t us_reserve_param6_24; /*443 预留参数6_24*/ + uint16_t us_reserve_param6_25; /*444 预留参数6_25*/ + uint16_t us_reserve_param6_26; /*445 预留参数6_26*/ + uint16_t us_reserve_param6_27; /*446 预留参数6_27*/ + uint16_t us_reserve_param6_28; /*447 预留参数6_28*/ + uint16_t us_reserve_param6_29; /*448 预留参数6_29*/ + uint16_t us_reserve_param6_30; /*449 预留参数6_30*/ + uint16_t us_reserve_param6_31; /*450 预留参数6_31*/ + uint16_t us_reserve_param6_32; /*451 预留参数6_32*/ + uint16_t us_reserve_param6_33; /*452 预留参数6_33*/ + uint16_t us_reserve_param6_34; /*453 预留参数6_34*/ + uint16_t us_reserve_param6_35; /*454 预留参数6_35*/ + uint16_t us_reserve_param6_36; /*455 预留参数6_36*/ + uint16_t us_reserve_param6_37; /*456 预留参数6_37*/ + uint16_t aus_reserve8[43]; /*457 预留*/ +}dsp_calibrate_t; + +typedef struct tag_dsp_data_file_t +{ + uint16_t us_dev_addr; /*500 本地通信地址(模块号)*/ + uint16_t us_device_rated_actv_pwr; /*501 装置额定有功功率(设备容量)*/ + uint16_t us_device_rated_rctv_pwr; /*502 装置额定无功功率*/ + uint16_t aus_app_ver[2]; /*503 DSP主控版本号*/ + uint16_t aus_boot_ver[2]; /*505 DSP底层版本号*/ + uint16_t aus_prog_code[3]; /*507 DSP主控程序组件号*/ + uint16_t us_dev_type; /*510 设备类型*/ + uint16_t us_prot_ver; /*511 DSP使用地址表协议版本号*/ + uint16_t us_cfg_crc_h; /*512 DSP配置参数CRC高16位*/ + uint16_t us_cfg_crc_l; /*513 DSP配置参数CRC低16位*/ + uint16_t us_device_phase; /*514 相数*/ + uint16_t aus_app_ver_new[4]; /*515 DSP主控版本号新格式*/ + uint16_t aus_boot_ver_new[4]; /*519 DSP底层版本号新格式*/ + uint16_t us_mppt_number; /*523 MPPT数量*/ + uint16_t aus_reserve9[26]; /*524 预留*/ +}dsp_data_file_t; + +typedef struct tag_dsp_data_hardware_t +{ + uint16_t us_relay_a_stat; /*550 继电器A状态*/ + uint16_t us_relay_b_stat; /*551 继电器B状态*/ + uint16_t us_relay_c_stat; /*552 继电器C状态*/ + uint16_t aus_reserve10[7]; /*553 预留*/ +}dsp_data_hardware_t; + +typedef struct tag_dsp_data_state_t +{ + uint16_t us_fault1_1; /*560 一般故障1*/ + uint16_t us_fault1_2; /*561 一般故障2*/ + uint16_t us_fault1_3; /*562 一般故障3*/ + uint16_t us_fault1_4; /*563 一般故障4*/ + uint16_t us_fault2_1; /*564 严重故障1*/ + uint16_t us_fault2_2; /*565 严重故障2*/ + uint16_t us_fault2_3; /*566 严重故障3*/ + uint16_t us_fault2_4; /*567 严重故障4*/ + uint16_t us_waring_1; /*568 告警事件1*/ + uint16_t us_waring_2; /*569 告警事件2*/ + uint16_t us_slf_chk_1; /*570 自检事件1*/ + uint16_t us_slf_chk_2; /*571 自检事件2*/ + uint16_t aus_reserve11[18]; /*572 预留*/ + uint16_t us_run_mode_sta; /*590 DSP运行状态*/ + uint16_t us_phase_sta; /*591 电压相序显示*/ + uint16_t us_mppt1_sta; /*592 MPPT1状态*/ + uint16_t us_mppt2_sta; /*593 MPPT2状态*/ + uint16_t us_dev_sta; /*594 显示运行模式*/ + uint16_t us_fault_label; /*595 故障状态标志*/ + uint16_t us_lgc_label; /*596 逻辑状态标签*/ + uint16_t us_echo_label; /*597 节能状态标签*/ + uint16_t us_pll_label; /*598 锁相状态标签*/ + uint16_t us_aux_label; /*599 辅助状态标签*/ + uint16_t us_ov_tem_half_pwr_label; /*600 过温半载运行标签*/ + uint16_t us_dc_led_state_display; /*601 DSP直流灯状态指示*/ + uint16_t us_ac_led_state_display; /*602 DSP交流灯状态指示*/ + uint16_t us_device_modulation_state; /*603 设备调制状态*/ + uint16_t us_mppt3_sta; /*604 MPPT3状态*/ + uint16_t us_mppt4_sta; /*605 MPPT4状态*/ + uint16_t us_over_temp_limit_pwr; /*606 过温限功率状态*/ + uint16_t aus_reserve12[13]; /*607 预留*/ +}dsp_data_state_t; + +typedef struct tag_dsp_data_collect_t +{ + uint16_t us_grid_freq; /*620 电网频率*/ + int16_t sh_dc_input_avg_volt; /*621 总母线电压avg*/ + int16_t sh_dc_up_side_avg_volt; /*622 上母线电压avg*/ + int16_t sh_dc_low_side_avg_volt; /*623 下母线电压_avg*/ + uint16_t us_grid_a_rms_volt; /*624 电网电压A_RMS*/ + uint16_t us_grid_b_rms_volt; /*625 电网电压B_RMS*/ + uint16_t us_grid_c_rms_volt; /*626 电网电压C_RMS*/ + uint16_t us_cap_a_rms_volt; /*627 逆变阻尼电压A_RMS*/ + uint16_t us_cap_b_rms_volt; /*628 逆变阻尼电压B_RMS*/ + uint16_t us_cap_c_rms_volt; /*629 逆变阻尼电压C_RMS*/ + uint16_t us_inv_a_rms_cur; /*630 逆变电流A_RMS*/ + uint16_t us_inv_b_rms_cur; /*631 逆变电流B_RMS*/ + uint16_t us_inv_c_rms_cur; /*632 逆变电流C_RMS*/ + uint16_t us_cap_a_rms_cur; /*633 LCL电容电流A_RMS*/ + uint16_t us_cap_b_rms_cur; /*634 LCL电容电流B_RMS*/ + uint16_t us_cap_c_rms_cur; /*635 LCL电容电流C_RMS*/ + uint16_t us_reserve_data2_7; /*636 预留数据2_7*/ + uint16_t us_reserve_data2_8; /*637 预留数据2_8*/ + uint16_t us_reserve_data2_9; /*638 预留数据2_9*/ + uint16_t us_boost_pv_volt_1; /*639 BOOST输入电压1路*/ + uint16_t us_boost_pv_volt_2; /*640 BOOST输入电压2路*/ + uint16_t us_boost_pv_volt_3; /*641 BOOST输入电压3路*/ + uint16_t us_boost_pv_volt_4; /*642 BOOST输入电压4路*/ + int16_t sh_boost1_pv_cur_1; /*643 1路BOOST组串电流1*/ + int16_t sh_boost2_pv_cur_1; /*644 2路BOOST组串电流1*/ + int16_t sh_boost3_pv_cur_1; /*645 3路BOOST组串电流1*/ + int16_t sh_boost4_pv_cur_1; /*646 4路BOOST组串电流1*/ + int16_t sh_boost_induc_cur_1; /*647 BOOST电感电流1路*/ + int16_t sh_boost_induc_cur_2; /*648 BOOST电感电流2路*/ + int16_t sh_boost_induc_cur_3; /*649 BOOST电感电流3路*/ + int16_t sh_boost_induc_cur_4; /*650 BOOST电感电流4路*/ + uint16_t us_device_curr_a; /*651 设备电流A*/ + uint16_t us_device_curr_b; /*652 设备电流B*/ + uint16_t us_device_curr_c; /*653 设备电流C*/ + int16_t sh_boost1_pv_cur_2; /*654 1路BOOST组串电流2*/ + int16_t sh_boost2_pv_cur_2; /*655 2路BOOST组串电流2*/ + int16_t sh_boost3_pv_cur_2; /*656 3路BOOST组串电流2*/ + int16_t sh_boost4_pv_cur_2; /*657 4路BOOST组串电流2*/ + uint16_t aus_reserve13[18]; /*658 预留*/ + uint16_t us_reserve_data2_1; /*676 预留数据2_1*/ + uint16_t us_reserve_data2_2; /*677 预留数据2_2*/ + uint16_t us_reserve_data2_3; /*678 预留数据2_3*/ + uint16_t us_reserve_data2_4; /*679 预留数据2_4*/ + uint16_t us_reserve_data2_5; /*680 预留数据2_5*/ + uint16_t us_reserve_data2_6; /*681 预留数据2_6*/ + uint16_t aus_reserve14[8]; /*682 预留*/ +}dsp_data_collect_t; + +typedef struct tag_dsp_data_power_t +{ + int16_t sh_dev_a_actv_pwr; /*690 装置侧有功功率A*/ + int16_t sh_dev_b_actv_pwr; /*691 装置侧有功功率B*/ + int16_t sh_dev_c_actv_pwr; /*692 装置侧有功功率C*/ + int16_t sh_dev_actv_pwr; /*693 装置侧有功功率总*/ + int16_t sh_dev_a_rctv_pwr; /*694 装置侧无功功率A*/ + int16_t sh_dev_b_rctv_pwr; /*695 装置侧无功功率B*/ + int16_t sh_dev_c_rctv_pwr; /*696 装置侧无功功率C*/ + int16_t sh_dev_rctv_pwr; /*697 装置侧无功功率总*/ + uint16_t us_dev_a_aprt_pwr; /*698 装置侧视在功率A*/ + uint16_t us_dev_b_aprt_pwr; /*699 装置侧视在功率B*/ + uint16_t us_dev_c_aprt_pwr; /*700 装置侧视在功率C*/ + uint16_t us_dev_aprt_pwr; /*701 装置侧视在功率总*/ + uint16_t us_dev_a_PF; /*702 装置侧功率因数A*/ + uint16_t us_dev_b_PF; /*703 装置侧功率因数B*/ + uint16_t us_dev_c_PF; /*704 装置侧功率因数C*/ + uint16_t us_dev_PF; /*705 装置侧功率因数总*/ + int16_t sh_grid_a_actv_pwr; /*706 网侧有功功率A*/ + int16_t sh_grid_b_actv_pwr; /*707 网侧有功功率B*/ + int16_t sh_grid_c_actv_pwr; /*708 网侧有功功率C*/ + int16_t sh_grid_actv_pwr; /*709 网侧有功功率总*/ + int16_t sh_grid_a_rctv_pwr; /*710 网侧无功功率A*/ + int16_t sh_grid_b_rctv_pwr; /*711 网侧无功功率B*/ + int16_t sh_grid_c_rctv_pwr; /*712 网侧无功功率C*/ + int16_t sh_grid_rctv_pwr; /*713 网侧无功功率总*/ + uint16_t us_grid_a_aprt_pwr; /*714 网侧视在功率A*/ + uint16_t us_grid_b_aprt_pwr; /*715 网侧视在功率B*/ + uint16_t us_grid_c_aprt_pwr; /*716 网侧视在功率C*/ + uint16_t us_grid_aprt_pwr; /*717 网侧视在功率总*/ + int16_t sh_grid_a_PF; /*718 网侧功率因数A*/ + int16_t sh_grid_b_PF; /*719 网侧功率因数B*/ + int16_t sh_grid_c_PF; /*720 网侧功率因数C*/ + int16_t sh_grid_PF; /*721 网侧功率因数总*/ + int16_t sh_load_a_actv_pwr; /*722 负载有功功率A*/ + int16_t sh_load_b_actv_pwr; /*723 负载有功功率B*/ + int16_t sh_load_c_actv_pwr; /*724 负载有功功率C*/ + int16_t sh_load_actv_pwr; /*725 负载有功功率总*/ + int16_t sh_load_a_rctv_pwr; /*726 负载无功功率A*/ + int16_t sh_load_b_rctv_pwr; /*727 负载无功功率B*/ + int16_t sh_load_c_rctv_pwr; /*728 负载无功功率C*/ + int16_t sh_load_rctv_pwr; /*729 负载无功功率总*/ + uint16_t us_load_a_aprt_pwr; /*730 负载视在功率A*/ + uint16_t us_load_b_aprt_pwr; /*731 负载视在功率B*/ + uint16_t us_load_c_aprt_pwr; /*732 负载视在功率C*/ + uint16_t us_load_aprt_pwr; /*733 负载视在功率总*/ + int16_t sh_load_a_PF; /*734 负载功率因数A*/ + int16_t sh_load_b_PF; /*735 负载功率因数B*/ + int16_t sh_load_c_PF; /*736 负载功率因数C*/ + int16_t sh_load_PF; /*737 负载功率因数总*/ + int16_t us_boost_pwr_1; /*738 BOOST功率1路*/ + int16_t us_boost_pwr_2; /*739 BOOST功率2路*/ + int16_t us_boost_pwr_3; /*740 BOOST功率3路*/ + int16_t us_boost_pwr_4; /*741 BOOST功率4路*/ + int16_t us_boost_pwr; /*742 BOOST功率总*/ + uint16_t aus_reserve15[27]; /*743 预留*/ +}dsp_data_power_t; + +typedef struct tag_dsp_data_unbalance_t +{ + uint16_t us_grid_cur_unb; /*770 网侧电流不平衡度*/ + uint16_t us_grid_cur_unb2; /*771 网侧电流负序不平衡度*/ + uint16_t us_grid_cur_unb0; /*772 网侧电流零序不平衡度*/ + uint16_t us_load_cur_unb; /*773 负载电流不平衡度*/ + uint16_t us_load_cur_unb2; /*774 负载电流负序不平衡度*/ + uint16_t us_load_cur_unb0; /*775 负载电流零序不平衡度*/ + uint16_t us_grid_volt_unb; /*776 电网电压不平衡度*/ + uint16_t us_grid_volt_unb2; /*777 电网电压负序不平衡度*/ + uint16_t us_grid_volt_unb0; /*778 电网电压零序不平衡度*/ + uint16_t aus_reserve16[49]; /*779 预留*/ +}dsp_data_unbalance_t; + +typedef struct tag_dsp_config_param_t +{ + dsp_devices_set_t st_dsp_devices_set; + dsp_rec_ctr_param_t st_dsp_rec_ctr_param; + dsp_ctr_th_param_t st_dsp_ctr_th_param; + dsp_ctr_limit_param_t st_dsp_ctr_limit_param; + dsp_debug_test_control_t st_dsp_debug_test_control; + dsp_calibrate_t st_dsp_calibrate; +}dsp_config_param_t; + +typedef struct tag_dsp_monitor_params_t +{ + dsp_data_file_t st_dsp_data_file; + dsp_data_hardware_t st_dsp_data_hardware; + dsp_data_state_t st_dsp_data_state; + dsp_data_collect_t st_dsp_data_collect; + dsp_data_power_t st_dsp_data_power; + dsp_data_unbalance_t st_dsp_data_unbalance; +}dsp_monitor_params_t; + +typedef struct tag_dsp_comm_params_t +{ + dsp_unrecovery_param_t st_dsp_unrecovery_param; + dsp_command_t st_dsp_cmd; + dsp_config_param_t st_config_param; + dsp_monitor_params_t st_monitor_params; +}dsp_comm_params_t; + +/*参数地址宏定义*/ +//dsp_unrecovery_param_t +#define DSP_GRD_A_VOLT_CALIB_COFF_PARAM_ADDR 0 /*A相采样校准a(网侧交流电压采样)*/ +#define DSP_GRD_A_VOLT_CALIB_BIAS_PARAM_ADDR 1 /*A相采样校准b(网侧交流电压采样)*/ +#define DSP_GRD_B_VOLT_CALIB_COFF_PARAM_ADDR 2 /*B相采样校准a(网侧交流电压采样)*/ +#define DSP_GRD_B_VOLT_CALIB_BIAS_PARAM_ADDR 3 /*B相采样校准b(网侧交流电压采样)*/ +#define DSP_GRD_C_VOLT_CALIB_COFF_PARAM_ADDR 4 /*C相采样校准a(网侧交流电压采样)*/ +#define DSP_GRD_C_VOLT_CALIB_BIAS_PARAM_ADDR 5 /*C相采样校准b(网侧交流电压采样)*/ +#define DSP_INV_A_CUR_CALIB_COFF_PARAM_ADDR 6 /*A相采样校准a(逆变侧电感电流)*/ +#define DSP_INV_A_CUR_CALIB_BIAS_PARAM_ADDR 7 /*A相采样校准b(逆变侧电感电流)*/ +#define DSP_INV_A_CUR_PHASE_OFFSET_PARAM_ADDR 8 /*A相逆变电流相位偏移量*/ +#define DSP_INV_B_CUR_CALIB_COFF_PARAM_ADDR 9 /*B相采样校准a(逆变侧电感电流)*/ +#define DSP_INV_B_CUR_CALIB_BIAS_PARAM_ADDR 10 /*B相采样校准b(逆变侧电感电流)*/ +#define DSP_INV_B_CUR_PHASE_OFFSET_PARAM_ADDR 11 /*B相逆变电流相位偏移量*/ +#define DSP_INV_C_CUR_CALIB_COFF_PARAM_ADDR 12 /*C相采样校准a(逆变侧电感电流)*/ +#define DSP_INV_C_CUR_CALIB_BIAS_PARAM_ADDR 13 /*C相采样校准b(逆变侧电感电流)*/ +#define DSP_INV_C_CUR_PHASE_OFFSET_PARAM_ADDR 14 /*C相逆变电流相位偏移量*/ +#define DSP_CAP_A_CUR_CALIB_COFF_PARAM_ADDR 15 /*A相LCL电容电流系数*/ +#define DSP_CAP_A_CUR_PHASE_OFFSET_PARAM_ADDR 16 /*A相LCL电容电流相位偏移量*/ +#define DSP_CAP_B_CUR_CALIB_COFF_PARAM_ADDR 17 /*B相LCL电容电流系数*/ +#define DSP_CAP_B_CUR_PHASE_OFFSET_PARAM_ADDR 18 /*B相LCL电容电流相位偏移量*/ +#define DSP_CAP_C_CUR_CALIB_COFF_PARAM_ADDR 19 /*C相LCL电容电流系数*/ +#define DSP_CAP_C_CUR_PHASE_OFFSET_PARAM_ADDR 20 /*C相LCL电容电流相位偏移量*/ +#define DSP_BST1_CUR_CALIB_COFF_PARAM_ADDR 21 /*采样校准a(BOOST1电感电流)*/ +#define DSP_BST1_CUR_CALIB_BIAS_PARAM_ADDR 22 /*采样校准b(BOOST1电感电流)*/ +#define DSP_BST2_CUR_CALIB_COFF_PARAM_ADDR 23 /*采样校准a(BOOST2电感电流)*/ +#define DSP_BST2_CUR_CALIB_BIAS_PARAM_ADDR 24 /*采样校准b(BOOST2电感电流)*/ +#define DSP_BST3_CUR_CALIB_COFF_PARAM_ADDR 25 /*采样校准a(BOOST3电感电流)*/ +#define DSP_BST3_CUR_CALIB_BIAS_PARAM_ADDR 26 /*采样校准b(BOOST3电感电流)*/ +#define DSP_BST4_CUR_CALIB_COFF_PARAM_ADDR 27 /*采样校准a(BOOST4电感电流)*/ +#define DSP_BST4_CUR_CALIB_BIAS_PARAM_ADDR 28 /*采样校准b(BOOST4电感电流)*/ +#define DSP_PV1_VOLT_CALIB_COFF_PARAM_ADDR 29 /*采样校准a支路1(输入电压)*/ +#define DSP_PV1_VOLT_CALIB_BIAS_PARAM_ADDR 30 /*采样校准b支路1(输入电压)*/ +#define DSP_PV2_VOLT_CALIB_COFF_PARAM_ADDR 31 /*采样校准a支路2(输入电压)*/ +#define DSP_PV2_VOLT_CALIB_BIAS_PARAM_ADDR 32 /*采样校准b支路2(输入电压)*/ +#define DSP_PV3_VOLT_CALIB_COFF_PARAM_ADDR 33 /*采样校准a支路3(输入电压)*/ +#define DSP_PV3_VOLT_CALIB_BIAS_PARAM_ADDR 34 /*采样校准b支路3(输入电压)*/ +#define DSP_PV4_VOLT_CALIB_COFF_PARAM_ADDR 35 /*采样校准a支路4(输入电压)*/ +#define DSP_PV4_VOLT_CALIB_BIAS_PARAM_ADDR 36 /*采样校准b支路4(输入电压)*/ +#define DSP_TMPR_CALIB_COFF_PARAM_ADDR 37 /*采样校准a(温度补偿)*/ +#define DSP_TMPR_CALIB_BIAS_PARAM_ADDR 38 /*采样校准b(温度补偿)*/ + +//dsp_command_t +#define DSP_START_PARAM_ADDR 51 /*开机*/ +#define DSP_STOP_PARAM_ADDR 52 /*关机*/ +#define DSP_RST_PARAM_ADDR 53 /*故障复位*/ +#define DSP_REBOOT_PARAM_ADDR 54 /*芯片复位重启*/ +#define DSP_SLF_CHK_PARAM_ADDR 55 /*功率单元自检(调试)*/ +#define DSP_RESUME_CONFIG_PARAM_ADDR 56 /*参数还原*/ +#define DSP_OVER_TEMP_FLAG_PARAM_ADDR 57 /*过温限功率标志*/ + +//dsp_devices_set_t +#define DSP_WORK_EN_PARAM_ADDR 101 /*工作使能*/ +#define DSP_ANTI_ISLANDING_EN_PARAM_ADDR 102 /*孤岛检测使能*/ +#define DSP_LVRT_EN_PARAM_ADDR 103 /*LVRT使能*/ +#define DSP_HVRT_EN_PARAM_ADDR 104 /*HVRT使能*/ +#define DSP_MPPT_EN_PARAM_ADDR 105 /*MPPT使能*/ +#define DSP_INSULT_RSTR_EN_PARAM_ADDR 106 /*老化测试使能*/ +#define DSP_NEG_SEQ_RUN_EN_PARAM_ADDR 107 /*相序异常运行使能*/ +#define DSP_RESERVE_PARAM1_3_PARAM_ADDR 108 /*预留参数1_3*/ +#define DSP_DC_START_TH_PARAM_ADDR 109 /*直流输入电压开机阈值*/ +#define DSP_DC_STOP_TH_PARAM_ADDR 110 /*直流输入电压关机阈值*/ +#define DSP_PWR_OUTPUT_LMT_PARAM_ADDR 111 /*最大输出功率限值*/ +#define DSP_PWR_RATE_LMT_PARAM_ADDR 112 /*功率变化率上限*/ +#define DSP_RCTV_PWR_CTR_MODE_PARAM_ADDR 113 /*无功生成模式*/ +#define DSP_RCTV_PWR_REF_PARAM_ADDR 114 /*恒无功控制给定所需的无功功率*/ +#define DSP_PF_REF_PARAM_ADDR 115 /*恒功率因数控制给定所需的功率因数*/ +#define DSP_GRD_VOLT_REF_PARAM_ADDR 116 /*恒电网电压控制给定目标电网电压*/ +#define DSP_RESERVE_PARAM1_5_PARAM_ADDR 117 /*预留参数1_5*/ +#define DSP_RESERVE_PARAM1_6_PARAM_ADDR 118 /*预留参数1_6*/ +#define DSP_RESERVE_PARAM1_7_PARAM_ADDR 119 /*预留参数1_7*/ +#define DSP_RESERVE_PARAM1_8_PARAM_ADDR 120 /*预留参数1_8*/ +#define DSP_MULT_PEAK_EN_PARAM_ADDR 121 /*多峰扫描使能*/ +#define DSP_MULT_PEAK_TIME_STEP_PARAM_ADDR 122 /*多峰扫描时间间隔*/ +#define DSP_PWR_FREQ_CTR_RATE_PARAM_ADDR 123 /*频率-有功控制斜率*/ +#define DSP_GRD_RCVR_TIME_PARAM_ADDR 124 /*电网恢复等待时间*/ +#define DSP_ISLAND_RSPNS_TIME_LMT_PARAM_ADDR 125 /*孤岛响应时间上限*/ +#define DSP_RESERVE_PARAM1_9_PARAM_ADDR 126 /*预留参数1_9*/ +#define DSP_MPPT_MIN_VOLT_STEP_PARAM_ADDR 127 /*MPPT最小扰动步长*/ +#define DSP_STOP_STA_BUS_BAL_EN_PARAM_ADDR 128 /*待机母线均压使能*/ +#define DSP_STOP_TIME_LMT_PARAM_ADDR 129 /*关机上限时间*/ +#define DSP_START_VOLT_UP_LMT_PARAM_ADDR 130 /*开机电压上限*/ +#define DSP_MPPT_VOLT_UP_LMT_PARAM_ADDR 131 /*追踪电压上限*/ +#define DSP_LOW_VOLT_PWR_LMT_EN_PARAM_ADDR 132 /*低压降额使能*/ +#define DSP_HIGH_VOLT_PWR_LMT_EN_PARAM_ADDR 133 /*过压降额使能*/ +#define DSP_SINGLE_INPUT_MODE_PARAM_ADDR 134 /*共用一路输入模式*/ +#define DSP_FAULT_MODE_PARAM_ADDR 135 /*故障模式*/ +#define DSP_RESERVE_PARAM1_10_PARAM_ADDR 136 /*预留参数1_10*/ +#define DSP_PV1_MODE_PARAM_ADDR 137 /*PV1连接关系*/ +#define DSP_PV2_MODE_PARAM_ADDR 138 /*PV2连接关系*/ +#define DSP_PV3_MODE_PARAM_ADDR 139 /*PV3连接关系*/ +#define DSP_PV4_MODE_PARAM_ADDR 140 /*PV4连接关系*/ +#define DSP_MPPT_DISTB_EN_PARAM_ADDR 141 /*MPPT波动处理逻辑使能*/ +#define DSP_ACT_PWR_AUTO_EN_PARAM_ADDR 142 /*有功功率自动调整*/ +#define DSP_RCTV_PWR_COMP_PARAM_ADDR 143 /*无功补偿量*/ +#define DSP_RCTV_CTR_EN_PARAM_ADDR 144 /*无功闭环补偿使能*/ +#define DSP_INV_CUR_COMP_EN_PARAM_ADDR 145 /*逆变电流补偿使能*/ +#define DSP_INV_CUR_COMP_COFF_PARAM_ADDR 146 /*逆变电流补偿系数*/ +#define DSP_INV_CUR_DELAY_PARAM_ADDR 147 /*逆变电路延迟角度*/ +#define DSP_CAP_CUR_DELAY_PARAM_ADDR 148 /*电容电流延迟角度*/ +#define DSP_CAP_CUR_COFF_PARAM_ADDR 149 /*电容电流比例系数*/ +#define DSP_PV_CUR_COFF_PARAM_ADDR 150 /*PV电流比例校准系数*/ +#define DSP_PV_CUR_CALB_EN_PARAM_ADDR 151 /*PV输入校准标志*/ +#define DSP_DC_PWR_COMP_EN_PARAM_ADDR 152 /*直流功率补偿*/ +#define DSP_BST_RUN_MODE_PARAM_ADDR 153 /*BOOST运行模式*/ +#define DSP_BST1_EN_PARAM_ADDR 154 /*第1路BOOST使能*/ +#define DSP_BST2_EN_PARAM_ADDR 155 /*第2路BOOST使能*/ +#define DSP_BST3_EN_PARAM_ADDR 156 /*第3路BOOST使能*/ +#define DSP_BST4_EN_PARAM_ADDR 157 /*第4路BOOST使能*/ +#define DSP_VOL_FREQ_PROTCET_EN_PARAM_ADDR 158 /*分段保护使能*/ +#define DSP_PV_INVERSED_DETCET_EN_PARAM_ADDR 159 /*PV反接检测使能*/ +#define DSP_PV_BACKWARD_DETCET_EN_PARAM_ADDR 160 /*PV回灌检测使能*/ +#define DSP_ANTI_ISLANDING_PROTECT_FREQ_EN_PARAM_ADDR 161 /*孤岛保护兼容频率适应性*/ +#define DSP_PWR_CONTROL_RCTV_PRIO_EN_PARAM_ADDR 162 /*功率控制时无功优先使能*/ +#define DSP_BUS_UV_DECT_EN_PARAM_ADDR 163 /*母线欠压检测使能*/ +#define DSP_HLVRT_MODE_FLAG_PARAM_ADDR 164 /*高低穿模式切换*/ +#define DSP_RESERVE_PARAM1_4_PARAM_ADDR 165 /*预留参数1_4*/ +#define DSP_VOL_RCTV_PWR_CTR_MODE_PARAM_ADDR 166 /*电压无功控制模式*/ +#define DSP_ACCU_JUDGE_MODE_PARAM_ADDR 167 /*精度判断模式*/ + +//dsp_rec_ctr_param_t +#define DSP_DC_VOLT_KP_PARAM_ADDR 181 /*外环PI控制:Kp*/ +#define DSP_DC_VOLT_KI_PARAM_ADDR 182 /*外环PI控制:Ki*/ +#define DSP_DC_VOLT_LMT_PARAM_ADDR 183 /*外环PI控制:OutLimit*/ +#define DSP_VOLT_BAL_KP_PARAM_ADDR 184 /*均压环PI控制:Kp*/ +#define DSP_VOLT_BAL_KI_PARAM_ADDR 185 /*均压环PI控制:Ki*/ +#define DSP_VOLT_BAL_LMT_PARAM_ADDR 186 /*均压环PI控制:OutLimit*/ +#define DSP_AC_CUR_KP_PARAM_ADDR 187 /*电流环Kp */ +#define DSP_ACT_DMP_COFF_PARAM_ADDR 188 /*有源阻尼Kp*/ +#define DSP_RCTV_PWT_KP_PARAM_ADDR 189 /*无功稳压控制Kp*/ +#define DSP_RCTV_PWT_KI_PARAM_ADDR 190 /*无功稳压控制Ki*/ +#define DSP_CUR_Q_KP_PARAM_ADDR 191 /*电流环q轴PI控制:Ki*/ +#define DSP_CUR_Q_LMT_PARAM_ADDR 192 /*电流环q轴PI控制:OutLimit*/ +#define DSP_ZERO_ORD_CUR_KP_PARAM_ADDR 193 /*零序电流PI控制:Kp*/ +#define DSP_ZERO_ORD_CUR_KI_PARAM_ADDR 194 /*零序电流PI控制:Ki*/ +#define DSP_ZERO_ORD_CUR_LMT_PARAM_ADDR 195 /*零序电流PI控制:OutLimit*/ +#define DSP_KR_1_PARAM_ADDR 196 /*1次谐振增益*/ +#define DSP_KR_2_PARAM_ADDR 197 /*2次谐振增益*/ +#define DSP_KR_3_PARAM_ADDR 198 /*3次谐振增益*/ +#define DSP_KR_4_PARAM_ADDR 199 /*4次谐振增益*/ +#define DSP_KR_5_PARAM_ADDR 200 /*5次谐振增益*/ +#define DSP_KR_6_PARAM_ADDR 201 /*6次谐振增益*/ +#define DSP_KR_7_PARAM_ADDR 202 /*7次谐振增益*/ +#define DSP_KR_8_PARAM_ADDR 203 /*8次谐振增益*/ +#define DSP_KR_9_PARAM_ADDR 204 /*9次谐振增益*/ +#define DSP_KR_10_PARAM_ADDR 205 /*10次谐振增益*/ +#define DSP_KR_11_PARAM_ADDR 206 /*11次谐振增益*/ +#define DSP_KR_12_PARAM_ADDR 207 /*12次谐振增益*/ +#define DSP_KR_13_PARAM_ADDR 208 /*13次谐振增益*/ +#define DSP_BST_VOLT_KP_PARAM_ADDR 209 /*boost电压环Kp*/ +#define DSP_BST_VOLT_KI_PARAM_ADDR 210 /*boost电压环Ki*/ +#define DSP_BST_CUR_KP_PARAM_ADDR 211 /*boost电流环Kp*/ +#define DSP_BST_CUR_KI_PARAM_ADDR 212 /*boost电流环Ki*/ +#define DSP_LVRT_COFF_PARAM_ADDR 213 /*低电压穿越系数*/ +#define DSP_HVRT_COFF_PARAM_ADDR 214 /*高电压穿越系数*/ +#define DSP_PWM_MODE_PARAM_ADDR 215 /*调制方式*/ +#define DSP_FFWD_MODE_PARAM_ADDR 216 /*电压前馈方式*/ +#define DSP_BUS_VOLT_REF_DWN_LMT_PARAM_ADDR 217 /*母线电压参考值下限*/ +#define DSP_ZERO_CTR_KP_PARAM_ADDR 218 /*零序分量控制kp参数*/ +#define DSP_FFWD_COFF_PARAM_ADDR 219 /*加权前馈的占比系数*/ +#define DSP_PWR_LMT_MODE_EN_PARAM_ADDR 220 /*限功率模式使能*/ +#define DSP_ISLAND_KP_PARAM_ADDR 221 /*孤岛保护Kp*/ +#define DSP_CPWM_M_TH_PARAM_ADDR 222 /*进入CPWM调制度阈值*/ +#define DSP_DPWM_M_TH_PARAM_ADDR 223 /*进入DPWM调制度阈值*/ +#define DSP_CPWM_BUS_VOLT_TH_PARAM_ADDR 224 /*进入CPWM母线电压阈值*/ +#define DSP_DPWM_BUS_VOLT_TH_PARAM_ADDR 225 /*进入DPWM母线电压阈值*/ +#define DSP_DC_VOLT_REF_PARAM_ADDR 226 /*直流电压参考*/ +#define DSP_AC_VOLT_REF_PARAM_ADDR 227 /*交流电压参考*/ +#define DSP_RCTV_CUR_REF_PARAM_ADDR 228 /*无功电流参考*/ +#define DSP_BOOST_CUR_REF1_PARAM_ADDR 229 /*boost1电流参考值*/ +#define DSP_BOOST_CUR_REF2_PARAM_ADDR 230 /*boost2电流参考值*/ +#define DSP_BOOST_CUR_REF3_PARAM_ADDR 231 /*boost3电流参考值*/ +#define DSP_BOOST_CUR_REF4_PARAM_ADDR 232 /*boost4电流参考值*/ +#define DSP_ACTV_CUR_REF_PARAM_ADDR 233 /*有功电流参考*/ +#define DSP_REACTIVE_VOLTAGE_COFF_PARAM_ADDR 234 /*无功调压系数*/ +#define DSP_COM_MODE_CUR_TH_PARAM_ADDR 235 /*共模电流幅值阈值*/ +#define DSP_COM_MODE_CUR_CPWM_TH_PARAM_ADDR 236 /*CPWM共模电流次数*/ +#define DSP_COM_MODE_CUR_DPWM_TH_PARAM_ADDR 237 /*DPWM共模电流次数*/ + +//dsp_ctr_th_param_t +#define DSP_OPEN_CRCT_OV_TH_PARAM_ADDR 251 /*开路电压过高阈值*/ +#define DSP_DC_INPUT_OV_TH_PARAM_ADDR 252 /*直流输入过压阈值*/ +#define DSP_BUS_OV_TH_PARAM_ADDR 253 /*直流母线过压阈值*/ +#define DSP_BUS_UV_TH_PARAM_ADDR 254 /*直流母线欠压阈值*/ +#define DSP_INV_OC_TH_PARAM_ADDR 255 /*逆变电流保护瞬时值*/ +#define DSP_INV_RMS_OC_TH_PARAM_ADDR 256 /*逆变电流保护有效值*/ +#define DSP_INV_CBC_TH_PARAM_ADDR 257 /*逆变电流逐波限流封锁阈值*/ +#define DSP_INV_CBC_UNLCK_TH_PARAM_ADDR 258 /*逆变电流逐波限流解封阈值*/ +#define DSP_BST1_OC_TH_PARAM_ADDR 259 /*Boost1过流软件保护阈值*/ +#define DSP_BST2_OC_TH_PARAM_ADDR 260 /*Boost2过流软件保护阈值*/ +#define DSP_BST_3_OC_TH_PARAM_ADDR 261 /*Boost3过流软件保护阈值*/ +#define DSP_BST4_OC_TH_PARAM_ADDR 262 /*Boost4过流软件保护阈值*/ +#define DSP_PV_SC_VOLT_TH_PARAM_ADDR 263 /*MPPT短路电压阈值*/ +#define DSP_PV_SC_CUR_TH_PARAM_ADDR 264 /*MPPT短路电流阈值*/ +#define DSP_GRD_PHASE_LOSS_TH_PARAM_ADDR 265 /*额定电网保护电压*/ +#define DSP_GRD_OV_TH_PARAM_ADDR 266 /*电网过压阈值*/ +#define DSP_GRD_UV_TH_PARAM_ADDR 267 /*电网欠压阈值*/ +#define DSP_GRD_OV_2ND_TH_PARAM_ADDR 268 /*电网欠压二级保护阈值*/ +#define DSP_GRD_OV_1ST_TH_PARAM_ADDR 269 /*电网欠压一级保护阈值*/ +#define DSP_GRD_UV_1ST_TH_PARAM_ADDR 270 /*电网过压一级保护阈值*/ +#define DSP_GRD_UV_2ND_TH_PARAM_ADDR 271 /*电网过压二级保护阈值*/ +#define DSP_OV_LMT_PWR_TH_PARAM_ADDR 272 /*过压降额阈值*/ +#define DSP_FREQ_OV_LGC_PARAM_ADDR 273 /*电网频率上限*/ +#define DSP_FREQ_UND_LGC_PARAM_ADDR 274 /*电网频率下限*/ +#define DSP_GRD_UND_FREQ_5TH_TH_PARAM_ADDR 275 /*电网欠频五级保护阈值*/ +#define DSP_GRD_UND_FREQ_4TH_TH_PARAM_ADDR 276 /*电网欠频四级保护阈值*/ +#define DSP_GRD_UND_FREQ_3RD_TH_PARAM_ADDR 277 /*电网欠频三级保护阈值*/ +#define DSP_GRD_UND_FREQ_2ND_TH_PARAM_ADDR 278 /*电网欠频二级保护阈值*/ +#define DSP_GRD_UND_FREQ_1ST_TH_PARAM_ADDR 279 /*电网欠频一级保护阈值*/ +#define DSP_GRD_OVER_FREQ_1ST_TH_PARAM_ADDR 280 /*电网过频一级保护阈值*/ +#define DSP_GRD_OVER_FREQ_2ND_TH_PARAM_ADDR 281 /*电网过频二级保护阈值*/ +#define DSP_GRD_OVER_FREQ_3RD_TH_PARAM_ADDR 282 /*电网过频三级保护阈值*/ +#define DSP_OV_FREQ_LMT_PWR_TH_PARAM_ADDR 283 /*过频降额阈值*/ +#define DSP_CAP_OC_TH_PARAM_ADDR 284 /*滤波电容过流保护阈值*/ +#define DSP_CAP_OV_TH_PARAM_ADDR 285 /*滤波电容过压保护阈值*/ +#define DSP_INSLT_RSTR_TH_PARAM_ADDR 286 /*绝缘阻抗检测阈值*/ +#define DSP_GRD_FLT_DIS_INNER_FLT_EN_PARAM_ADDR 287 /*电网故障屏蔽内部故障*/ +#define DSP_ACT_ISLAND_DTCT_TH_PARAM_ADDR 288 /*主动反孤岛阈值*/ +#define DSP_ACT_ISLAND_DTCT_VAR_TH_PARAM_ADDR 289 /*反孤岛无功电流余量*/ +#define DSP_PV_LINE_DTCT_EN_PARAM_ADDR 290 /*PV接线检测(未启用)*/ +#define DSP_PV_INVERSED_INPUT_VOL_TH_PARAM_ADDR 291 /*PV反接电压阈值*/ +#define DSP_PV_INVERSED_INPUT_CURR_TH_PARAM_ADDR 292 /*PV反接电感电流阈值*/ +#define DSP_PV_BACKWARD_INPUT_VOL_TH_PARAM_ADDR 293 /*PV回灌电压阈值*/ +#define DSP_PV_BRANCH_INPUT_CURR_TH_PARAM_ADDR 294 /*支路输入电流阈值*/ +#define DSP_PV_BRANCH_INPUT_CURR_TH1_PARAM_ADDR 295 /*支路输入电流阈值1*/ +#define DSP_PV_BRANCH_INPUT_CURR_TH2_PARAM_ADDR 296 /*支路输入电流阈值2*/ +#define DSP_ECO_WARNING_1_PARAM_ADDR 297 /*节能告警阈值1*/ +#define DSP_ECO_WARNING_2_PARAM_ADDR 298 /*节能告警阈值2*/ +#define DSP_CAVITY_OVERTEMP_TH_PARAM_ADDR 299 /*腔体过温阈值*/ +#define DSP_CAVITY_OVERTEMP_TH2_PARAM_ADDR 300 /*腔体2过温阈值*/ +#define DSP_COLLFIN_OVERTEMP_TH_PARAM_ADDR 301 /*散热片过温阈值*/ +#define DSP_Q_U_LOW_VOL_TH_PARAM_ADDR 302 /*Q-U低压系数阈值*/ +#define DSP_Q_U_HIGH_VOL_TH_PARAM_ADDR 303 /*Q-U高压系数阈值*/ +#define DSP_LVRT_BORDER_TH_PARAM_ADDR 304 /*低穿穿越边界*/ +#define DSP_HVRT_BORDER_TH_PARAM_ADDR 305 /*高穿穿越边界*/ +#define DSP_OVER_CAP_CURRENT_TIME_MS_PARAM_ADDR 306 /*滤波电容过流保护时间*/ +#define DSP_OVER_RMS_CURRENT_TIME_MS_PARAM_ADDR 307 /*逆变过流保护时间*/ +#define DSP_GRID_OVER_VOLT_L0_TIME_MS_PARAM_ADDR 308 /*电网过压L0保护时间*/ +#define DSP_GRID_OVER_VOLT_L1_TIME_MS_PARAM_ADDR 309 /*电网过压L1保护时间*/ +#define DSP_GRID_OVER_VOLT_L2_TIME_MS_PARAM_ADDR 310 /*电网过压L2保护时间*/ +#define DSP_GRID_BELOW_VOLT_L0_TIME_MS_PARAM_ADDR 311 /*电网欠压L0保护时间*/ +#define DSP_GRID_BELOW_VOLT_L1_TIME_MS_PARAM_ADDR 312 /*电网欠压L1保护时间*/ +#define DSP_GRID_BELOW_VOLT_L2_TIME_MS_PARAM_ADDR 313 /*电网欠压L2保护时间*/ +#define DSP_GRID_OVER_FREQ_L0_TIME_MS_PARAM_ADDR 314 /*电网过频L0保护时间*/ +#define DSP_GRID_OVER_FREQ_L1_TIME_S_PARAM_ADDR 315 /*电网过频L1保护时间*/ +#define DSP_GRID_OVER_FREQ_L2_TIME_S_PARAM_ADDR 316 /*电网过频L2保护时间*/ +#define DSP_GRID_OVER_FREQ_L3_TIME_MS_PARAM_ADDR 317 /*电网过频L3保护时间*/ +#define DSP_GRID_BELOW_FREQ_L0_TIME_MS_PARAM_ADDR 318 /*电网欠频L0保护时间*/ +#define DSP_GRID_BELOW_FREQ_L1_TIME_S_PARAM_ADDR 319 /*电网欠频L1保护时间*/ +#define DSP_GRID_BELOW_FREQ_L2_TIME_S_PARAM_ADDR 320 /*电网欠频L2保护时间*/ +#define DSP_GRID_BELOW_FREQ_L3_TIME_S_PARAM_ADDR 321 /*电网欠频L3保护时间*/ +#define DSP_GRID_BELOW_FREQ_L4_TIME_S_PARAM_ADDR 322 /*电网欠频L4保护时间*/ +#define DSP_GRID_BELOW_FREQ_L5_TIME_MS_PARAM_ADDR 323 /*电网欠频L5保护时间*/ +#define DSP_OVER_BUS_VOLT_TIME_MS_PARAM_ADDR 324 /*母线欠压保护时间*/ + +//dsp_ctr_limit_param_t +#define DSP_RT_RCTV_CUR_LMT_PARAM_ADDR 331 /*高低穿无功电流限幅值*/ +#define DSP_INV_CUR_LMT_PARAM_ADDR 332 /*逆变总电流限幅值*/ +#define DSP_INV_ACT_CUR_LMT_PARAM_ADDR 333 /*逆变有功电流限幅值*/ +#define DSP_INV_RCTV_CUR_LMT_PARAM_ADDR 334 /*逆变无功电流限幅值*/ +#define DSP_BST1_CUR_LMT_PARAM_ADDR 335 /*Boost1单路电流限幅值*/ +#define DSP_BST2_CUR_LMT_PARAM_ADDR 336 /*Boost2单路电流限幅值*/ +#define DSP_BST3_CUR_LMT_PARAM_ADDR 337 /*Boost3单路电流限幅值*/ +#define DSP_BST4_CUR_LMT_PARAM_ADDR 338 /*Boost4单路电流限幅值*/ +#define DSP_5TH_CUR_LMT_PARAM_ADDR 339 /*5次谐波电流限幅值*/ +#define DSP_7TH_CUR_LMT_PARAM_ADDR 340 /*7次谐波电流限幅值*/ +#define DSP_11TH_CUR_LMT_PARAM_ADDR 341 /*11次谐波电流限幅值*/ +#define DSP_13TH_CUR_LMT_PARAM_ADDR 342 /*13次谐波电流限幅值*/ +#define DSP_17TH_CUR_LMT_PARAM_ADDR 343 /*17次谐波电流限幅值*/ +#define DSP_19TH_CUR_LMT_PARAM_ADDR 344 /*19次谐波电流限幅值*/ +#define DSP_2TH_CUR_LMT_PARAM_ADDR 345 /*2次谐波电流限幅值*/ +#define DSP_4TH_CUR_LMT_PARAM_ADDR 346 /*4次谐波电流限幅值*/ +#define DSP_6TH_CUR_LMT_PARAM_ADDR 347 /*6次谐波电流限幅值*/ +#define DSP_8TH_CUR_LMT_PARAM_ADDR 348 /*8次谐波电流限幅值*/ +#define DSP_10TH_CUR_LMT_PARAM_ADDR 349 /*10次谐波电流限幅值*/ +#define DSP_14TH_CUR_LMT_PARAM_ADDR 350 /*14次谐波电流限幅值*/ +#define DSP_16TH_CUR_LMT_PARAM_ADDR 351 /*16次谐波电流限幅值*/ +#define DSP_20TH_CUR_LMT_PARAM_ADDR 352 /*20次谐波电流限幅值*/ +#define DSP_DPWM_AP_TH_PARAM_ADDR 353 /*进入DPWM视在功率阈值*/ +#define DSP_CPWM_AP_TH_PARAM_ADDR 354 /*进入CPWM视在功率阈值*/ +#define DSP_LEAD_COMP_KP_PARAM_ADDR 355 /*零序超前补偿kp*/ +#define DSP_COLLFIN_OVERTEMP_LMT_TH_PARAM_ADDR 356 /*散热片过温降功率阈值*/ +#define DSP_CAVITY_OVERTEMP_LMT_TH_PARAM_ADDR 357 /*腔体过温降功率阈值*/ +#define DSP_CAVITY2_OVERTEMP_LMT_TH_PARAM_ADDR 358 /*腔体2过温降功率阈值*/ +#define DSP_OVERTEMP_PWR_DOWN_TH_PARAM_ADDR 359 /*过温降额功率下限*/ +#define DSP_FAN_FAULT_PWR_DOWN_TH_PARAM_ADDR 360 /*风扇故障降额功率下限*/ +#define DSP_OVERTEMP_PWR_UP_TH_PARAM_ADDR 361 /*过温降额功率上限*/ +#define DSP_OVERTEMP_PWR_CHANGE_DOWN_TH_PARAM_ADDR 362 /*过温降额功率变化率上限*/ + +//dsp_debug_test_control_t +#define DSP_RESERVE_PARAM5_0_PARAM_ADDR 381 /*预留参数5_0*/ +#define DSP_RESERVE_PARAM5_1_PARAM_ADDR 382 /*预留参数5_1*/ +#define DSP_RESERVE_PARAM5_2_PARAM_ADDR 383 /*预留参数5_2*/ +#define DSP_RESERVE_PARAM5_3_PARAM_ADDR 384 /*预留参数5_3*/ +#define DSP_SYSTM_STA_PARAM_ADDR 385 /*整机状态*/ +#define DSP_INV_STA_PARAM_ADDR 386 /*逆变状态*/ +#define DSP_MPPT1_STATE_PARAM_ADDR 387 /*MPPT1状态(debug)*/ +#define DSP_MPPT2_STATE_PARAM_ADDR 388 /*MPPT2状态(debug)*/ +#define DSP_MPPT3_STATE_PARAM_ADDR 389 /*MPPT3状态(debug)*/ +#define DSP_MPPT4_STATE_PARAM_ADDR 390 /*MPPT4状态(debug)*/ +#define DSP_LOW_PWR_FLG_PARAM_ADDR 391 /*功率不足标志*/ +#define DSP_MPPT_MANUAL_REFERENCE_PARAM_ADDR 392 /*MPPT手动参考标志位*/ +#define DSP_MPPT_MANUAL_REFERENCE_VALUE_PARAM_ADDR 393 /*MPPT手动参考值*/ +#define DSP_VOLT_BAL_TH_PARAM_ADDR 394 /*母线均压开启阈值*/ +#define DSP_RESERVE_PARAM5_4_PARAM_ADDR 395 /*预留参数5_4*/ +#define DSP_RESERVE_PARAM5_5_PARAM_ADDR 396 /*预留参数5_5*/ + +//dsp_calibrate_t +#define DSP_AUTO_CALIBRATE_EN_PARAM_ADDR 420 /*自动化校准使能*/ +#define DSP_AUTO_CALIBRATE_STATE_PARAM_ADDR 421 /*自动化校准状态*/ +#define DSP_AUTO_CALIBRATE_CMD_PARAM_ADDR 422 /*自动化校准指令*/ +#define DSP_AUTO_CALIBRATE_RESULT_PARAM_ADDR 423 /*自动化校准结果*/ +#define DSP_AUTO_CALIBRATE_REFRESH_FLAG_PARAM_ADDR 424 /*自动化校准刷新标志*/ +#define DSP_RESERVE_PARAM6_6_PARAM_ADDR 425 /*预留参数6_6*/ +#define DSP_RESERVE_PARAM6_7_PARAM_ADDR 426 /*预留参数6_7*/ +#define DSP_RESERVE_PARAM6_8_PARAM_ADDR 427 /*预留参数6_8*/ +#define DSP_RESERVE_PARAM6_9_PARAM_ADDR 428 /*预留参数6_9*/ +#define DSP_RESERVE_PARAM6_10_PARAM_ADDR 429 /*预留参数6_10*/ +#define DSP_RESERVE_PARAM6_11_PARAM_ADDR 430 /*预留参数6_11*/ +#define DSP_RESERVE_PARAM6_12_PARAM_ADDR 431 /*预留参数6_12*/ +#define DSP_RESERVE_PARAM6_13_PARAM_ADDR 432 /*预留参数6_13*/ +#define DSP_RESERVE_PARAM6_14_PARAM_ADDR 433 /*预留参数6_14*/ +#define DSP_RESERVE_PARAM6_15_PARAM_ADDR 434 /*预留参数6_15*/ +#define DSP_RESERVE_PARAM6_16_PARAM_ADDR 435 /*预留参数6_16*/ +#define DSP_RESERVE_PARAM6_17_PARAM_ADDR 436 /*预留参数6_17*/ +#define DSP_RESERVE_PARAM6_18_PARAM_ADDR 437 /*预留参数6_18*/ +#define DSP_RESERVE_PARAM6_19_PARAM_ADDR 438 /*预留参数6_19*/ +#define DSP_RESERVE_PARAM6_20_PARAM_ADDR 439 /*预留参数6_20*/ +#define DSP_RESERVE_PARAM6_21_PARAM_ADDR 440 /*预留参数6_21*/ +#define DSP_RESERVE_PARAM6_22_PARAM_ADDR 441 /*预留参数6_22*/ +#define DSP_RESERVE_PARAM6_23_PARAM_ADDR 442 /*预留参数6_23*/ +#define DSP_RESERVE_PARAM6_24_PARAM_ADDR 443 /*预留参数6_24*/ +#define DSP_RESERVE_PARAM6_25_PARAM_ADDR 444 /*预留参数6_25*/ +#define DSP_RESERVE_PARAM6_26_PARAM_ADDR 445 /*预留参数6_26*/ +#define DSP_RESERVE_PARAM6_27_PARAM_ADDR 446 /*预留参数6_27*/ +#define DSP_RESERVE_PARAM6_28_PARAM_ADDR 447 /*预留参数6_28*/ +#define DSP_RESERVE_PARAM6_29_PARAM_ADDR 448 /*预留参数6_29*/ +#define DSP_RESERVE_PARAM6_30_PARAM_ADDR 449 /*预留参数6_30*/ +#define DSP_RESERVE_PARAM6_31_PARAM_ADDR 450 /*预留参数6_31*/ +#define DSP_RESERVE_PARAM6_32_PARAM_ADDR 451 /*预留参数6_32*/ +#define DSP_RESERVE_PARAM6_33_PARAM_ADDR 452 /*预留参数6_33*/ +#define DSP_RESERVE_PARAM6_34_PARAM_ADDR 453 /*预留参数6_34*/ +#define DSP_RESERVE_PARAM6_35_PARAM_ADDR 454 /*预留参数6_35*/ +#define DSP_RESERVE_PARAM6_36_PARAM_ADDR 455 /*预留参数6_36*/ +#define DSP_RESERVE_PARAM6_37_PARAM_ADDR 456 /*预留参数6_37*/ + +//dsp_data_file_t +#define DSP_DEV_ADDR_PARAM_ADDR 500 /*本地通信地址(模块号)*/ +#define DSP_DEVICE_RATED_ACTV_PWR_PARAM_ADDR 501 /*装置额定有功功率(设备容量)*/ +#define DSP_DEVICE_RATED_RCTV_PWR_PARAM_ADDR 502 /*装置额定无功功率*/ +#define DSP_APP_VER_PARAM_ADDR 503 /*DSP主控版本号*/ +#define DSP_BOOT_VER_PARAM_ADDR 505 /*DSP底层版本号*/ +#define DSP_PROG_CODE_PARAM_ADDR 507 /*DSP主控程序组件号*/ +#define DSP_DEV_TYPE_PARAM_ADDR 510 /*设备类型*/ +#define DSP_PROT_VER_PARAM_ADDR 511 /*DSP使用地址表协议版本号*/ +#define DSP_CFG_CRC_H_PARAM_ADDR 512 /*DSP配置参数CRC高16位*/ +#define DSP_CFG_CRC_L_PARAM_ADDR 513 /*DSP配置参数CRC低16位*/ +#define DSP_DEVICE_PHASE_PARAM_ADDR 514 /*相数*/ +#define DSP_APP_VER_NEW_PARAM_ADDR 515 /*DSP主控版本号新格式*/ +#define DSP_BOOT_VER_NEW_PARAM_ADDR 519 /*DSP底层版本号新格式*/ +#define DSP_MPPT_NUMBER_PARAM_ADDR 523 /*MPPT数量*/ + +//dsp_data_hardware_t +#define DSP_RELAY_A_STAT_PARAM_ADDR 550 /*继电器A状态*/ +#define DSP_RELAY_B_STAT_PARAM_ADDR 551 /*继电器B状态*/ +#define DSP_RELAY_C_STAT_PARAM_ADDR 552 /*继电器C状态*/ + +//dsp_data_state_t +#define DSP_FAULT1_1_PARAM_ADDR 560 /*一般故障1*/ +#define DSP_FAULT1_2_PARAM_ADDR 561 /*一般故障2*/ +#define DSP_FAULT1_3_PARAM_ADDR 562 /*一般故障3*/ +#define DSP_FAULT1_4_PARAM_ADDR 563 /*一般故障4*/ +#define DSP_FAULT2_1_PARAM_ADDR 564 /*严重故障1*/ +#define DSP_FAULT2_2_PARAM_ADDR 565 /*严重故障2*/ +#define DSP_FAULT2_3_PARAM_ADDR 566 /*严重故障3*/ +#define DSP_FAULT2_4_PARAM_ADDR 567 /*严重故障4*/ +#define DSP_WARING_1_PARAM_ADDR 568 /*告警事件1*/ +#define DSP_WARING_2_PARAM_ADDR 569 /*告警事件2*/ +#define DSP_SLF_CHK_1_PARAM_ADDR 570 /*自检事件1*/ +#define DSP_SLF_CHK_2_PARAM_ADDR 571 /*自检事件2*/ +#define DSP_RUN_MODE_STA_PARAM_ADDR 590 /*DSP运行状态*/ +#define DSP_PHASE_STA_PARAM_ADDR 591 /*电压相序显示*/ +#define DSP_MPPT1_STA_PARAM_ADDR 592 /*MPPT1状态*/ +#define DSP_MPPT2_STA_PARAM_ADDR 593 /*MPPT2状态*/ +#define DSP_DEV_STA_PARAM_ADDR 594 /*显示运行模式*/ +#define DSP_FAULT_LABEL_PARAM_ADDR 595 /*故障状态标志*/ +#define DSP_LGC_LABEL_PARAM_ADDR 596 /*逻辑状态标签*/ +#define DSP_ECHO_LABEL_PARAM_ADDR 597 /*节能状态标签*/ +#define DSP_PLL_LABEL_PARAM_ADDR 598 /*锁相状态标签*/ +#define DSP_AUX_LABEL_PARAM_ADDR 599 /*辅助状态标签*/ +#define DSP_OV_TEM_HALF_PWR_LABEL_PARAM_ADDR 600 /*过温半载运行标签*/ +#define DSP_DC_LED_STATE_DISPLAY_PARAM_ADDR 601 /*DSP直流灯状态指示*/ +#define DSP_AC_LED_STATE_DISPLAY_PARAM_ADDR 602 /*DSP交流灯状态指示*/ +#define DSP_DEVICE_MODULATION_STATE_PARAM_ADDR 603 /*设备调制状态*/ +#define DSP_MPPT3_STA_PARAM_ADDR 604 /*MPPT3状态*/ +#define DSP_MPPT4_STA_PARAM_ADDR 605 /*MPPT4状态*/ +#define DSP_OVER_TEMP_LIMIT_PWR_PARAM_ADDR 606 /*过温限功率状态*/ + +//dsp_data_collect_t +#define DSP_GRID_FREQ_PARAM_ADDR 620 /*电网频率*/ +#define DSP_DC_INPUT_AVG_VOLT_PARAM_ADDR 621 /*总母线电压avg*/ +#define DSP_DC_UP_SIDE_AVG_VOLT_PARAM_ADDR 622 /*上母线电压avg*/ +#define DSP_DC_LOW_SIDE_AVG_VOLT_PARAM_ADDR 623 /*下母线电压_avg*/ +#define DSP_GRID_A_RMS_VOLT_PARAM_ADDR 624 /*电网电压A_RMS*/ +#define DSP_GRID_B_RMS_VOLT_PARAM_ADDR 625 /*电网电压B_RMS*/ +#define DSP_GRID_C_RMS_VOLT_PARAM_ADDR 626 /*电网电压C_RMS*/ +#define DSP_CAP_A_RMS_VOLT_PARAM_ADDR 627 /*逆变阻尼电压A_RMS*/ +#define DSP_CAP_B_RMS_VOLT_PARAM_ADDR 628 /*逆变阻尼电压B_RMS*/ +#define DSP_CAP_C_RMS_VOLT_PARAM_ADDR 629 /*逆变阻尼电压C_RMS*/ +#define DSP_INV_A_RMS_CUR_PARAM_ADDR 630 /*逆变电流A_RMS*/ +#define DSP_INV_B_RMS_CUR_PARAM_ADDR 631 /*逆变电流B_RMS*/ +#define DSP_INV_C_RMS_CUR_PARAM_ADDR 632 /*逆变电流C_RMS*/ +#define DSP_CAP_A_RMS_CUR_PARAM_ADDR 633 /*LCL电容电流A_RMS*/ +#define DSP_CAP_B_RMS_CUR_PARAM_ADDR 634 /*LCL电容电流B_RMS*/ +#define DSP_CAP_C_RMS_CUR_PARAM_ADDR 635 /*LCL电容电流C_RMS*/ +#define DSP_RESERVE_DATA2_7_PARAM_ADDR 636 /*预留数据2_7*/ +#define DSP_RESERVE_DATA2_8_PARAM_ADDR 637 /*预留数据2_8*/ +#define DSP_RESERVE_DATA2_9_PARAM_ADDR 638 /*预留数据2_9*/ +#define DSP_BOOST_PV_VOLT_1_PARAM_ADDR 639 /*BOOST输入电压1路*/ +#define DSP_BOOST_PV_VOLT_2_PARAM_ADDR 640 /*BOOST输入电压2路*/ +#define DSP_BOOST_PV_VOLT_3_PARAM_ADDR 641 /*BOOST输入电压3路*/ +#define DSP_BOOST_PV_VOLT_4_PARAM_ADDR 642 /*BOOST输入电压4路*/ +#define DSP_BOOST1_PV_CUR_1_PARAM_ADDR 643 /*1路BOOST组串电流1*/ +#define DSP_BOOST2_PV_CUR_1_PARAM_ADDR 644 /*2路BOOST组串电流1*/ +#define DSP_BOOST3_PV_CUR_1_PARAM_ADDR 645 /*3路BOOST组串电流1*/ +#define DSP_BOOST4_PV_CUR_1_PARAM_ADDR 646 /*4路BOOST组串电流1*/ +#define DSP_BOOST_INDUC_CUR_1_PARAM_ADDR 647 /*BOOST电感电流1路*/ +#define DSP_BOOST_INDUC_CUR_2_PARAM_ADDR 648 /*BOOST电感电流2路*/ +#define DSP_BOOST_INDUC_CUR_3_PARAM_ADDR 649 /*BOOST电感电流3路*/ +#define DSP_BOOST_INDUC_CUR_4_PARAM_ADDR 650 /*BOOST电感电流4路*/ +#define DSP_DEVICE_CURR_A_PARAM_ADDR 651 /*设备电流A*/ +#define DSP_DEVICE_CURR_B_PARAM_ADDR 652 /*设备电流B*/ +#define DSP_DEVICE_CURR_C_PARAM_ADDR 653 /*设备电流C*/ +#define DSP_BOOST1_PV_CUR_2_PARAM_ADDR 654 /*1路BOOST组串电流2*/ +#define DSP_BOOST2_PV_CUR_2_PARAM_ADDR 655 /*2路BOOST组串电流2*/ +#define DSP_BOOST3_PV_CUR_2_PARAM_ADDR 656 /*3路BOOST组串电流2*/ +#define DSP_BOOST4_PV_CUR_2_PARAM_ADDR 657 /*4路BOOST组串电流2*/ +#define DSP_RESERVE_DATA2_1_PARAM_ADDR 676 /*预留数据2_1*/ +#define DSP_RESERVE_DATA2_2_PARAM_ADDR 677 /*预留数据2_2*/ +#define DSP_RESERVE_DATA2_3_PARAM_ADDR 678 /*预留数据2_3*/ +#define DSP_RESERVE_DATA2_4_PARAM_ADDR 679 /*预留数据2_4*/ +#define DSP_RESERVE_DATA2_5_PARAM_ADDR 680 /*预留数据2_5*/ +#define DSP_RESERVE_DATA2_6_PARAM_ADDR 681 /*预留数据2_6*/ + +//dsp_data_power_t +#define DSP_DEV_A_ACTV_PWR_PARAM_ADDR 690 /*装置侧有功功率A*/ +#define DSP_DEV_B_ACTV_PWR_PARAM_ADDR 691 /*装置侧有功功率B*/ +#define DSP_DEV_C_ACTV_PWR_PARAM_ADDR 692 /*装置侧有功功率C*/ +#define DSP_DEV_ACTV_PWR_PARAM_ADDR 693 /*装置侧有功功率总*/ +#define DSP_DEV_A_RCTV_PWR_PARAM_ADDR 694 /*装置侧无功功率A*/ +#define DSP_DEV_B_RCTV_PWR_PARAM_ADDR 695 /*装置侧无功功率B*/ +#define DSP_DEV_C_RCTV_PWR_PARAM_ADDR 696 /*装置侧无功功率C*/ +#define DSP_DEV_RCTV_PWR_PARAM_ADDR 697 /*装置侧无功功率总*/ +#define DSP_DEV_A_APRT_PWR_PARAM_ADDR 698 /*装置侧视在功率A*/ +#define DSP_DEV_B_APRT_PWR_PARAM_ADDR 699 /*装置侧视在功率B*/ +#define DSP_DEV_C_APRT_PWR_PARAM_ADDR 700 /*装置侧视在功率C*/ +#define DSP_DEV_APRT_PWR_PARAM_ADDR 701 /*装置侧视在功率总*/ +#define DSP_DEV_A_PF_PARAM_ADDR 702 /*装置侧功率因数A*/ +#define DSP_DEV_B_PF_PARAM_ADDR 703 /*装置侧功率因数B*/ +#define DSP_DEV_C_PF_PARAM_ADDR 704 /*装置侧功率因数C*/ +#define DSP_DEV_PF_PARAM_ADDR 705 /*装置侧功率因数总*/ +#define DSP_GRID_A_ACTV_PWR_PARAM_ADDR 706 /*网侧有功功率A*/ +#define DSP_GRID_B_ACTV_PWR_PARAM_ADDR 707 /*网侧有功功率B*/ +#define DSP_GRID_C_ACTV_PWR_PARAM_ADDR 708 /*网侧有功功率C*/ +#define DSP_GRID_ACTV_PWR_PARAM_ADDR 709 /*网侧有功功率总*/ +#define DSP_GRID_A_RCTV_PWR_PARAM_ADDR 710 /*网侧无功功率A*/ +#define DSP_GRID_B_RCTV_PWR_PARAM_ADDR 711 /*网侧无功功率B*/ +#define DSP_GRID_C_RCTV_PWR_PARAM_ADDR 712 /*网侧无功功率C*/ +#define DSP_GRID_RCTV_PWR_PARAM_ADDR 713 /*网侧无功功率总*/ +#define DSP_GRID_A_APRT_PWR_PARAM_ADDR 714 /*网侧视在功率A*/ +#define DSP_GRID_B_APRT_PWR_PARAM_ADDR 715 /*网侧视在功率B*/ +#define DSP_GRID_C_APRT_PWR_PARAM_ADDR 716 /*网侧视在功率C*/ +#define DSP_GRID_APRT_PWR_PARAM_ADDR 717 /*网侧视在功率总*/ +#define DSP_GRID_A_PF_PARAM_ADDR 718 /*网侧功率因数A*/ +#define DSP_GRID_B_PF_PARAM_ADDR 719 /*网侧功率因数B*/ +#define DSP_GRID_C_PF_PARAM_ADDR 720 /*网侧功率因数C*/ +#define DSP_GRID_PF_PARAM_ADDR 721 /*网侧功率因数总*/ +#define DSP_LOAD_A_ACTV_PWR_PARAM_ADDR 722 /*负载有功功率A*/ +#define DSP_LOAD_B_ACTV_PWR_PARAM_ADDR 723 /*负载有功功率B*/ +#define DSP_LOAD_C_ACTV_PWR_PARAM_ADDR 724 /*负载有功功率C*/ +#define DSP_LOAD_ACTV_PWR_PARAM_ADDR 725 /*负载有功功率总*/ +#define DSP_LOAD_A_RCTV_PWR_PARAM_ADDR 726 /*负载无功功率A*/ +#define DSP_LOAD_B_RCTV_PWR_PARAM_ADDR 727 /*负载无功功率B*/ +#define DSP_LOAD_C_RCTV_PWR_PARAM_ADDR 728 /*负载无功功率C*/ +#define DSP_LOAD_RCTV_PWR_PARAM_ADDR 729 /*负载无功功率总*/ +#define DSP_LOAD_A_APRT_PWR_PARAM_ADDR 730 /*负载视在功率A*/ +#define DSP_LOAD_B_APRT_PWR_PARAM_ADDR 731 /*负载视在功率B*/ +#define DSP_LOAD_C_APRT_PWR_PARAM_ADDR 732 /*负载视在功率C*/ +#define DSP_LOAD_APRT_PWR_PARAM_ADDR 733 /*负载视在功率总*/ +#define DSP_LOAD_A_PF_PARAM_ADDR 734 /*负载功率因数A*/ +#define DSP_LOAD_B_PF_PARAM_ADDR 735 /*负载功率因数B*/ +#define DSP_LOAD_C_PF_PARAM_ADDR 736 /*负载功率因数C*/ +#define DSP_LOAD_PF_PARAM_ADDR 737 /*负载功率因数总*/ +#define DSP_BOOST_PWR_1_PARAM_ADDR 738 /*BOOST功率1路*/ +#define DSP_BOOST_PWR_2_PARAM_ADDR 739 /*BOOST功率2路*/ +#define DSP_BOOST_PWR_3_PARAM_ADDR 740 /*BOOST功率3路*/ +#define DSP_BOOST_PWR_4_PARAM_ADDR 741 /*BOOST功率4路*/ +#define DSP_BOOST_PWR_PARAM_ADDR 742 /*BOOST功率总*/ + +//dsp_data_unbalance_t +#define DSP_GRID_CUR_UNB_PARAM_ADDR 770 /*网侧电流不平衡度*/ +#define DSP_GRID_CUR_UNB2_PARAM_ADDR 771 /*网侧电流负序不平衡度*/ +#define DSP_GRID_CUR_UNB0_PARAM_ADDR 772 /*网侧电流零序不平衡度*/ +#define DSP_LOAD_CUR_UNB_PARAM_ADDR 773 /*负载电流不平衡度*/ +#define DSP_LOAD_CUR_UNB2_PARAM_ADDR 774 /*负载电流负序不平衡度*/ +#define DSP_LOAD_CUR_UNB0_PARAM_ADDR 775 /*负载电流零序不平衡度*/ +#define DSP_GRID_VOLT_UNB_PARAM_ADDR 776 /*电网电压不平衡度*/ +#define DSP_GRID_VOLT_UNB2_PARAM_ADDR 777 /*电网电压负序不平衡度*/ +#define DSP_GRID_VOLT_UNB0_PARAM_ADDR 778 /*电网电压零序不平衡度*/ + +#endif /* __MW_PARAM_MANAGER_DSP_STRUCT_H__ */ diff --git a/test/PV_Inverter/dsp/mw_param_manager_dsp_struct.c b/test/PV_Inverter/dsp/mw_param_manager_dsp_struct.c new file mode 100644 index 0000000..f4b75b4 --- /dev/null +++ b/test/PV_Inverter/dsp/mw_param_manager_dsp_struct.c @@ -0,0 +1,684 @@ +#include +#include "project.h" +#include "mw_param_manager_dsp_struct.h" + + + + +const modbus_param_value_info_t s_ast_param_range[MAX_VALID_PARAM_ADDRESS + 1] = +{ + /*address, datatype, default_value, min_value, max_value*/ + {0, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*A相采样校准a(网侧交流电压采样)*/ + {1, DATATYPE_INT16_T, 0, -32768, 32767, }, /*A相采样校准b(网侧交流电压采样)*/ + {2, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*B相采样校准a(网侧交流电压采样)*/ + {3, DATATYPE_INT16_T, 0, -32768, 32767, }, /*B相采样校准b(网侧交流电压采样)*/ + {4, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*C相采样校准a(网侧交流电压采样)*/ + {5, DATATYPE_INT16_T, 0, -32768, 32767, }, /*C相采样校准b(网侧交流电压采样)*/ + {6, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*A相采样校准a(逆变侧电感电流)*/ + {7, DATATYPE_INT16_T, 0, -32768, 32767, }, /*A相采样校准b(逆变侧电感电流)*/ + {8, DATATYPE_INT16_T, 0, -32768, 32767, }, /*A相逆变电流相位偏移量*/ + {9, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*B相采样校准a(逆变侧电感电流)*/ + {10, DATATYPE_INT16_T, 0, -32768, 32767, }, /*B相采样校准b(逆变侧电感电流)*/ + {11, DATATYPE_INT16_T, 0, -32768, 32767, }, /*B相逆变电流相位偏移量*/ + {12, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*C相采样校准a(逆变侧电感电流)*/ + {13, DATATYPE_INT16_T, 0, -32768, 32767, }, /*C相采样校准b(逆变侧电感电流)*/ + {14, DATATYPE_INT16_T, 0, -32768, 32767, }, /*C相逆变电流相位偏移量*/ + {15, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*A相LCL电容电流系数*/ + {16, DATATYPE_INT16_T, 0, -32768, 32767, }, /*A相LCL电容电流相位偏移量*/ + {17, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*B相LCL电容电流系数*/ + {18, DATATYPE_INT16_T, 0, -32768, 32767, }, /*B相LCL电容电流相位偏移量*/ + {19, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*C相LCL电容电流系数*/ + {20, DATATYPE_INT16_T, 0, -32768, 32767, }, /*C相LCL电容电流相位偏移量*/ + {21, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a(BOOST1电感电流)*/ + {22, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b(BOOST1电感电流)*/ + {23, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a(BOOST2电感电流)*/ + {24, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b(BOOST2电感电流)*/ + {25, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a(BOOST3电感电流)*/ + {26, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b(BOOST3电感电流)*/ + {27, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a(BOOST4电感电流)*/ + {28, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b(BOOST4电感电流)*/ + {29, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a支路1(输入电压)*/ + {30, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b支路1(输入电压)*/ + {31, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a支路2(输入电压)*/ + {32, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b支路2(输入电压)*/ + {33, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a支路3(输入电压)*/ + {34, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b支路3(输入电压)*/ + {35, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a支路4(输入电压)*/ + {36, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b支路4(输入电压)*/ + {37, DATATYPE_UINT16_T, 10000, 7000, 13000, }, /*采样校准a(温度补偿)*/ + {38, DATATYPE_INT16_T, 0, -32768, 32767, }, /*采样校准b(温度补偿)*/ + {39, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {40, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {41, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {42, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {43, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {44, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {45, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {46, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {47, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {48, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {49, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {50, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {51, DATATYPE_UINT16_T, 0, 0, 1, }, /*开机*/ + {52, DATATYPE_UINT16_T, 0, 0, 1, }, /*关机*/ + {53, DATATYPE_UINT16_T, 0, 0, 1, }, /*故障复位*/ + {54, DATATYPE_UINT16_T, 0, 0, 1, }, /*芯片复位重启*/ + {55, DATATYPE_UINT16_T, 0, 0, 1, }, /*功率单元自检(调试)*/ + {56, DATATYPE_UINT16_T, 0, 0, 1, }, /*参数还原*/ + {57, DATATYPE_UINT16_T, 0, 0, 1, }, /*过温限功率标志*/ + {58, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {59, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {60, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {61, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {62, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {63, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {64, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {65, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {66, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {67, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {68, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {69, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {70, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {71, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {72, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {73, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {74, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {75, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {76, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {77, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {78, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {79, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {80, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {81, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {82, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {83, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {84, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {85, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {86, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {87, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {88, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {89, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {90, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {91, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {92, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {93, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {94, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {95, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {96, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {97, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {98, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {99, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {100, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {101, DATATYPE_UINT16_T, 1, 0, 1, }, /*工作使能*/ + {102, DATATYPE_UINT16_T, 1, 0, 1, }, /*孤岛检测使能*/ + {103, DATATYPE_UINT16_T, 0, 0, 1, }, /*LVRT使能*/ + {104, DATATYPE_UINT16_T, 0, 0, 1, }, /*HVRT使能*/ + {105, DATATYPE_UINT16_T, 1, 0, 1, }, /*MPPT使能*/ + {106, DATATYPE_UINT16_T, 0, 0, 1, }, /*老化测试使能*/ + {107, DATATYPE_UINT16_T, 1, 0, 1, }, /*相序异常运行使能*/ + {108, DATATYPE_UINT16_T, 1, 0, 1, }, /*预留参数1_3*/ + {109, DATATYPE_UINT16_T, 1800, 1000, 3000, }, /*直流输入电压开机阈值*/ + {110, DATATYPE_UINT16_T, 1600, 0, 2000, }, /*直流输入电压关机阈值*/ +#if defined(PV_INV30) + {111, DATATYPE_UINT16_T, 330, 0, 600, }, /*最大输出功率限值*/ +#elif defined(PV_INV40) + {111, DATATYPE_UINT16_T, 440, 0, 600, }, /*最大输出功率限值*/ +#elif defined(PV_INV50) + {111, DATATYPE_UINT16_T, 550, 0, 600, }, /*最大输出功率限值*/ +#else + {111, DATATYPE_UINT16_T, 0, 0, 0 }, /*最大输出功率限值*/ +#endif + {112, DATATYPE_UINT16_T, 100, 0, 65535, }, /*功率变化率上限*/ + {113, DATATYPE_UINT16_T, 0, 0, 3, }, /*无功生成模式*/ + {114, DATATYPE_INT16_T, 0, -32768, 32767, }, /*恒无功控制给定所需的无功功率*/ + {115, DATATYPE_INT16_T, 1000, -32768, 32767, }, /*恒功率因数控制给定所需的功率因数*/ + {116, DATATYPE_UINT16_T, 2200, 2100, 2300, }, /*恒电网电压控制给定目标电网电压*/ + {117, DATATYPE_UINT16_T, 2, 0, 2, }, /*预留参数1_5*/ + {118, DATATYPE_UINT16_T, 2, 0, 2, }, /*预留参数1_6*/ + {119, DATATYPE_UINT16_T, 0, 0, 2, }, /*预留参数1_7*/ + {120, DATATYPE_UINT16_T, 0, 0, 2, }, /*预留参数1_8*/ + {121, DATATYPE_UINT16_T, 0, 0, 1, }, /*多峰扫描使能*/ + {122, DATATYPE_UINT16_T, 5, 1, 10, }, /*多峰扫描时间间隔*/ + {123, DATATYPE_UINT16_T, 400, 300, 400, }, /*频率-有功控制斜率*/ + {124, DATATYPE_UINT16_T, 1, 0, 2, }, /*电网恢复等待时间*/ + {125, DATATYPE_UINT16_T, 200, 100, 300, }, /*孤岛响应时间上限*/ + {126, DATATYPE_UINT16_T, 200, 150, 200, }, /*预留参数1_9*/ + {127, DATATYPE_UINT16_T, 30, 10, 40, }, /*MPPT最小扰动步长*/ + {128, DATATYPE_UINT16_T, 1, 0, 1, }, /*待机母线均压使能*/ + {129, DATATYPE_UINT16_T, 180, 160, 200, }, /*关机上限时间*/ + {130, DATATYPE_UINT16_T, 9000, 8500, 10000, }, /*开机电压上限*/ + {131, DATATYPE_UINT16_T, 10000, 5000, 11000, }, /*追踪电压上限*/ + {132, DATATYPE_UINT16_T, 0, 0, 1, }, /*低压降额使能*/ + {133, DATATYPE_UINT16_T, 0, 0, 1, }, /*过压降额使能*/ + {134, DATATYPE_UINT16_T, 0, 0, 1, }, /*共用一路输入模式*/ + {135, DATATYPE_UINT16_T, 0, 0, 1, }, /*故障模式*/ + {136, DATATYPE_UINT16_T, 1, 0, 1, }, /*预留参数1_10*/ + {137, DATATYPE_UINT16_T, 0, 0, 5, }, /*PV1连接关系*/ + {138, DATATYPE_UINT16_T, 0, 0, 5, }, /*PV2连接关系*/ + {139, DATATYPE_UINT16_T, 0, 0, 5, }, /*PV3连接关系*/ + {140, DATATYPE_UINT16_T, 0, 0, 5, }, /*PV4连接关系*/ + {141, DATATYPE_UINT16_T, 1, 0, 1, }, /*MPPT波动处理逻辑使能*/ + {142, DATATYPE_UINT16_T, 1, 0, 1, }, /*有功功率自动调整*/ + {143, DATATYPE_INT16_T, -3, -32768, 32767, }, /*无功补偿量*/ + {144, DATATYPE_UINT16_T, 1, 0, 1, }, /*无功闭环补偿使能*/ + {145, DATATYPE_UINT16_T, 1, 0, 1, }, /*逆变电流补偿使能*/ + {146, DATATYPE_UINT16_T, 1000, 0, 65535, }, /*逆变电流补偿系数*/ + {147, DATATYPE_INT16_T, 47, -32768, 32767, }, /*逆变电路延迟角度*/ + {148, DATATYPE_INT16_T, -50, -32768, 32767, }, /*电容电流延迟角度*/ + {149, DATATYPE_UINT16_T, 1200, 0, 65535, }, /*电容电流比例系数*/ + {150, DATATYPE_UINT16_T, 2, 0, 65535, }, /*PV电流比例校准系数*/ + {151, DATATYPE_UINT16_T, 0, 0, 2, }, /*PV输入校准标志*/ + {152, DATATYPE_UINT16_T, 15, 0, 65535, }, /*直流功率补偿*/ + {153, DATATYPE_UINT16_T, 0, 0, 4, }, /*BOOST运行模式*/ + {154, DATATYPE_UINT16_T, 1, 0, 1, }, /*第1路BOOST使能*/ + {155, DATATYPE_UINT16_T, 1, 0, 1, }, /*第2路BOOST使能*/ + {156, DATATYPE_UINT16_T, 1, 0, 1, }, /*第3路BOOST使能*/ + {157, DATATYPE_UINT16_T, 1, 0, 1, }, /*第4路BOOST使能*/ + {158, DATATYPE_UINT16_T, 0, 0, 1, }, /*分段保护使能*/ + {159, DATATYPE_UINT16_T, 1, 0, 1, }, /*PV反接检测使能*/ + {160, DATATYPE_UINT16_T, 0, 0, 1, }, /*PV回灌检测使能*/ + {161, DATATYPE_UINT16_T, 1, 0, 1, }, /*孤岛保护兼容频率适应性*/ + {162, DATATYPE_UINT16_T, 1, 0, 1, }, /*功率控制时无功优先使能*/ + {163, DATATYPE_UINT16_T, 1, 0, 1, }, /*母线欠压检测使能*/ + {164, DATATYPE_UINT16_T, 0, 0, 1, }, /*高低穿模式切换*/ + {165, DATATYPE_UINT16_T, 0, 0, 1, }, /*预留参数1_4*/ + {166, DATATYPE_UINT16_T, 1, 0, 1, }, /*电压无功控制模式*/ + {167, DATATYPE_UINT16_T, 1, 0, 1, }, /*精度判断模式*/ + {168, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {169, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {170, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {171, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {172, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {173, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {174, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {175, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {176, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {177, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {178, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {179, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {180, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {181, DATATYPE_UINT16_T, 5, 0, 65535, }, /*外环PI控制:Kp*/ + {182, DATATYPE_UINT16_T, 200, 0, 65535, }, /*外环PI控制:Ki*/ +#if defined(PV_INV30) + {183, DATATYPE_UINT16_T, 780, 0, 65535, }, /*外环PI控制:OutLimit*/ +#elif defined(PV_INV40) + {183, DATATYPE_UINT16_T, 1010, 0, 65535, }, /*外环PI控制:OutLimit*/ +#elif defined(PV_INV50) + {183, DATATYPE_UINT16_T, 1250, 0, 65535, }, /*外环PI控制:OutLimit*/ +#else + {183, DATATYPE_UINT16_T, 0, 0, 0 }, /*外环PI控制:OutLimit*/ +#endif + {184, DATATYPE_UINT16_T, 1, 0, 65535, }, /*均压环PI控制:Kp*/ + {185, DATATYPE_UINT16_T, 0, 0, 65535, }, /*均压环PI控制:Ki*/ + {186, DATATYPE_UINT16_T, 100, 0, 65535, }, /*均压环PI控制:OutLimit*/ + {187, DATATYPE_UINT16_T, 10, 0, 65535, }, /*电流环Kp */ + {188, DATATYPE_UINT16_T, 0, 0, 65535, }, /*有源阻尼Kp*/ + {189, DATATYPE_UINT16_T, 5, 0, 65535, }, /*无功稳压控制Kp*/ + {190, DATATYPE_UINT16_T, 10, 0, 65535, }, /*无功稳压控制Ki*/ + {191, DATATYPE_UINT16_T, 100, 0, 65535, }, /*电流环q轴PI控制:Ki*/ + {192, DATATYPE_UINT16_T, 2250, 0, 65535, }, /*电流环q轴PI控制:OutLimit*/ + {193, DATATYPE_UINT16_T, 10, 0, 65535, }, /*零序电流PI控制:Kp*/ + {194, DATATYPE_UINT16_T, 1000, 0, 65535, }, /*零序电流PI控制:Ki*/ + {195, DATATYPE_UINT16_T, 2250, 0, 65535, }, /*零序电流PI控制:OutLimit*/ + {196, DATATYPE_UINT16_T, 500, 0, 65535, }, /*1次谐振增益*/ + {197, DATATYPE_UINT16_T, 200, 0, 65535, }, /*2次谐振增益*/ + {198, DATATYPE_UINT16_T, 300, 0, 65535, }, /*3次谐振增益*/ + {199, DATATYPE_UINT16_T, 200, 0, 65535, }, /*4次谐振增益*/ + {200, DATATYPE_UINT16_T, 300, 0, 65535, }, /*5次谐振增益*/ + {201, DATATYPE_UINT16_T, 200, 0, 65535, }, /*6次谐振增益*/ + {202, DATATYPE_UINT16_T, 400, 0, 65535, }, /*7次谐振增益*/ + {203, DATATYPE_UINT16_T, 200, 0, 65535, }, /*8次谐振增益*/ + {204, DATATYPE_UINT16_T, 300, 0, 65535, }, /*9次谐振增益*/ + {205, DATATYPE_UINT16_T, 200, 0, 65535, }, /*10次谐振增益*/ + {206, DATATYPE_UINT16_T, 200, 0, 65535, }, /*11次谐振增益*/ + {207, DATATYPE_UINT16_T, 200, 0, 65535, }, /*12次谐振增益*/ + {208, DATATYPE_UINT16_T, 200, 0, 65535, }, /*13次谐振增益*/ + {209, DATATYPE_UINT16_T, 200, 0, 65535, }, /*boost电压环Kp*/ + {210, DATATYPE_UINT16_T, 1000, 0, 65535, }, /*boost电压环Ki*/ + {211, DATATYPE_UINT16_T, 2, 0, 65535, }, /*boost电流环Kp*/ + {212, DATATYPE_UINT16_T, 500, 0, 65535, }, /*boost电流环Ki*/ + {213, DATATYPE_UINT16_T, 150, 0, 65535, }, /*低电压穿越系数*/ + {214, DATATYPE_UINT16_T, 150, 0, 65535, }, /*高电压穿越系数*/ +#if defined(PV_INV30) + {215, DATATYPE_UINT16_T, 3, 0, 10, }, /*调制方式*/ +#elif defined(PV_INV40) + {215, DATATYPE_UINT16_T, 3, 0, 10, }, /*调制方式*/ +#elif defined(PV_INV50) + {215, DATATYPE_UINT16_T, 3, 0, 10, }, /*调制方式*/ +#else + {215, DATATYPE_UINT16_T, 0, 0, 0 }, /*调制方式*/ +#endif + {216, DATATYPE_UINT16_T, 1, 0, 65535, }, /*电压前馈方式*/ + {217, DATATYPE_UINT16_T, 5850, 0, 65535, }, /*母线电压参考值下限*/ + {218, DATATYPE_UINT16_T, 8, 0, 65535, }, /*零序分量控制kp参数*/ + {219, DATATYPE_UINT16_T, 7, 0, 65535, }, /*加权前馈的占比系数*/ + {220, DATATYPE_UINT16_T, 0, 0, 65535, }, /*限功率模式使能*/ + {221, DATATYPE_UINT16_T, 200, 0, 65535, }, /*孤岛保护Kp*/ + {222, DATATYPE_UINT16_T, 864, 0, 65535, }, /*进入CPWM调制度阈值*/ + {223, DATATYPE_UINT16_T, 888, 0, 65535, }, /*进入DPWM调制度阈值*/ +#if defined(PV_INV30) + {224, DATATYPE_UINT16_T, 5350, 0, 11000, }, /*进入CPWM母线电压阈值*/ +#elif defined(PV_INV40) + {224, DATATYPE_UINT16_T, 7200, 0, 11000, }, /*进入CPWM母线电压阈值*/ +#elif defined(PV_INV50) + {224, DATATYPE_UINT16_T, 7200, 0, 11000, }, /*进入CPWM母线电压阈值*/ +#else + {224, DATATYPE_UINT16_T, 0, 0, 0 }, /*进入CPWM母线电压阈值*/ +#endif +#if defined(PV_INV30) + {225, DATATYPE_UINT16_T, 5450, 0, 11000, }, /*进入DPWM母线电压阈值*/ +#elif defined(PV_INV40) + {225, DATATYPE_UINT16_T, 7000, 0, 11000, }, /*进入DPWM母线电压阈值*/ +#elif defined(PV_INV50) + {225, DATATYPE_UINT16_T, 7000, 0, 11000, }, /*进入DPWM母线电压阈值*/ +#else + {225, DATATYPE_UINT16_T, 0, 0, 0 }, /*进入DPWM母线电压阈值*/ +#endif + {226, DATATYPE_UINT16_T, 7500, 0, 65535, }, /*直流电压参考*/ + {227, DATATYPE_UINT16_T, 3200, 0, 65535, }, /*交流电压参考*/ + {228, DATATYPE_INT16_T, 0, -32768, 32767, }, /*无功电流参考*/ + {229, DATATYPE_UINT16_T, 0, 0, 50, }, /*boost1电流参考值*/ + {230, DATATYPE_UINT16_T, 0, 0, 50, }, /*boost2电流参考值*/ + {231, DATATYPE_UINT16_T, 0, 0, 50, }, /*boost3电流参考值*/ + {232, DATATYPE_UINT16_T, 0, 0, 50, }, /*boost4电流参考值*/ + {233, DATATYPE_INT16_T, 0, -32768, 32767, }, /*有功电流参考*/ + {234, DATATYPE_UINT16_T, 200, 0, 10000, }, /*无功调压系数*/ + {235, DATATYPE_UINT16_T, 400, 0, 2000, }, /*共模电流幅值阈值*/ + {236, DATATYPE_UINT16_T, 12, 0, 20000, }, /*CPWM共模电流次数*/ + {237, DATATYPE_UINT16_T, 6, 0, 20000, }, /*DPWM共模电流次数*/ + {238, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {239, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {240, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {241, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {242, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {243, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {244, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {245, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {246, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {247, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {248, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {249, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {250, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {251, DATATYPE_UINT16_T, 10200, 10000, 12000, }, /*开路电压过高阈值*/ + {252, DATATYPE_UINT16_T, 10500, 10000, 12000, }, /*直流输入过压阈值*/ + {253, DATATYPE_UINT16_T, 5250, 0, 6000, }, /*直流母线过压阈值*/ + {254, DATATYPE_UINT16_T, 2000, 0, 5500, }, /*直流母线欠压阈值*/ +#if defined(PV_INV30) + {255, DATATYPE_UINT16_T, 1000, 0, 2000, }, /*逆变电流保护瞬时值*/ +#elif defined(PV_INV40) + {255, DATATYPE_UINT16_T, 1270, 0, 2000, }, /*逆变电流保护瞬时值*/ +#elif defined(PV_INV50) + {255, DATATYPE_UINT16_T, 1450, 0, 2000, }, /*逆变电流保护瞬时值*/ +#else + {255, DATATYPE_UINT16_T, 0, 0, 0 }, /*逆变电流保护瞬时值*/ +#endif +#if defined(PV_INV30) + {256, DATATYPE_UINT16_T, 550, 500, 550, }, /*逆变电流保护有效值*/ +#elif defined(PV_INV40) + {256, DATATYPE_UINT16_T, 700, 500, 800, }, /*逆变电流保护有效值*/ +#elif defined(PV_INV50) + {256, DATATYPE_UINT16_T, 900, 500, 1000, }, /*逆变电流保护有效值*/ +#else + {256, DATATYPE_UINT16_T, 0, 0, 0 }, /*逆变电流保护有效值*/ +#endif +#if defined(PV_INV30) + {257, DATATYPE_UINT16_T, 900, 0, 1500, }, /*逆变电流逐波限流封锁阈值*/ +#elif defined(PV_INV40) + {257, DATATYPE_UINT16_T, 900, 0, 1500, }, /*逆变电流逐波限流封锁阈值*/ +#elif defined(PV_INV50) + {257, DATATYPE_UINT16_T, 900, 0, 1500, }, /*逆变电流逐波限流封锁阈值*/ +#else + {257, DATATYPE_UINT16_T, 0, 0, 0 }, /*逆变电流逐波限流封锁阈值*/ +#endif +#if defined(PV_INV30) + {258, DATATYPE_UINT16_T, 750, 700, 1000, }, /*逆变电流逐波限流解封阈值*/ +#elif defined(PV_INV40) + {258, DATATYPE_UINT16_T, 750, 700, 1000, }, /*逆变电流逐波限流解封阈值*/ +#elif defined(PV_INV50) + {258, DATATYPE_UINT16_T, 750, 700, 1000, }, /*逆变电流逐波限流解封阈值*/ +#else + {258, DATATYPE_UINT16_T, 0, 0, 0 }, /*逆变电流逐波限流解封阈值*/ +#endif +#if defined(PV_INV30) + {259, DATATYPE_UINT16_T, 840, 450, 1000, }, /*Boost1过流软件保护阈值*/ +#elif defined(PV_INV40) + {259, DATATYPE_UINT16_T, 840, 450, 1000, }, /*Boost1过流软件保护阈值*/ +#elif defined(PV_INV50) + {259, DATATYPE_UINT16_T, 840, 450, 1000, }, /*Boost1过流软件保护阈值*/ +#else + {259, DATATYPE_UINT16_T, 0, 0, 0 }, /*Boost1过流软件保护阈值*/ +#endif +#if defined(PV_INV30) + {260, DATATYPE_UINT16_T, 840, 450, 1000, }, /*Boost2过流软件保护阈值*/ +#elif defined(PV_INV40) + {260, DATATYPE_UINT16_T, 840, 450, 1000, }, /*Boost2过流软件保护阈值*/ +#elif defined(PV_INV50) + {260, DATATYPE_UINT16_T, 840, 450, 1000, }, /*Boost2过流软件保护阈值*/ +#else + {260, DATATYPE_UINT16_T, 0, 0, 0 }, /*Boost2过流软件保护阈值*/ +#endif + {261, DATATYPE_UINT16_T, 750, 450, 1000, }, /*Boost3过流软件保护阈值*/ + {262, DATATYPE_UINT16_T, 750, 450, 1000, }, /*Boost4过流软件保护阈值*/ + {263, DATATYPE_UINT16_T, 1000, 0, 1100, }, /*MPPT短路电压阈值*/ + {264, DATATYPE_UINT16_T, 20, 0, 50, }, /*MPPT短路电流阈值*/ + {265, DATATYPE_UINT16_T, 2200, 2100, 2400, }, /*额定电网保护电压*/ + {266, DATATYPE_UINT16_T, 2860, 2000, 3000, }, /*电网过压阈值*/ + {267, DATATYPE_UINT16_T, 1540, 1200, 2600, }, /*电网欠压阈值*/ + {268, DATATYPE_UINT16_T, 1100, 1000, 1200, }, /*电网欠压二级保护阈值*/ + {269, DATATYPE_UINT16_T, 1870, 1770, 1970, }, /*电网欠压一级保护阈值*/ + {270, DATATYPE_UINT16_T, 2420, 2100, 2630, }, /*电网过压一级保护阈值*/ + {271, DATATYPE_UINT16_T, 2970, 2900, 3000, }, /*电网过压二级保护阈值*/ + {272, DATATYPE_UINT16_T, 2600, 2550, 2650, }, /*过压降额阈值*/ + {273, DATATYPE_UINT16_T, 505, 450, 550, }, /*电网频率上限*/ + {274, DATATYPE_UINT16_T, 480, 450, 550, }, /*电网频率下限*/ + {275, DATATYPE_UINT16_T, 4650, 4600, 4700, }, /*电网欠频五级保护阈值*/ + {276, DATATYPE_UINT16_T, 4700, 4650, 4750, }, /*电网欠频四级保护阈值*/ + {277, DATATYPE_UINT16_T, 4750, 4700, 4800, }, /*电网欠频三级保护阈值*/ + {278, DATATYPE_UINT16_T, 4800, 4750, 4850, }, /*电网欠频二级保护阈值*/ + {279, DATATYPE_UINT16_T, 4850, 4800, 4900, }, /*电网欠频一级保护阈值*/ + {280, DATATYPE_UINT16_T, 5050, 5000, 5100, }, /*电网过频一级保护阈值*/ + {281, DATATYPE_UINT16_T, 5100, 5050, 5150, }, /*电网过频二级保护阈值*/ + {282, DATATYPE_UINT16_T, 5150, 5100, 5200, }, /*电网过频三级保护阈值*/ + {283, DATATYPE_UINT16_T, 5003, 5000, 5010, }, /*过频降额阈值*/ + {284, DATATYPE_UINT16_T, 120, 50, 200, }, /*滤波电容过流保护阈值*/ + {285, DATATYPE_UINT16_T, 3300, 2000, 3500, }, /*滤波电容过压保护阈值*/ + {286, DATATYPE_UINT16_T, 700, 300, 1000, }, /*绝缘阻抗检测阈值*/ + {287, DATATYPE_UINT16_T, 0, 0, 1, }, /*电网故障屏蔽内部故障*/ + {288, DATATYPE_UINT16_T, 10, 5, 20, }, /*主动反孤岛阈值*/ + {289, DATATYPE_UINT16_T, 20, 10, 30, }, /*反孤岛无功电流余量*/ + {290, DATATYPE_UINT16_T, 0, 0, 65535, }, /*PV接线检测(未启用)*/ + {291, DATATYPE_UINT16_T, 200, 40, 500, }, /*PV反接电压阈值*/ + {292, DATATYPE_UINT16_T, 10, 0, 90, }, /*PV反接电感电流阈值*/ + {293, DATATYPE_UINT16_T, 0, 0, 65535, }, /*PV回灌电压阈值*/ + {294, DATATYPE_UINT16_T, 0, 0, 65535, }, /*支路输入电流阈值*/ + {295, DATATYPE_INT16_T, -10, -50, 0, }, /*支路输入电流阈值1*/ + {296, DATATYPE_UINT16_T, 10, 0, 50, }, /*支路输入电流阈值2*/ + {297, DATATYPE_UINT16_T, 200, 0, 65535, }, /*节能告警阈值1*/ + {298, DATATYPE_UINT16_T, 300, 0, 65535, }, /*节能告警阈值2*/ + {299, DATATYPE_UINT16_T, 85, 10, 1000, }, /*腔体过温阈值*/ + {300, DATATYPE_UINT16_T, 110, 10, 1000, }, /*腔体2过温阈值*/ + {301, DATATYPE_UINT16_T, 85, 10, 1000, }, /*散热片过温阈值*/ + {302, DATATYPE_UINT16_T, 90, 0, 65535, }, /*Q-U低压系数阈值*/ + {303, DATATYPE_UINT16_T, 110, 0, 65535, }, /*Q-U高压系数阈值*/ + {304, DATATYPE_UINT16_T, 90, 0, 65535, }, /*低穿穿越边界*/ + {305, DATATYPE_UINT16_T, 110, 0, 65535, }, /*高穿穿越边界*/ + {306, DATATYPE_UINT16_T, 100, 0, 10000, }, /*滤波电容过流保护时间*/ + {307, DATATYPE_UINT16_T, 100, 0, 10000, }, /*逆变过流保护时间*/ + {308, DATATYPE_UINT16_T, 100, 0, 30000, }, /*电网过压L0保护时间*/ + {309, DATATYPE_UINT16_T, 1000, 0, 30000, }, /*电网过压L1保护时间*/ + {310, DATATYPE_UINT16_T, 100, 0, 30000, }, /*电网过压L2保护时间*/ + {311, DATATYPE_UINT16_T, 100, 0, 30000, }, /*电网欠压L0保护时间*/ + {312, DATATYPE_UINT16_T, 1000, 0, 30000, }, /*电网欠压L1保护时间*/ + {313, DATATYPE_UINT16_T, 100, 0, 30000, }, /*电网欠压L2保护时间*/ + {314, DATATYPE_UINT16_T, 100, 0, 30000, }, /*电网过频L0保护时间*/ + {315, DATATYPE_UINT16_T, 190, 0, 10000, }, /*电网过频L1保护时间*/ + {316, DATATYPE_UINT16_T, 40, 0, 10000, }, /*电网过频L2保护时间*/ + {317, DATATYPE_UINT16_T, 200, 0, 30000, }, /*电网过频L3保护时间*/ + {318, DATATYPE_UINT16_T, 100, 0, 30000, }, /*电网欠频L0保护时间*/ + {319, DATATYPE_UINT16_T, 310, 0, 10000, }, /*电网欠频L1保护时间*/ + {320, DATATYPE_UINT16_T, 70, 0, 10000, }, /*电网欠频L2保护时间*/ + {321, DATATYPE_UINT16_T, 30, 0, 10000, }, /*电网欠频L3保护时间*/ + {322, DATATYPE_UINT16_T, 15, 0, 10000, }, /*电网欠频L4保护时间*/ + {323, DATATYPE_UINT16_T, 200, 0, 30000, }, /*电网欠频L5保护时间*/ + {324, DATATYPE_UINT16_T, 1000, 0, 30000, }, /*母线欠压保护时间*/ + {325, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {326, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {327, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {328, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {329, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {330, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ +#if defined(PV_INV30) + {331, DATATYPE_UINT16_T, 455, 0, 7000, }, /*高低穿无功电流限幅值*/ +#elif defined(PV_INV40) + {331, DATATYPE_UINT16_T, 610, 0, 7000, }, /*高低穿无功电流限幅值*/ +#elif defined(PV_INV50) + {331, DATATYPE_UINT16_T, 760, 0, 7000, }, /*高低穿无功电流限幅值*/ +#else + {331, DATATYPE_UINT16_T, 0, 0, 0 }, /*高低穿无功电流限幅值*/ +#endif +#if defined(PV_INV30) + {332, DATATYPE_UINT16_T, 520, 0, 7500, }, /*逆变总电流限幅值*/ +#elif defined(PV_INV40) + {332, DATATYPE_UINT16_T, 690, 0, 7500, }, /*逆变总电流限幅值*/ +#elif defined(PV_INV50) + {332, DATATYPE_UINT16_T, 860, 0, 7500, }, /*逆变总电流限幅值*/ +#else + {332, DATATYPE_UINT16_T, 0, 0, 0 }, /*逆变总电流限幅值*/ +#endif +#if defined(PV_INV30) + {333, DATATYPE_UINT16_T, 520, 0, 7500, }, /*逆变有功电流限幅值*/ +#elif defined(PV_INV40) + {333, DATATYPE_UINT16_T, 690, 0, 7500, }, /*逆变有功电流限幅值*/ +#elif defined(PV_INV50) + {333, DATATYPE_UINT16_T, 860, 0, 7500, }, /*逆变有功电流限幅值*/ +#else + {333, DATATYPE_UINT16_T, 0, 0, 0 }, /*逆变有功电流限幅值*/ +#endif +#if defined(PV_INV30) + {334, DATATYPE_UINT16_T, 320, 0, 5000, }, /*逆变无功电流限幅值*/ +#elif defined(PV_INV40) + {334, DATATYPE_UINT16_T, 420, 0, 5000, }, /*逆变无功电流限幅值*/ +#elif defined(PV_INV50) + {334, DATATYPE_UINT16_T, 520, 0, 5000, }, /*逆变无功电流限幅值*/ +#else + {334, DATATYPE_UINT16_T, 0, 0, 0 }, /*逆变无功电流限幅值*/ +#endif + {335, DATATYPE_UINT16_T, 400, 0, 1000, }, /*Boost1单路电流限幅值*/ + {336, DATATYPE_UINT16_T, 300, 0, 1000, }, /*Boost2单路电流限幅值*/ + {337, DATATYPE_UINT16_T, 300, 0, 1000, }, /*Boost3单路电流限幅值*/ + {338, DATATYPE_UINT16_T, 300, 0, 1000, }, /*Boost4单路电流限幅值*/ + {339, DATATYPE_UINT16_T, 0, 0, 65535, }, /*5次谐波电流限幅值*/ + {340, DATATYPE_UINT16_T, 0, 0, 65535, }, /*7次谐波电流限幅值*/ + {341, DATATYPE_UINT16_T, 0, 0, 65535, }, /*11次谐波电流限幅值*/ + {342, DATATYPE_UINT16_T, 0, 0, 65535, }, /*13次谐波电流限幅值*/ + {343, DATATYPE_UINT16_T, 0, 0, 65535, }, /*17次谐波电流限幅值*/ + {344, DATATYPE_UINT16_T, 0, 0, 65535, }, /*19次谐波电流限幅值*/ + {345, DATATYPE_UINT16_T, 0, 0, 65535, }, /*2次谐波电流限幅值*/ + {346, DATATYPE_UINT16_T, 0, 0, 65535, }, /*4次谐波电流限幅值*/ + {347, DATATYPE_UINT16_T, 0, 0, 65535, }, /*6次谐波电流限幅值*/ + {348, DATATYPE_UINT16_T, 0, 0, 65535, }, /*8次谐波电流限幅值*/ + {349, DATATYPE_UINT16_T, 0, 0, 65535, }, /*10次谐波电流限幅值*/ + {350, DATATYPE_UINT16_T, 0, 0, 65535, }, /*14次谐波电流限幅值*/ + {351, DATATYPE_UINT16_T, 0, 0, 65535, }, /*16次谐波电流限幅值*/ + {352, DATATYPE_UINT16_T, 0, 0, 65535, }, /*20次谐波电流限幅值*/ +#if defined(PV_INV30) + {353, DATATYPE_UINT16_T, 8000, 0, 65535, }, /*进入DPWM视在功率阈值*/ +#elif defined(PV_INV40) + {353, DATATYPE_UINT16_T, 5000, 0, 65535, }, /*进入DPWM视在功率阈值*/ +#elif defined(PV_INV50) + {353, DATATYPE_UINT16_T, 5000, 0, 65535, }, /*进入DPWM视在功率阈值*/ +#else + {353, DATATYPE_UINT16_T, 0, 0, 0 }, /*进入DPWM视在功率阈值*/ +#endif +#if defined(PV_INV30) + {354, DATATYPE_UINT16_T, 8900, 0, 65535, }, /*进入CPWM视在功率阈值*/ +#elif defined(PV_INV40) + {354, DATATYPE_UINT16_T, 6000, 0, 65535, }, /*进入CPWM视在功率阈值*/ +#elif defined(PV_INV50) + {354, DATATYPE_UINT16_T, 6000, 0, 65535, }, /*进入CPWM视在功率阈值*/ +#else + {354, DATATYPE_UINT16_T, 0, 0, 0 }, /*进入CPWM视在功率阈值*/ +#endif + {355, DATATYPE_UINT16_T, 60, 0, 1000, }, /*零序超前补偿kp*/ + {356, DATATYPE_UINT16_T, 800, 0, 65535, }, /*散热片过温降功率阈值*/ + {357, DATATYPE_UINT16_T, 800, 0, 65535, }, /*腔体过温降功率阈值*/ + {358, DATATYPE_UINT16_T, 1050, 0, 65535, }, /*腔体2过温降功率阈值*/ + {359, DATATYPE_UINT16_T, 100, 0, 65535, }, /*过温降额功率下限*/ + {360, DATATYPE_UINT16_T, 100, 0, 65535, }, /*风扇故障降额功率下限*/ + {361, DATATYPE_UINT16_T, 100, 0, 65535, }, /*过温降额功率上限*/ + {362, DATATYPE_UINT16_T, 100, 0, 65535, }, /*过温降额功率变化率上限*/ + {363, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {364, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {365, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {366, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {367, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {368, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {369, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {370, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {371, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {372, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {373, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {374, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {375, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {376, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {377, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {378, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {379, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {380, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {381, DATATYPE_UINT16_T, 0, 0, 1, }, /*预留参数5_0*/ + {382, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数5_1*/ + {383, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数5_2*/ + {384, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数5_3*/ + {385, DATATYPE_UINT16_T, 0, 0, 65535, }, /*整机状态*/ + {386, DATATYPE_UINT16_T, 0, 0, 65535, }, /*逆变状态*/ + {387, DATATYPE_UINT16_T, 0, 0, 65535, }, /*MPPT1状态(debug)*/ + {388, DATATYPE_UINT16_T, 0, 0, 65535, }, /*MPPT2状态(debug)*/ + {389, DATATYPE_UINT16_T, 0, 0, 65535, }, /*MPPT3状态(debug)*/ + {390, DATATYPE_UINT16_T, 0, 0, 65535, }, /*MPPT4状态(debug)*/ + {391, DATATYPE_UINT16_T, 0, 0, 65535, }, /*功率不足标志*/ + {392, DATATYPE_UINT16_T, 0, 0, 1, }, /*MPPT手动参考标志位*/ + {393, DATATYPE_UINT16_T, 600, 0, 1000, }, /*MPPT手动参考值*/ + {394, DATATYPE_UINT16_T, 500, 0, 65535, }, /*母线均压开启阈值*/ + {395, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数5_4*/ + {396, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数5_5*/ + {397, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {398, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {399, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {400, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {401, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {402, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {403, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {404, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {405, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {406, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {407, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {408, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {409, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {410, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {411, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {412, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {413, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {414, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {415, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {416, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {417, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {418, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {419, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {420, DATATYPE_UINT16_T, 1, 0, 100, }, /*自动化校准使能*/ + {421, DATATYPE_UINT16_T, 0, 0, 1, }, /*自动化校准状态*/ + {422, DATATYPE_UINT16_T, 0, 0, 1, }, /*自动化校准指令*/ + {423, DATATYPE_UINT16_T, 0, 0, 1, }, /*自动化校准结果*/ + {424, DATATYPE_UINT16_T, 0, 0, 65535, }, /*自动化校准刷新标志*/ + {425, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_6*/ + {426, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_7*/ + {427, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_8*/ + {428, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_9*/ + {429, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_10*/ + {430, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_11*/ + {431, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_12*/ + {432, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_13*/ + {433, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_14*/ + {434, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_15*/ + {435, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_16*/ + {436, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_17*/ + {437, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_18*/ + {438, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_19*/ + {439, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_20*/ + {440, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_21*/ + {441, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_22*/ + {442, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_23*/ + {443, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_24*/ + {444, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_25*/ + {445, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_26*/ + {446, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_27*/ + {447, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_28*/ + {448, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_29*/ + {449, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_30*/ + {450, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_31*/ + {451, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_32*/ + {452, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_33*/ + {453, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_34*/ + {454, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_35*/ + {455, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_36*/ + {456, DATATYPE_UINT16_T, 0, 0, 65535, }, /*预留参数6_37*/ + {457, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {458, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {459, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {460, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {461, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {462, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {463, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {464, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {465, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {466, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {467, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {468, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {469, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {470, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {471, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {472, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {473, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {474, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {475, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {476, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {477, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {478, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {479, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {480, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {481, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {482, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {483, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {484, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {485, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {486, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {487, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {488, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {489, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {490, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {491, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {492, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {493, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {494, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {495, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {496, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {497, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {498, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ + {499, DATATYPE_UINT16_T, 0, 0, USHRT_MAX }, /*预留*/ +}; + + +bool_t mw_protocol_modbus_check_param_out_of_range(uint16_t us_address, uint16_t us_value) +{ + if(us_address > MAX_VALID_PARAM_ADDRESS) + { + return true; + } + if (DATATYPE_UINT16_T == s_ast_param_range[us_address].datatype) + { + if ((us_value < s_ast_param_range[us_address].min_value) || (us_value > s_ast_param_range[us_address].max_value)) + { + return true; + } + } + else if (DATATYPE_INT16_T == s_ast_param_range[us_address].datatype) + { + if (((int16_t)us_value < s_ast_param_range[us_address].min_value) || ((int16_t)us_value > s_ast_param_range[us_address].max_value)) + { + return true; + } + } + else + { + return true; + } + return false; +} + +uint16_t mw_protocol_modbus_get_param_default_value(uint16_t us_address) +{ + if(us_address > MAX_VALID_PARAM_ADDRESS) + { + return 0; + } + return (uint16_t)s_ast_param_range[us_address].default_value; +} diff --git a/test/PV_Inverter/dsp/mw_param_manager_dsp_struct.h b/test/PV_Inverter/dsp/mw_param_manager_dsp_struct.h new file mode 100644 index 0000000..199a325 --- /dev/null +++ b/test/PV_Inverter/dsp/mw_param_manager_dsp_struct.h @@ -0,0 +1,1114 @@ +/************************************************************************** +* @copyright Copyright (C), 2022, Qingdao Topscomm Communication Co. Ltd. +* @file mw_param_manager_dsp_struct.h +* @brief dsp参数表 +* @author +* @date 2024-10-26 16:34:51 +* @version +* @details +**************************************************************************/ +#ifndef __MW_PARAM_MANAGER_DSP_STRUCT_H__ +#define __MW_PARAM_MANAGER_DSP_STRUCT_H__ +#include "comm_datatype.h" + +#define APP_TABLE_VERSION 33 //地址表版本 + +typedef struct tag_dsp_unrecovery_param_t +{ + uint16_t us_grd_A_volt_calib_coff; /*0 A相采样校准a(网侧交流电压采样)*/ + int16_t us_grd_A_volt_calib_bias; /*1 A相采样校准b(网侧交流电压采样)*/ + uint16_t us_grd_B_volt_calib_coff; /*2 B相采样校准a(网侧交流电压采样)*/ + int16_t us_grd_B_volt_calib_bias; /*3 B相采样校准b(网侧交流电压采样)*/ + uint16_t us_grd_C_volt_calib_coff; /*4 C相采样校准a(网侧交流电压采样)*/ + int16_t us_grd_C_volt_calib_bias; /*5 C相采样校准b(网侧交流电压采样)*/ + uint16_t us_inv_A_cur_calib_coff; /*6 A相采样校准a(逆变侧电感电流)*/ + int16_t us_inv_A_cur_calib_bias; /*7 A相采样校准b(逆变侧电感电流)*/ + int16_t us_inv_A_cur_phase_offset; /*8 A相逆变电流相位偏移量*/ + uint16_t us_inv_B_cur_calib_coff; /*9 B相采样校准a(逆变侧电感电流)*/ + int16_t us_inv_B_cur_calib_bias; /*10 B相采样校准b(逆变侧电感电流)*/ + int16_t us_inv_B_cur_phase_offset; /*11 B相逆变电流相位偏移量*/ + uint16_t us_inv_C_cur_calib_coff; /*12 C相采样校准a(逆变侧电感电流)*/ + int16_t us_inv_C_cur_calib_bias; /*13 C相采样校准b(逆变侧电感电流)*/ + int16_t us_inv_C_cur_phase_offset; /*14 C相逆变电流相位偏移量*/ + uint16_t us_cap_A_cur_calib_coff; /*15 A相LCL电容电流系数*/ + int16_t us_cap_A_cur_phase_offset; /*16 A相LCL电容电流相位偏移量*/ + uint16_t us_cap_B_cur_calib_coff; /*17 B相LCL电容电流系数*/ + int16_t us_cap_B_cur_phase_offset; /*18 B相LCL电容电流相位偏移量*/ + uint16_t us_cap_C_cur_calib_coff; /*19 C相LCL电容电流系数*/ + int16_t us_cap_C_cur_phase_offset; /*20 C相LCL电容电流相位偏移量*/ + uint16_t us_bst1_cur_calib_coff; /*21 采样校准a(BOOST1电感电流)*/ + int16_t us_bst1_cur_calib_bias; /*22 采样校准b(BOOST1电感电流)*/ + uint16_t us_bst2_cur_calib_coff; /*23 采样校准a(BOOST2电感电流)*/ + int16_t us_bst2_cur_calib_bias; /*24 采样校准b(BOOST2电感电流)*/ + uint16_t us_bst3_cur_calib_coff; /*25 采样校准a(BOOST3电感电流)*/ + int16_t us_bst3_cur_calib_bias; /*26 采样校准b(BOOST3电感电流)*/ + uint16_t us_bst4_cur_calib_coff; /*27 采样校准a(BOOST4电感电流)*/ + int16_t us_bst4_cur_calib_bias; /*28 采样校准b(BOOST4电感电流)*/ + uint16_t us_pv1_volt_calib_coff; /*29 采样校准a支路1(输入电压)*/ + int16_t us_pv1_volt_calib_bias; /*30 采样校准b支路1(输入电压)*/ + uint16_t us_pv2_volt_calib_coff; /*31 采样校准a支路2(输入电压)*/ + int16_t us_pv2_volt_calib_bias; /*32 采样校准b支路2(输入电压)*/ + uint16_t us_pv3_volt_calib_coff; /*33 采样校准a支路3(输入电压)*/ + int16_t us_pv3_volt_calib_bias; /*34 采样校准b支路3(输入电压)*/ + uint16_t us_pv4_volt_calib_coff; /*35 采样校准a支路4(输入电压)*/ + int16_t us_pv4_volt_calib_bias; /*36 采样校准b支路4(输入电压)*/ + uint16_t us_tmpr_calib_coff; /*37 采样校准a(温度补偿)*/ + int16_t us_tmpr_calib_bias; /*38 采样校准b(温度补偿)*/ + uint16_t aus_reserve1[12]; /*39 预留*/ +}dsp_unrecovery_param_t; + +typedef struct tag_dsp_command_t +{ + uint16_t us_start; /*51 开机*/ + uint16_t us_stop; /*52 关机*/ + uint16_t us_rst; /*53 故障复位*/ + uint16_t us_reboot; /*54 芯片复位重启*/ + uint16_t us_slf_chk; /*55 功率单元自检(调试)*/ + uint16_t us_resume_config; /*56 参数还原*/ + uint16_t us_over_temp_flag; /*57 过温限功率标志*/ + uint16_t aus_reserve2[43]; /*58 预留*/ +}dsp_command_t; + +typedef struct tag_dsp_devices_set_t +{ + uint16_t us_work_en; /*101 工作使能*/ + uint16_t us_anti_islanding_en; /*102 孤岛检测使能*/ + uint16_t us_lvrt_en; /*103 LVRT使能*/ + uint16_t us_hvrt_en; /*104 HVRT使能*/ + uint16_t us_mppt_en; /*105 MPPT使能*/ + uint16_t us_insult_rstr_en; /*106 老化测试使能*/ + uint16_t us_neg_seq_run_en; /*107 相序异常运行使能*/ + uint16_t us_reserve_param1_3; /*108 预留参数1_3*/ + uint16_t us_dc_start_TH; /*109 直流输入电压开机阈值*/ + uint16_t us_dc_stop_TH; /*110 直流输入电压关机阈值*/ + uint16_t us_pwr_output_lmt; /*111 最大输出功率限值*/ + uint16_t us_pwr_rate_lmt; /*112 功率变化率上限*/ + uint16_t us_rctv_pwr_ctr_mode; /*113 无功生成模式*/ + int16_t sh_rctv_pwr_ref; /*114 恒无功控制给定所需的无功功率*/ + int16_t sh_pf_ref; /*115 恒功率因数控制给定所需的功率因数*/ + uint16_t us_grd_volt_ref; /*116 恒电网电压控制给定目标电网电压*/ + uint16_t us_reserve_param1_5; /*117 预留参数1_5*/ + uint16_t us_reserve_param1_6; /*118 预留参数1_6*/ + uint16_t us_reserve_param1_7; /*119 预留参数1_7*/ + uint16_t us_reserve_param1_8; /*120 预留参数1_8*/ + uint16_t us_mult_peak_en; /*121 多峰扫描使能*/ + uint16_t us_mult_peak_time_step; /*122 多峰扫描时间间隔*/ + uint16_t us_pwr_freq_ctr_rate; /*123 频率-有功控制斜率*/ + uint16_t us_grd_rcvr_time; /*124 电网恢复等待时间*/ + uint16_t us_island_rspns_time_lmt; /*125 孤岛响应时间上限*/ + uint16_t us_reserve_param1_9; /*126 预留参数1_9*/ + uint16_t us_mppt_min_volt_step; /*127 MPPT最小扰动步长*/ + uint16_t us_stop_sta_bus_bal_en; /*128 待机母线均压使能*/ + uint16_t us_stop_time_lmt; /*129 关机上限时间*/ + uint16_t us_start_volt_up_lmt; /*130 开机电压上限*/ + uint16_t us_mppt_volt_up_lmt; /*131 追踪电压上限*/ + uint16_t us_low_volt_pwr_lmt_en; /*132 低压降额使能*/ + uint16_t us_high_volt_pwr_lmt_en; /*133 过压降额使能*/ + uint16_t us_single_input_mode; /*134 共用一路输入模式*/ + uint16_t us_fault_mode; /*135 故障模式*/ + uint16_t us_reserve_param1_10; /*136 预留参数1_10*/ + uint16_t us_pv1_mode; /*137 PV1连接关系*/ + uint16_t us_pv2_mode; /*138 PV2连接关系*/ + uint16_t us_pv3_mode; /*139 PV3连接关系*/ + uint16_t us_pv4_mode; /*140 PV4连接关系*/ + uint16_t us_mppt_distb_en; /*141 MPPT波动处理逻辑使能*/ + uint16_t us_act_pwr_auto_en; /*142 有功功率自动调整*/ + int16_t sh_rctv_pwr_comp; /*143 无功补偿量*/ + uint16_t us_rctv_ctr_en; /*144 无功闭环补偿使能*/ + uint16_t us_inv_cur_comp_en; /*145 逆变电流补偿使能*/ + uint16_t us_inv_cur_comp_coff; /*146 逆变电流补偿系数*/ + int16_t sh_inv_cur_delay; /*147 逆变电路延迟角度*/ + int16_t sh_cap_cur_delay; /*148 电容电流延迟角度*/ + uint16_t us_cap_cur_coff; /*149 电容电流比例系数*/ + uint16_t us_pv_cur_coff; /*150 PV电流比例校准系数*/ + uint16_t us_pv_cur_calb_en; /*151 PV输入校准标志*/ + uint16_t us_dc_pwr_comp_en; /*152 直流功率补偿*/ + uint16_t us_bst_run_mode; /*153 BOOST运行模式*/ + uint16_t us_bst1_en; /*154 第1路BOOST使能*/ + uint16_t us_bst2_en; /*155 第2路BOOST使能*/ + uint16_t us_bst3_en; /*156 第3路BOOST使能*/ + uint16_t us_bst4_en; /*157 第4路BOOST使能*/ + uint16_t us_vol_freq_protcet_en; /*158 分段保护使能*/ + uint16_t us_pv_inversed_detcet_en; /*159 PV反接检测使能*/ + uint16_t us_pv_backward_detcet_en; /*160 PV回灌检测使能*/ + uint16_t us_anti_islanding_protect_freq_en; /*161 孤岛保护兼容频率适应性*/ + uint16_t us_pwr_control_rctv_prio_en; /*162 功率控制时无功优先使能*/ + uint16_t us_bus_uv_dect_en; /*163 母线欠压检测使能*/ + uint16_t us_hlvrt_mode_flag; /*164 高低穿模式切换*/ + uint16_t us_reserve_param1_4; /*165 预留参数1_4*/ + uint16_t us_vol_rctv_pwr_ctr_mode; /*166 电压无功控制模式*/ + uint16_t us_accu_judge_mode; /*167 精度判断模式*/ + uint16_t aus_reserve3[13]; /*168 预留*/ +}dsp_devices_set_t; + +typedef struct tag_dsp_rec_ctr_param_t +{ + uint16_t us_dc_volt_kp; /*181 外环PI控制:Kp*/ + uint16_t us_dc_volt_ki; /*182 外环PI控制:Ki*/ + uint16_t us_dc_volt_lmt; /*183 外环PI控制:OutLimit*/ + uint16_t us_volt_bal_kp; /*184 均压环PI控制:Kp*/ + uint16_t us_volt_bal_ki; /*185 均压环PI控制:Ki*/ + uint16_t us_volt_bal_lmt; /*186 均压环PI控制:OutLimit*/ + uint16_t us_ac_cur_kp; /*187 电流环Kp */ + uint16_t us_act_dmp_coff; /*188 有源阻尼Kp*/ + uint16_t us_rctv_pwt_kp; /*189 无功稳压控制Kp*/ + uint16_t us_rctv_pwt_ki; /*190 无功稳压控制Ki*/ + uint16_t us_cur_q_kp; /*191 电流环q轴PI控制:Ki*/ + uint16_t us_cur_q_lmt; /*192 电流环q轴PI控制:OutLimit*/ + uint16_t us_zero_ord_cur_kp; /*193 零序电流PI控制:Kp*/ + uint16_t us_zero_ord_cur_ki; /*194 零序电流PI控制:Ki*/ + uint16_t us_zero_ord_cur_lmt; /*195 零序电流PI控制:OutLimit*/ + uint16_t us_kr_1; /*196 1次谐振增益*/ + uint16_t us_kr_2; /*197 2次谐振增益*/ + uint16_t us_kr_3; /*198 3次谐振增益*/ + uint16_t us_kr_4; /*199 4次谐振增益*/ + uint16_t us_kr_5; /*200 5次谐振增益*/ + uint16_t us_kr_6; /*201 6次谐振增益*/ + uint16_t us_kr_7; /*202 7次谐振增益*/ + uint16_t us_kr_8; /*203 8次谐振增益*/ + uint16_t us_kr_9; /*204 9次谐振增益*/ + uint16_t us_kr_10; /*205 10次谐振增益*/ + uint16_t us_kr_11; /*206 11次谐振增益*/ + uint16_t us_kr_12; /*207 12次谐振增益*/ + uint16_t us_kr_13; /*208 13次谐振增益*/ + uint16_t us_bst_volt_kp; /*209 boost电压环Kp*/ + uint16_t us_bst_volt_ki; /*210 boost电压环Ki*/ + uint16_t us_bst_cur_kp; /*211 boost电流环Kp*/ + uint16_t us_bst_cur_ki; /*212 boost电流环Ki*/ + uint16_t us_lvrt_coff; /*213 低电压穿越系数*/ + uint16_t us_hvrt_coff; /*214 高电压穿越系数*/ + uint16_t us_pwm_mode; /*215 调制方式*/ + uint16_t us_ffwd_mode; /*216 电压前馈方式*/ + uint16_t us_bus_volt_ref_dwn_lmt; /*217 母线电压参考值下限*/ + uint16_t us_zero_ctr_kp; /*218 零序分量控制kp参数*/ + uint16_t us_ffwd_coff; /*219 加权前馈的占比系数*/ + uint16_t us_pwr_lmt_mode_en; /*220 限功率模式使能*/ + uint16_t us_island_kp; /*221 孤岛保护Kp*/ + uint16_t us_CPWM_m_TH; /*222 进入CPWM调制度阈值*/ + uint16_t us_DPWM_m_TH; /*223 进入DPWM调制度阈值*/ + uint16_t us_CPWM_bus_volt_TH; /*224 进入CPWM母线电压阈值*/ + uint16_t us_DPWM_bus_volt_TH; /*225 进入DPWM母线电压阈值*/ + uint16_t us_dc_volt_ref; /*226 直流电压参考*/ + uint16_t us_ac_volt_ref; /*227 交流电压参考*/ + int16_t sh_rctv_cur_ref; /*228 无功电流参考*/ + uint16_t us_boost_cur_ref1; /*229 boost1电流参考值*/ + uint16_t us_boost_cur_ref2; /*230 boost2电流参考值*/ + uint16_t us_boost_cur_ref3; /*231 boost3电流参考值*/ + uint16_t us_boost_cur_ref4; /*232 boost4电流参考值*/ + int16_t sh_actv_cur_ref; /*233 有功电流参考*/ + uint16_t us_reactive_voltage_coff; /*234 无功调压系数*/ + uint16_t us_com_mode_cur_TH; /*235 共模电流幅值阈值*/ + uint16_t us_com_mode_cur_cpwm_TH; /*236 CPWM共模电流次数*/ + uint16_t us_com_mode_cur_dpwm_TH; /*237 DPWM共模电流次数*/ + uint16_t aus_reserve4[13]; /*238 预留*/ +}dsp_rec_ctr_param_t; + +typedef struct tag_dsp_ctr_th_param_t +{ + uint16_t us_open_crct_ov_TH; /*251 开路电压过高阈值*/ + uint16_t us_dc_input_ov_TH; /*252 直流输入过压阈值*/ + uint16_t us_bus_ov_TH; /*253 直流母线过压阈值*/ + uint16_t us_bus_uv_TH; /*254 直流母线欠压阈值*/ + uint16_t us_inv_oc_TH; /*255 逆变电流保护瞬时值*/ + uint16_t us_inv_rms_oc_TH; /*256 逆变电流保护有效值*/ + uint16_t us_inv_cbc_TH; /*257 逆变电流逐波限流封锁阈值*/ + uint16_t us_inv_cbc_unlck_TH; /*258 逆变电流逐波限流解封阈值*/ + uint16_t us_bst1_oc_TH; /*259 Boost1过流软件保护阈值*/ + uint16_t us_bst2_oc_TH; /*260 Boost2过流软件保护阈值*/ + uint16_t us_bst_3_oc_TH; /*261 Boost3过流软件保护阈值*/ + uint16_t us_bst4_oc_TH; /*262 Boost4过流软件保护阈值*/ + uint16_t us_pv_sc_volt_TH; /*263 MPPT短路电压阈值*/ + uint16_t us_pv_sc_cur_TH; /*264 MPPT短路电流阈值*/ + uint16_t us_grd_phase_loss_TH; /*265 额定电网保护电压*/ + uint16_t us_grd_ov_TH; /*266 电网过压阈值*/ + uint16_t us_grd_uv_TH; /*267 电网欠压阈值*/ + uint16_t us_grd_ov_2nd_TH; /*268 电网欠压二级保护阈值*/ + uint16_t us_grd_ov_1st_TH; /*269 电网欠压一级保护阈值*/ + uint16_t us_grd_uv_1st_TH; /*270 电网过压一级保护阈值*/ + uint16_t us_grd_uv_2nd_TH; /*271 电网过压二级保护阈值*/ + uint16_t us_ov_lmt_pwr_TH; /*272 过压降额阈值*/ + uint16_t us_freq_ov_lgc; /*273 电网频率上限*/ + uint16_t us_freq_und_lgc; /*274 电网频率下限*/ + uint16_t us_grd_und_freq_5th_TH; /*275 电网欠频五级保护阈值*/ + uint16_t us_grd_und_freq_4th_TH; /*276 电网欠频四级保护阈值*/ + uint16_t us_grd_und_freq_3rd_TH; /*277 电网欠频三级保护阈值*/ + uint16_t us_grd_und_freq_2nd_TH; /*278 电网欠频二级保护阈值*/ + uint16_t us_grd_und_freq_1st_TH; /*279 电网欠频一级保护阈值*/ + uint16_t us_grd_over_freq_1st_TH; /*280 电网过频一级保护阈值*/ + uint16_t us_grd_over_freq_2nd_TH; /*281 电网过频二级保护阈值*/ + uint16_t us_grd_over_freq_3rd_TH; /*282 电网过频三级保护阈值*/ + uint16_t us_ov_freq_lmt_pwr_TH; /*283 过频降额阈值*/ + uint16_t us_cap_oc_TH; /*284 滤波电容过流保护阈值*/ + uint16_t us_cap_ov_TH; /*285 滤波电容过压保护阈值*/ + uint16_t us_inslt_rstr_TH; /*286 绝缘阻抗检测阈值*/ + uint16_t us_grd_flt_dis_inner_flt_en; /*287 电网故障屏蔽内部故障*/ + uint16_t us_act_island_dtct_TH; /*288 主动反孤岛阈值*/ + uint16_t us_act_island_dtct_var_TH; /*289 反孤岛无功电流余量*/ + uint16_t us_pv_line_dtct_en; /*290 PV接线检测(未启用)*/ + uint16_t us_pv_inversed_input_vol_TH; /*291 PV反接电压阈值*/ + uint16_t us_pv_inversed_input_curr_TH; /*292 PV反接电感电流阈值*/ + uint16_t us_pv_backward_input_vol_TH; /*293 PV回灌电压阈值*/ + uint16_t us_pv_branch_input_curr_TH; /*294 支路输入电流阈值*/ + int16_t us_pv_branch_input_curr_TH1; /*295 支路输入电流阈值1*/ + uint16_t us_pv_branch_input_curr_TH2; /*296 支路输入电流阈值2*/ + uint16_t us_eco_warning_1; /*297 节能告警阈值1*/ + uint16_t us_eco_warning_2; /*298 节能告警阈值2*/ + uint16_t us_cavity_overtemp_TH; /*299 腔体过温阈值*/ + uint16_t us_cavity_overtemp_TH2; /*300 腔体2过温阈值*/ + uint16_t us_collfin_overtemp_TH; /*301 散热片过温阈值*/ + uint16_t us_q_u_low_vol_th; /*302 Q-U低压系数阈值*/ + uint16_t us_q_u_high_vol_th; /*303 Q-U高压系数阈值*/ + uint16_t us_lvrt_border_th; /*304 低穿穿越边界*/ + uint16_t us_hvrt_border_th; /*305 高穿穿越边界*/ + uint16_t us_over_cap_current_time_ms; /*306 滤波电容过流保护时间*/ + uint16_t us_over_rms_current_time_ms; /*307 逆变过流保护时间*/ + uint16_t us_grid_over_volt_L0_time_ms; /*308 电网过压L0保护时间*/ + uint16_t us_grid_over_volt_L1_time_ms; /*309 电网过压L1保护时间*/ + uint16_t us_grid_over_volt_L2_time_ms; /*310 电网过压L2保护时间*/ + uint16_t us_grid_below_volt_L0_time_ms; /*311 电网欠压L0保护时间*/ + uint16_t us_grid_below_volt_L1_time_ms; /*312 电网欠压L1保护时间*/ + uint16_t us_grid_below_volt_L2_time_ms; /*313 电网欠压L2保护时间*/ + uint16_t us_grid_over_freq_L0_time_ms; /*314 电网过频L0保护时间*/ + uint16_t us_grid_over_freq_L1_time_s; /*315 电网过频L1保护时间*/ + uint16_t us_grid_over_freq_L2_time_s; /*316 电网过频L2保护时间*/ + uint16_t us_grid_over_freq_L3_time_ms; /*317 电网过频L3保护时间*/ + uint16_t us_grid_below_freq_L0_time_ms; /*318 电网欠频L0保护时间*/ + uint16_t us_grid_below_freq_L1_time_s; /*319 电网欠频L1保护时间*/ + uint16_t us_grid_below_freq_L2_time_s; /*320 电网欠频L2保护时间*/ + uint16_t us_grid_below_freq_L3_time_s; /*321 电网欠频L3保护时间*/ + uint16_t us_grid_below_freq_L4_time_s; /*322 电网欠频L4保护时间*/ + uint16_t us_grid_below_freq_L5_time_ms; /*323 电网欠频L5保护时间*/ + uint16_t us_over_bus_volt_time_ms; /*324 母线欠压保护时间*/ + uint16_t aus_reserve5[6]; /*325 预留*/ +}dsp_ctr_th_param_t; + +typedef struct tag_dsp_ctr_limit_param_t +{ + uint16_t us_rt_rctv_cur_lmt; /*331 高低穿无功电流限幅值*/ + uint16_t us_inv_cur_lmt; /*332 逆变总电流限幅值*/ + uint16_t us_inv_act_cur_lmt; /*333 逆变有功电流限幅值*/ + uint16_t us_inv_rctv_cur_lmt; /*334 逆变无功电流限幅值*/ + uint16_t us_bst1_cur_lmt; /*335 Boost1单路电流限幅值*/ + uint16_t us_bst2_cur_lmt; /*336 Boost2单路电流限幅值*/ + uint16_t us_bst3_cur_lmt; /*337 Boost3单路电流限幅值*/ + uint16_t us_bst4_cur_lmt; /*338 Boost4单路电流限幅值*/ + uint16_t us_5th_cur_lmt; /*339 5次谐波电流限幅值*/ + uint16_t us_7th_cur_lmt; /*340 7次谐波电流限幅值*/ + uint16_t us_11th_cur_lmt; /*341 11次谐波电流限幅值*/ + uint16_t us_13th_cur_lmt; /*342 13次谐波电流限幅值*/ + uint16_t us_17th_cur_lmt; /*343 17次谐波电流限幅值*/ + uint16_t us_19th_cur_lmt; /*344 19次谐波电流限幅值*/ + uint16_t us_2th_cur_lmt; /*345 2次谐波电流限幅值*/ + uint16_t us_4th_cur_lmt; /*346 4次谐波电流限幅值*/ + uint16_t us_6th_cur_lmt; /*347 6次谐波电流限幅值*/ + uint16_t us_8th_cur_lmt; /*348 8次谐波电流限幅值*/ + uint16_t us_10th_cur_lmt; /*349 10次谐波电流限幅值*/ + uint16_t us_14th_cur_lmt; /*350 14次谐波电流限幅值*/ + uint16_t us_16th_cur_lmt; /*351 16次谐波电流限幅值*/ + uint16_t us_20th_cur_lmt; /*352 20次谐波电流限幅值*/ + uint16_t us_DPWM_ap_TH; /*353 进入DPWM视在功率阈值*/ + uint16_t us_CPWM_ap_TH; /*354 进入CPWM视在功率阈值*/ + uint16_t us_lead_comp_kp; /*355 零序超前补偿kp*/ + uint16_t us_collfin_overtemp_lmt_th; /*356 散热片过温降功率阈值*/ + uint16_t us_cavity_overtemp_lmt_th; /*357 腔体过温降功率阈值*/ + uint16_t us_cavity2_overtemp_lmt_th; /*358 腔体2过温降功率阈值*/ + uint16_t us_overtemp_pwr_down_th; /*359 过温降额功率下限*/ + uint16_t us_fan_fault_pwr_down_th; /*360 风扇故障降额功率下限*/ + uint16_t us_overtemp_pwr_up_th; /*361 过温降额功率上限*/ + uint16_t us_overtemp_pwr_change_down_th; /*362 过温降额功率变化率上限*/ + uint16_t aus_reserve6[18]; /*363 预留*/ +}dsp_ctr_limit_param_t; + +typedef struct tag_dsp_debug_test_control_t +{ + uint16_t us_reserve_param5_0; /*381 预留参数5_0*/ + uint16_t us_reserve_param5_1; /*382 预留参数5_1*/ + uint16_t us_reserve_param5_2; /*383 预留参数5_2*/ + uint16_t us_reserve_param5_3; /*384 预留参数5_3*/ + uint16_t us_systm_sta; /*385 整机状态*/ + uint16_t us_inv_sta; /*386 逆变状态*/ + uint16_t us_mppt1_state; /*387 MPPT1状态(debug)*/ + uint16_t us_mppt2_state; /*388 MPPT2状态(debug)*/ + uint16_t us_mppt3_state; /*389 MPPT3状态(debug)*/ + uint16_t us_mppt4_state; /*390 MPPT4状态(debug)*/ + uint16_t us_low_pwr_flg; /*391 功率不足标志*/ + uint16_t us_mppt_manual_reference; /*392 MPPT手动参考标志位*/ + uint16_t us_mppt_manual_reference_value; /*393 MPPT手动参考值*/ + uint16_t us_volt_bal_th; /*394 母线均压开启阈值*/ + uint16_t us_reserve_param5_4; /*395 预留参数5_4*/ + uint16_t us_reserve_param5_5; /*396 预留参数5_5*/ + uint16_t aus_reserve7[23]; /*397 预留*/ +}dsp_debug_test_control_t; + +typedef struct tag_dsp_calibrate_t +{ + uint16_t us_auto_calibrate_en; /*420 自动化校准使能*/ + uint16_t us_auto_calibrate_state; /*421 自动化校准状态*/ + uint16_t us_auto_calibrate_cmd; /*422 自动化校准指令*/ + uint16_t us_auto_calibrate_result; /*423 自动化校准结果*/ + uint16_t us_auto_calibrate_refresh_flag; /*424 自动化校准刷新标志*/ + uint16_t us_reserve_param6_6; /*425 预留参数6_6*/ + uint16_t us_reserve_param6_7; /*426 预留参数6_7*/ + uint16_t us_reserve_param6_8; /*427 预留参数6_8*/ + uint16_t us_reserve_param6_9; /*428 预留参数6_9*/ + uint16_t us_reserve_param6_10; /*429 预留参数6_10*/ + uint16_t us_reserve_param6_11; /*430 预留参数6_11*/ + uint16_t us_reserve_param6_12; /*431 预留参数6_12*/ + uint16_t us_reserve_param6_13; /*432 预留参数6_13*/ + uint16_t us_reserve_param6_14; /*433 预留参数6_14*/ + uint16_t us_reserve_param6_15; /*434 预留参数6_15*/ + uint16_t us_reserve_param6_16; /*435 预留参数6_16*/ + uint16_t us_reserve_param6_17; /*436 预留参数6_17*/ + uint16_t us_reserve_param6_18; /*437 预留参数6_18*/ + uint16_t us_reserve_param6_19; /*438 预留参数6_19*/ + uint16_t us_reserve_param6_20; /*439 预留参数6_20*/ + uint16_t us_reserve_param6_21; /*440 预留参数6_21*/ + uint16_t us_reserve_param6_22; /*441 预留参数6_22*/ + uint16_t us_reserve_param6_23; /*442 预留参数6_23*/ + uint16_t us_reserve_param6_24; /*443 预留参数6_24*/ + uint16_t us_reserve_param6_25; /*444 预留参数6_25*/ + uint16_t us_reserve_param6_26; /*445 预留参数6_26*/ + uint16_t us_reserve_param6_27; /*446 预留参数6_27*/ + uint16_t us_reserve_param6_28; /*447 预留参数6_28*/ + uint16_t us_reserve_param6_29; /*448 预留参数6_29*/ + uint16_t us_reserve_param6_30; /*449 预留参数6_30*/ + uint16_t us_reserve_param6_31; /*450 预留参数6_31*/ + uint16_t us_reserve_param6_32; /*451 预留参数6_32*/ + uint16_t us_reserve_param6_33; /*452 预留参数6_33*/ + uint16_t us_reserve_param6_34; /*453 预留参数6_34*/ + uint16_t us_reserve_param6_35; /*454 预留参数6_35*/ + uint16_t us_reserve_param6_36; /*455 预留参数6_36*/ + uint16_t us_reserve_param6_37; /*456 预留参数6_37*/ + uint16_t aus_reserve8[43]; /*457 预留*/ +}dsp_calibrate_t; + +typedef struct tag_dsp_data_file_t +{ + uint16_t us_dev_addr; /*500 本地通信地址(模块号)*/ + uint16_t us_device_rated_actv_pwr; /*501 装置额定有功功率(设备容量)*/ + uint16_t us_device_rated_rctv_pwr; /*502 装置额定无功功率*/ + uint16_t aus_app_ver[2]; /*503 DSP主控版本号*/ + uint16_t aus_boot_ver[2]; /*505 DSP底层版本号*/ + uint16_t aus_prog_code[3]; /*507 DSP主控程序组件号*/ + uint16_t us_dev_type; /*510 设备类型*/ + uint16_t us_prot_ver; /*511 DSP使用地址表协议版本号*/ + uint16_t us_cfg_crc_h; /*512 DSP配置参数CRC高16位*/ + uint16_t us_cfg_crc_l; /*513 DSP配置参数CRC低16位*/ + uint16_t us_device_phase; /*514 相数*/ + uint16_t aus_app_ver_new[4]; /*515 DSP主控版本号新格式*/ + uint16_t aus_boot_ver_new[4]; /*519 DSP底层版本号新格式*/ + uint16_t us_mppt_number; /*523 MPPT数量*/ + uint16_t aus_reserve9[26]; /*524 预留*/ +}dsp_data_file_t; + +typedef struct tag_dsp_data_hardware_t +{ + uint16_t us_relay_a_stat; /*550 继电器A状态*/ + uint16_t us_relay_b_stat; /*551 继电器B状态*/ + uint16_t us_relay_c_stat; /*552 继电器C状态*/ + uint16_t aus_reserve10[7]; /*553 预留*/ +}dsp_data_hardware_t; + +typedef struct tag_dsp_data_state_t +{ + uint16_t us_fault1_1; /*560 一般故障1*/ + uint16_t us_fault1_2; /*561 一般故障2*/ + uint16_t us_fault1_3; /*562 一般故障3*/ + uint16_t us_fault1_4; /*563 一般故障4*/ + uint16_t us_fault2_1; /*564 严重故障1*/ + uint16_t us_fault2_2; /*565 严重故障2*/ + uint16_t us_fault2_3; /*566 严重故障3*/ + uint16_t us_fault2_4; /*567 严重故障4*/ + uint16_t us_waring_1; /*568 告警事件1*/ + uint16_t us_waring_2; /*569 告警事件2*/ + uint16_t us_slf_chk_1; /*570 自检事件1*/ + uint16_t us_slf_chk_2; /*571 自检事件2*/ + uint16_t aus_reserve11[18]; /*572 预留*/ + uint16_t us_run_mode_sta; /*590 DSP运行状态*/ + uint16_t us_phase_sta; /*591 电压相序显示*/ + uint16_t us_mppt1_sta; /*592 MPPT1状态*/ + uint16_t us_mppt2_sta; /*593 MPPT2状态*/ + uint16_t us_dev_sta; /*594 显示运行模式*/ + uint16_t us_fault_label; /*595 故障状态标志*/ + uint16_t us_lgc_label; /*596 逻辑状态标签*/ + uint16_t us_echo_label; /*597 节能状态标签*/ + uint16_t us_pll_label; /*598 锁相状态标签*/ + uint16_t us_aux_label; /*599 辅助状态标签*/ + uint16_t us_ov_tem_half_pwr_label; /*600 过温半载运行标签*/ + uint16_t us_dc_led_state_display; /*601 DSP直流灯状态指示*/ + uint16_t us_ac_led_state_display; /*602 DSP交流灯状态指示*/ + uint16_t us_device_modulation_state; /*603 设备调制状态*/ + uint16_t us_mppt3_sta; /*604 MPPT3状态*/ + uint16_t us_mppt4_sta; /*605 MPPT4状态*/ + uint16_t us_over_temp_limit_pwr; /*606 过温限功率状态*/ + uint16_t aus_reserve12[13]; /*607 预留*/ +}dsp_data_state_t; + +typedef struct tag_dsp_data_collect_t +{ + uint16_t us_grid_freq; /*620 电网频率*/ + int16_t sh_dc_input_avg_volt; /*621 总母线电压avg*/ + int16_t sh_dc_up_side_avg_volt; /*622 上母线电压avg*/ + int16_t sh_dc_low_side_avg_volt; /*623 下母线电压_avg*/ + uint16_t us_grid_a_rms_volt; /*624 电网电压A_RMS*/ + uint16_t us_grid_b_rms_volt; /*625 电网电压B_RMS*/ + uint16_t us_grid_c_rms_volt; /*626 电网电压C_RMS*/ + uint16_t us_cap_a_rms_volt; /*627 逆变阻尼电压A_RMS*/ + uint16_t us_cap_b_rms_volt; /*628 逆变阻尼电压B_RMS*/ + uint16_t us_cap_c_rms_volt; /*629 逆变阻尼电压C_RMS*/ + uint16_t us_inv_a_rms_cur; /*630 逆变电流A_RMS*/ + uint16_t us_inv_b_rms_cur; /*631 逆变电流B_RMS*/ + uint16_t us_inv_c_rms_cur; /*632 逆变电流C_RMS*/ + uint16_t us_cap_a_rms_cur; /*633 LCL电容电流A_RMS*/ + uint16_t us_cap_b_rms_cur; /*634 LCL电容电流B_RMS*/ + uint16_t us_cap_c_rms_cur; /*635 LCL电容电流C_RMS*/ + uint16_t us_reserve_data2_7; /*636 预留数据2_7*/ + uint16_t us_reserve_data2_8; /*637 预留数据2_8*/ + uint16_t us_reserve_data2_9; /*638 预留数据2_9*/ + uint16_t us_boost_pv_volt_1; /*639 BOOST输入电压1路*/ + uint16_t us_boost_pv_volt_2; /*640 BOOST输入电压2路*/ + uint16_t us_boost_pv_volt_3; /*641 BOOST输入电压3路*/ + uint16_t us_boost_pv_volt_4; /*642 BOOST输入电压4路*/ + int16_t sh_boost1_pv_cur_1; /*643 1路BOOST组串电流1*/ + int16_t sh_boost2_pv_cur_1; /*644 2路BOOST组串电流1*/ + int16_t sh_boost3_pv_cur_1; /*645 3路BOOST组串电流1*/ + int16_t sh_boost4_pv_cur_1; /*646 4路BOOST组串电流1*/ + int16_t sh_boost_induc_cur_1; /*647 BOOST电感电流1路*/ + int16_t sh_boost_induc_cur_2; /*648 BOOST电感电流2路*/ + int16_t sh_boost_induc_cur_3; /*649 BOOST电感电流3路*/ + int16_t sh_boost_induc_cur_4; /*650 BOOST电感电流4路*/ + uint16_t us_device_curr_a; /*651 设备电流A*/ + uint16_t us_device_curr_b; /*652 设备电流B*/ + uint16_t us_device_curr_c; /*653 设备电流C*/ + int16_t sh_boost1_pv_cur_2; /*654 1路BOOST组串电流2*/ + int16_t sh_boost2_pv_cur_2; /*655 2路BOOST组串电流2*/ + int16_t sh_boost3_pv_cur_2; /*656 3路BOOST组串电流2*/ + int16_t sh_boost4_pv_cur_2; /*657 4路BOOST组串电流2*/ + uint16_t aus_reserve13[18]; /*658 预留*/ + uint16_t us_reserve_data2_1; /*676 预留数据2_1*/ + uint16_t us_reserve_data2_2; /*677 预留数据2_2*/ + uint16_t us_reserve_data2_3; /*678 预留数据2_3*/ + uint16_t us_reserve_data2_4; /*679 预留数据2_4*/ + uint16_t us_reserve_data2_5; /*680 预留数据2_5*/ + uint16_t us_reserve_data2_6; /*681 预留数据2_6*/ + uint16_t aus_reserve14[8]; /*682 预留*/ +}dsp_data_collect_t; + +typedef struct tag_dsp_data_power_t +{ + int16_t sh_dev_a_actv_pwr; /*690 装置侧有功功率A*/ + int16_t sh_dev_b_actv_pwr; /*691 装置侧有功功率B*/ + int16_t sh_dev_c_actv_pwr; /*692 装置侧有功功率C*/ + int16_t sh_dev_actv_pwr; /*693 装置侧有功功率总*/ + int16_t sh_dev_a_rctv_pwr; /*694 装置侧无功功率A*/ + int16_t sh_dev_b_rctv_pwr; /*695 装置侧无功功率B*/ + int16_t sh_dev_c_rctv_pwr; /*696 装置侧无功功率C*/ + int16_t sh_dev_rctv_pwr; /*697 装置侧无功功率总*/ + uint16_t us_dev_a_aprt_pwr; /*698 装置侧视在功率A*/ + uint16_t us_dev_b_aprt_pwr; /*699 装置侧视在功率B*/ + uint16_t us_dev_c_aprt_pwr; /*700 装置侧视在功率C*/ + uint16_t us_dev_aprt_pwr; /*701 装置侧视在功率总*/ + uint16_t us_dev_a_PF; /*702 装置侧功率因数A*/ + uint16_t us_dev_b_PF; /*703 装置侧功率因数B*/ + uint16_t us_dev_c_PF; /*704 装置侧功率因数C*/ + uint16_t us_dev_PF; /*705 装置侧功率因数总*/ + int16_t sh_grid_a_actv_pwr; /*706 网侧有功功率A*/ + int16_t sh_grid_b_actv_pwr; /*707 网侧有功功率B*/ + int16_t sh_grid_c_actv_pwr; /*708 网侧有功功率C*/ + int16_t sh_grid_actv_pwr; /*709 网侧有功功率总*/ + int16_t sh_grid_a_rctv_pwr; /*710 网侧无功功率A*/ + int16_t sh_grid_b_rctv_pwr; /*711 网侧无功功率B*/ + int16_t sh_grid_c_rctv_pwr; /*712 网侧无功功率C*/ + int16_t sh_grid_rctv_pwr; /*713 网侧无功功率总*/ + uint16_t us_grid_a_aprt_pwr; /*714 网侧视在功率A*/ + uint16_t us_grid_b_aprt_pwr; /*715 网侧视在功率B*/ + uint16_t us_grid_c_aprt_pwr; /*716 网侧视在功率C*/ + uint16_t us_grid_aprt_pwr; /*717 网侧视在功率总*/ + int16_t sh_grid_a_PF; /*718 网侧功率因数A*/ + int16_t sh_grid_b_PF; /*719 网侧功率因数B*/ + int16_t sh_grid_c_PF; /*720 网侧功率因数C*/ + int16_t sh_grid_PF; /*721 网侧功率因数总*/ + int16_t sh_load_a_actv_pwr; /*722 负载有功功率A*/ + int16_t sh_load_b_actv_pwr; /*723 负载有功功率B*/ + int16_t sh_load_c_actv_pwr; /*724 负载有功功率C*/ + int16_t sh_load_actv_pwr; /*725 负载有功功率总*/ + int16_t sh_load_a_rctv_pwr; /*726 负载无功功率A*/ + int16_t sh_load_b_rctv_pwr; /*727 负载无功功率B*/ + int16_t sh_load_c_rctv_pwr; /*728 负载无功功率C*/ + int16_t sh_load_rctv_pwr; /*729 负载无功功率总*/ + uint16_t us_load_a_aprt_pwr; /*730 负载视在功率A*/ + uint16_t us_load_b_aprt_pwr; /*731 负载视在功率B*/ + uint16_t us_load_c_aprt_pwr; /*732 负载视在功率C*/ + uint16_t us_load_aprt_pwr; /*733 负载视在功率总*/ + int16_t sh_load_a_PF; /*734 负载功率因数A*/ + int16_t sh_load_b_PF; /*735 负载功率因数B*/ + int16_t sh_load_c_PF; /*736 负载功率因数C*/ + int16_t sh_load_PF; /*737 负载功率因数总*/ + int16_t us_boost_pwr_1; /*738 BOOST功率1路*/ + int16_t us_boost_pwr_2; /*739 BOOST功率2路*/ + int16_t us_boost_pwr_3; /*740 BOOST功率3路*/ + int16_t us_boost_pwr_4; /*741 BOOST功率4路*/ + int16_t us_boost_pwr; /*742 BOOST功率总*/ + uint16_t aus_reserve15[27]; /*743 预留*/ +}dsp_data_power_t; + +typedef struct tag_dsp_data_unbalance_t +{ + uint16_t us_grid_cur_unb; /*770 网侧电流不平衡度*/ + uint16_t us_grid_cur_unb2; /*771 网侧电流负序不平衡度*/ + uint16_t us_grid_cur_unb0; /*772 网侧电流零序不平衡度*/ + uint16_t us_load_cur_unb; /*773 负载电流不平衡度*/ + uint16_t us_load_cur_unb2; /*774 负载电流负序不平衡度*/ + uint16_t us_load_cur_unb0; /*775 负载电流零序不平衡度*/ + uint16_t us_grid_volt_unb; /*776 电网电压不平衡度*/ + uint16_t us_grid_volt_unb2; /*777 电网电压负序不平衡度*/ + uint16_t us_grid_volt_unb0; /*778 电网电压零序不平衡度*/ + uint16_t aus_reserve16[49]; /*779 预留*/ +}dsp_data_unbalance_t; + + +typedef struct tag_dsp_config_param_t +{ + dsp_devices_set_t st_dsp_devices_set; + dsp_rec_ctr_param_t st_dsp_rec_ctr_param; + dsp_ctr_th_param_t st_dsp_ctr_th_param; + dsp_ctr_limit_param_t st_dsp_ctr_limit_param; + dsp_debug_test_control_t st_dsp_debug_test_control; + dsp_calibrate_t st_dsp_calibrate; +}dsp_config_param_t; + +typedef struct tag_dsp_monitor_params_t +{ + dsp_data_file_t st_dsp_data_file; + dsp_data_hardware_t st_dsp_data_hardware; + dsp_data_state_t st_dsp_data_state; + dsp_data_collect_t st_dsp_data_collect; + dsp_data_power_t st_dsp_data_power; + dsp_data_unbalance_t st_dsp_data_unbalance; +}dsp_monitor_params_t; + +typedef struct tag_communication_params_t +{ + dsp_unrecovery_param_t st_dsp_unrecovery_param; + dsp_command_t st_dsp_cmd; + dsp_config_param_t st_config_param; + dsp_monitor_params_t st_monitor_params; +}communication_params_t; + +/*参数地址宏定义*/ +//dsp_unrecovery_param_t +#define DSP_GRD_A_VOLT_CALIB_COFF_PARAM_ADDR 0 /*A相采样校准a(网侧交流电压采样)*/ +#define DSP_GRD_A_VOLT_CALIB_BIAS_PARAM_ADDR 1 /*A相采样校准b(网侧交流电压采样)*/ +#define DSP_GRD_B_VOLT_CALIB_COFF_PARAM_ADDR 2 /*B相采样校准a(网侧交流电压采样)*/ +#define DSP_GRD_B_VOLT_CALIB_BIAS_PARAM_ADDR 3 /*B相采样校准b(网侧交流电压采样)*/ +#define DSP_GRD_C_VOLT_CALIB_COFF_PARAM_ADDR 4 /*C相采样校准a(网侧交流电压采样)*/ +#define DSP_GRD_C_VOLT_CALIB_BIAS_PARAM_ADDR 5 /*C相采样校准b(网侧交流电压采样)*/ +#define DSP_INV_A_CUR_CALIB_COFF_PARAM_ADDR 6 /*A相采样校准a(逆变侧电感电流)*/ +#define DSP_INV_A_CUR_CALIB_BIAS_PARAM_ADDR 7 /*A相采样校准b(逆变侧电感电流)*/ +#define DSP_INV_A_CUR_PHASE_OFFSET_PARAM_ADDR 8 /*A相逆变电流相位偏移量*/ +#define DSP_INV_B_CUR_CALIB_COFF_PARAM_ADDR 9 /*B相采样校准a(逆变侧电感电流)*/ +#define DSP_INV_B_CUR_CALIB_BIAS_PARAM_ADDR 10 /*B相采样校准b(逆变侧电感电流)*/ +#define DSP_INV_B_CUR_PHASE_OFFSET_PARAM_ADDR 11 /*B相逆变电流相位偏移量*/ +#define DSP_INV_C_CUR_CALIB_COFF_PARAM_ADDR 12 /*C相采样校准a(逆变侧电感电流)*/ +#define DSP_INV_C_CUR_CALIB_BIAS_PARAM_ADDR 13 /*C相采样校准b(逆变侧电感电流)*/ +#define DSP_INV_C_CUR_PHASE_OFFSET_PARAM_ADDR 14 /*C相逆变电流相位偏移量*/ +#define DSP_CAP_A_CUR_CALIB_COFF_PARAM_ADDR 15 /*A相LCL电容电流系数*/ +#define DSP_CAP_A_CUR_PHASE_OFFSET_PARAM_ADDR 16 /*A相LCL电容电流相位偏移量*/ +#define DSP_CAP_B_CUR_CALIB_COFF_PARAM_ADDR 17 /*B相LCL电容电流系数*/ +#define DSP_CAP_B_CUR_PHASE_OFFSET_PARAM_ADDR 18 /*B相LCL电容电流相位偏移量*/ +#define DSP_CAP_C_CUR_CALIB_COFF_PARAM_ADDR 19 /*C相LCL电容电流系数*/ +#define DSP_CAP_C_CUR_PHASE_OFFSET_PARAM_ADDR 20 /*C相LCL电容电流相位偏移量*/ +#define DSP_BST1_CUR_CALIB_COFF_PARAM_ADDR 21 /*采样校准a(BOOST1电感电流)*/ +#define DSP_BST1_CUR_CALIB_BIAS_PARAM_ADDR 22 /*采样校准b(BOOST1电感电流)*/ +#define DSP_BST2_CUR_CALIB_COFF_PARAM_ADDR 23 /*采样校准a(BOOST2电感电流)*/ +#define DSP_BST2_CUR_CALIB_BIAS_PARAM_ADDR 24 /*采样校准b(BOOST2电感电流)*/ +#define DSP_BST3_CUR_CALIB_COFF_PARAM_ADDR 25 /*采样校准a(BOOST3电感电流)*/ +#define DSP_BST3_CUR_CALIB_BIAS_PARAM_ADDR 26 /*采样校准b(BOOST3电感电流)*/ +#define DSP_BST4_CUR_CALIB_COFF_PARAM_ADDR 27 /*采样校准a(BOOST4电感电流)*/ +#define DSP_BST4_CUR_CALIB_BIAS_PARAM_ADDR 28 /*采样校准b(BOOST4电感电流)*/ +#define DSP_PV1_VOLT_CALIB_COFF_PARAM_ADDR 29 /*采样校准a支路1(输入电压)*/ +#define DSP_PV1_VOLT_CALIB_BIAS_PARAM_ADDR 30 /*采样校准b支路1(输入电压)*/ +#define DSP_PV2_VOLT_CALIB_COFF_PARAM_ADDR 31 /*采样校准a支路2(输入电压)*/ +#define DSP_PV2_VOLT_CALIB_BIAS_PARAM_ADDR 32 /*采样校准b支路2(输入电压)*/ +#define DSP_PV3_VOLT_CALIB_COFF_PARAM_ADDR 33 /*采样校准a支路3(输入电压)*/ +#define DSP_PV3_VOLT_CALIB_BIAS_PARAM_ADDR 34 /*采样校准b支路3(输入电压)*/ +#define DSP_PV4_VOLT_CALIB_COFF_PARAM_ADDR 35 /*采样校准a支路4(输入电压)*/ +#define DSP_PV4_VOLT_CALIB_BIAS_PARAM_ADDR 36 /*采样校准b支路4(输入电压)*/ +#define DSP_TMPR_CALIB_COFF_PARAM_ADDR 37 /*采样校准a(温度补偿)*/ +#define DSP_TMPR_CALIB_BIAS_PARAM_ADDR 38 /*采样校准b(温度补偿)*/ +//dsp_command_t +#define DSP_START_PARAM_ADDR 51 /*开机*/ +#define DSP_STOP_PARAM_ADDR 52 /*关机*/ +#define DSP_RST_PARAM_ADDR 53 /*故障复位*/ +#define DSP_REBOOT_PARAM_ADDR 54 /*芯片复位重启*/ +#define DSP_SLF_CHK_PARAM_ADDR 55 /*功率单元自检(调试)*/ +#define DSP_RESUME_CONFIG_PARAM_ADDR 56 /*参数还原*/ +#define DSP_OVER_TEMP_FLAG_PARAM_ADDR 57 /*过温限功率标志*/ +//dsp_devices_set_t +#define DSP_WORK_EN_PARAM_ADDR 101 /*工作使能*/ +#define DSP_ANTI_ISLANDING_EN_PARAM_ADDR 102 /*孤岛检测使能*/ +#define DSP_LVRT_EN_PARAM_ADDR 103 /*LVRT使能*/ +#define DSP_HVRT_EN_PARAM_ADDR 104 /*HVRT使能*/ +#define DSP_MPPT_EN_PARAM_ADDR 105 /*MPPT使能*/ +#define DSP_INSULT_RSTR_EN_PARAM_ADDR 106 /*老化测试使能*/ +#define DSP_NEG_SEQ_RUN_EN_PARAM_ADDR 107 /*相序异常运行使能*/ +#define DSP_RESERVE_PARAM1_3_PARAM_ADDR 108 /*预留参数1_3*/ +#define DSP_DC_START_TH_PARAM_ADDR 109 /*直流输入电压开机阈值*/ +#define DSP_DC_STOP_TH_PARAM_ADDR 110 /*直流输入电压关机阈值*/ +#define DSP_PWR_OUTPUT_LMT_PARAM_ADDR 111 /*最大输出功率限值*/ +#define DSP_PWR_RATE_LMT_PARAM_ADDR 112 /*功率变化率上限*/ +#define DSP_RCTV_PWR_CTR_MODE_PARAM_ADDR 113 /*无功生成模式*/ +#define DSP_RCTV_PWR_REF_PARAM_ADDR 114 /*恒无功控制给定所需的无功功率*/ +#define DSP_PF_REF_PARAM_ADDR 115 /*恒功率因数控制给定所需的功率因数*/ +#define DSP_GRD_VOLT_REF_PARAM_ADDR 116 /*恒电网电压控制给定目标电网电压*/ +#define DSP_RESERVE_PARAM1_5_PARAM_ADDR 117 /*预留参数1_5*/ +#define DSP_RESERVE_PARAM1_6_PARAM_ADDR 118 /*预留参数1_6*/ +#define DSP_RESERVE_PARAM1_7_PARAM_ADDR 119 /*预留参数1_7*/ +#define DSP_RESERVE_PARAM1_8_PARAM_ADDR 120 /*预留参数1_8*/ +#define DSP_MULT_PEAK_EN_PARAM_ADDR 121 /*多峰扫描使能*/ +#define DSP_MULT_PEAK_TIME_STEP_PARAM_ADDR 122 /*多峰扫描时间间隔*/ +#define DSP_PWR_FREQ_CTR_RATE_PARAM_ADDR 123 /*频率-有功控制斜率*/ +#define DSP_GRD_RCVR_TIME_PARAM_ADDR 124 /*电网恢复等待时间*/ +#define DSP_ISLAND_RSPNS_TIME_LMT_PARAM_ADDR 125 /*孤岛响应时间上限*/ +#define DSP_RESERVE_PARAM1_9_PARAM_ADDR 126 /*预留参数1_9*/ +#define DSP_MPPT_MIN_VOLT_STEP_PARAM_ADDR 127 /*MPPT最小扰动步长*/ +#define DSP_STOP_STA_BUS_BAL_EN_PARAM_ADDR 128 /*待机母线均压使能*/ +#define DSP_STOP_TIME_LMT_PARAM_ADDR 129 /*关机上限时间*/ +#define DSP_START_VOLT_UP_LMT_PARAM_ADDR 130 /*开机电压上限*/ +#define DSP_MPPT_VOLT_UP_LMT_PARAM_ADDR 131 /*追踪电压上限*/ +#define DSP_LOW_VOLT_PWR_LMT_EN_PARAM_ADDR 132 /*低压降额使能*/ +#define DSP_HIGH_VOLT_PWR_LMT_EN_PARAM_ADDR 133 /*过压降额使能*/ +#define DSP_SINGLE_INPUT_MODE_PARAM_ADDR 134 /*共用一路输入模式*/ +#define DSP_FAULT_MODE_PARAM_ADDR 135 /*故障模式*/ +#define DSP_RESERVE_PARAM1_10_PARAM_ADDR 136 /*预留参数1_10*/ +#define DSP_PV1_MODE_PARAM_ADDR 137 /*PV1连接关系*/ +#define DSP_PV2_MODE_PARAM_ADDR 138 /*PV2连接关系*/ +#define DSP_PV3_MODE_PARAM_ADDR 139 /*PV3连接关系*/ +#define DSP_PV4_MODE_PARAM_ADDR 140 /*PV4连接关系*/ +#define DSP_MPPT_DISTB_EN_PARAM_ADDR 141 /*MPPT波动处理逻辑使能*/ +#define DSP_ACT_PWR_AUTO_EN_PARAM_ADDR 142 /*有功功率自动调整*/ +#define DSP_RCTV_PWR_COMP_PARAM_ADDR 143 /*无功补偿量*/ +#define DSP_RCTV_CTR_EN_PARAM_ADDR 144 /*无功闭环补偿使能*/ +#define DSP_INV_CUR_COMP_EN_PARAM_ADDR 145 /*逆变电流补偿使能*/ +#define DSP_INV_CUR_COMP_COFF_PARAM_ADDR 146 /*逆变电流补偿系数*/ +#define DSP_INV_CUR_DELAY_PARAM_ADDR 147 /*逆变电路延迟角度*/ +#define DSP_CAP_CUR_DELAY_PARAM_ADDR 148 /*电容电流延迟角度*/ +#define DSP_CAP_CUR_COFF_PARAM_ADDR 149 /*电容电流比例系数*/ +#define DSP_PV_CUR_COFF_PARAM_ADDR 150 /*PV电流比例校准系数*/ +#define DSP_PV_CUR_CALB_EN_PARAM_ADDR 151 /*PV输入校准标志*/ +#define DSP_DC_PWR_COMP_EN_PARAM_ADDR 152 /*直流功率补偿*/ +#define DSP_BST_RUN_MODE_PARAM_ADDR 153 /*BOOST运行模式*/ +#define DSP_BST1_EN_PARAM_ADDR 154 /*第1路BOOST使能*/ +#define DSP_BST2_EN_PARAM_ADDR 155 /*第2路BOOST使能*/ +#define DSP_BST3_EN_PARAM_ADDR 156 /*第3路BOOST使能*/ +#define DSP_BST4_EN_PARAM_ADDR 157 /*第4路BOOST使能*/ +#define DSP_VOL_FREQ_PROTCET_EN_PARAM_ADDR 158 /*分段保护使能*/ +#define DSP_PV_INVERSED_DETCET_EN_PARAM_ADDR 159 /*PV反接检测使能*/ +#define DSP_PV_BACKWARD_DETCET_EN_PARAM_ADDR 160 /*PV回灌检测使能*/ +#define DSP_ANTI_ISLANDING_PROTECT_FREQ_EN_PARAM_ADDR 161 /*孤岛保护兼容频率适应性*/ +#define DSP_PWR_CONTROL_RCTV_PRIO_EN_PARAM_ADDR 162 /*功率控制时无功优先使能*/ +#define DSP_BUS_UV_DECT_EN_PARAM_ADDR 163 /*母线欠压检测使能*/ +#define DSP_HLVRT_MODE_FLAG_PARAM_ADDR 164 /*高低穿模式切换*/ +#define DSP_RESERVE_PARAM1_4_PARAM_ADDR 165 /*预留参数1_4*/ +#define DSP_VOL_RCTV_PWR_CTR_MODE_PARAM_ADDR 166 /*电压无功控制模式*/ +#define DSP_ACCU_JUDGE_MODE_PARAM_ADDR 167 /*精度判断模式*/ +//dsp_rec_ctr_param_t +#define DSP_DC_VOLT_KP_PARAM_ADDR 181 /*外环PI控制:Kp*/ +#define DSP_DC_VOLT_KI_PARAM_ADDR 182 /*外环PI控制:Ki*/ +#define DSP_DC_VOLT_LMT_PARAM_ADDR 183 /*外环PI控制:OutLimit*/ +#define DSP_VOLT_BAL_KP_PARAM_ADDR 184 /*均压环PI控制:Kp*/ +#define DSP_VOLT_BAL_KI_PARAM_ADDR 185 /*均压环PI控制:Ki*/ +#define DSP_VOLT_BAL_LMT_PARAM_ADDR 186 /*均压环PI控制:OutLimit*/ +#define DSP_AC_CUR_KP_PARAM_ADDR 187 /*电流环Kp */ +#define DSP_ACT_DMP_COFF_PARAM_ADDR 188 /*有源阻尼Kp*/ +#define DSP_RCTV_PWT_KP_PARAM_ADDR 189 /*无功稳压控制Kp*/ +#define DSP_RCTV_PWT_KI_PARAM_ADDR 190 /*无功稳压控制Ki*/ +#define DSP_CUR_Q_KP_PARAM_ADDR 191 /*电流环q轴PI控制:Ki*/ +#define DSP_CUR_Q_LMT_PARAM_ADDR 192 /*电流环q轴PI控制:OutLimit*/ +#define DSP_ZERO_ORD_CUR_KP_PARAM_ADDR 193 /*零序电流PI控制:Kp*/ +#define DSP_ZERO_ORD_CUR_KI_PARAM_ADDR 194 /*零序电流PI控制:Ki*/ +#define DSP_ZERO_ORD_CUR_LMT_PARAM_ADDR 195 /*零序电流PI控制:OutLimit*/ +#define DSP_KR_1_PARAM_ADDR 196 /*1次谐振增益*/ +#define DSP_KR_2_PARAM_ADDR 197 /*2次谐振增益*/ +#define DSP_KR_3_PARAM_ADDR 198 /*3次谐振增益*/ +#define DSP_KR_4_PARAM_ADDR 199 /*4次谐振增益*/ +#define DSP_KR_5_PARAM_ADDR 200 /*5次谐振增益*/ +#define DSP_KR_6_PARAM_ADDR 201 /*6次谐振增益*/ +#define DSP_KR_7_PARAM_ADDR 202 /*7次谐振增益*/ +#define DSP_KR_8_PARAM_ADDR 203 /*8次谐振增益*/ +#define DSP_KR_9_PARAM_ADDR 204 /*9次谐振增益*/ +#define DSP_KR_10_PARAM_ADDR 205 /*10次谐振增益*/ +#define DSP_KR_11_PARAM_ADDR 206 /*11次谐振增益*/ +#define DSP_KR_12_PARAM_ADDR 207 /*12次谐振增益*/ +#define DSP_KR_13_PARAM_ADDR 208 /*13次谐振增益*/ +#define DSP_BST_VOLT_KP_PARAM_ADDR 209 /*boost电压环Kp*/ +#define DSP_BST_VOLT_KI_PARAM_ADDR 210 /*boost电压环Ki*/ +#define DSP_BST_CUR_KP_PARAM_ADDR 211 /*boost电流环Kp*/ +#define DSP_BST_CUR_KI_PARAM_ADDR 212 /*boost电流环Ki*/ +#define DSP_LVRT_COFF_PARAM_ADDR 213 /*低电压穿越系数*/ +#define DSP_HVRT_COFF_PARAM_ADDR 214 /*高电压穿越系数*/ +#define DSP_PWM_MODE_PARAM_ADDR 215 /*调制方式*/ +#define DSP_FFWD_MODE_PARAM_ADDR 216 /*电压前馈方式*/ +#define DSP_BUS_VOLT_REF_DWN_LMT_PARAM_ADDR 217 /*母线电压参考值下限*/ +#define DSP_ZERO_CTR_KP_PARAM_ADDR 218 /*零序分量控制kp参数*/ +#define DSP_FFWD_COFF_PARAM_ADDR 219 /*加权前馈的占比系数*/ +#define DSP_PWR_LMT_MODE_EN_PARAM_ADDR 220 /*限功率模式使能*/ +#define DSP_ISLAND_KP_PARAM_ADDR 221 /*孤岛保护Kp*/ +#define DSP_CPWM_M_TH_PARAM_ADDR 222 /*进入CPWM调制度阈值*/ +#define DSP_DPWM_M_TH_PARAM_ADDR 223 /*进入DPWM调制度阈值*/ +#define DSP_CPWM_BUS_VOLT_TH_PARAM_ADDR 224 /*进入CPWM母线电压阈值*/ +#define DSP_DPWM_BUS_VOLT_TH_PARAM_ADDR 225 /*进入DPWM母线电压阈值*/ +#define DSP_DC_VOLT_REF_PARAM_ADDR 226 /*直流电压参考*/ +#define DSP_AC_VOLT_REF_PARAM_ADDR 227 /*交流电压参考*/ +#define DSP_RCTV_CUR_REF_PARAM_ADDR 228 /*无功电流参考*/ +#define DSP_BOOST_CUR_REF1_PARAM_ADDR 229 /*boost1电流参考值*/ +#define DSP_BOOST_CUR_REF2_PARAM_ADDR 230 /*boost2电流参考值*/ +#define DSP_BOOST_CUR_REF3_PARAM_ADDR 231 /*boost3电流参考值*/ +#define DSP_BOOST_CUR_REF4_PARAM_ADDR 232 /*boost4电流参考值*/ +#define DSP_ACTV_CUR_REF_PARAM_ADDR 233 /*有功电流参考*/ +#define DSP_REACTIVE_VOLTAGE_COFF_PARAM_ADDR 234 /*无功调压系数*/ +#define DSP_COM_MODE_CUR_TH_PARAM_ADDR 235 /*共模电流幅值阈值*/ +#define DSP_COM_MODE_CUR_CPWM_TH_PARAM_ADDR 236 /*CPWM共模电流次数*/ +#define DSP_COM_MODE_CUR_DPWM_TH_PARAM_ADDR 237 /*DPWM共模电流次数*/ +//dsp_ctr_th_param_t +#define DSP_OPEN_CRCT_OV_TH_PARAM_ADDR 251 /*开路电压过高阈值*/ +#define DSP_DC_INPUT_OV_TH_PARAM_ADDR 252 /*直流输入过压阈值*/ +#define DSP_BUS_OV_TH_PARAM_ADDR 253 /*直流母线过压阈值*/ +#define DSP_BUS_UV_TH_PARAM_ADDR 254 /*直流母线欠压阈值*/ +#define DSP_INV_OC_TH_PARAM_ADDR 255 /*逆变电流保护瞬时值*/ +#define DSP_INV_RMS_OC_TH_PARAM_ADDR 256 /*逆变电流保护有效值*/ +#define DSP_INV_CBC_TH_PARAM_ADDR 257 /*逆变电流逐波限流封锁阈值*/ +#define DSP_INV_CBC_UNLCK_TH_PARAM_ADDR 258 /*逆变电流逐波限流解封阈值*/ +#define DSP_BST1_OC_TH_PARAM_ADDR 259 /*Boost1过流软件保护阈值*/ +#define DSP_BST2_OC_TH_PARAM_ADDR 260 /*Boost2过流软件保护阈值*/ +#define DSP_BST_3_OC_TH_PARAM_ADDR 261 /*Boost3过流软件保护阈值*/ +#define DSP_BST4_OC_TH_PARAM_ADDR 262 /*Boost4过流软件保护阈值*/ +#define DSP_PV_SC_VOLT_TH_PARAM_ADDR 263 /*MPPT短路电压阈值*/ +#define DSP_PV_SC_CUR_TH_PARAM_ADDR 264 /*MPPT短路电流阈值*/ +#define DSP_GRD_PHASE_LOSS_TH_PARAM_ADDR 265 /*额定电网保护电压*/ +#define DSP_GRD_OV_TH_PARAM_ADDR 266 /*电网过压阈值*/ +#define DSP_GRD_UV_TH_PARAM_ADDR 267 /*电网欠压阈值*/ +#define DSP_GRD_OV_2ND_TH_PARAM_ADDR 268 /*电网欠压二级保护阈值*/ +#define DSP_GRD_OV_1ST_TH_PARAM_ADDR 269 /*电网欠压一级保护阈值*/ +#define DSP_GRD_UV_1ST_TH_PARAM_ADDR 270 /*电网过压一级保护阈值*/ +#define DSP_GRD_UV_2ND_TH_PARAM_ADDR 271 /*电网过压二级保护阈值*/ +#define DSP_OV_LMT_PWR_TH_PARAM_ADDR 272 /*过压降额阈值*/ +#define DSP_FREQ_OV_LGC_PARAM_ADDR 273 /*电网频率上限*/ +#define DSP_FREQ_UND_LGC_PARAM_ADDR 274 /*电网频率下限*/ +#define DSP_GRD_UND_FREQ_5TH_TH_PARAM_ADDR 275 /*电网欠频五级保护阈值*/ +#define DSP_GRD_UND_FREQ_4TH_TH_PARAM_ADDR 276 /*电网欠频四级保护阈值*/ +#define DSP_GRD_UND_FREQ_3RD_TH_PARAM_ADDR 277 /*电网欠频三级保护阈值*/ +#define DSP_GRD_UND_FREQ_2ND_TH_PARAM_ADDR 278 /*电网欠频二级保护阈值*/ +#define DSP_GRD_UND_FREQ_1ST_TH_PARAM_ADDR 279 /*电网欠频一级保护阈值*/ +#define DSP_GRD_OVER_FREQ_1ST_TH_PARAM_ADDR 280 /*电网过频一级保护阈值*/ +#define DSP_GRD_OVER_FREQ_2ND_TH_PARAM_ADDR 281 /*电网过频二级保护阈值*/ +#define DSP_GRD_OVER_FREQ_3RD_TH_PARAM_ADDR 282 /*电网过频三级保护阈值*/ +#define DSP_OV_FREQ_LMT_PWR_TH_PARAM_ADDR 283 /*过频降额阈值*/ +#define DSP_CAP_OC_TH_PARAM_ADDR 284 /*滤波电容过流保护阈值*/ +#define DSP_CAP_OV_TH_PARAM_ADDR 285 /*滤波电容过压保护阈值*/ +#define DSP_INSLT_RSTR_TH_PARAM_ADDR 286 /*绝缘阻抗检测阈值*/ +#define DSP_GRD_FLT_DIS_INNER_FLT_EN_PARAM_ADDR 287 /*电网故障屏蔽内部故障*/ +#define DSP_ACT_ISLAND_DTCT_TH_PARAM_ADDR 288 /*主动反孤岛阈值*/ +#define DSP_ACT_ISLAND_DTCT_VAR_TH_PARAM_ADDR 289 /*反孤岛无功电流余量*/ +#define DSP_PV_LINE_DTCT_EN_PARAM_ADDR 290 /*PV接线检测(未启用)*/ +#define DSP_PV_INVERSED_INPUT_VOL_TH_PARAM_ADDR 291 /*PV反接电压阈值*/ +#define DSP_PV_INVERSED_INPUT_CURR_TH_PARAM_ADDR 292 /*PV反接电感电流阈值*/ +#define DSP_PV_BACKWARD_INPUT_VOL_TH_PARAM_ADDR 293 /*PV回灌电压阈值*/ +#define DSP_PV_BRANCH_INPUT_CURR_TH_PARAM_ADDR 294 /*支路输入电流阈值*/ +#define DSP_PV_BRANCH_INPUT_CURR_TH1_PARAM_ADDR 295 /*支路输入电流阈值1*/ +#define DSP_PV_BRANCH_INPUT_CURR_TH2_PARAM_ADDR 296 /*支路输入电流阈值2*/ +#define DSP_ECO_WARNING_1_PARAM_ADDR 297 /*节能告警阈值1*/ +#define DSP_ECO_WARNING_2_PARAM_ADDR 298 /*节能告警阈值2*/ +#define DSP_CAVITY_OVERTEMP_TH_PARAM_ADDR 299 /*腔体过温阈值*/ +#define DSP_CAVITY_OVERTEMP_TH2_PARAM_ADDR 300 /*腔体2过温阈值*/ +#define DSP_COLLFIN_OVERTEMP_TH_PARAM_ADDR 301 /*散热片过温阈值*/ +#define DSP_Q_U_LOW_VOL_TH_PARAM_ADDR 302 /*Q-U低压系数阈值*/ +#define DSP_Q_U_HIGH_VOL_TH_PARAM_ADDR 303 /*Q-U高压系数阈值*/ +#define DSP_LVRT_BORDER_TH_PARAM_ADDR 304 /*低穿穿越边界*/ +#define DSP_HVRT_BORDER_TH_PARAM_ADDR 305 /*高穿穿越边界*/ +#define DSP_OVER_CAP_CURRENT_TIME_MS_PARAM_ADDR 306 /*滤波电容过流保护时间*/ +#define DSP_OVER_RMS_CURRENT_TIME_MS_PARAM_ADDR 307 /*逆变过流保护时间*/ +#define DSP_GRID_OVER_VOLT_L0_TIME_MS_PARAM_ADDR 308 /*电网过压L0保护时间*/ +#define DSP_GRID_OVER_VOLT_L1_TIME_MS_PARAM_ADDR 309 /*电网过压L1保护时间*/ +#define DSP_GRID_OVER_VOLT_L2_TIME_MS_PARAM_ADDR 310 /*电网过压L2保护时间*/ +#define DSP_GRID_BELOW_VOLT_L0_TIME_MS_PARAM_ADDR 311 /*电网欠压L0保护时间*/ +#define DSP_GRID_BELOW_VOLT_L1_TIME_MS_PARAM_ADDR 312 /*电网欠压L1保护时间*/ +#define DSP_GRID_BELOW_VOLT_L2_TIME_MS_PARAM_ADDR 313 /*电网欠压L2保护时间*/ +#define DSP_GRID_OVER_FREQ_L0_TIME_MS_PARAM_ADDR 314 /*电网过频L0保护时间*/ +#define DSP_GRID_OVER_FREQ_L1_TIME_S_PARAM_ADDR 315 /*电网过频L1保护时间*/ +#define DSP_GRID_OVER_FREQ_L2_TIME_S_PARAM_ADDR 316 /*电网过频L2保护时间*/ +#define DSP_GRID_OVER_FREQ_L3_TIME_MS_PARAM_ADDR 317 /*电网过频L3保护时间*/ +#define DSP_GRID_BELOW_FREQ_L0_TIME_MS_PARAM_ADDR 318 /*电网欠频L0保护时间*/ +#define DSP_GRID_BELOW_FREQ_L1_TIME_S_PARAM_ADDR 319 /*电网欠频L1保护时间*/ +#define DSP_GRID_BELOW_FREQ_L2_TIME_S_PARAM_ADDR 320 /*电网欠频L2保护时间*/ +#define DSP_GRID_BELOW_FREQ_L3_TIME_S_PARAM_ADDR 321 /*电网欠频L3保护时间*/ +#define DSP_GRID_BELOW_FREQ_L4_TIME_S_PARAM_ADDR 322 /*电网欠频L4保护时间*/ +#define DSP_GRID_BELOW_FREQ_L5_TIME_MS_PARAM_ADDR 323 /*电网欠频L5保护时间*/ +#define DSP_OVER_BUS_VOLT_TIME_MS_PARAM_ADDR 324 /*母线欠压保护时间*/ +//dsp_ctr_limit_param_t +#define DSP_RT_RCTV_CUR_LMT_PARAM_ADDR 331 /*高低穿无功电流限幅值*/ +#define DSP_INV_CUR_LMT_PARAM_ADDR 332 /*逆变总电流限幅值*/ +#define DSP_INV_ACT_CUR_LMT_PARAM_ADDR 333 /*逆变有功电流限幅值*/ +#define DSP_INV_RCTV_CUR_LMT_PARAM_ADDR 334 /*逆变无功电流限幅值*/ +#define DSP_BST1_CUR_LMT_PARAM_ADDR 335 /*Boost1单路电流限幅值*/ +#define DSP_BST2_CUR_LMT_PARAM_ADDR 336 /*Boost2单路电流限幅值*/ +#define DSP_BST3_CUR_LMT_PARAM_ADDR 337 /*Boost3单路电流限幅值*/ +#define DSP_BST4_CUR_LMT_PARAM_ADDR 338 /*Boost4单路电流限幅值*/ +#define DSP_5TH_CUR_LMT_PARAM_ADDR 339 /*5次谐波电流限幅值*/ +#define DSP_7TH_CUR_LMT_PARAM_ADDR 340 /*7次谐波电流限幅值*/ +#define DSP_11TH_CUR_LMT_PARAM_ADDR 341 /*11次谐波电流限幅值*/ +#define DSP_13TH_CUR_LMT_PARAM_ADDR 342 /*13次谐波电流限幅值*/ +#define DSP_17TH_CUR_LMT_PARAM_ADDR 343 /*17次谐波电流限幅值*/ +#define DSP_19TH_CUR_LMT_PARAM_ADDR 344 /*19次谐波电流限幅值*/ +#define DSP_2TH_CUR_LMT_PARAM_ADDR 345 /*2次谐波电流限幅值*/ +#define DSP_4TH_CUR_LMT_PARAM_ADDR 346 /*4次谐波电流限幅值*/ +#define DSP_6TH_CUR_LMT_PARAM_ADDR 347 /*6次谐波电流限幅值*/ +#define DSP_8TH_CUR_LMT_PARAM_ADDR 348 /*8次谐波电流限幅值*/ +#define DSP_10TH_CUR_LMT_PARAM_ADDR 349 /*10次谐波电流限幅值*/ +#define DSP_14TH_CUR_LMT_PARAM_ADDR 350 /*14次谐波电流限幅值*/ +#define DSP_16TH_CUR_LMT_PARAM_ADDR 351 /*16次谐波电流限幅值*/ +#define DSP_20TH_CUR_LMT_PARAM_ADDR 352 /*20次谐波电流限幅值*/ +#define DSP_DPWM_AP_TH_PARAM_ADDR 353 /*进入DPWM视在功率阈值*/ +#define DSP_CPWM_AP_TH_PARAM_ADDR 354 /*进入CPWM视在功率阈值*/ +#define DSP_LEAD_COMP_KP_PARAM_ADDR 355 /*零序超前补偿kp*/ +#define DSP_COLLFIN_OVERTEMP_LMT_TH_PARAM_ADDR 356 /*散热片过温降功率阈值*/ +#define DSP_CAVITY_OVERTEMP_LMT_TH_PARAM_ADDR 357 /*腔体过温降功率阈值*/ +#define DSP_CAVITY2_OVERTEMP_LMT_TH_PARAM_ADDR 358 /*腔体2过温降功率阈值*/ +#define DSP_OVERTEMP_PWR_DOWN_TH_PARAM_ADDR 359 /*过温降额功率下限*/ +#define DSP_FAN_FAULT_PWR_DOWN_TH_PARAM_ADDR 360 /*风扇故障降额功率下限*/ +#define DSP_OVERTEMP_PWR_UP_TH_PARAM_ADDR 361 /*过温降额功率上限*/ +#define DSP_OVERTEMP_PWR_CHANGE_DOWN_TH_PARAM_ADDR 362 /*过温降额功率变化率上限*/ +//dsp_debug_test_control_t +#define DSP_RESERVE_PARAM5_0_PARAM_ADDR 381 /*预留参数5_0*/ +#define DSP_RESERVE_PARAM5_1_PARAM_ADDR 382 /*预留参数5_1*/ +#define DSP_RESERVE_PARAM5_2_PARAM_ADDR 383 /*预留参数5_2*/ +#define DSP_RESERVE_PARAM5_3_PARAM_ADDR 384 /*预留参数5_3*/ +#define DSP_SYSTM_STA_PARAM_ADDR 385 /*整机状态*/ +#define DSP_INV_STA_PARAM_ADDR 386 /*逆变状态*/ +#define DSP_MPPT1_STATE_PARAM_ADDR 387 /*MPPT1状态(debug)*/ +#define DSP_MPPT2_STATE_PARAM_ADDR 388 /*MPPT2状态(debug)*/ +#define DSP_MPPT3_STATE_PARAM_ADDR 389 /*MPPT3状态(debug)*/ +#define DSP_MPPT4_STATE_PARAM_ADDR 390 /*MPPT4状态(debug)*/ +#define DSP_LOW_PWR_FLG_PARAM_ADDR 391 /*功率不足标志*/ +#define DSP_MPPT_MANUAL_REFERENCE_PARAM_ADDR 392 /*MPPT手动参考标志位*/ +#define DSP_MPPT_MANUAL_REFERENCE_VALUE_PARAM_ADDR 393 /*MPPT手动参考值*/ +#define DSP_VOLT_BAL_TH_PARAM_ADDR 394 /*母线均压开启阈值*/ +#define DSP_RESERVE_PARAM5_4_PARAM_ADDR 395 /*预留参数5_4*/ +#define DSP_RESERVE_PARAM5_5_PARAM_ADDR 396 /*预留参数5_5*/ +//dsp_calibrate_t +#define DSP_AUTO_CALIBRATE_EN_PARAM_ADDR 420 /*自动化校准使能*/ +#define DSP_AUTO_CALIBRATE_STATE_PARAM_ADDR 421 /*自动化校准状态*/ +#define DSP_AUTO_CALIBRATE_CMD_PARAM_ADDR 422 /*自动化校准指令*/ +#define DSP_AUTO_CALIBRATE_RESULT_PARAM_ADDR 423 /*自动化校准结果*/ +#define DSP_AUTO_CALIBRATE_REFRESH_FLAG_PARAM_ADDR 424 /*自动化校准刷新标志*/ +#define DSP_RESERVE_PARAM6_6_PARAM_ADDR 425 /*预留参数6_6*/ +#define DSP_RESERVE_PARAM6_7_PARAM_ADDR 426 /*预留参数6_7*/ +#define DSP_RESERVE_PARAM6_8_PARAM_ADDR 427 /*预留参数6_8*/ +#define DSP_RESERVE_PARAM6_9_PARAM_ADDR 428 /*预留参数6_9*/ +#define DSP_RESERVE_PARAM6_10_PARAM_ADDR 429 /*预留参数6_10*/ +#define DSP_RESERVE_PARAM6_11_PARAM_ADDR 430 /*预留参数6_11*/ +#define DSP_RESERVE_PARAM6_12_PARAM_ADDR 431 /*预留参数6_12*/ +#define DSP_RESERVE_PARAM6_13_PARAM_ADDR 432 /*预留参数6_13*/ +#define DSP_RESERVE_PARAM6_14_PARAM_ADDR 433 /*预留参数6_14*/ +#define DSP_RESERVE_PARAM6_15_PARAM_ADDR 434 /*预留参数6_15*/ +#define DSP_RESERVE_PARAM6_16_PARAM_ADDR 435 /*预留参数6_16*/ +#define DSP_RESERVE_PARAM6_17_PARAM_ADDR 436 /*预留参数6_17*/ +#define DSP_RESERVE_PARAM6_18_PARAM_ADDR 437 /*预留参数6_18*/ +#define DSP_RESERVE_PARAM6_19_PARAM_ADDR 438 /*预留参数6_19*/ +#define DSP_RESERVE_PARAM6_20_PARAM_ADDR 439 /*预留参数6_20*/ +#define DSP_RESERVE_PARAM6_21_PARAM_ADDR 440 /*预留参数6_21*/ +#define DSP_RESERVE_PARAM6_22_PARAM_ADDR 441 /*预留参数6_22*/ +#define DSP_RESERVE_PARAM6_23_PARAM_ADDR 442 /*预留参数6_23*/ +#define DSP_RESERVE_PARAM6_24_PARAM_ADDR 443 /*预留参数6_24*/ +#define DSP_RESERVE_PARAM6_25_PARAM_ADDR 444 /*预留参数6_25*/ +#define DSP_RESERVE_PARAM6_26_PARAM_ADDR 445 /*预留参数6_26*/ +#define DSP_RESERVE_PARAM6_27_PARAM_ADDR 446 /*预留参数6_27*/ +#define DSP_RESERVE_PARAM6_28_PARAM_ADDR 447 /*预留参数6_28*/ +#define DSP_RESERVE_PARAM6_29_PARAM_ADDR 448 /*预留参数6_29*/ +#define DSP_RESERVE_PARAM6_30_PARAM_ADDR 449 /*预留参数6_30*/ +#define DSP_RESERVE_PARAM6_31_PARAM_ADDR 450 /*预留参数6_31*/ +#define DSP_RESERVE_PARAM6_32_PARAM_ADDR 451 /*预留参数6_32*/ +#define DSP_RESERVE_PARAM6_33_PARAM_ADDR 452 /*预留参数6_33*/ +#define DSP_RESERVE_PARAM6_34_PARAM_ADDR 453 /*预留参数6_34*/ +#define DSP_RESERVE_PARAM6_35_PARAM_ADDR 454 /*预留参数6_35*/ +#define DSP_RESERVE_PARAM6_36_PARAM_ADDR 455 /*预留参数6_36*/ +#define DSP_RESERVE_PARAM6_37_PARAM_ADDR 456 /*预留参数6_37*/ +//dsp_data_file_t +#define DSP_DEV_ADDR_PARAM_ADDR 500 /*本地通信地址(模块号)*/ +#define DSP_DEVICE_RATED_ACTV_PWR_PARAM_ADDR 501 /*装置额定有功功率(设备容量)*/ +#define DSP_DEVICE_RATED_RCTV_PWR_PARAM_ADDR 502 /*装置额定无功功率*/ +#define DSP_APP_VER_PARAM_ADDR 503 /*DSP主控版本号*/ +#define DSP_BOOT_VER_PARAM_ADDR 505 /*DSP底层版本号*/ +#define DSP_PROG_CODE_PARAM_ADDR 507 /*DSP主控程序组件号*/ +#define DSP_DEV_TYPE_PARAM_ADDR 510 /*设备类型*/ +#define DSP_PROT_VER_PARAM_ADDR 511 /*DSP使用地址表协议版本号*/ +#define DSP_CFG_CRC_H_PARAM_ADDR 512 /*DSP配置参数CRC高16位*/ +#define DSP_CFG_CRC_L_PARAM_ADDR 513 /*DSP配置参数CRC低16位*/ +#define DSP_DEVICE_PHASE_PARAM_ADDR 514 /*相数*/ +#define DSP_APP_VER_NEW_PARAM_ADDR 515 /*DSP主控版本号新格式*/ +#define DSP_BOOT_VER_NEW_PARAM_ADDR 519 /*DSP底层版本号新格式*/ +#define DSP_MPPT_NUMBER_PARAM_ADDR 523 /*MPPT数量*/ +//dsp_data_hardware_t +#define DSP_RELAY_A_STAT_PARAM_ADDR 550 /*继电器A状态*/ +#define DSP_RELAY_B_STAT_PARAM_ADDR 551 /*继电器B状态*/ +#define DSP_RELAY_C_STAT_PARAM_ADDR 552 /*继电器C状态*/ +//dsp_data_state_t +#define DSP_FAULT1_1_PARAM_ADDR 560 /*一般故障1*/ +#define DSP_FAULT1_2_PARAM_ADDR 561 /*一般故障2*/ +#define DSP_FAULT1_3_PARAM_ADDR 562 /*一般故障3*/ +#define DSP_FAULT1_4_PARAM_ADDR 563 /*一般故障4*/ +#define DSP_FAULT2_1_PARAM_ADDR 564 /*严重故障1*/ +#define DSP_FAULT2_2_PARAM_ADDR 565 /*严重故障2*/ +#define DSP_FAULT2_3_PARAM_ADDR 566 /*严重故障3*/ +#define DSP_FAULT2_4_PARAM_ADDR 567 /*严重故障4*/ +#define DSP_WARING_1_PARAM_ADDR 568 /*告警事件1*/ +#define DSP_WARING_2_PARAM_ADDR 569 /*告警事件2*/ +#define DSP_SLF_CHK_1_PARAM_ADDR 570 /*自检事件1*/ +#define DSP_SLF_CHK_2_PARAM_ADDR 571 /*自检事件2*/ +#define DSP_RUN_MODE_STA_PARAM_ADDR 590 /*DSP运行状态*/ +#define DSP_PHASE_STA_PARAM_ADDR 591 /*电压相序显示*/ +#define DSP_MPPT1_STA_PARAM_ADDR 592 /*MPPT1状态*/ +#define DSP_MPPT2_STA_PARAM_ADDR 593 /*MPPT2状态*/ +#define DSP_DEV_STA_PARAM_ADDR 594 /*显示运行模式*/ +#define DSP_FAULT_LABEL_PARAM_ADDR 595 /*故障状态标志*/ +#define DSP_LGC_LABEL_PARAM_ADDR 596 /*逻辑状态标签*/ +#define DSP_ECHO_LABEL_PARAM_ADDR 597 /*节能状态标签*/ +#define DSP_PLL_LABEL_PARAM_ADDR 598 /*锁相状态标签*/ +#define DSP_AUX_LABEL_PARAM_ADDR 599 /*辅助状态标签*/ +#define DSP_OV_TEM_HALF_PWR_LABEL_PARAM_ADDR 600 /*过温半载运行标签*/ +#define DSP_DC_LED_STATE_DISPLAY_PARAM_ADDR 601 /*DSP直流灯状态指示*/ +#define DSP_AC_LED_STATE_DISPLAY_PARAM_ADDR 602 /*DSP交流灯状态指示*/ +#define DSP_DEVICE_MODULATION_STATE_PARAM_ADDR 603 /*设备调制状态*/ +#define DSP_MPPT3_STA_PARAM_ADDR 604 /*MPPT3状态*/ +#define DSP_MPPT4_STA_PARAM_ADDR 605 /*MPPT4状态*/ +#define DSP_OVER_TEMP_LIMIT_PWR_PARAM_ADDR 606 /*过温限功率状态*/ +//dsp_data_collect_t +#define DSP_GRID_FREQ_PARAM_ADDR 620 /*电网频率*/ +#define DSP_DC_INPUT_AVG_VOLT_PARAM_ADDR 621 /*总母线电压avg*/ +#define DSP_DC_UP_SIDE_AVG_VOLT_PARAM_ADDR 622 /*上母线电压avg*/ +#define DSP_DC_LOW_SIDE_AVG_VOLT_PARAM_ADDR 623 /*下母线电压_avg*/ +#define DSP_GRID_A_RMS_VOLT_PARAM_ADDR 624 /*电网电压A_RMS*/ +#define DSP_GRID_B_RMS_VOLT_PARAM_ADDR 625 /*电网电压B_RMS*/ +#define DSP_GRID_C_RMS_VOLT_PARAM_ADDR 626 /*电网电压C_RMS*/ +#define DSP_CAP_A_RMS_VOLT_PARAM_ADDR 627 /*逆变阻尼电压A_RMS*/ +#define DSP_CAP_B_RMS_VOLT_PARAM_ADDR 628 /*逆变阻尼电压B_RMS*/ +#define DSP_CAP_C_RMS_VOLT_PARAM_ADDR 629 /*逆变阻尼电压C_RMS*/ +#define DSP_INV_A_RMS_CUR_PARAM_ADDR 630 /*逆变电流A_RMS*/ +#define DSP_INV_B_RMS_CUR_PARAM_ADDR 631 /*逆变电流B_RMS*/ +#define DSP_INV_C_RMS_CUR_PARAM_ADDR 632 /*逆变电流C_RMS*/ +#define DSP_CAP_A_RMS_CUR_PARAM_ADDR 633 /*LCL电容电流A_RMS*/ +#define DSP_CAP_B_RMS_CUR_PARAM_ADDR 634 /*LCL电容电流B_RMS*/ +#define DSP_CAP_C_RMS_CUR_PARAM_ADDR 635 /*LCL电容电流C_RMS*/ +#define DSP_RESERVE_DATA2_7_PARAM_ADDR 636 /*预留数据2_7*/ +#define DSP_RESERVE_DATA2_8_PARAM_ADDR 637 /*预留数据2_8*/ +#define DSP_RESERVE_DATA2_9_PARAM_ADDR 638 /*预留数据2_9*/ +#define DSP_BOOST_PV_VOLT_1_PARAM_ADDR 639 /*BOOST输入电压1路*/ +#define DSP_BOOST_PV_VOLT_2_PARAM_ADDR 640 /*BOOST输入电压2路*/ +#define DSP_BOOST_PV_VOLT_3_PARAM_ADDR 641 /*BOOST输入电压3路*/ +#define DSP_BOOST_PV_VOLT_4_PARAM_ADDR 642 /*BOOST输入电压4路*/ +#define DSP_BOOST1_PV_CUR_1_PARAM_ADDR 643 /*1路BOOST组串电流1*/ +#define DSP_BOOST2_PV_CUR_1_PARAM_ADDR 644 /*2路BOOST组串电流1*/ +#define DSP_BOOST3_PV_CUR_1_PARAM_ADDR 645 /*3路BOOST组串电流1*/ +#define DSP_BOOST4_PV_CUR_1_PARAM_ADDR 646 /*4路BOOST组串电流1*/ +#define DSP_BOOST_INDUC_CUR_1_PARAM_ADDR 647 /*BOOST电感电流1路*/ +#define DSP_BOOST_INDUC_CUR_2_PARAM_ADDR 648 /*BOOST电感电流2路*/ +#define DSP_BOOST_INDUC_CUR_3_PARAM_ADDR 649 /*BOOST电感电流3路*/ +#define DSP_BOOST_INDUC_CUR_4_PARAM_ADDR 650 /*BOOST电感电流4路*/ +#define DSP_DEVICE_CURR_A_PARAM_ADDR 651 /*设备电流A*/ +#define DSP_DEVICE_CURR_B_PARAM_ADDR 652 /*设备电流B*/ +#define DSP_DEVICE_CURR_C_PARAM_ADDR 653 /*设备电流C*/ +#define DSP_BOOST1_PV_CUR_2_PARAM_ADDR 654 /*1路BOOST组串电流2*/ +#define DSP_BOOST2_PV_CUR_2_PARAM_ADDR 655 /*2路BOOST组串电流2*/ +#define DSP_BOOST3_PV_CUR_2_PARAM_ADDR 656 /*3路BOOST组串电流2*/ +#define DSP_BOOST4_PV_CUR_2_PARAM_ADDR 657 /*4路BOOST组串电流2*/ +#define DSP_RESERVE_DATA2_1_PARAM_ADDR 676 /*预留数据2_1*/ +#define DSP_RESERVE_DATA2_2_PARAM_ADDR 677 /*预留数据2_2*/ +#define DSP_RESERVE_DATA2_3_PARAM_ADDR 678 /*预留数据2_3*/ +#define DSP_RESERVE_DATA2_4_PARAM_ADDR 679 /*预留数据2_4*/ +#define DSP_RESERVE_DATA2_5_PARAM_ADDR 680 /*预留数据2_5*/ +#define DSP_RESERVE_DATA2_6_PARAM_ADDR 681 /*预留数据2_6*/ +//dsp_data_power_t +#define DSP_DEV_A_ACTV_PWR_PARAM_ADDR 690 /*装置侧有功功率A*/ +#define DSP_DEV_B_ACTV_PWR_PARAM_ADDR 691 /*装置侧有功功率B*/ +#define DSP_DEV_C_ACTV_PWR_PARAM_ADDR 692 /*装置侧有功功率C*/ +#define DSP_DEV_ACTV_PWR_PARAM_ADDR 693 /*装置侧有功功率总*/ +#define DSP_DEV_A_RCTV_PWR_PARAM_ADDR 694 /*装置侧无功功率A*/ +#define DSP_DEV_B_RCTV_PWR_PARAM_ADDR 695 /*装置侧无功功率B*/ +#define DSP_DEV_C_RCTV_PWR_PARAM_ADDR 696 /*装置侧无功功率C*/ +#define DSP_DEV_RCTV_PWR_PARAM_ADDR 697 /*装置侧无功功率总*/ +#define DSP_DEV_A_APRT_PWR_PARAM_ADDR 698 /*装置侧视在功率A*/ +#define DSP_DEV_B_APRT_PWR_PARAM_ADDR 699 /*装置侧视在功率B*/ +#define DSP_DEV_C_APRT_PWR_PARAM_ADDR 700 /*装置侧视在功率C*/ +#define DSP_DEV_APRT_PWR_PARAM_ADDR 701 /*装置侧视在功率总*/ +#define DSP_DEV_A_PF_PARAM_ADDR 702 /*装置侧功率因数A*/ +#define DSP_DEV_B_PF_PARAM_ADDR 703 /*装置侧功率因数B*/ +#define DSP_DEV_C_PF_PARAM_ADDR 704 /*装置侧功率因数C*/ +#define DSP_DEV_PF_PARAM_ADDR 705 /*装置侧功率因数总*/ +#define DSP_GRID_A_ACTV_PWR_PARAM_ADDR 706 /*网侧有功功率A*/ +#define DSP_GRID_B_ACTV_PWR_PARAM_ADDR 707 /*网侧有功功率B*/ +#define DSP_GRID_C_ACTV_PWR_PARAM_ADDR 708 /*网侧有功功率C*/ +#define DSP_GRID_ACTV_PWR_PARAM_ADDR 709 /*网侧有功功率总*/ +#define DSP_GRID_A_RCTV_PWR_PARAM_ADDR 710 /*网侧无功功率A*/ +#define DSP_GRID_B_RCTV_PWR_PARAM_ADDR 711 /*网侧无功功率B*/ +#define DSP_GRID_C_RCTV_PWR_PARAM_ADDR 712 /*网侧无功功率C*/ +#define DSP_GRID_RCTV_PWR_PARAM_ADDR 713 /*网侧无功功率总*/ +#define DSP_GRID_A_APRT_PWR_PARAM_ADDR 714 /*网侧视在功率A*/ +#define DSP_GRID_B_APRT_PWR_PARAM_ADDR 715 /*网侧视在功率B*/ +#define DSP_GRID_C_APRT_PWR_PARAM_ADDR 716 /*网侧视在功率C*/ +#define DSP_GRID_APRT_PWR_PARAM_ADDR 717 /*网侧视在功率总*/ +#define DSP_GRID_A_PF_PARAM_ADDR 718 /*网侧功率因数A*/ +#define DSP_GRID_B_PF_PARAM_ADDR 719 /*网侧功率因数B*/ +#define DSP_GRID_C_PF_PARAM_ADDR 720 /*网侧功率因数C*/ +#define DSP_GRID_PF_PARAM_ADDR 721 /*网侧功率因数总*/ +#define DSP_LOAD_A_ACTV_PWR_PARAM_ADDR 722 /*负载有功功率A*/ +#define DSP_LOAD_B_ACTV_PWR_PARAM_ADDR 723 /*负载有功功率B*/ +#define DSP_LOAD_C_ACTV_PWR_PARAM_ADDR 724 /*负载有功功率C*/ +#define DSP_LOAD_ACTV_PWR_PARAM_ADDR 725 /*负载有功功率总*/ +#define DSP_LOAD_A_RCTV_PWR_PARAM_ADDR 726 /*负载无功功率A*/ +#define DSP_LOAD_B_RCTV_PWR_PARAM_ADDR 727 /*负载无功功率B*/ +#define DSP_LOAD_C_RCTV_PWR_PARAM_ADDR 728 /*负载无功功率C*/ +#define DSP_LOAD_RCTV_PWR_PARAM_ADDR 729 /*负载无功功率总*/ +#define DSP_LOAD_A_APRT_PWR_PARAM_ADDR 730 /*负载视在功率A*/ +#define DSP_LOAD_B_APRT_PWR_PARAM_ADDR 731 /*负载视在功率B*/ +#define DSP_LOAD_C_APRT_PWR_PARAM_ADDR 732 /*负载视在功率C*/ +#define DSP_LOAD_APRT_PWR_PARAM_ADDR 733 /*负载视在功率总*/ +#define DSP_LOAD_A_PF_PARAM_ADDR 734 /*负载功率因数A*/ +#define DSP_LOAD_B_PF_PARAM_ADDR 735 /*负载功率因数B*/ +#define DSP_LOAD_C_PF_PARAM_ADDR 736 /*负载功率因数C*/ +#define DSP_LOAD_PF_PARAM_ADDR 737 /*负载功率因数总*/ +#define DSP_BOOST_PWR_1_PARAM_ADDR 738 /*BOOST功率1路*/ +#define DSP_BOOST_PWR_2_PARAM_ADDR 739 /*BOOST功率2路*/ +#define DSP_BOOST_PWR_3_PARAM_ADDR 740 /*BOOST功率3路*/ +#define DSP_BOOST_PWR_4_PARAM_ADDR 741 /*BOOST功率4路*/ +#define DSP_BOOST_PWR_PARAM_ADDR 742 /*BOOST功率总*/ +//dsp_data_unbalance_t +#define DSP_GRID_CUR_UNB_PARAM_ADDR 770 /*网侧电流不平衡度*/ +#define DSP_GRID_CUR_UNB2_PARAM_ADDR 771 /*网侧电流负序不平衡度*/ +#define DSP_GRID_CUR_UNB0_PARAM_ADDR 772 /*网侧电流零序不平衡度*/ +#define DSP_LOAD_CUR_UNB_PARAM_ADDR 773 /*负载电流不平衡度*/ +#define DSP_LOAD_CUR_UNB2_PARAM_ADDR 774 /*负载电流负序不平衡度*/ +#define DSP_LOAD_CUR_UNB0_PARAM_ADDR 775 /*负载电流零序不平衡度*/ +#define DSP_GRID_VOLT_UNB_PARAM_ADDR 776 /*电网电压不平衡度*/ +#define DSP_GRID_VOLT_UNB2_PARAM_ADDR 777 /*电网电压负序不平衡度*/ +#define DSP_GRID_VOLT_UNB0_PARAM_ADDR 778 /*电网电压零序不平衡度*/ + + +typedef struct tag_modbus_param_value_info_t +{ + uint16_t address; + uint16_t datatype; /*0:uint16_t 1:int16_t*/ + int32_t default_value; + int32_t min_value; + int32_t max_value; +}modbus_param_value_info_t; + +#define MAX_VALID_PARAM_ADDRESS 499 +#define DATATYPE_UINT16_T 0 +#define DATATYPE_INT16_T 1 +bool_t mw_protocol_modbus_check_param_out_of_range(uint16_t us_address, uint16_t us_value); + + +uint16_t mw_protocol_modbus_get_param_default_value(uint16_t us_address); + + +#endif /* __MW_PARAM_MANAGER_DSP_STRUCT_H__ */ diff --git a/test/PV_Inverter/光伏逆变器2.1_通信地址表_V01.xlsx b/test/PV_Inverter/光伏逆变器2.1_通信地址表_V01.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1267543afde811b88753c3c8c391732d6652881e GIT binary patch literal 303077 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[L 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ᬔ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/PpW`rK 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%0Djjv?b{9ZWtUwW18_7ZIyg*ia&tGE%uR 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�GK_# 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 z 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 F{ttCv1wQ}) literal 0 HcmV?d00001 diff --git a/test/PV_Inverter/光伏逆变器2.1_通信地址表_V33.xlsx b/test/PV_Inverter/光伏逆变器2.1_通信地址表_V33.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5f836d5158742d846ab58347bdb190e9fb580f15 GIT binary patch literal 259315 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%0Dl_R}OkWvAD3J9^)3jd}DdCJqjbdl! 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