Files
secs2-bootloader/usr/protocol/proto_PM100.h

190 lines
7.3 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.

#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