| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #ifndef _OILTANK_H_
- #define _OILTANK_H_
- #define YB_SS160_SOH 0x01 //起始码<SOH>
- #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
|