190 lines
7.3 KiB
C
190 lines
7.3 KiB
C
#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
|