#ifndef _OILTANK_H_ #define _OILTANK_H_ #define YB_SS160_SOH 0x01 //起始码 #define YB_SS160_EXT 0x03 //结束标志位 #define YB_SS160_FCN_FLAG 0x2626//"&&" //波特率 9600,帧格式为:起始位 1, 数据位 8,停止位 1,共 10 位,无校验(N)。 /* 1 i201 读储油罐状态及数据 读储油罐状态及数据,包括油罐的温度、水位、油位、水量、油量、标准油量等 信息。 2 i205 读储油罐报警信息 读取高低液位报警、水位过高报警、高低温度报警、油品泄漏报警、探针失灵报 警。 3 i20C 读储油罐最近一次进油报告 4 i501 读取系统时间 5 i602 读取油品数据 6 i607 读取油罐直径 7 s501 设置系统时间 8 i10100 系统状态 */ //SS160控制器后台通讯协发送 typedef struct { unsigned char SOH; //协议头 unsigned char FCN_CODE[6]; //本机地址 unsigned char EXT; //功能码或命令字 } BYTE1 RS232_YB_SS160_SEND; //SS160控制器后台通讯协接收 typedef struct { u8 SOH; //协议头 u8 FCN_CODE[4]; //实时数据命令为i201TT u8 FuelTank_No[2]; //时间, YYMMDDHHmm 日期和时间(年/月/日/时/分) u8 year[2]; //年 u8 month[2]; //月 u8 date[2]; //日 u8 hour[2]; //时 u8 minute[2]; //分 } BYTE1 RS232_YB_SS160_RECEIVE_HEAD; typedef struct { u8 TT[2]; //罐号(如果数字为 00,则返回所有油罐数据,如 果未 01 或 02 等油罐编码,则仅返回该油罐的一 组数据) u8 P; //产品代码(油品) u8 SSSS[4]; //油罐状态 Bit 位。Bit1:正在进油;Bit2:正在漏 油检测;Bit3:无效的高度报警(仅用于测试); bit4-16:未应用 u8 NN[2]; //随后的浮点数个数 //实际数据,共有7组,每组占8字节 u8 TankVolume[8]; //1油水体积 u8 NetVolume[8]; //2油水体积 u8 CrossVolume[8]; //3剩余体积 u8 Height[8]; //4油高 u8 Water[8]; //5水高 u8 Temp[8]; //6温度 u8 WaterVolume[8]; //7水体积 } BYTE1 I201_FUELTANK_DATA; //油罐数据 typedef struct { u16 FCN_FLAG; //数据结束标志 固定值&&符号 u32 CheckCode; //校验 u8 EXT; //功能码或命令字 } BYTE1 RS232_YB_SS160_RECEIVE_TAIL; #define YB_SS160_SEND_SIZE sizeof(RS232_YB_SS160_SEND) #define YB_SS160_RCV_HEADSIZE sizeof(RS232_YB_SS160_RECEIVE_HEAD) #define YB_SS160_RCV_DATASIZE sizeof(I201_FUELTANK_DATA) #define YB_SS160_RCV_TAILSIZE sizeof(RS232_YB_SS160_RECEIVE_TAIL) typedef struct _oiltank_info { u32 id; u32 quality; u32 volume; u32 oil_volume; u32 water_volume; u32 temperature; u32 height; /* 监控有效性 */ u32 valid_num; } oiltank_info_t ; #define OILTANK_VALID_COUNT 16 typedef struct _system_oiltank_info { uint32_t current; uint32_t valid; oiltank_info_t oiltank[OILTANK_VALID_COUNT]; } system_oiltank_info_t; extern system_oiltank_info_t system_oiltank; typedef struct _gb_oiltank_header { uint32_t device_type; uint32_t device_id; uint8_t device_status; uint8_t oiltank_count; } gb_oiltank_header_t; #define GB_OILTANK_HEADER_LEN 10 #define GB_OILTANK_INFO_LEN 28 #define OILTANK_MSG_PERIOD 10 #define OILTANK_UART UART4_ID typedef enum OIL_QUALITY{ QUALITY_90, //90#汽油 QUALITY_92,//93#汽油 QUALITY_95,//95#汽油 QUALITY_98,//97#汽油 QUALITY_0,//0#柴油 QUALITY_10,//10#柴油 QUALITY_NEG_10,//-10#柴油 QUALITY_NEG_20,//-20#柴油 QUALITY_NEG_35,//-35#柴油 QUALITY_NEG_50,//-50#柴油 } OIL_QUALITY; void oiltank_polling(void); int oiltank_init(void); #endif