745 lines
21 KiB
C
745 lines
21 KiB
C
/*
|
||
*********************************************************************************************************
|
||
* 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、B),size = 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
|