ZNY_Pakistan/Anjiehui7_ZNY/User/def_data.h

745 lines
21 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.

/*
*********************************************************************************************************
* IAR Development Kits
* on the
*
* Nano130
*
* Filename : def_data.h
* Version : V1.00
* Programmer(s) : Qian Xianghong
*********************************************************************************************************
*/
#ifndef USER_DEF_DATA_PRESENT
#define USER_DEF_DATA_PRESENT
#include "type.h"
// 允许匿名结构
#pragma anon_unions
#pragma pack(push, 1)
// 电容版本用Pcap04测量
#define _USE_PCAP04_CHIP_
////////////////////////////////////////////////////////////////////////////////////////
// 以下版本定义必须且只能选择一个
//#define _PRAXAIR_TTS_VER_ // 普莱克斯
//#define _PRAXAIR_DOL_VER_ // 普莱克斯改造
//#define _YINGDE_TTS_VER_ // 盈德
//#define _YINGDE_DOL_VER_ // 盈德改造
//#define _LINDE_HTTPS_CHARGE_VER_ // 林德充电
//#define _LINDE_HTTPS_VER_ // 林德TTS
//#define _MESSER_TTS_VER_ // 梅塞尔
//#define _FAYEKONG_TTS_VER_ // 法液空
//#define _BAOGANG_TTS_VER_ // 宝钢
//#define _FUSHIKANG_TTS_VER_ // 富士康
//#define _ZHONGHAIYOU_BOX_VER_ // 中海油罐箱-PT1000-3线
//#define _BOX_500_2_VER_ // 罐箱-PT500-2线
//#define _BOX_1000_2_VER_ // 罐箱-PT1000-2线
//#define _BOX_1000_3_VER_ // 罐箱-PT1000-3线
//#define _CAOCHE_VER_ // 槽车
#define _LANSHI_TTS_VER_ // 兰石
//#define _CHATE_TTS_VER_ // 查特(散户)
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// 以下定义不要修改,由上面选择的唯一版本决定
#if defined(_PRAXAIR_TTS_VER_) || defined(_PRAXAIR_DOL_VER_)
#define _DISP_MMWC_ONLY_ // 只显示差压mmWC
#define _PRAXAIR_SERVER_ // 普莱克斯服务器
#endif
#if defined(_LINDE_HTTPS_CHARGE_VER_) || defined(_LINDE_HTTPS_VER_)
#define _DISP_MMWC_ONLY_ // 只显示差压mmWC
#define _LINDE_SERVER_ // 林德服务器https
#endif
#if defined(_CHATE_TTS_VER_)
#define _DISP_MMWC_ONLY_ // 只显示差压mmWC
#endif
#ifdef _FUSHIKANG_TTS_VER_
#define _FUSHIKANG_SERVER_ // 富士康服务器
#endif
#ifdef _ZHONGHAIYOU_BOX_VER_
#define _ZHONGHAIYOU_SERVER_ // 中海油服务器mqtt
#endif
#ifdef _LANSHI_TTS_VER_
#define _LANSHI_SERVER_ // 兰石服务器
#endif
#if defined(_PRAXAIR_DOL_VER_) || defined(_YINGDE_DOL_VER_)
#define _DOL_VER_ // 改造版
#endif
#if defined(_BOX_500_2_VER_) || defined(_BOX_1000_2_VER_) || defined(_BOX_1000_3_VER_) || defined(_ZHONGHAIYOU_BOX_VER_)
#define _BOX_VER_ // 罐箱
#define _CELL_LOCATION_ // 基站定位在GPS定位失败的情况下
#endif
#if !defined(_DOL_VER_) && !defined(_BOX_VER_) && !defined(_CAOCHE_VER_) && !defined(_LANSHI_CAOCHE_VER_) && !defined(_LANSHI_TTS_VER_) && !defined(_LINDE_HTTPS_CHARGE_VER_) && !defined(_CHATE_TTS_VER_)
#define _LEVEL_SENSOR_ONLY_ // 只有差压传感器
#endif
#define _USE_PT100_SENSOR_ // 用PT100温度传感器相对4~20mA温度传感器
#ifdef _BOX_500_2_VER_
#define _PT100_MULTI_ 5 // 电阻放大倍数PT100/PT500/PT1000)
#else
#define _PT100_MULTI_ 10 // 电阻放大倍数PT100/PT500/PT1000)
#endif
#if defined(_USE_PT100_SENSOR_) && !defined(_BOX_500_2_VER_) && !defined(_BOX_1000_2_VER_)
#define _PT100_3LINE_ // 三线制电阻测量
#define _DIFF_RESIST_ // 差分测量电阻
#endif
#ifdef _CAOCHE_VER_
#define _SEND_GPS_DATA_ // 发送轨迹数据
#endif
// MQTT/HTTPS/HTTP服务器列表
extern const char SERVER_URLs[][200];
////////////////////////////////////////////////////////////////////////////////////////
// 本机主板号
extern const uint8_t CONFIG_BOARD_SELF;
// 存储标识="LS"
#define CONFIG_MARK_LS (('S' << 8) | 'L')
// 产品标识="CY"
#define CONFIG_PRODUCT_CY (('Y' << 8) | 'C')
// 初始化标识
#define CONFIG_FLAG_NOT_INITED 0
#define CONFIG_FLAG_INITED 1
// 主板标识
#define CONFIG_BOARD_SINGLE 0 // 一体式
#define CONFIG_BOARD_SAMPLE 1
#define CONFIG_BOARD_POWER 2
#define CONFIG_BOARD_DISPLAY 3
#define CONFIG_BOARD_BLUETOOTH 4
// 数据编码DC
#define CAN_DC_NONE 0
#define CAN_DC_BOTTLE_CONFIG 1
#define CAN_DC_SENSOR_CONFIG 2
#define CAN_DC_DATA_CONFIG 3
#define CAN_DC_DISPLAY_CONFIG 4
#define CAN_DC_SAMPLE_SYSINFO 5
#define CAN_DC_POWER_SYSINFO 6
#define CAN_DC_DISPLAY_SYSINFO 7
#define CAN_DC_BLUETOOTH_SYSINFO 8
#define CAN_DC_DTU_DATA 9
#define CAN_DC_SAMPLE_DATA 10
#define CAN_DC_ADC_DATA 11
// 通知命令
#define CAN_NOTIFY_RESET 0
#define CAN_NOTIFY_UPGRADE 1
#define CAN_NOTIFY_UPDATE 2
#define CAN_NOTIFY_SLEEP 3
#define CAN_NOTIFY_PING 4
#define CAN_NOTIFY_SAMPLE 5
// 储罐类型
#define BOTTLE_TYPE_STAND 0 // 立式
#define BOTTLE_TYPE_LYING 1 // 卧式
#define BOTTLE_TYPE_SPHERICAL 2 // 球型
#define SENSOR_STATUS_NORMAL 0x00 // 正常状态
#define SENSOR_STATUS_NOCONNECT 0x01 // BIT0
#define SENSOR_STATUS_UNDERFLOW 0x02 // BIT1
#define SENSOR_STATUS_OVERFLOW 0x04 // BIT2
#define SENSOR_STATUS_FULL 0x80 // BIT7
// 测量方式
#define MEASURE_DPRESS 0
#define MEASURE_WEIGHT 1
// 显示单位
#define DISP_UNIT_METRIC 0 // 公制单位
#define DISP_UNIT_ENGLISH 1 // 英制单位
// 显示模式
#define DISP_MODE_DPRESS 0 // 不显示容积和重量
#define DISP_MODE_ALL 1 // 显示容积和重量
#define DISP_MODE_L 2 // 显示容积, 不显示重量
#define DISP_MODE_KG 3 // 显示重量, 不显示容积
// 奇偶校验方式
#define PARITY_NONE 'n'
#define PARITY_SPACE 's'
#define PARITY_MARK 'm'
#define PARITY_ODD 'o'
#define PARITY_EVEN 'e'
// 运营商网络类型
#define NET_TYPE_2G '2'
#define NET_TYPE_3G '3'
#define NET_TYPE_4G '4'
#define NET_TYPE_GPRS 'G'
#define NET_TYPE_CDMA 'C'
#define NET_TYPE_EDGE 'E'
// 真空传感器状态
#define VACUUM_STATUS_FAULT 0 // 故障
#define VACUUM_STATUS_OK 1 // 正常
#define VACUUM_STATUS_COMM_FAULT 255 // 通讯故障
// 泄露报警器状态
#define LEAK_STATUS_OK 0 // 正常
#define LEAK_STATUS_FAULT 1 // 故障
#define LEAK_STATUS_A1_ALARM 2 // 低限报警
#define LEAK_STATUS_A2_ALARM 3 // 高限报警
#define LEAK_STATUS_COMM_FAULT 255 // 通讯故障
// 泄漏报警器类型(按位掩码)
#define LEAK_TYPE_SWITCH 1 // 开关型
#define LEAK_TYPE_CURRENT 2 // 电流型
#define LEAK_TYPE_MODBUS 4 // Modubs总线型
// 服务器类型
#define SERVER_PROTOCOL_TCP 0 // TCP上传
#define SERVER_PROTOCOL_MQTT 1 // MQTT上传
#define SERVER_PROTOCOL_HTTPS 2 // HTTPS上传
#define SERVER_PROTOCOL_HTTP 3 // HTTP上传
#define SERVER_PROTOCOL_TRAIN 4 // 铁路罐箱上传
#define SERVER_PROTOCOL_AOYANG 5 // 奥扬协议上传
#define SERVER_PROTOCOL_BRASIL 6 // 巴西协议上传
#define SERVER_PROTOCOL_FURUI 7 // 富瑞协议上传
#define SERVER_PROTOCOL_HUIDA 8 // 汇达协议上传
#define SERVER_PROTOCOL_CHAOYANG 9 // 重庆朝阳(正略公司)上传
#define SERVER_PROTOCOL_PAKISTAN 10 // 巴基斯坦上传
// 产品类别
#define PRODUCT_CLASS_LEVEL 0 // 液位计
#define PRODUCT_CLASS_H2PRESS 1 // 氢压力
// 最大缓冲区大小
#define DATA_BUFF_SIZE 128
// 称重传感器参数
typedef struct
{
uint32_t lowRange; // 下量程
uint32_t highRange; // 上量程
uint32_t zeroValue; // 校零值
uint32_t fullValue; // 校满值
} weight_param_t;
// 差压/压力传感器参数
typedef struct
{
uint16_t lowRange; // 下量程
union
{
uint16_t highRange; // 上量程
struct
{
unsigned highRangeX10 : 15; // 放大了10倍的量程
unsigned ishighRangeX10 : 1; // 量程是否放大了10倍
};
};
uint16_t zeroValue; // 校零值
uint16_t fullValue; // 校满值
} press_param_t;
// 电容K值校准变送器的测量系统及传感器参数底电容满电容
typedef struct
{
uint16_t c1ADC; // 电容c1标定ADC值
uint16_t c2ADC; // 电容c2标定ADC值
uint16_t baseC; // 底电容(pF) * 10
uint16_t refC; // 增长电容(pF) * 10
} capacity_param_t;
// 温度传感器参数
typedef struct
{
int16_t lowRange; // 下量程
int16_t highRange; // 上量程
uint16_t zeroValue; // 校零值
uint16_t fullValue; // 校满值
} tempr_param_t;
// PT100铂电阻温度传感器参数
typedef struct
{
int16_t calibrateT; // 校准温度放大10倍
int16_t calibrateR; // 校准电阻放大10倍
uint16_t zeroValue; // 校零值(-200℃的ADC值(PT100由校准值计算理论值
uint16_t fullValue; // 校满值80℃的ADC值 (PT100由校准值计算理论值
} pt100_param_t;
// 真空计数据
typedef struct
{
uint8_t staVacuum; // 真空计状态
unsigned : 8;
uint16_t lifeVacuum; // 真空计使用年限
float vacuum; // 真空度
float rateVacuum; // 漏放气速率
float tempr; // 温度
} vacuum_data_t;
// 泄露报警器数据
typedef struct // size = 4
{
uint8_t typeLeak; // 泄露报警器类型
uint8_t staLeak; // 泄露报警器状态
uint16_t concentrations; // 气体浓度
} leak_data_t;
// 流量计数据
typedef struct // size = 22
{
uint8_t nM3[6]; // 标况体积总量BCD码放大100倍
uint8_t nM3_h[4]; // 标况流量BCD码放大100倍
uint8_t M3_h[4]; // 工况流量BCD码放大100倍
uint8_t tempr[4]; // 温度BCD码放大100倍第一字节为符号 80H 为负00H 为正)
uint8_t pressure[4]; // 压力BCD码放大100倍
} flow_data_t;
typedef union
{
uint8_t status;
struct
{
unsigned notConnect : 1; // 连接状态
unsigned underFlow : 1; // 是否下溢出
unsigned overFlow : 1; // 是否上溢出
unsigned : 4;
unsigned full : 1; // 是否满
};
} sensor_status_t;
// 版本号
typedef struct
{
uint8_t major; // 主版本号
uint8_t minor; // 次版本号
} version_t;
// 日期
typedef struct
{
uint8_t year;
uint8_t month;
uint8_t day;
} date_t;
// 时间
typedef struct
{
uint8_t hour;
uint8_t minute;
uint8_t second;
} time_t;
// 日期时间
typedef struct
{
uint8_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minute;
uint8_t second;
} date_time_t;
// 配置区头信息
typedef struct
{
uint16_t mark; //="LS",存储标识
uint16_t product; //="CY",产品标识
uint8_t DC; // 数据编码
unsigned : 8;
version_t ver; // 存储格式版本号
} config_header_t;
// 配置区1-储罐参数
typedef struct
{
config_header_t header; // 头信息
uint16_t serverVer; // 服务器参数版本号
uint8_t updateFlag; // 参数更新标志
uint8_t addr; // 通信地址
uint8_t PSN[6]; // PSN
uint8_t type; // 储罐类型
uint8_t source; // 液源
uint16_t len; // 圆柱体长度
uint16_t diameter; // 内径
uint16_t lenExtra; // 直边封头长度
float density[5]; // 各液源的比重, 单位g/cm3
uint8_t chargePct; // 充装比
uint8_t measureType;// 测量方式
uint16_t fullPct; // 满液位百分比
uint16_t priPct; // 关键液位百分比
uint16_t orderPct; // 订货液位百分比
uint16_t emptyPct; // 空液位百分比
uint32_t planMount; // 每日计划用量
uint32_t predictMount; // 每日预测用量
uint16_t warnVolt; // 电压报警低点: 10mV
uint16_t warnVoltH; // 电压报警高点: 10mV
uint16_t warnPress; // 压力报警低点: KPa
uint16_t warnPressH; // 压力报警高点: KPa
uint32_t options; // 参数开关
uint32_t ts; // 参数时间戳
unsigned dispMode : 2; // 显示模式
unsigned hideVacu : 1; // 隐藏真空显示
unsigned : 5;
unsigned : 8;
union // size = 6
{
struct // Praxair
{
uint16_t floorLevel; // praxair: 液量报警下限
uint16_t span; // praxair: 液量变化报警门限
uint16_t spanPeriod; // praxair: 液量变化报警时间
};
struct // Others
{
uint16_t warnVacuumH; // 温度报警上限
int16_t warnTempr; // 温度报警下限
int16_t warnTemprH; // 温度报警上限
};
};
uint16_t warnPress2; //apex 压力报警低点: KPa
uint16_t warnPressH2; // 压力报警高点: KPa
uint8_t trainReserved[14];
union
{
uint8_t reserved[20];
uint16_t densityExt[8]; // 各液源的比重(新增介质, 单位kg/m3
};
uint16_t crc;
} config_bottle_t;
// 配置区2-传感器参数
typedef struct
{
config_header_t header; // 头信息
unsigned : 8;
unsigned : 8;
weight_param_t sensorWeight; // 称重传感器
union
{
press_param_t sensorDPress; // 差压传感器
capacity_param_t sensorCap; // 电容传感器参数
};
press_param_t sensorPress; // 压力传感器
press_param_t sensorEPress[3];// 扩展压力传感器
union
{
tempr_param_t sensorMTempr[3];// 扩展温度传感器-4~20mA
pt100_param_t sensorPTempr[3];// 扩展温度传感器-PT100
};
uint16_t levelOutMMWC; // 4~20mA液位输出高度该功能无实际客户使用
uint8_t reserved[34];
uint16_t crc;
} config_sensor_t;
// 配置区3-数据参数
typedef struct
{
config_header_t header; // 头信息
unsigned : 8;
unsigned : 8;
char reserved[8];
char server[30]; // 数据服务器
int16_t port; // 数据端口
char gpsServer[30]; // 轨迹服务器
int16_t gpsPort; // 轨迹端口
uint16_t intervalSample; // 数据采集周期
uint32_t intervalTrans; // 数据上报周期
uint16_t intervalGPS; // 位置采集周期
uint16_t intervalGPSTrans; // 位置上报周期
int8_t timeLag; // 时差,默认为+8
unsigned : 8;
char upgServer[30]; // 升级服务器
int16_t upgPort; // 升级端口
uint16_t crc;
} config_data_t;
// 配置区4-显示屏参数
typedef struct
{
config_header_t header; // 头信息
unsigned : 8;
unsigned : 8;
uint16_t lightDelay; // 背光延时
uint16_t dispDelay; // 显示屏延时
uint8_t unit; // 显示单位(公制、英制)
uint8_t L_Unit; // 显示单位UNIT_KPA, UNIT_KG, UNIT_L, UNIT_PCT, UNIT_MMH2O
char pwd1[6]; // 储罐参数修改密码
char pwd2[6]; // 传感器标定密码
char APN[24]; // 运营商APN
struct
{
uint8_t op_HARDWARE_VER_MAJOR; // 硬件配置(不同客户和选项的组合)
uint8_t op_DISP_MMWC_ONLY;
uint8_t op_DOL_VER;
uint8_t op_BOX_VER;
unsigned op_CELL_LOCATION : 1; // 基站定位
unsigned op_NO_LOCATION : 1; // 不定位
unsigned : 6;
uint8_t op_LEVEL_SENSOR_ONLY;
uint8_t op_USE_PT100_SENSOR;
uint8_t op_PT100_MULTI;
uint8_t op_PT100_3LINE;
uint8_t op_DIFF_RESIST;
unsigned op_SEND_GPS_DATA : 1;
unsigned : 6;
unsigned op_ANTI_NORM_OPEN : 1; // 防过充常开泵(气动关闭)
unsigned op_USE_CAPACITY_SENSOR : 1;
unsigned op_LOW_ALARM_OUTPUT : 1; // 低液位声光报警功能
unsigned op_PRESS_ALARM_OUTPUT : 1; // 压力声光报警
unsigned op_LOW_PRESS_ALARM_OUTPUT : 1; // 低压力声光报警
unsigned op_ANTI_SINGLE_CTRL : 1; // 防过充单头电磁阀
unsigned : 2;
unsigned op_LOCAL_DISP_1S : 1; // 本地显示1秒采集
unsigned : 1; // 保留,不要占用
unsigned op_USE_R0SEMOUNT : 1; // 罗斯蒙特传感器
unsigned op_USE_SOLAR : 1; // 有太阳能
unsigned op_USE_O2_LEAK : 1; // 氧传感器
unsigned op_LEAK_ALARM_OUTPUT : 1; // 泄露报警输出
unsigned op_USE_DOL_TTL : 1; // DOL数字输出传感器
unsigned op_USE_HEIGHT_LEVEL : 1;// 直接测液位高度
unsigned op_USE_PCT_LEVEL: 1; // 直接测液位百分比
uint8_t op_SERVER_PROTOCOL; // 服务器协议0-TCP; 1-MQTT; 2-HTTPS; 3-HTTP; 4-TRAIN; 5-AOYANG
uint8_t op_SERVER_INDEX; // 服务器地址索引
unsigned op_UNIDIR_COMM : 1; // 不支持双向通信
unsigned op_LOCAL_DISP : 1; // 只有本地显示
unsigned op_ANTI_OVERFILL : 1; // 防过充功能
unsigned op_ALARM_OUTPUT : 1; // 高液位声光报警功能
unsigned op_DIFF_420MA : 1; // 差压传感器为4~20mA
unsigned op_PRESS_420MA : 1; // 压力传感器为4~20mA
unsigned op_2ND_420MA_OUT_LEVEL : 1; // 第2路4~20mA输出液位
unsigned op_420MA_OUT_PCT : 1; // 4-20mA按液位百分比输出
uint8_t op_PRODUCT_CLASS; // 0-差压计版本1-氢压力版本
unsigned op_TRAIN : 1; // 铁路罐箱版本
unsigned op_TIGER : 1; // 老虎燃气版本
unsigned : 2;
unsigned op_LNG_LORA: 1; // LNG-LORA版本
unsigned : 3;
unsigned : 8;
unsigned : 8;
unsigned : 8;
unsigned : 8;
};
uint32_t bdCommander; // 北斗指挥机卡号
char User[10]; // APN-User
char Pwd[10]; // APN-Pwd
uint8_t reserved[28];
uint16_t crc;
} config_display_t;
// 采集板系统信息
typedef struct
{
uint8_t boardFlag; // 主板标识
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
unsigned : 8;
} sysinfo_sample_t;
// 电源板系统信息
typedef struct
{
uint8_t boardFlag; // 主板标识
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
char parity; // 奇偶校验方式
uint32_t baudrate; // DTU波特率
version_t protocolVer; // 远传协议版本号
char simNumber[24]; // sim卡号
uint32_t gprsSendCount; // GPRS发送次数
uint32_t gprsSuccCount; // GPRS成功次数
char gprsFailCode[6]; // GPRS失败代码
uint32_t bdNumber; // 北斗卡号
} sysinfo_power_t;
// 显示板系统信息
typedef struct
{
uint8_t boardFlag; // 主板标识
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
unsigned : 8;
} sysinfo_display_t;
// 蓝牙板系统信息
typedef struct
{
uint8_t boardFlag; // 主板标识
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
char parity; // 奇偶校验方式
uint32_t baudrate; // 蓝牙模块波特率
version_t protocolVer; // 蓝牙协议版本
char moduleName[20]; // 蓝牙模块名称
} sysinfo_bluetooth_t;
// DTU采集数据
typedef struct // size = 36
{
date_time_t sysTime; // 系统时间, size = 6
int32_t longitude; // 经度
int32_t latitude; // 维度
uint16_t speed; // 速度
uint8_t rssi; // GPRS信号强度
uint8_t networked; // 是否入网
uint8_t connected; // 是否连上服务器
uint8_t netType; // 网络类型
unsigned posState : 1; // GPS定位状态只要复位以来定位成功过就为1
unsigned recentPosState : 1; // 最近一次主动定位状态
unsigned : 6;
uint8_t sateCount; // GPS卫星数量
uint8_t batPct; // 电池电量百分比
uint8_t batLow; // 低电量标志
int16_t batVoltage; // 电池电压
uint16_t batMaxCapa; // 电池总容量
uint16_t batCapa; // 电池容量
int16_t batCurrent; // 电池充/放电流
int16_t batTempr; // 电池温度
int16_t sunLevel; // 光照强度
} data_dtu_t;
// 采集板采集数据
typedef struct // size = 118
{
uint32_t volumeTotal; // 储罐容积
sensor_status_t staWeight; // 称重传感器状态, size = 1
sensor_status_t staDPress; // 差压/电容传感器状态
sensor_status_t staPress; // 压力传感器状态
sensor_status_t staExtPress[3]; // 扩展压力传感器状态
sensor_status_t staExtTempr[3]; // 扩展温度传感器状态
unsigned : 8;
float diff; // 差压/电容
float height; // 液位高度
uint32_t volume; // 容积
uint32_t weight; // 重量
uint16_t volumePct; // 容积百分比
uint16_t pressure; // 压力
uint16_t extPressure[3]; // 扩展压力
int16_t extTempr[3]; // 扩展温度
vacuum_data_t vacuum[1]; // 真空传感器数据A、Bsize = 16 x 1
uint16_t ccsRemainDay;// 船级社维持时间(天)
uint32_t ccsVer; // 船级社维持时间算法版本
uint8_t reserved[2]; // 保留真空计增加了温度字段由2路改为1路保持原24个字节大小
leak_data_t leak; // 泄露报警器数据, size = 4
flow_data_t flow; // 流量计数据size = 22
uint32_t adWeight; // 称重传感器AD转换值
uint16_t adDPress; // 差压传感器AD转换值
uint16_t adPress; // 压力传感器AD转换值
uint16_t adExtPress[3]; // 扩展压力传感器AD转换值
uint16_t adExtTempr[3]; // 扩展温度传感器AD转换值
uint8_t charging; // 充装标志
uint8_t warnning; // 报警标志
} data_sample_t;
// adc值
typedef struct
{
uint16_t adcDiff; // 差压ADC值
uint16_t adcPress; // 压力ADC值
uint16_t adcEPress[3]; // 扩展压力ADC值
uint16_t adcETempr[3]; // 扩展温度ADC值
uint32_t adcWeight; // 称重ADC值
} adc_sample_t;
// 定义缓冲区用于CAN通讯或Flash读写
typedef union
{
// 字节缓冲,用于通信过程中读写
uint8_t buff[DATA_BUFF_SIZE];
// 字缓冲
uint16_t buff16[DATA_BUFF_SIZE / sizeof(uint16_t)];
// 双字缓冲用于读写Flash
uint32_t buff32[DATA_BUFF_SIZE / sizeof(uint32_t)];
// 用于检查配置是否有效
config_header_t header; // 头信息
// 数据结构,用于字段解析
config_bottle_t configBottle;
config_sensor_t configSensor;
config_data_t configData;
config_display_t configDisplay;
sysinfo_sample_t sampleInfo;
sysinfo_power_t powerInfo;
sysinfo_display_t displayInfo;
sysinfo_bluetooth_t bluetoothInfo;
data_dtu_t dtuData;
data_sample_t sampleDdata;
adc_sample_t adcData;
} rd_buff_t;
// 用于存储数据
typedef struct
{
config_bottle_t configBottle;
config_sensor_t configSensor;
config_data_t configData;
config_display_t configDisplay;
sysinfo_sample_t sampleInfo;
sysinfo_power_t powerInfo;
sysinfo_display_t displayInfo;
sysinfo_bluetooth_t bluetoothInfo;
data_dtu_t dtuData;
data_sample_t sampleData;
adc_sample_t adcData;
} data_buff_t;
#pragma pack(pop)
// 各个数据块的长度
#define CONFIG_DATA_LEN(DC) Config_DataLen[(DC) - 1]
#define CONFIG_DATA_PTR(DC) Config_DataPtr[(DC) - 1]
extern const uint8_t Config_DataLen[];
extern const void* Config_DataPtr[];
// 各个配置区的内存
extern data_buff_t dcBuff;
uint32_t Config_CheckValid(rd_buff_t *dataBuff, uint8_t DC);
void Config_ForceValid(rd_buff_t *dataBuff, uint8_t DC);
// 检查参数修改标志
uint32_t Config_CheckUpdate(data_buff_t *dataBuff);
// 设置储罐参数的默认值
void Config_setBottleDefParam(data_buff_t *dataBuff);
// 设置传感器参数的默认值
void Config_setSensorDefParam(data_buff_t *dataBuff);
// 设置数据参数的默认值
void Config_setDataDefParam(data_buff_t *dataBuff);
// 设置显示参数的默认值
void Config_setDisplayDefParam(data_buff_t *dataBuff);
// 填充采集板系统信息
void Config_fillSampleInfo(data_buff_t *dataBuff);
// 填充电源板系统信息
void Config_fillPowerInfo(data_buff_t *dataBuff);
// 填充显示板系统信息
void Config_fillDisplayInfo(data_buff_t *dataBuff);
// 填充蓝牙板系统信息
void Config_fillBluetoothInfo(data_buff_t *dataBuff);
// 设置和获取介质密度
void Config_SetDensity(uint8_t source, float density);
float Config_GetDensity(uint8_t source);
// 多项式为x16+x15+x2+1,LSB顺序
uint16_t do_crc_16(unsigned short crc_reg, uint8_t *message, int16_t len);
#endif