ems/ems_c/kernel/kit_data.h

861 lines
27 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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