#ifndef _PROTO_PM100_H_ #define _PROTO_PM100_H_ #include "main.h" #include "algo_queue.h" /*数据帧格式 STX TEXT ETX SUM CR*/ #define PROTO_PM100_FRAME_STRUCT_STX (0x02) #define PROTO_PM100_FRAME_STRUCT_ETX (0x03) #define PROTO_PM100_FRAME_STRUCT_CR (0x0D) /*设备*/ #define PROTO_PM100_DEV_MP 0 /*主泵*/ #define PROTO_PM100_DEV_BP 1 /*增加泵*/ #define PROTO_PM100_MODE_NORMAL 0 /*NORMAL 正常*/ #define PROTO_PM100_MODE_POWER_SAVING 1 /*POWER-SAVING 节能*/ #define PROTO_PM100_MODE_RUN 0 /*设备运行*/ #define PROTO_PM100_MODE_ALARM 1 /*设备报警*/ #define PROTO_PM100_MODE_PE 2 #define PROTO_PM100_MODE_IDIE 3 /*设备空闲/停止*/ #define PROTO_PM100_MODE_OFFLINE 4 /*设备离线*/ #define PROTO_PM100_MODE_ONLINE 5 /*设备在线*/ #define PROTO_PM100_MODE_RUNING 0 /*运行*/ #define PROTO_PM100_MODE_STOP 1 /*停止*/ #define PROTO_PM100_DEV_CHAR_MP ('M') /*主泵*/ #define PROTO_PM100_DEV_CHAR_BP ('B') /*增加泵*/ #define PROTO_PM100_MODE_CHAR_NORMAL ('N') /*NORMAL 正常*/ #define PROTO_PM100_MODE_CHAR_POWER_SAVING ('S') /*POWER-SAVING 节能*/ #define PROTO_PM100_MODE_CHAR_RUNING ('R') /*运行*/ #define PROTO_PM100_MODE_CHAR_STOP ('S') /*停止*/ /*指令*/ /*字符串*/ #define PROTO_PM100_CMD_STR_START ("S20") /*启动*/ #define PROTO_PM100_CMD_STR_STOP ("S21") /*停止*/ #define PROTO_PM100_CMD_STR_RESET ("S22") /*复位*/ #define PROTO_PM100_CMD_STR_SET_MODE ("S23") /*设置泵模式:NORMAL/POWER-SAVING 正常/节能*/ #define PROTO_PM100_CMD_STR_SET_SPEED ("S24") /*设置转速模式:NORMAL/POWER-SAVING 正常/节能*/ #define PROTO_PM100_CMD_STR_GET_DATA ("M20") /*读取用户选择的模拟量*/ #define PROTO_PM100_CMD_STR_GET_STATE_ALARM ("M21") /*读取运行状态与报警*/ #define PROTO_PM100_CMD_STR_SET_OK ("OK") /*设置成功*/ #define PROTO_PM100_CMD_STR_SET_NG ("NG") /*设置失败*/ #define PROTO_PM100_CMD_STR_SET_END ("END") /*发送结束*/ /*CMD*/ #define PROTO_PM100_CMD_START 0 /*启动*/ #define PROTO_PM100_CMD_STOP 2 /*停止*/ #define PROTO_PM100_CMD_RESET 3 /*复位*/ #define PROTO_PM100_CMD_SET_MODE 4 /*设置泵模式:NORMAL/POWER-SAVING 正常/节能*/ #define PROTO_PM100_CMD_SET_SPEED 5 /*设置转速模式:NORMAL/POWER-SAVING 正常/节能*/ #define PROTO_PM100_CMD_GET_DATA 6 /*读取用户选择的模拟量*/ #define PROTO_PM100_CMD_GET_STATE_ALARM 7 /*读取运行状态与报警*/ #define BP_ON ("BPON") /*bp启动*/ #define MP_ON ("MPON") /*mp启动*/ #define ALL_RESET ("ALLRESET") /*重置*/ #define BP_STOP ("BPSTOP") /*bp停止*/ #define MP_STOP ("MPSTOP") /*mp停止*/ #define NORMAL ("N") /*正常模式*/ #define POWER_SAVE ("S") /*节能模式*/ #define MP_NORMAL_SPEED ("MN") /*mp正常模式转速*/ #define MP_SAVE_SPEED ("MS") /*mp节能模式转速*/ #define BP_NORMAL_SPEED ("BN") /*bp正常模式转速*/ #define BP_SAVE_SPEED ("BS") /*bp节能模式转速*/ #define PROTO_PM100_GET_DATA_CODE (0x007FD9FF)/*获取哪些实数数据*/ #define PROTO_PM100_ERROR_CODE_TIMEOUT (0x0001)/*通讯超时*/ /*PM100模拟量数据*/ typedef struct { float Total_running_time; /*H*/ float BP_power ; /*KW*/ float MP_power ; /*KW*/ float BP_motor_speed ; /*K/min*/ float MP_motor_speed ; /*K/min*/ float BP_current ; /*A*/ float MP_current ; /*A*/ float BP_casing_temp ; /*℃*/ float MP_casing_temp ; /*℃*/ float Reserved_1[2] ; /* */ float Cooling_water_flow; /*L/min*/ float Pump_N2_flow ; /*Pam3/s*/ float Reserved ; /* */ float Back_pressure_1 ; /*KPa*/ float Heater1 ; /*℃*/ float Heater2 ; /*℃*/ float Heater3 ; /*℃*/ float Heater4 ; /*℃*/ float Vacuum_pressure ; /*KPa*/ float Cooler_1 ; /*℃*/ float Cooler_2 ; /*℃*/ float Cooler_3 ; /*℃*/ float Reserved_2[9] ; /*H*/ }proto_PM100_AnalogData_t; typedef struct { u8 Sys_State; u8 Dev; u8 Mode; u16 Speed; u32 Analog_Code; /*获取哪些模拟量数据*/ }proto_PM100_Set_Data_t; typedef struct { u8 Run_Status; u8 MP_Status; u8 BP_Status; u32 Warming_Code; /*设备状态码*/ u32 Alarm_Code; /*报警状态码*/ char alarm_start_str[32][15]; // 报警开始时间字符串 YYYYMMDDHHMMSS char warning_start_str[32][15]; // 警告开始时间字符串 u32 alarm_start_sec[32]; // 报警开始秒数(基准2000-01-01) u32 warning_start_sec[32]; // 警告开始秒数 }proto_Opera_Status_t; typedef struct { queue Sys_StateQueue; /*状态队列*/ u8 Sys_State; /*协议程序运行状态*/ u8 SendTime; /*指令发送次数*/ proto_PM100_AnalogData_t AnalogData; u16 time_out_count; /*超时计数*/ u32 error_code; /*设备状态*/ struct { u8 FirstFlag; u8 EndFlag; u16 CountTime; }AnalogData_Control; /*读取模拟数据相关的控制参数*/ struct { u64 Code_Last; /*上一次的报警值*/ u16 StartTime; /*计时*/ void (*Reset)(void); /*复位报警,不再上发*/ }Alarm_Control; /*报警上发的相关数据*/ proto_PM100_Set_Data_t Set_Data; /*设置的参数*/ proto_Opera_Status_t Opera_Status; struct { proto_Opera_Status_t Opera_Status_Last; /*上一次的设备状态*/ u16 StartTime; /*计时*/ void (*Reset)(void); /*更新状态,不再上发*/ }Dev_Status_Control; /*设备状态控制*/ struct { void (*Start)(u8); /*启动*/ void (*Stop)(u8); /*停止*/ void (*Reset)(void); /*复位*/ void (*Set_Mode)(u8); /*设置泵模式:NORMAL/POWER-SAVING 正常/节能*/ void (*Set_Speed)(u8,u8,u16); /*设置转速模式:NORMAL/POWER-SAVING 正常/节能*/ }Control; void (*Init)(void); void (*Rx_Task)(u8 *,u16,void *); void (*Tx_Task)(void); }proto_PM100_t; extern proto_PM100_t PM100; extern char *proto_PM100_Str_WarmingCode[32]; extern char *proto_PM100_Str_AlarmCode[32]; #endif