添加代码生成样本;

- 光伏逆变器
 - 参数管理模块
This commit is contained in:
何 泽隆
2024-11-03 16:59:31 +08:00
parent 239fd2ca11
commit 3d1a9e2b1d
21 changed files with 4912 additions and 0 deletions

View File

@@ -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 <stddef.h>
#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, //按页写入的缓冲区的大小
};

View File

@@ -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 <stdint.h>
#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__ ----- */

View File

@@ -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 <stdint.h>
#include <stddef.h>
#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__ ----- */

View File

@@ -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 <stdint.h>
/* ##### 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__ ----- */

View File

@@ -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 <stddef.h>
#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, //按页写入的缓冲区的大小
};

View File

@@ -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 <stdint.h>
#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__ ----- */

View File

@@ -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 <stdint.h>
#include <stddef.h>
#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__ ----- */

View File

@@ -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 <stddef.h>
#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, //按页写入的缓冲区的大小
};

View File

@@ -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 <stdint.h>
#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__ ----- */

View File

@@ -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 <stdint.h>
#include <stddef.h>
#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__ ----- */

View File

@@ -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 ----- */

Binary file not shown.