#ifndef __PD_HF_H__ #define __PD_HF_H__ #ifdef CFG_DEV_TYPE_LAND_PD /* Includes ------------------------------------------------------------------*/ #include "pd_dau.h" #define HF_DATA_LEN (1300) /*趋势上送数据报文头c语言定义*/ enum HF_TREND_TYPE { HF_TREND_TYPE_PRPD = 0, // 累计PRPD HF_TREND_TYPE_ORIG, // 原始波形 HF_TREND_TYPE_PRPS, // 后10秒PRPS HF_TREND_TYPE_STAT, // 统计数据 HF_TREND_TYPE_MAX, }; /* 点位数据 */ typedef struct { uint16_t index; // 点位 int16_t data; // 数据 } hf_data_point_t; /* 一般应答 */ typedef struct { uint8_t result; // 应答结果. 0:失败 1:成功 uint8_t slot; // slot id uint8_t reserved[2]; // 保留 } hf_ack_t; /* 设备信息 */ typedef struct { uint8_t type_m; // 主设备号 uint8_t type_s; // 次设备号 uint8_t reserved1[2]; // 保留 uint32_t dev_id; // 设备ID char hostname[FILE_NAME_LEN]; // 设备名 128byte uint32_t factory_date; // 出厂日期. uint32_t deployment_date; // 部署日期. uint8_t app_version[DEV_VERSION_STR_LEN]; // 软件版本 uint8_t app_compile_time[DEV_VERSION_STR_LEN]; // 软件编译时间 uint8_t hardware_version[DEV_VERSION_STR_LEN]; // 硬件版本 uint8_t FPGA_version[DEV_VERSION_STR_LEN]; // fpga版本 uint32_t ip; // 本机 IP. uint32_t mask; // 本机 MASK. uint32_t gw; // 本机网关 uint8_t mac[6]; // MAC地址. uint16_t server_port; // 服务器端口号. uint32_t server_ipv4; // 服务器 IP. } hf_dev_info_t; /* 心跳报文. */ typedef struct { float freq; // 实测同步源工频频率. uint8_t dau_state[4]; // 采集模块的状态. uint8_t out_sync; // 外接调频同步 1: 有效 0: 无效. uint8_t pt_sync; // PT同步 1: 有效 0: 无效. uint8_t in_sync; // 内同步 1: 有效 0: 无效. uint8_t reserved1; // 预留 字节对齐. uint8_t port_link_alarm[PD_PORT_SUM]; // 通道传感器连接状态 断线告警. uint8_t dau_port_num[4]; // 采集板端口数量. } hf_heartbeat_t; /* 全局配置 */ typedef struct { uint16_t power_frequency; // 工频频率, 单位: 0.1Hz uint16_t trend_period; // 趋势数据上送周期, 单位: 秒. uint8_t sync_mode; // 同步方式 1: PT 同步 2: 内同步(默认) 3: 外接信号同步. uint8_t heartbeat_period; // 心跳包周期, 单位: 分钟. uint8_t pps_mode; // pps 主从模式 PD_PPS_XXX. uint8_t protocol_type; // 0:朗德协议 1:南网协议 uint16_t trend_storage; // 趋势存储文件数量阈值 uint16_t event_storage; // 事件存储文件数量阈值 } hf_cfg_t; /* 端口配置 */ typedef struct { uint8_t vport; // 通道编号. uint8_t port_type; // 采集通道类型 , 1 表示特高频局放 2 表示超声局放 3 表示 TEV 4 表示高频. uint8_t filter; // 滤波器类型 1: 低频段 2: 全频段 3: 窄频段 4: 高频段 uint8_t sensor_type; // 0: 无配置; 1: UHF信号传感器; 2: UHF噪声传感器 ; 3: UHF信号传感器, 关联噪声降噪. uint8_t is_auto_noise; // 是否自动调整降噪等级. uint8_t denoise_type; // 0-无配置 1-自动 2-手动降噪 uint16_t denoise_variance; // 方差降噪系数, 单位: 1% uint32_t event_counter_h; // 事件次数阀值高. uint16_t event_sec_h; // 事件每秒次数阀值高. uint16_t event_thr_h; // 事件值阈值高. uint32_t event_counter_thr_h; // 事件值阈值高的次数. uint32_t event_counter_l; // 事件次数阀值低. uint16_t event_sec_l; // 事件每秒次数阀值低. uint16_t event_thr_l; // 事件值阈值低. uint32_t event_counter_thr_l; // 事件值阈值低的次数. uint8_t burst_time; // 事件突发计算时间 uint8_t reserved1[1]; uint16_t burst_thr; // 事件突发阈值 int16_t denoise_manual; // 手动底噪等级 int16_t denoise_auto; // 自动降噪水平 } hf_cfg_port_t; /* 端口配置回复 */ typedef struct { uint8_t vport; // 通道编号. uint8_t result; // 应答结果. 0:失败 1:成功 uint8_t slot; // slot id uint8_t reserved[1]; // 保留 } hf_cfg_port_ack_t; /* 实时图谱关注 */ typedef struct { uint8_t vport; // 通道编号 1 ~ 8 uint8_t is_concern; // 关注 1: 关注 0: 取消关注 uint8_t filter; // 滤波器类型 uint8_t denoise_correlation; // 关联降噪 1: 关联噪声去噪 uint8_t denoise_type; // 0-无配置 1-自动 2-手动降噪 uint8_t reserved[1]; uint16_t denoise_manual; // 手动降噪等级 } hf_prps_get_t; /* 实时图谱报文头 */ typedef struct { uint16_t index; // 每10包传完之后自动自加,用于区分当前包结束. uint8_t pkt_sum; // 总包数 10. uint8_t pkt_index; // 当前包数 0 ~ 9. uint16_t fre_cnt; // 工频周期计数. uint8_t vport; // 通道编号. uint8_t reserved1[1]; int16_t max; int16_t avg; uint32_t cnt; uint32_t utc; float freq; // 频率. uint32_t len; } hf_prps_head_t; /* 实时图谱结构体 */ typedef struct { hf_prps_head_t head; int16_t prps[PD_PRPS_NUM_MAX]; // 1s prps 降噪数据. } hf_prps_t; /* 趋势头 */ typedef struct { uint16_t index; // 包索引 uint16_t sum; // 总包数 uint8_t type; // 数据类型 0:prpd 1:原始波形 2:10秒prps 3:统计数据 uint8_t vport; // 通道号 uint8_t boosterpack; // 是否补包 0:否 1:是 uint8_t reserved[1]; // 保留 uint32_t identifier; // 数据编号 uint32_t utc; // 同步时间 uint32_t len; // 当前包长度 } hf_trend_head_t; /* 趋势应答 */ typedef struct { uint32_t index; uint8_t result; uint8_t boosterpack; // 是否补包 0:否 1:是 uint8_t reserve[2]; } hf_trend_ack_t; /* 趋势统计 */ typedef struct { uint16_t data_cnt; // 数据计数 int16_t max; // 通道的最大值 uint16_t reserved; // 保留 uint16_t avg; // 通道的平均值 uint32_t cnt; // 通道的计数值 uint32_t phase; // 放电相位 uint32_t noise; // 趋势数据中的底噪值: 单位 dBm uint32_t event_cnt; // 趋势数据中的的事件数量记录 } hf_trend_stat; /* 趋势统计结构体 */ typedef struct { uint32_t index; // 数据编号: 0 - (2^32-1) 循环. uint32_t utc; // UTC 时标. hf_trend_stat port[PD_DAU_PORT_SUM]; // 通道 0 - 15 的计算及测量数据. } hf_trend_col_t; /* 趋势 PRPD 结构体 */ typedef struct { uint16_t data[PD_PHASE_NUM][PD_VAULE_NUM]; } hf_trend_prpd_port_t; /* 趋势 PRPD 结构体 */ typedef struct { pd_trend_prpd_port_t port[PD_DAU_PORT_SUM]; } hf_trend_prpd_t; /* 趋势 PRPS 结构体 */ typedef struct { uint32_t point_cnt; // 数据累计点数. hf_data_point_t point[PD_TREND_POINT_MAX]; } hf_trend_prps_port_t; /* 趋势 PRPS 结构体 */ typedef struct { hf_trend_prps_port_t port[PD_DAU_PORT_SUM]; } hf_trend_prps_t; /* 高频趋势数据 */ typedef struct { hf_trend_col_t col; hf_trend_prpd_t prpd; hf_trend_prps_t prps; } hf_trend_t; /* 事件头 */ typedef struct { uint16_t index; // 包索引 uint16_t sum; // 总包数 uint8_t vport; // 通道号 uint8_t boosterpack; // 是否补包 0:否 1:是 int16_t max; // 通道的最大值. uint32_t power_fre; // 工频周期. uint8_t type; // 事件类型. uint8_t reserved[3]; // 保留 uint32_t identifier; // 数据编号: 0 - (2^32-1) 循环. uint32_t utc; // UTC 时标. uint32_t cnt; // 通道每秒脉冲计数值. uint16_t avg_o; // 通道原始信号 (降噪前) 的平均值. uint16_t avg; // 脉冲平均值. uint32_t point_cnt; // 数据累计点数 uint32_t len; // 当前包长度 } hf_event_head_t; /* 事件应答 */ typedef struct { uint32_t index; uint8_t result; uint8_t boosterpack; // 是否补包 0: 否 1: 是 uint8_t reserve[2]; } hf_event_ack_t; /* 高频事件数据 */ typedef struct { hf_event_head_t head; hf_data_point_t point[PD_EVENT_POINT_MAX]; } hf_event_t; /* 高频私有数据 */ typedef struct { hf_heartbeat_t run_status; hf_event_t event; hf_prps_t *prps; hf_trend_t trend; } hf_data_t; extern int32_t hf_recv_process(uint8_t slot, char *pkt, uint16_t len); extern int32_t hf_send_process(uint8_t slot, uint8_t type, void *data); extern void* hf_data_malloc(void); #endif #endif