oiltank.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #ifndef _OILTANK_H_
  2. #define _OILTANK_H_
  3. #define YB_SS160_SOH 0x01 //起始码<SOH>
  4. #define YB_SS160_EXT 0x03 //结束标志位
  5. #define YB_SS160_FCN_FLAG 0x2626//"&&"
  6. //波特率 9600,帧格式为:起始位 1, 数据位 8,停止位 1,共 10 位,无校验(N)。
  7. /*
  8. 1 i201 读储油罐状态及数据
  9. 读储油罐状态及数据,包括油罐的温度、水位、油位、水量、油量、标准油量等 信息。
  10. 2 i205 读储油罐报警信息
  11. 读取高低液位报警、水位过高报警、高低温度报警、油品泄漏报警、探针失灵报 警。
  12. 3 i20C 读储油罐最近一次进油报告
  13. 4 i501 读取系统时间
  14. 5 i602 读取油品数据
  15. 6 i607 读取油罐直径
  16. 7 s501 设置系统时间
  17. 8 i10100 系统状态
  18. */
  19. //SS160控制器后台通讯协发送
  20. typedef struct {
  21. unsigned char SOH; //协议头
  22. unsigned char FCN_CODE[6]; //本机地址
  23. unsigned char EXT; //功能码或命令字
  24. } BYTE1 RS232_YB_SS160_SEND;
  25. //SS160控制器后台通讯协接收
  26. typedef struct {
  27. u8 SOH; //协议头
  28. u8 FCN_CODE[4]; //实时数据命令为i201TT
  29. u8 FuelTank_No[2];
  30. //时间, YYMMDDHHmm 日期和时间(年/月/日/时/分)
  31. u8 year[2]; //年
  32. u8 month[2]; //月
  33. u8 date[2]; //日
  34. u8 hour[2]; //时
  35. u8 minute[2]; //分
  36. } BYTE1 RS232_YB_SS160_RECEIVE_HEAD;
  37. typedef struct {
  38. u8 TT[2]; //罐号(如果数字为 00,则返回所有油罐数据,如 果未 01 或 02 等油罐编码,则仅返回该油罐的一 组数据)
  39. u8 P; //产品代码(油品)
  40. u8 SSSS[4]; //油罐状态 Bit 位。Bit1:正在进油;Bit2:正在漏 油检测;Bit3:无效的高度报警(仅用于测试); bit4-16:未应用
  41. u8 NN[2]; //随后的浮点数个数
  42. //实际数据,共有7组,每组占8字节
  43. u8 TankVolume[8]; //1油水体积
  44. u8 NetVolume[8]; //2油水体积
  45. u8 CrossVolume[8]; //3剩余体积
  46. u8 Height[8]; //4油高
  47. u8 Water[8]; //5水高
  48. u8 Temp[8]; //6温度
  49. u8 WaterVolume[8]; //7水体积
  50. } BYTE1 I201_FUELTANK_DATA; //油罐数据
  51. typedef struct {
  52. u16 FCN_FLAG; //数据结束标志 固定值&&符号
  53. u32 CheckCode; //校验
  54. u8 EXT; //功能码或命令字
  55. } BYTE1 RS232_YB_SS160_RECEIVE_TAIL;
  56. #define YB_SS160_SEND_SIZE sizeof(RS232_YB_SS160_SEND)
  57. #define YB_SS160_RCV_HEADSIZE sizeof(RS232_YB_SS160_RECEIVE_HEAD)
  58. #define YB_SS160_RCV_DATASIZE sizeof(I201_FUELTANK_DATA)
  59. #define YB_SS160_RCV_TAILSIZE sizeof(RS232_YB_SS160_RECEIVE_TAIL)
  60. typedef struct _oiltank_info {
  61. u32 id;
  62. u32 quality;
  63. u32 volume;
  64. u32 oil_volume;
  65. u32 water_volume;
  66. u32 temperature;
  67. u32 height;
  68. /* 监控有效性 */
  69. u32 valid_num;
  70. } oiltank_info_t ;
  71. #define OILTANK_VALID_COUNT 16
  72. typedef struct _system_oiltank_info {
  73. uint32_t current;
  74. uint32_t valid;
  75. oiltank_info_t oiltank[OILTANK_VALID_COUNT];
  76. } system_oiltank_info_t;
  77. extern system_oiltank_info_t system_oiltank;
  78. typedef struct _gb_oiltank_header {
  79. uint32_t device_type;
  80. uint32_t device_id;
  81. uint8_t device_status;
  82. uint8_t oiltank_count;
  83. } gb_oiltank_header_t;
  84. #define GB_OILTANK_HEADER_LEN 10
  85. #define GB_OILTANK_INFO_LEN 28
  86. #define OILTANK_MSG_PERIOD 10
  87. #define OILTANK_UART UART4_ID
  88. typedef enum OIL_QUALITY{
  89. QUALITY_90, //90#汽油
  90. QUALITY_92,//93#汽油
  91. QUALITY_95,//95#汽油
  92. QUALITY_98,//97#汽油
  93. QUALITY_0,//0#柴油
  94. QUALITY_10,//10#柴油
  95. QUALITY_NEG_10,//-10#柴油
  96. QUALITY_NEG_20,//-20#柴油
  97. QUALITY_NEG_35,//-35#柴油
  98. QUALITY_NEG_50,//-50#柴油
  99. } OIL_QUALITY;
  100. void oiltank_polling(void);
  101. int oiltank_init(void);
  102. #endif