forked from gary/ems
2
0
Fork 0
sun_ems/ems_c/kernel/kit_data.h

861 lines
27 KiB
C
Raw Normal View History

2025-05-13 17:49:49 +08:00
/*****************************************************************************
* @copyright 1997-2010, . POWER SUPPLY CO., LTD.
* @file kit_data.h
* @brief
* @author Gary
* @date 2024-09-03
* @remark
*****************************************************************************/
#ifndef KIT_DATA_H
#define KIT_DATA_H
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdint.h>
#include <math.h>
#include <stdlib.h>
#include <unistd.h>
#define MAX_CODE_BUF_LEN 50 // 编号最大长度
#define MAX_NAME_BUF_LEN 100 // 名称最大长度
#define MAX_ADDR_BUF_LEN 200 // 地址最大长度
#define MAX_CONFIG_CONTENT_LEN 1200 // 协议配置内容最大长度
#define MAX_DEV_POINT_NUM_LEN 3000 // 同一设备下点位数组的最大长度
#define MAX_POINT_ID_LEN 100 // 点位Id最大长度
#define MAX_POINT_NAME_LEN 100 // 点位名称最大长度
#define MAX_POINT_VALUE_LEN 255 // 点位初始化值最大长度
#define MAX_POINT_ADDR_LEN 255 // 点位地址最大长度
#define MAX_DEV_POINT_MAP_LEND 500 // 协议整合设备数组
#define MAX_CLIENT_ID_LEN 50 // mqtt客户端Id最大长度
#define MAX_MQTT_USERNAME_LEN 50 // mqtt用户名最大长度
#define MAX_MQTT_PASSWORD_LEN 50 // mqtt密码最大长度
#define MAX_TOPIC_LEN 150 // mqtt主题最大长度
#define MAX_CERT_LEN 3000 // mqtt证书最大长度
#define MAX_IP_LEN 32 // ip地址最大长度
#define MAX_JSON_STR_LEN 10240 // JSON的Str最大长度
#define MAX_EXE_COUNT 86400 // 存储间隔最大个数
#define PATH_MAX_SIZE 128 // 地址最大长度
#define MAX_ADDR_LEN 255 // 串口地址最大长度
#define MAX_PV_DATE_LEN 6 // 削峰填谷日期最大长度
#define MAX_KEY_LEN 50 // 高级设置key最大长度
#define MAX_VALUE_LEN 100 // 高级设置value最大长度
#define MAX_UPGRADE_VERSION_LEN 10 // EMS升级版本最大长度
#define MAX_UPGRADE_PATH_LEN 200 // EMS升级包路径最大长度
#define MAX_UPGRADE_ERR_MSG_LEN 1000// EMS升级报错最大长度
// 模板类型类型枚举
typedef enum
{
kTemplate_Type_Start = 0, // 起始值
kTemplate_Type_Device = kTemplate_Type_Start, // 设备配置
kTemplate_Type_North, // 北向配置
kTemplate_Type_End // 结束值
} template_type_e; // 数据传输类型
// EMS设备配置类型枚举
typedef enum
{
kEms_Config_Start = 0, // 起始值
kEms_Config_Uart = kEms_Config_Start, // EMS的串口配置
kEms_Config_Net, // EMS的网口配置
kEms_Config_DI, // EMS的DI配置
kEms_Config_DO, // EMS的DO配置
kEms_Config_Wifi, // EMS的Wifi配置
kEms_Config_4G, // EMS的4G配置
kEms_Config_Rtc, // EMS的对时配置
kEms_Config_End // 结束值
} ems_dev_config_type_e; // 数据传输类型
// 点位配置的落库间隔
typedef enum
{
kStorage_Interval_1s = 1000, // 1秒
kStorage_Interval_2s = 2000, // 2秒
kStorage_Interval_3s = 3000, // 3秒
kStorage_Interval_4s = 4000, // 4秒
kStorage_Interval_5s = 5000, // 5秒
kStorage_Interval_6s = 6000, // 6秒
kStorage_Interval_7s = 7000, // 7秒
kStorage_Interval_8s = 8000, // 8秒
kStorage_Interval_9s = 9000, // 9秒
kStorage_Interval_10s = 10000, // 10秒
kStorage_Interval_15s = 15000, // 15秒
kStorage_Interval_20s = 20000, // 20秒
kStorage_Interval_30s = 30000, // 30秒
} storage_interval_type_e;
// 点位配置的数据类型枚举
typedef enum
{
Data_Type_Start = 0,
Uint8 = Data_Type_Start, //=0 无符号8位整形
Int8, //=1 有符号8位整形
Uint16, //=2 无符号16位整形
Int16, //=3 有符号16位整形
Uint32, //=4 无符号32位整形
Int32, //=5 有符号32位整形
Float32, //=6 32位单精度浮点数
Uint64, //=7 无符号64位整形
Int64, //=8 有符号64位整形
Float64, //=9 64位双精度浮点数
Data_Type_End
} data_type_e; // 数据传输类型
// 点位配置的分组枚举
typedef enum
{
kPoint_Group_Type_Start = 0, // 开始值
kPoint_YX = kPoint_Group_Type_Start, // 遥信
kPoint_YC, // 遥测
kPoint_YK, // 遥控
kPoint_YT, // 遥调
kPoint_LS, // 设置
kPoint_YM, // 遥脉
kPoint_SOE, // 故障
kPoint_Group_Type_End // 结束值
} point_group_type_e; // 数据传输类型
// 点位配置的读写特性枚举
typedef enum
{
kPoint_Atrribute_Start = 0, // 开始值
kPoint_Read_Only = kPoint_Atrribute_Start, // 只读
kPoint_Write_Only, // 只写
kPoint_Read_Write, // 读写
kPoint_Static, // 静态
kPoint_Atrribute_End // 结束值
} point_attribute_e; // 数据传输类型
// 大小端类型枚举
typedef enum
{
E_AB, // 大端模式
E_BA, // 小端模式
E_ABCD, // 大端模式
E_CDAB, // 小端字、大端字节
E_BADC, // 大端字、小端字节
E_DCBA, // 小端模式
E_ABCDEFGH, // 大端模式
E_GHEFCDAB, // 小端字、大端字节
E_BADCFEHG, // 大端字、小端字节
E_HGFEDCBA // 小端模式
} data_endian_e;
typedef enum
{
kSign_Share_Start = 0,
kSign_ShMem = kSign_Share_Start,
kSign_Redis,
kSign_MQ, // 消息队列
kSign_Share_End
} sign_share_type_e; // 实时库类型
typedef enum
{
E_STATUS_OK = 0,
E_STATUS_ERROR = 1,
} status_e; // 返回状态类型
// 主站通讯协议类型枚举
typedef enum
{
kProto_Master_Start = 0, // 起始值
kProto_ModbusTCP_Master, // Modbus TCP 主站
kProto_ModbusRTU_Master, // Modbus RTU 主站
kProto_DLT645TCP_Master, // DLT645 TCP 主站
kProto_IEC104_Master, // IEC 104 主站
kProto_IEC61850_Master, // IEC 61850 主站
kProto_CANbus_Master, // CANbus 主站
kProto_DLT645RTU_Master, // DLT645 RTU 主站
kProto_DI_Master, // DI 主站
kProto_DO_Master, // DO 主站
kProto_Master_End // 结束值
} protocol_type_master_e;
// 从站通讯协议类型枚举
typedef enum
{
kProto_Slave_Start = 0, // 起始值
kProto_ModbusTCP_Slave, // Modbus TCP 从站
kProto_ModbusRTU_Slave, // Modbus RTU 从站
kProto_DLT645TCP_Slave, // DLT645 TCP 从站
kProto_IEC104_Slave, // IEC 104 从站
kProto_IEC61850_Slave, // IEC 61850 从站
kProto_CANbus_Slave, // CANbus 从站
kProto_DLT645RTU_Slave, // DLT645 RTU 从站
kProto_DI_Slave, // DI 从站
kProto_DO_Slave, // DO 从站
kProto_MQTT_Slave, // MQTT
kProto_Slave_End // 结束值
} protocol_type_slave_e;
// 上报下发点位配置类型枚举
typedef enum
{
kUp_Dis_Cfg_Type_Start = 0, // 起始值
kUp_Dis_Cfg_Type_Up = kUp_Dis_Cfg_Type_Start, // 上报点位配置
kUp_Dis_Cfg_Type_Dis_Point, // 下发点位配置
kUp_Dis_Cfg_Type_End
} up_dis_config_type_e;
// 拓扑节点类型枚举
typedef enum
{
kMenu_Tree_Start = 0, // 起始值
kMenu_Tree_Virtual = kMenu_Tree_Start, // 虚拟节点
kMenu_Tree_Device, // 设备节点
kMenu_Tree_End
} menu_tree_e;
// Modbus功能码枚举定义
typedef enum
{
kModbus_Func_Start = 0, // 开始值
kModbus_F01_Read_Coil = 0x01, // 读取线圈寄存器
kModbus_F02_Read_Discrete_Input = 0x02, // 读取离散输入寄存器
kModbus_F03_Read_Hold_Reg = 0x03, // 读取保持寄存器
kModbus_F04_Read_Input_Reg = 0x04, // 读取输入寄存器
kModbus_F05_Write_S_Coil = 0x05, // 写入单个线圈寄存器
kModbus_F06_Write_S_Hold_Reg = 0x06, // 写单个保持寄存器
kModbus_F0F_Write_M_Coil = 0x0F, // 写多个线圈寄存器
kModbus_F10_Write_M_Hold_Reg = 0x10, // 写多个寄存器
kModbus_Func_end // 结束值
} modbus_func_e; // 数据传输类型
// 接入EMS的所有设备类型
typedef enum
{
kDev_Type_Start = 0, // 起始值
kDev_Type_EMS = kDev_Type_Start, // EMS本机 数量一个
kDev_Type_Pccmeter, // PCC电表 数量一个
kDev_Type_Bsmeter, // 储能电表 一般数量一个
kDev_Type_PCS, // PCS 数量 多个可配置
kDev_Type_BSU, // 电池堆 数量 多个可配置
kDev_Type_BCU, // 电池簇 数量 多个可配置
kDev_Type_Thsensor, // 温湿度传感器 数量 多个可配置
kDev_Type_DI_DO_Device, // DI/DO设备设备
kDev_Type_UPS, // UPS设备 一般数量一个
kDev_Type_AirCond_LiquidCool, // 空调/液冷机组
kDev_Type_WaterThsensor, // 水浸烟感传感器 数量 多个可配置
kDev_Type_Reserve1, // 预留类型1
kDev_Type_Reserve2, // 预留类型2
kDev_Type_Reserve3, // 预留类型3
kDev_Type_Reserve4, // 预留类型4
kDev_Type_Reserve5, // 预留类型5
kDev_Type_End
} dev_type_e;
// EMS总的工作模式
typedef enum
{
E_TACTIC_MODE_START, // 无
E_TACTIC_MODE_DEBUG, // 调试模式
E_TACTIC_MODE_PEAKVALLY, // 削峰填谷模式
E_TACTIC_MODE_DEMANDRES, // 需求响应模式
E_TACTIC_MODE_LOADTRACK, // 负载跟踪模式
E_TACTIC_MODE_DMDCTRL, // 需量控制
E_TACTIC_MODE_PFCTRL, // 功率因数
E_TACTIC_MODE_END
} work_mode_e;
// DI 高电平(有效)1 低电平 0
typedef enum
{
kDiFuc_Start = 0, // DI信号功能枚举开始
kDiFuc_WaterLowOn, // R 水浸传感器低(常开)
kDiFuc_WaterLowOff, // R 水浸传感器低(常闭)
kDiFuc_WaterHighOn, // R 水浸传感器高(常开)
kDiFuc_WaterHighOff, // R 水浸传感器高(常闭)
kDiFuc_EmergStopOn, // R 急停(常开)
kDiFuc_EmergStopOff, // R 急停(常闭)
kDiFuc_SmokeDetecOn, // R 烟感(常开)
kDiFuc_SmokeDetecOff, // R 烟感(常闭)
kDiFuc_TempSensorOn, // R 温感(常开)
kDiFuc_TempSensorOff, // R 温感(常闭)
kDiFuc_FireFeedbackOn, // R 消防触发反馈(常开)
kDiFuc_FireFeedbackOff, // R 消防触发反馈(常闭)
kDiFuc_AccessSensorOn, // R 门禁传感器(常开)
kDiFuc_AccessSensorOff, // R 门禁传感器(常闭)
kDiFuc_CircuitFeedOn, // R 交流断路器反馈(常开)
kDiFuc_CircuitFeedOff, // R 交流断路器反馈(常闭)
kDiFuc_AerosolGetOn, // 气溶胶触发反馈常闭
kDiFuc_FireAerosolGetOff, // 气溶胶触发反馈常开
kDiFuc_SurgeGetOn, // 浪涌辅助触点常闭
kDiFuc_SurgeGetOff, // 浪涌辅助触点常开
kDiFuc_FireFaultGetOn, // 消防故障常闭
kDiFuc_FireFaultGetOff, // 消防故障常开
kDiFuc_End // 结束
} diFuc_e;
// DO 高电平(有效)1 低电平 0
typedef enum
{
kDoFuc_Start = 0, // DO信号功能枚举起始
kDoFuc_NormalLight, // R/W 灯 常亮
kDoFuc_NormalLightBli, // R/W 灯 闪烁
kDoFuc_FaultLight, // R/W 故障灯 常亮
kDoFuc_FaultLightBli, // R/W 故障灯 闪烁
kDoFuc_CircuitTripping, // R/W 交流断路器分励脱扣
kDoFuc_CabinetFan, // R/W 机柜风扇
kDoFuc_FireConfirm, // R/W 消防触发确认
kDoFuc_FireTrigger, // R/W 消防触发 DO5 DO6同时置高电平才真的喷洒
kDoFuc_PutHigh, // R/W 输出高电平
kDoFuc_PutLow, // R/W 输出低电平
kDoFuc_End, // 结束
} doFuc_e;
// 指示类型枚举
typedef enum
{
kIndicate_Type_Start = 0, // 起始值
kIndicate_Light_Close, // 关闭
kIndicate_Light_Open, // 亮起
kIndicate_Light_Flicker, // 闪烁
kIndicate_Type_End
} indicate_type_e;
// dido类型
typedef enum
{
kDi_Do_Type_Start = 0, // 起始值
kDi = kDi_Do_Type_Start, // DI
kDo, // DO
// kLed, // LED
kReserve, // 保留
kDi_Do_type_End
} di_do_type_e;
// 北向配置类型
typedef enum
{
kNorth_Config_Type_Start = 0, // 起始值
kNorth_Config_Default = kNorth_Config_Type_Start, // 默认全部上传点位
kNorth_Config_Up, // 配置上传
kNorth_Config_Type_End
} north_config_type_e;
// 高级设置类型枚举
typedef enum
{
kAdvanced_Setting_Type_Start = 0, // 起始值
kEms_Mode = kAdvanced_Setting_Type_Start, // EMS工作模式
kLinux_Password, // Linux密码
kAdvanced_Setting_Type_End // 结束值
} advanced_setting_type_e;
// 波特率
typedef enum
{
kBaud_Start = 0,
kBaud_115200 = kBaud_Start,
kBaud_57600,
kBaud_38400,
kBaud_19200,
kBaud_9600,
kBaud_4800,
kBaud_2400,
kBaud_1800,
kBaud_1200,
kBaud_600,
kBaud_300,
kBaud_200,
kBaud_150,
kBaud_End
} baud_e;
// 校验位
typedef enum
{
kParity_Start = 0,
kParity_None = kParity_Start,
kParity_Odd,
kParity_Even,
kParity_Mark,
kParity_Space,
kParity_End
} parity_e;
// 停止位
typedef enum
{
kStop_Start = 0,
kStop_1 = kStop_Start,
kStop_2,
kStop_End
} stop_e;
// 数据位
typedef enum
{
kData_Start = 0,
kData_5 = kData_Start,
kData_6,
kData_7,
kData_8,
kData_End
} data_e;
// 流控制
typedef enum
{
kFlow_Start = 0,
kFlow_Disable = kFlow_Start,
kFlow_Hardware_Enable,
kFlow_Software_Enable,
kFlow_End
} flow_e;
// 温控模式
typedef enum
{
kTemperature_ctrl_Start = 0, // 起始值
kTemperature_ctrl_Ac = kTemperature_ctrl_Start, // 风冷模式(手动)
kTemperature_ctrl_Lc, // 液冷模式(手动)
kTemperature_auto_Ac, // 风冷模式(自动)
kTemperature_auto_Lc, // 液冷模式(自动)
kTemperature_ctrl_end // 结束值
} temperature_ctrl_mod_e;
// 版本升级状态
typedef enum
{
kUpgrade_Status_Start = 0, // 起始值
kUpgrade_Standby = kUpgrade_Status_Start, // 待升级
kUpgrade_Succ, // 升级成功
kUpgrade_Err, // 升级失败
kUpgrade_Status_end // 结束值
} upgrade_status_e;
// 串口驱动结构体
typedef struct uart_lib
{
uint8_t uartId; // COM口对应序号
uint8_t address[MAX_ADDR_LEN]; // 通道驱动地址
uint16_t uId; // 设备序号
data_e data; // 数据位
stop_e stop; // 停止位
baud_e baud; // 波特率
parity_e parity; // 校验位
flow_e flow; // 流控制
uint16_t timeout; // 超时时间(milisecond)
} kit_uart_lib_t;
// tcp client驱动结构体
typedef struct
{
uint8_t netId; // NET口对应序号
uint16_t uId; // 设备序号
char ip[MAX_IP_LEN]; // ip地址
uint32_t port; // 端口号
uint16_t timeout; // 超时时间(milisecond)
} kit_tcp_client_lib_t;
// 南向驱动协议的联合体
typedef union
{
kit_uart_lib_t uartLib; // uart串口协议
kit_tcp_client_lib_t tcpClientLib; // tcp client协议
} dev_protocol_u;
// 电站信息结构体
typedef struct
{
uint8_t name[MAX_NAME_BUF_LEN]; // 电站名称
uint8_t address[MAX_ADDR_BUF_LEN]; // 电站地址
float_t lng; // 经度
float_t lat; // 纬度
uint8_t timeZone[MAX_CODE_BUF_LEN]; // 时区
} station_t;
// EMS设备口配置结构体
typedef struct
{
uint32_t dbId; // 配置数据库Id
ems_dev_config_type_e type; // 配置类型
uint8_t content[MAX_CONFIG_CONTENT_LEN]; // 配置内容
} ems_dev_config_t;
// // EMS设备的串口配置结构体
// typedef struct
// {
// uint8_t uartId; // COM口对应序号
// uart_data_e data; // 数据位
// uart_stop_e stop; // 停止位
// uart_baud_e baud; // 波特率
// uart_parity_e parity; // 校验位
// uint16_t timeout; // 超时时间(milisecond)
// uint8_t address[MAX_ADDR_LEN]; // 通道驱动地址
// } ems_dev_uart_config_t;
// EMS设备的网口配置结构体
typedef struct
{
uint8_t netId; // 网口口对应序号
uint8_t isDHCP; // 是否动态分配
uint8_t ip[MAX_IP_LEN]; // ip地址
uint8_t mask[MAX_IP_LEN]; // 子网掩码
uint8_t gateway[MAX_IP_LEN]; // 网关地址
uint8_t address[MAX_ADDR_LEN]; // 通道驱动地址
} ems_dev_eth_config_t;
// EMS设备的DI配置结构体
typedef struct
{
uint8_t diId; // DI口对应序号
uint8_t validBit; // 有效位
uint8_t address[MAX_ADDR_LEN]; // 通道驱动地址
} ems_dev_di_config_t;
// EMS设备的DO配置结构体
typedef struct
{
uint8_t doId; // DO口对应序号
uint8_t validBit; // 有效位
uint8_t address[MAX_ADDR_LEN]; // 通道驱动地址
} ems_dev_do_config_t;
// EMS设备的系统时间配置结构体
typedef struct
{
uint8_t isNtp; // 是否ntp自动对时
uint16_t port; // 端口号
uint8_t address[MAX_ADDR_LEN]; // 对时ntp地址
uint8_t manualTime[22]; // "YYYY/DD/MM HH:MM:SS"
} ems_dev_rtc_config_t;
// 点位配置的结构体
typedef struct
{
uint32_t pointDbId; // 点位数据库Id
uint32_t pointId; // 点ID
storage_interval_type_e storageInterval; // 存储间隔
uint32_t devDbId; // 设备数据库Id
uint16_t devId; // 设备编号
uint16_t regAddr; // 寄存器地址
modbus_func_e func; // 功能码
point_group_type_e groupType; // 分组
dev_type_e devType; // 设备类型
data_type_e dataType; // 数据类型
point_attribute_e attribute; // 属性枚举
data_endian_e endian; // 字节序
uint8_t bitPos; // 位位置
uint8_t bitNum; // 位数量
uint8_t isPersisted; // 是否持久化0否1是
float_t precision; // 精度
float_t ratio; // 比例,使用 float 以表示小数
float_t offset; // 偏移量,使用 float 以表示小数
float_t mutateBound; // 变更边界
double_t value; // 采集值
float_t minValue; // 最小值
float_t maxValue; // 最大值
float_t defaultValue; // 默认值
uint8_t pointName[MAX_POINT_NAME_LEN]; // 点位名称
} point_t;
// 设备和点位结构体
typedef struct
{
protocol_type_master_e protocolType; // 协议类型
dev_type_e devType; // 设备类型
dev_protocol_u devProtocol; // 设备协议定义
uint32_t devDbId; // 设备数据库Id
uint16_t templateId; // 模板Id
uint16_t devId; // 设备编号
uint16_t pointNum; // 点位数量
uint16_t sortOrder; // 序号
point_t *pointArr; // 点位数组
uint8_t devName[MAX_NAME_BUF_LEN]; // 设备名称
} dev_info_t;
// 协议和设备数组关联结构体
typedef struct
{
// protocol_type_master_e protocolType; // 协议类型
uint16_t devNum; // 当前协议下设备数量
dev_info_t *devPointMapArr; // 协议整合设备数组
} proto_dev_point_map_t;
typedef struct
{
uint8_t uartCount;
proto_dev_point_map_t *uartProtoItem;
} uart_chan_proto_map_t;
// 实时数据定时存储的结构体
typedef struct
{
dev_type_e devType; // 设备类型
storage_interval_type_e storageInterval; // 存储间隔
uint32_t devDbId; // 设备数据库Id
uint32_t pointDbId; // 点位数据库Id
float_t timedValue; // 值
} timed_data_storage_t;
// 时序数据配置的结构体
typedef struct
{
dev_type_e devType; // 设备类型
storage_interval_type_e storageInterval; // 存储间隔
uint32_t devDbId; // 设备数据库Id
uint16_t devId; // 设备编号
uint32_t pointDbId; // 点位数据库Id
uint32_t pointId; // 点位编号
uint8_t devName[MAX_NAME_BUF_LEN]; // 设备名称
uint8_t pointName[MAX_POINT_NAME_LEN]; // 点位名称
} timed_data_config_t;
// 故障点位定时存储的结构体
typedef struct
{
dev_type_e devType; // 设备类型
uint32_t devDbId; // 设备数据库Id
uint16_t devId; // 设备编号
uint32_t pointDbId; // 点位数据库Id
uint32_t pointId; // 点位编号
float_t faultsValue; // 故障值
} faults_data_storage_t;
// 故障点位配置的结构体
typedef struct
{
dev_type_e devType; // 设备类型
uint32_t devDbId; // 设备数据库Id
uint16_t devId; // 设备编号
uint32_t pointDbId; // 点位数据库Id
uint32_t pointId; // 点位编号
uint8_t devName[MAX_NAME_BUF_LEN]; // 设备名称
uint8_t pointName[MAX_POINT_NAME_LEN]; // 点位名称
} faults_data_config_t;
// MQTT断点记录的结构体
typedef struct
{
uint64_t dbId; // 断点记录Id
uint8_t reason[MAX_NAME_BUF_LEN]; // 中断原因
uint8_t isUploaded; // 是否已全部上传
int startRow;
int endRow;
} break_record_t;
// MQTT断点数据存储的结构体
typedef struct
{
uint8_t isUploaded; // 是否已上传
uint64_t breakDbId; // 断点记录表数据库Id
uint8_t content[MAX_JSON_STR_LEN]; // 待上传的JSON串
} break_data_storage_t;
// 上报下发点位的结构体
typedef struct
{
uint16_t devId; // 设备编号
uint32_t pointId; // 点ID
dev_type_e devType; // 设备类型
uint8_t cloudCode[MAX_CODE_BUF_LEN]; // 云平台编号
uint8_t cloudName[MAX_NAME_BUF_LEN]; // 云平台名称
} up_dis_point_t;
// 功率数据的结构体
typedef struct
{
dev_type_e devType; // 设备类型
uint16_t devId; // 设备编号
uint32_t pointId; // 点ID
float_t value; // 值
} power_data_storage_t;
typedef struct
{
uint8_t clientId[MAX_CLIENT_ID_LEN]; // 客户端Id
uint8_t rootTopic[MAX_TOPIC_LEN]; // 初始化主题
uint8_t periodTopic[MAX_TOPIC_LEN]; // 周期上报主题
uint8_t changeTopic[MAX_TOPIC_LEN]; // 变化上报主题
uint8_t historyTopic[MAX_TOPIC_LEN]; // 历史主题
uint8_t controlTopic[MAX_TOPIC_LEN]; // 控制主题
uint8_t readTopic[MAX_TOPIC_LEN]; // 读取参数主题
uint8_t replycontrolTopic[MAX_TOPIC_LEN]; // 回复控制主题
uint8_t replyreadTopic[MAX_TOPIC_LEN]; // 回复读取参数主题
uint8_t tSendTaskPeriod; // 周期发送任务时间间隔
uint8_t url[MAX_IP_LEN]; // 服务器地址
uint8_t qos; // 通信质量
uint16_t port; // 服务器端口号
uint8_t username[MAX_MQTT_USERNAME_LEN]; // mqtt用户名
uint8_t password[MAX_MQTT_PASSWORD_LEN]; // mqtt密码
uint8_t caCert[MAX_CERT_LEN]; // CA证书
uint8_t x509Cert[MAX_CERT_LEN]; // x509证书
uint8_t keyCert[MAX_CERT_LEN]; // 密钥证书
bool isSsl; // 是否开启SSL
} mqtt_lib_t;
// 北向驱动协议的联合体
typedef union
{
mqtt_lib_t mqttLib; // mqtt协议
} north_protocol_u;
// 北向上传下发设备结构体
typedef struct
{
uint32_t northCfgDbId; // 北向配置数据库Id
uint16_t devId; // 设备编号
uint16_t upDisPointNum; // 上传下发点位数量
dev_type_e devType; // 设备类型
up_dis_point_t *upDisPointArr; // 上传下发点位数组
} up_dis_dev_t;
// 北向配置结构体
typedef struct
{
uint32_t dbId; // 数据库Id
north_config_type_e configType; // 北向配置类型
protocol_type_slave_e protocolType; // 协议类型
north_protocol_u northProtocol; // 北向协议定义
uint16_t upDevNum; // 上报设备数量
up_dis_dev_t *upDevArr; // 上报设备数组
uint16_t disDevNum; // 下发设备数量
up_dis_dev_t *disDevArr; // 下发设备数组
} north_config_t;
// 削峰填谷时段配置表结构体
typedef struct
{
uint32_t startTime; // 开始时间 单位秒
uint32_t endTime; // 结束时间 单位秒
float_t power; // 功率
} pv_time_config_t;
// 削峰填谷日期配置表结构体
typedef struct
{
uint8_t startDate[MAX_PV_DATE_LEN]; // 开始日期 单位日
uint8_t endDate[MAX_PV_DATE_LEN]; // 结束日期
uint8_t timeCfgLen; // 削峰填谷时段配置表长度
pv_time_config_t *timeCfgTab; // 削峰填谷时段配置表
} pv_date_config_t;
// 负载跟踪参数(未实现 暂放在这里)
typedef struct
{
float_t percent; // 负载跟踪百分比 10% = 0.1
} load_track_params_t;
// 需求响应参数(未实现 暂放在这里)
typedef struct
{
// 可配参数(未知)
} demand_res_params_t;
// EMS拓扑结构的结构体
typedef struct
{
menu_tree_e menuTree; // 节点类型
uint8_t name[MAX_NAME_BUF_LEN]; // 名称
uint8_t sn[MAX_CODE_BUF_LEN]; // 设备SN号
uint32_t dbId; // 数据库Id
int parentId; // 父Id
uint16_t sortOrder; // 序号
dev_type_e devType; // 设备类型
} topology_t;
// 保护算法的结构体
typedef struct
{
float_t transCapacity; // 变压器总容量(KW)
float_t olWarnLimitVal; // 过载预警限流值(KW)
float_t olShutdownVal; // 过载关机值(KW)
float_t maxPower; // 充放电功率上限
uint8_t demandSwitch; // 防需量开关
float_t targetDemand; // 目标需量(KW)
float_t deWarnLimitVal; // 需量预警限流值(KW)
float_t deShutdownVal; // 需量关机值(KW)
uint8_t backflowSwitch; // 防逆流开关
float_t bfWarnLimitVal; // 防逆流预警限流值(KW)
float_t bfShutdownVal; // 防逆流关机值(KW)
uint16_t socForbidChg; // 禁充SOC [55%-100%]
uint16_t socForbidDischg; // 禁放SOC [0%-45%]
uint32_t dbId; // 数据库Id
} protect_algorithm_t;
// 调试模式算法结构体
typedef struct
{
float_t activePower; // 目标有功功率(KW)
float_t reactivePower; // 目标无功功率(KW)
uint8_t pcsSwitch; // 充放电开关 1 开 0 关
uint8_t protectSwitch; // 保护算法开关 1 开 0 关
uint32_t dbId; // 数据库Id
} debug_algorithm_t;
// 功率分配的结构体
typedef struct
{
uint8_t allocateMode; // 下发功率模式总功率0分相功率1
uint8_t pcsNum; // pcs数量
int8_t chgDirection; // 充放电方向 1(正放 负充) -1(正充 负放)
uint32_t dbId; // 数据库Id
} allocate_power_t;
// 调试设置的结构体
typedef struct
{
work_mode_e workMode; // 工作模式
uint32_t dbId; // 数据库Id
} work_mode_set_t;
// DIDO逻辑设置的结构体
typedef struct
{
uint8_t dIDOseq; // DIDO序列号
uint8_t cabinetCode; // 柜子编号 0-9 最多十个柜子
di_do_type_e dIDOType; // DIDO类型
diFuc_e strategySeqDi; // DI策略序号
doFuc_e strategySeqDo; // DO策略序号
// indicate_type_e indicateType; // 指示的方式
} di_do_logic_set_t;
typedef struct
{
uint64_t dbId; // 数据库Id
/* 温度控制模式 */
temperature_ctrl_mod_e mod;
/* 工作温度 */
float_t workCoolTrigTemp; // 制冷触发温度
float_t workCoolHys; // 制冷回差
float_t workHeatTrigTemp; // 制热触发温度
float_t workHeatHys; // 制热回差
/* 静置温度(液冷) */
float_t standbyCoolTrigTemp; // 制冷触发温度
float_t standbyCoolHys; // 制冷回差
float_t standbyHeatTrigTemp; // 制热触发温度
float_t standbyHeatHys; // 制热回差
/* 静置自循环温度限制(液冷) */
float_t standbyMaxLimit; // 开启自循环高温
float_t standbyMinLimit; // 开启自循环低温
float_t standbyMaxbackLimit; // 自循环高温回温
float_t standbyMinbackLimit; // 自循环低温回温
/* 控制字 */
uint16_t tempCmdNormal; // 循环控制字
uint16_t tempCmdHeat; // 制热控制字
uint16_t tempCmdCold; // 制冷控制字
uint8_t tempCmdOpen; // 开控制字
uint8_t tempCmdClose; // 关控制字
} temp_ctrl_algorithm_t; // 温度控制参数
// 高级设置的结构体
typedef struct
{
uint8_t key[MAX_KEY_LEN]; // 设置项
uint8_t value[MAX_VALUE_LEN]; // 设置值
} advanced_setting_t;
// 升级记录的结构体
typedef struct
{
uint64_t dbId; // 数据库Id
uint8_t path[MAX_UPGRADE_PATH_LEN]; // 升级包路径
uint8_t errMsg[MAX_UPGRADE_ERR_MSG_LEN]; // 升级错误信息
upgrade_status_e status; // 升级状态
} upgrade_record_t;
#endif // KIT_DATA_H