#ifndef _SHARE_DATA_STRUCT_H_ #define _SHARE_DATA_STRUCT_H_ #include "publicdata/type.h" #include "publicdata/public_define.h" /* 缩写 全称 翻译 volt voltage 电压 curr current 电流/现在 res resistance 电阻 batt battery 电池 thr threshold 阀值 in input 输入 out output 输出 insu insulation 绝缘 num number 数量 cfg configure 配置 def default 默认 comm commucation 通信 mgmt management 管理 lang language 语言 ctl control 控制 bms battery monitor system 电池管理系统 dur duration 持续 comp compensation 补偿 dis discharge 放电 pos positive 正 neg negative 负 rt real time 实时 freq frequency 频率 pf power factor 功率因数 temp temperature 温度 */ //#pragma pack(8) #pragma pack(push,8) #define CFG_DATA_VERSION_L 2 //配置数据区版本的低字节 #define CFG_DATA_VERSION_H 0 //配置数据区版本的高字节 #define FEE_MODEL_CNT 96 //计费段数量-新协议 #define FEE_MODEL_TYPE_CNT 30 //费率类型 默认最大费率种类 30 #define IOTX_FIRMWARE_VER_LEN (64) //sdk变量长度结构体 #define IOTX_PRODUCT_KEY_LEN (20) #define IOTX_DEVICE_UID_LEN (16) #define IOTX_DEVICE_REG_CODE_LEN (64) #define IOTX_DEVICE_NAME_LEN (32) #define IOTX_DEVICE_SECRET_LEN (64) /* 网络连接方式 */ typedef enum { NETWORK_GPRS = 0x00, //4G网络 NETWORK_ETHER, //以太网 }NETWORK_TYPE_E; //通信网络类型 typedef struct //费率存储结构体 { U32_T u32_rate; //小数点后5位 U32_T u32_sevice; }S_FEE_DATA; typedef struct { U8_T u8_model_no[17]; //计费模型编号 U8_T u8_feeCnt; //费率条数 S_FEE_DATA s_fee_data[FEE_MODEL_TYPE_CNT]; //费率类型 U8_T u8_fee_type[FEE_MODEL_CNT]; //默认96个时段 费率类型12345.。。 }S_FEE_MODEL; typedef struct //SDK存储结构体 { //存储三元组写入的数据 char product_key[IOTX_PRODUCT_KEY_LEN + 1]; //产品秘钥 char device_name[IOTX_DEVICE_NAME_LEN + 1]; //资产码 char device_secret[IOTX_DEVICE_SECRET_LEN + 1]; //设备密钥 char device_reg_code[IOTX_DEVICE_REG_CODE_LEN + 1]; //注册码 char device_uid[IOTX_DEVICE_REG_CODE_LEN + 1]; //出厂编码 char firmware_version[IOTX_FIRMWARE_VER_LEN]; //固件版本信息 }S_SDK_DATA; typedef union //使能标志位 { U64_T u64_enable_flag; struct { U64_T bit_doorEnable :2; //门禁使能 U64_T bit_gunLockEna :2; // 枪锁使能 U64_T bit_gunLockNeg :2; // 枪锁信号取反 U64_T bit_AcContactEna :2; // 交流接触器使能 U64_T bit_gunHoming :2; // 枪归位信号有无 U64_T bit_GBEnable :2; // 国标使能(0:兼容 1:国标) U64_T bit_LcdEnable :2; // 液晶使能,0不使能,1使能 U64_T bit_auxpower :2; // 辅助电压返回状态使能 U64_T bit_reliefen :2; // 泄放使能 U64_T bit_YeLenEn :2; // 液冷通讯使能 U64_T bit_ABcommEn :2; // 主副班通讯使能 0 1使能且为1枪 2使能且为2枪 U64_T bit_ScreenSaverEn :2; // UI界面屏保使能 0不使能 1使能 2使能轮播 U64_T bit_PlugEn :2; //即插即充使能 U64_T bit_uiEnglishEn :2; //UI界面 英语使能 0 中文 1英文 2俄文 U64_T bit_dcBusEn :2; // 直流母联接触器使能 0 不使能 1使能 U64_T bit_gunFanEn :2; // 枪风扇使能 0 不使能 1使能 U64_T bit_mduzeropowEn :2; // 零功控制方式 0普通控制 1脉冲控制(80kW模块) U64_T bit_ledGbEn :2; //国标指示灯使能 0 待机黄,充电绿,故障红;1 待机绿,充电红,故障黄 U64_T bit_reserve :(64-18*2); // 预留 - 新增数据内容 注意修改 预留字节数量 }bit_enable; }U_ENABLE_FALG; typedef enum { one_pile_gun_1 = 0x00, //一体一枪 one_pile_gun_2, //一体双枪 split_gun_1, //分体一枪 split_gun_2, //分体双枪 }PILE_TYPE; //桩类型 typedef enum { E_LED_TYPE_NULL =0 , //无指示灯 E_LED_TYPE_1, //指示灯类型1 大功率灯板,使用高低电平组成编码-控制灯的动作方式 E_LED_TYPE_2, //指示灯类型2 灯条,不流水显示 E_LED_TYPE_3, //指示灯类型3 灯条,流水显示 E_LED_TYPE_4, //指示灯类型4 欧标灯板 普通方案 E_LED_TYPE_5, //指示灯类型5 欧标灯板 恩普方案 }E_LED_TYPE; typedef enum { GUN_TYPE_EU = 0, //欧标枪 GUN_TYPE_GB = 1, //国标枪 }GUN_TYPE_ENUM; /******************************** 系统配置参数定义 *********************************/ typedef struct { U8_T u8_meter_num; //电表数量 struct { U8_T u8_inGun; //归属枪号 0无效,不存在; 1A枪 2B枪 U8_T u8_highPrec; //是否支持高精度 0 不支持 1支持 U8_T u8_isAC; //是否为交流电表 0直流表 1交流表 U8_T u8_meterAddr[6]; //电表地址 }s_data[METER_MAX_CNT]; //最大4个电表 -- 默认顺序,先A枪再B枪,先直流表再交流表 ,即 }S_MEMET_PARA; typedef union { U32_T u32_data; struct { U32_T bit_program_type :2; //程序类型 0社会 1sdk 2ocpp U32_T bit_netA_type :2; //平台1联网方式 0:以太网 1:GPRS U32_T bit_netB_type :2; //平台2联网方式 0:以太网 1:GPRS U32_T bit_platA_en :2; //平台1使能 默认第三方平台 0不使能 1使能 U32_T bit_platB_en :2; //平台2使能 默认积成平台 0不使能 1使能 U32_T bit_platA_type :4; //平台1类型 0云快充 1... U32_T bit_platB_type :4; //平台1类型 默认积成平台 --非SDK平台时有效,SDK平台时 仅连接SDK U32_T bit_sim_anp_type :2; //SIM卡 APN类型- 0公网卡 1国网移动 2国网联通 3国网电信 U32_T bit_res :12; //功能预留 }bits; }U_NET_COMM_PARA; //网路连接参数 用于区分接入平台信息 typedef struct { U8_T u8_eth_ip[4]; //IP地址, 默认192.168.1.140 U8_T u8_eth_gate[4]; //网关, 默认192.168.1.254 U8_T u8_eth_mask[4]; //地址掩码, 默认255.255.255.0 U8_T u8_eth_mac[6]; //MAC地址, 默认00:0E:EA:03:A5:01 U8_T u8_serverA_domain_name[NUM_100]; //服务器A域名(IP+端口号) - 最大字符64字节 注意 域名和ip之间使用,分隔 例如39.104.96.26,8897 U8_T u8_serverB_domain_name[NUM_100]; //服务器B域名(IP+端口号) - 最大字符64字节 U8_T u8_platA_pileNum[NUM_32]; //平台1桩编号 U8_T u8_platB_pileNum[NUM_32]; //平台2桩编号 char apn_str[NUM_32]; //apn设置 U_NET_COMM_PARA u_net_comm_para; //网路联网参数 }S_NET_CFG_T; typedef struct { //充电桩资产参数配置 U16_T u16_pile_power_limit; //整桩限制功率 kW U16_T u16_reserve; //预留 U16_T u16_reserve1; //预留 U16_T u16_reserve2; //预留 U16_T u16_reserve3; //预留 U16_T u16_reserve4; //预留 U8_T u8_reserve[12]; //预留 U8_T u8_pwd[NUM_16]; //维护密码,字符串类型-用户使用 U8_T u8_gunCnt; //枪号 PILE_TYPE u8_pile_type; //指一个终端几把枪!!!!! U8_T u8_terminal[GUN_MAX_CNT]; //终端地址,0是一体机,1~*是分体机号,一拖几 U8_T u8_gun_type[GUN_MAX_CNT]; //枪类型 0欧标枪 1国标枪 E_LED_TYPE e_ledType; //灯板类型, 0流水灯 1液冷6灯条方案 TIMEZONE_ENUM e_timeZone; //系统时区 0-25 默认20 东八区 U8_T u8_threshold_gunTemp; //枪温阈值 90 U8_T u8_soc_limit; //SOC阈值 U8_T u8_gun_power_limit[GUN_MAX_CNT];//枪充电功率限制 0表示不限制 单位kW U16_T u16_ratePow; //额定功率 kW U16_T u16_max_volt; //充电机的调压上值/电压上限 精度 0.1 U16_T u16_min_volt; //充电机的调压下值/电压下限 精度 0.1 U16_T u16_trickle_limit; //涓流充电停机阈值 U16_T u16_max_cur; //最大电流 250A 精度 0.1 //整流模块参数 -- U8_T u8_mdu_num; //充电模块数量 U8_T u8_MduType; //模块类型 U8_T u8_mduTemp_flag; //模块温度获取使能 U8_T u8_mdu_rated_pow; //模块额定功率 kw U16_T u16_mdu_max_vol; //模块最大电压 0.1V U16_T u16_mdu_max_cur; //模块最大电流 0.1A //网络参数配置 S_NET_CFG_T s_net_cfg; //电表数据 S_MEMET_PARA s_memter; //使能参数 U_ENABLE_FALG u_enable; }SYS_FIX_CFG_T; /* 可变配置数据,后续在这个结构中添加配置数据 */ typedef struct { S_FEE_MODEL s_fee_model; //费率类型 - sdk新协议96时段 S_SDK_DATA s_sdk_data; //sdk参数 char QRDisplay[GUN_MAX_CNT][150]; //二维码 char custom_ver[NUM_64]; //自定义版本号字符串 例如 V1.0.0 用于显示 char apn_str[NUM_32]; //apn设置 char ocpp_auth_key[NUM_32]; //OCPP鉴权密钥(AuthorizationKey) }SYS_VAR_CFG_T; /************************* 共享数据定义 ***************************************/ typedef struct { SYS_FIX_CFG_T t_sys_fix_cfg; //固定配置数据,此结构在最初确定后,不能再添加和减少变量 SYS_VAR_CFG_T t_sys_var_cfg; //可变配置数据,此结构可后续改变其中的变量 }SHARE_DATA_T; #pragma pack(pop) // 恢复之前的对齐状态 #endif