#ifndef __ENTITY_H__ #define __ENTITY_H__ #include "lib.h" #include "adcs.h" #include "params.h" #include "pdctrl.h" #include "mode.h" // 硬件版本号 1个字节 #ifdef V4 #define HW_VER 0x04 #elif V5 #define HW_VER 0x05 #else #error "Please define hardware version!" #endif // 固件版本号 1个字节 #define FW_VER 0x06 // 是否运行蓝牙输出数据到VOFA上位机 #define H24_BLE_OUTPUT_DBG TRUE // CPU基准电压 #define CPU_VREF 3.0f // 输入电流小于3.8mA #define INPUT_CURRENT_MIN 3.8f #define WAIT_COUNT_MAX 10 // 蓝牙工作电流 #define BLE_CURRENT_WORK 7.9f // 气压表最大值 #define BAROMETER_MAX 7 // LCD最低工作稳定-20℃ #define LCD_WORK_TEMP_MIN -20 #define LOOP_CURRENT_MIN 4.0f ///< 输入电流最小值 #define LOOP_CURRENT_MAX 20.0f ///< 输入电流最大值 #define ADC_TM_CYCLE 10U ///< ADC采样周期 #define ADJUST_TM_CYCLE 10U ///< 标定周期 #define SELF_VCHART_LEN 17 ///< 自定义阀门特性长度 #define VALVE_SERIAL_NUM_LEN 16 ///< 阀门序列号长度 #define INST_SERIAL_NUM_LEN 16 ///< 定位器序列号长度 // ADC通道定义 #define ADC_LOOP_CHANNEL IN5 ///< 输入电流ADC通道 #define ADC_PSB_CHANNEL IN6 ///< 阀位反馈ADC通道 #define ADC_BP_CHANNEL IN7 ///< 压力传感器ADC通道 #define ADC_IPSB_CHANNEL IN8 ///< 内部I/P位置电压(小回路) #define ADC_NTC_CHANNEL IN9 ///< 温度ADC电压 #define ADC_VIP_CHANNEL IN11 ///< I/P输出ADC电压 #define ADC_DCDC_CHANNEL IN12 ///< DCDC检测通道 #define ADC_BPA_CHANNEL IN13 ///< A路压力 #define ADC_BPB_CHANNEL IN14 ///< B路压力 #define DAC_OUT_MAX 4095 ///< DAC输出最大值 // 校准参数信息 #define CALIBPARA_LOOP 0 ///< 4~20mA采集校准参数 #define CALIBPARA_PSB 1 ///< 位置反馈校准参数 #define CALIBPARA_BP 2 ///< 气源压力校准参数 #define CALIBPARA_PA 3 ///< A输出压力校准参数 #define CALIBPARA_PB 4 ///< B输出压力校准参数 #define CALIBPARA_IPSB 5 ///< I/P内反馈校准参数 #define CALIBPARA_NTC 6 ///< NTC温度校准参数 #define CALIBPARA_VIP 7 ///< 4~20mA输出校准参数 #define CALIBPARA_DC 8 ///< 电压 // 校准参数数量 #define CALIBPARA_NUM (CALIBPARA_DC + 1) // M95_1 EEPROM地址定义 #define EE_INITIAL_ADDRESS 0U // 参数储存起始地址 #define EE_CRC_ADDRESS (EE_INITIAL_ADDRESS + 128) // CRC校验地址8个CRC, 前面预留128个字节 #define EE_CALIBPARA_ADDRESS (EE_CRC_ADDRESS + 2 * CRC_NUM) // 校准参数储存地址,8个CRC #define EE_DEVICE_ADDRESS (EE_CALIBPARA_ADDRESS + 8 * CALIBPARA_NUM) // 设备参数储存地址 #define EE_CONTROLLER_ALARM_ADDR (EE_DEVICE_ADDRESS + sizeof(uDeviceTypedef)) // 定位器内部报警设置 #define EE_HART_DEVICE_VARIABLE_ADDR (EE_CONTROLLER_ALARM_ADDR + sizeof(uControllerAlarmDef)) // HART设备属性存储地址 #define EE_HART_DEVICE_VARIABLE_USER_ADDR (EE_HART_DEVICE_VARIABLE_ADDR + sizeof(hart_storage_variable_t)) // HART设备用户自定义属性存储地址 // CRC预留数量 #define CRC_NUM 8 // CRC预留数量 // CRC内存索引 #define CALIBPARA_CRC 0 // 校准参数CRC #define DEVICE_CRC 1 // 设备参数CRC #define HART_DEVICE_VARIABLE_CRC 2 // HART设备属性CRC #define HART_DEVICE_VARIABLE_USER_CRC 3 // HART设备用户自定义属性CRC // CRC内存地址 #define CALIBPARA_CRC_ADDR (EE_CRC_ADDRESS + CALIBPARA_CRC * 2) // 校准参数CRC地址 #define DEVICE_CRC_ADDR (EE_CRC_ADDRESS + DEVICE_CRC * 2) // 设备参数CRC地址 #define HART_DEVICE_VARIABLE_CRC_ADDR (EE_CRC_ADDRESS + HART_DEVICE_VARIABLE_CRC * 2) // HART设备属性CRC地址 #define HART_DEVICE_VARIABLE_USER_CRC_ADDR (EE_CRC_ADDRESS + HART_DEVICE_VARIABLE_USER_CRC * 2) // HART设备用户自定义属性CRC地址 #pragma pack(1) // 编译器中提供了#pragma pack(n)来设定变量以n字节对齐方式 /// 参数类型 typedef enum { CALIBPARA_PARAM = 0, ///< 校准参数 DEVICE_PARAM, ///< 设备参数 HART_DEVICE_VARIABLE_PARAM, ///< HART设备属性 HART_DEVICE_VARIABLE_USER_PARAM, ///< HART设备用户自定义属性 RT_PARAM, ///< 实时参数 WARNING_PARAM, ///< 报警参数 } param_type_t; /// 时间结构 typedef union { uint8_t Byte[6]; struct { uint8_t Year; uint8_t Month; uint8_t Day; uint8_t Hour; uint8_t Minute; uint8_t Second; } Date; } uDateTime_TypeDef; typedef struct { // 版本号 #define eVersion_EE_ADDR EE_DEVICE_ADDRESS uint16_t eVersion; // 显示方向 0/180 #define eDispDir_EE_ADDR eVersion_EE_ADDR + 2 uint16_t eDispDir; // 主屏显示方式 #define MainDisp_EE_ADDR eDispDir_EE_ADDR + 2 uint16_t MainDisp; // 显示语言 #define eLanguage_EE_ADDR MainDisp_EE_ADDR + 2 uint16_t eLanguage; // 定位器Hart地址(作废) #define DeviceAddr_EE_ADDR eLanguage_EE_ADDR + 2 uint16_t DeviceAddr; // 定位器工作模式 #define WorkMode_EE_ADDR DeviceAddr_EE_ADDR + 2 uint16_t WorkMode; // 行程类型, 直行程/角行程 #define eTravelType_EE_ADDR WorkMode_EE_ADDR + 2 uint16_t eTravelType; // 磁条规格 #define MagnetIndex_EE_ADDR eTravelType_EE_ADDR + 2 uint16_t MagnetIndex; // 行程范围选择 #define TravelRangeIndex_EE_ADDR MagnetIndex_EE_ADDR + 2 uint16_t TravelRangeIndex; // 自定义行程范围 #define TravelRangeSelf_EE_ADDR TravelRangeIndex_EE_ADDR + 2 uint16_t TravelRangeSelf; // 行程百分比显示方式 #define eTravelDispMode_EE_ADDR TravelRangeSelf_EE_ADDR + 2 uint16_t eTravelDispMode; // 行程起点和终点反馈电压 #define TravelVol0_EE_ADDR eTravelDispMode_EE_ADDR + 2 uint16_t TravelVol0; #define TravelVol100_EE_ADDR TravelVol0_EE_ADDR + 2 uint16_t TravelVol100; // 行程显示单位 #define eTravelUnit_EE_ADDR TravelVol100_EE_ADDR + 2 uint16_t eTravelUnit; // 阀门打开(上行)变化速率 (%/秒),如需在5秒钟左右移动100%行程,请将其设置为 20 [%/sec] #define TravelRateOpen_EE_ADDR eTravelUnit_EE_ADDR + 2 float32 TravelRateOpen; // 阀门关闭(下行)变化速率 (%/秒),如需在5秒钟左右移动100%行程,请将其设置为 20 [%/sec] #define TravelRateClose_EE_ADDR TravelRateOpen_EE_ADDR + 4 float32 TravelRateClose; // 行程偏差报警点 ±% #define TravelError_EE_ADDR TravelRateClose_EE_ADDR + 4 float32 TravelError; // 行程偏差报警等待时间(秒)(偏差超出范围的持续时间上限) #define TravelErrorWaitTime_EE_ADDR TravelError_EE_ADDR + 4 uint16_t TravelErrorWaitTime; // 死区(%),表示在目标位置附近设置的可允许偏差。若阀门填料的摩擦力较大,可相应调整并设置此数值, // 以防止因摩擦导致循环受限。若死区设置为0.5%,则其对应范围为目标的±0.5%。 #define TravelDead_EE_ADDR TravelErrorWaitTime_EE_ADDR + 2 float32 TravelDead; // 0.1~10.0% // 死区报警上限 #define TravelDeadUpper_EE_ADDR TravelDead_EE_ADDR + 4 float32 TravelDeadUpper; // 死区更新等待时间(输入信号幅度大于当前的死区值时,阀门保持不动的时间上限,超过时间上限后更新当前死区值) #define TravelDeadUpperWaitTime_EE_ADDR TravelDeadUpper_EE_ADDR + 4 uint16_t TravelDeadUpperWaitTime; // 累计行程上限 #define TravelSumUpper_EE_ADDR TravelDeadUpperWaitTime_EE_ADDR + 2 uint32_t TravelSumUpper; // 动作次数上限 #define ActNumberUpper_EE_ADDR TravelSumUpper_EE_ADDR + 4 uint32_t ActNumberUpper; // 高低位置报警线 #define TravelUpperAlarm_EE_ADDR ActNumberUpper_EE_ADDR + 4 float32 TravelUpperAlarm; #define TravelLowerAlarm_EE_ADDR TravelUpperAlarm_EE_ADDR + 4 float32 TravelLowerAlarm; // 开关1/2闭合触发位置 ( % of 行程, -25% ~ 125%) #define SWTriggerValue_EE_ADDR TravelLowerAlarm_EE_ADDR + 4 float32 SWTriggerValue[2]; // 开关1/2闭合触发条件:高于,低于,禁用 // 阀门开关触发逻辑 #define eSWTriggerLogic_EE_ADDR SWTriggerValue_EE_ADDR + 8 uint16_t eSWTriggerLogic[2]; // 输入范围低4-19mA (2位小数,如 4mA = 400,20mA = 2000) #define InputIL_EE_ADDR eSWTriggerLogic_EE_ADDR + 4 float32 InputIL; // 输入范围高5-20mA (2位小数,如 4mA = 400,20mA = 2000) #define InputIH_EE_ADDR InputIL_EE_ADDR + 4 float32 InputIH; // 输入电流报警下限 #define InputILA_EE_ADDR InputIH_EE_ADDR + 4 float32 InputILowAlarm; /***************************************************************************************/ /* 压力 bar(2位小数,如, 1bar = 100, 7bar = 700) KPa或者PSI(1位小数,如, 1.0Kpa = 10, 101.9KPa = 1019; 116.9PSI = 1169) 1Kpa = 0.1450377psi, 1psi = 6.894757Kpa Mpa--0.XXXX Mpa, 1Kpa = 0.001Mpa */ // 压力单位 #define ePressUnit_EE_ADDR InputILA_EE_ADDR + 4 uint16_t ePressUnit; // 输入的额定气源压力 #define SupplyPressure_EE_ADDR ePressUnit_EE_ADDR + 2 float32 SupplyPressure; // 气源偏差范围±% #define SupplyPressureError_EE_ADDR SupplyPressure_EE_ADDR + 4 float32 SupplyPressureError; // 报警等待时间(秒)(偏差超出范围的持续时间上限) #define SupplyPressureErrorWaitTime_EE_ADDR SupplyPressureError_EE_ADDR + 4 uint16_t SupplyPressureErrorWaitTime; // 整定时,阀门0%--100%位置的气压值 #define TravelPressureA0_EE_ADDR SupplyPressureErrorWaitTime_EE_ADDR + 2 float32 TravelPressureA0; #define TravelPressureA100_EE_ADDR TravelPressureA0_EE_ADDR + 4 float32 TravelPressureA100; #define TravelPressureB0_EE_ADDR TravelPressureA100_EE_ADDR + 4 float32 TravelPressureB0; #define TravelPressureB100_EE_ADDR TravelPressureB0_EE_ADDR + 4 float32 TravelPressureB100; /***************************************************************************************/ // 阀门特性 #define eValveCharacteristics_EE_ADDR TravelPressureB100_EE_ADDR + 4 uint16_t eValveCharacteristics; // 自定义阀门特性 #define SelfVChart_EE_ADDR eValveCharacteristics_EE_ADDR + 2 uint16_t SelfVChart[SELF_VCHART_LEN]; // 小信号切除 #define SmallSignalCutEnable_EE_ADDR SelfVChart_EE_ADDR + 2 * 17 uint16_t SmallSignalCutEnable; // 小信号上限 #define SmallSignalUpper_EE_ADDR SmallSignalCutEnable_EE_ADDR + 2 float32 SmallSignalUpper; // 小信号下限 #define SmallSignalLower_EE_ADDR SmallSignalUpper_EE_ADDR + 4 float32 SmallSignalLower; // 执行机构单/双作用 #define eActuator_EE_ADDR SmallSignalLower_EE_ADDR + 4 uint16_t eActuator; // 定位器(控制器)正/反作用 #define eControllerAction_EE_ADDR eActuator_EE_ADDR + 2 uint16_t eControllerAction; // 气开/气关设置(零控信号阀门状态, 0-关闭,其它打开) #define eAirAction_EE_ADDR eControllerAction_EE_ADDR + 2 uint16_t eAirAction; // 增速器 #define SpeedIncreaserEnable_EE_ADDR eAirAction_EE_ADDR + 2 uint16_t SpeedIncreaserEnable; // 快排阀 #define QuickExhaustValveEnable_EE_ADDR SpeedIncreaserEnable_EE_ADDR + 2 uint16_t QuickExhaustValveEnable; // 整定时,阀门动作的所需要的上下限值 #define DAC_Max_EE_ADDR QuickExhaustValveEnable_EE_ADDR + 2 uint16_t DAC_Max; #define DAC_Min_EE_ADDR DAC_Max_EE_ADDR + 2 uint16_t DAC_Min; // 放大器报警设置:驱动信号下限,报警等待时间(控制UP或IP的驱动信号大于下限时,放大器输出压力保持不变的时间上限) #define DAC_AlarmWaitTimer_EE_ADDR DAC_Min_EE_ADDR + 2 uint16_t DAC_AlarmWaitTime; // 阀门全开/全关时间 #define AllOpenTime_EE_ADDR DAC_AlarmWaitTimer_EE_ADDR + 2 uint16_t AllOpenTime; #define AllCloseTime_EE_ADDR AllOpenTime_EE_ADDR + 2 uint16_t AllCloseTime; // PID参数选择,1:自适应/2:自定义 #define PIDIndex_EE_ADDR AllCloseTime_EE_ADDR + 2 uint16_t PIDIndex; // 自适应PID参数 #define APID_KP_EE_ADDR PIDIndex_EE_ADDR + 2 float32 APID_KP; #define APID_TI_EE_ADDR APID_KP_EE_ADDR + 4 float32 APID_TI; #define APID_TD_EE_ADDR APID_TI_EE_ADDR + 4 float32 APID_TD; // 自定义PID参数 #define SPID_KP_EE_ADDR APID_TD_EE_ADDR + 4 float32 SPID_KP; #define SPID_TI_EE_ADDR SPID_KP_EE_ADDR + 4 float32 SPID_TI; #define SPID_TD_EE_ADDR SPID_TI_EE_ADDR + 4 float32 SPID_TD; // 积分使能 #define IntegralEnable_EE_ADDR SPID_TD_EE_ADDR + 4 uint16_t IntegralEnable; // 积分初始值 #define IniIntegral_EE_ADDR IntegralEnable_EE_ADDR + 2 float32 IniIntegral; // 积分工作区域(%) #define IntegralZone_EE_ADDR IniIntegral_EE_ADDR + 4 float32 IntegralZone; // 0.1~20.0% // 报警处理方式 #define eAlarmHandleMode_EE_ADDR IntegralZone_EE_ADDR + 4 uint16_t eAlarmHandleMode; // 温度报警上限 #define TemperatureUpperAlarm_EE_ADDR eAlarmHandleMode_EE_ADDR + 2 float32 TemperatureUpperAlarm; // 温度报警下限 #define TemperatureLowerAlarm_EE_ADDR TemperatureUpperAlarm_EE_ADDR + 4 float32 TemperatureLowerAlarm; // 摩擦力 #define Friction_EE_ADDR TemperatureLowerAlarm_EE_ADDR + 4 float32 Friction; // 允许的摩擦力上限 #define FrictionUpper_EE_ADDR Friction_EE_ADDR + 4 float32 FrictionUpper; // 允许的摩擦力下限 #define FrictionLower_EE_ADDR FrictionUpper_EE_ADDR + 4 float32 FrictionLower; // 弹簧故障报警 // 标准弹性系数范围、弹簧提供的压力上下限允许的变化范围(根据始终点的输出气压判断) #define Elasticity_EE_ADDR FrictionLower_EE_ADDR + 4 float32 Elasticity; // 允许的弹力范围上限 #define ElasticityUpper_EE_ADDR Elasticity_EE_ADDR + 4 float32 ElasticityUpper; // 允许的弹力范围下限 #define ElasticityLower_EE_ADDR ElasticityUpper_EE_ADDR + 4 float32 ElasticityLower; // 是否整定过 1:整定过 0:未整定 #define TunedFlag_EE_ADDR ElasticityLower_EE_ADDR + 4 uint16_t TunedFlag; // 记录存储间隔时间(秒) #define SaveRecordInterval_EE_ADDR TunedFlag_EE_ADDR + 2 uint16_t SaveRecordInterval; // 开机控制方式 #define ControlMode_EE_ADDR SaveRecordInterval_EE_ADDR + 2 uint16_t ControlMode; // PWM电流标定4ma值 #define CurrentCalibrationA_EE_ADDR ControlMode_EE_ADDR + 2 uint16_t CurrentCalibrationA; // PWM电流标定20ma值 #define CurrentCalibrationB_EE_ADDR CurrentCalibrationA_EE_ADDR + 2 uint16_t CurrentCalibrationB; // 磁条接收的反馈电压由大变小 0 由小变大 1 #define ProcessChange_Flag_EE_ADDR CurrentCalibrationB_EE_ADDR + 2 uint16_t ProcessChange_Flag; // DAC中间值 用于刹车 #define PosMidDac_Val_EE_ADDR ProcessChange_Flag_EE_ADDR + 2 uint16_t PosMidDac_Val; // 小回路最小值 #define MinorLoop0_Val_EE_ADDR PosMidDac_Val_EE_ADDR + 2 uint16_t MinorLoopVol0_Val; // 小回路最大值 #define MinorLoop100_Val_EE_ADDR MinorLoop0_Val_EE_ADDR + 2 uint16_t MinorLoopVol100_Val; // 部分行程使能 #define PartTravelEnable_EE_ADDR MinorLoop100_Val_EE_ADDR + 2 uint16_t PartTravelEnable; #define PartTravelMin_EE_ADDR PartTravelEnable_EE_ADDR + 2 float32 PartTravelMin; #define PartTravelMax_EE_ADDR PartTravelMin_EE_ADDR + 4 float32 PartTravelMax; // 无线通讯使能 #define WirelessComm_EE_ADDR PartTravelMax_EE_ADDR + 4 uint16_t WirelessCommEnable; // PWM 4-20mA使能 #define mAOutput_EE_ADDR WirelessComm_EE_ADDR + 2 uint16_t mAOutputEnable; // 压力偏移量 #define PressureOffset_EE_ADDR mAOutput_EE_ADDR + 2 float32 PressureOffset; // 间隙控制范围 (%),当阀门的当前位置在基于最终目标位置的 GAP 参数设置范围(目标位置 ± GAP)内时,使用GAP PID参数 #define TravelGap_EE_ADDR PressureOffset_EE_ADDR + 4 uint16_t TravelGap; // 0.1~20.0% // TravelDAC_KVal 相差值 #define TravelDAC_MaxKu_EE_ADDR TravelGap_EE_ADDR + 2 float32 TravelDAC_KVal_Up; #define TravelDAC_MaxKd_EE_ADDR TravelDAC_MaxKu_EE_ADDR + 4 float32 TravelDAC_KVal_Dn; // 开机通电时间 #define uAccumulatedTime_EE_ADDR TravelDAC_MaxKd_EE_ADDR + 4 uDateTime_TypeDef uAccumulatedTime; #define FM24WriteADDR_EE_ADDR uAccumulatedTime_EE_ADDR + 6 uint32_t fm24BaseAddr; // 阀门序列号 #define ValveSerialNum_EE_ADDR FM24WriteADDR_EE_ADDR + 4 uint8_t ValveSerialNum[VALVE_SERIAL_NUM_LEN]; // 仪器序列号 #define InstSerialNum_EE_ADDR ValveSerialNum_EE_ADDR + VALVE_SERIAL_NUM_LEN uint8_t InstSerialNum[INST_SERIAL_NUM_LEN]; // 阀门类型 #define ValveStyle_EE_ADDR InstSerialNum_EE_ADDR + INST_SERIAL_NUM_LEN uint16_t ValveStyle; // 阀门尺寸 #define ValveSize_EE_ADDR ValveStyle_EE_ADDR + 2 uint16_t SpecValveSize; // 阀门等级 #define ValveClass_EE_ADDR ValveSize_EE_ADDR + 2 uint16_t SpecValveClass; // 阀杆直径 #define ValveStemDiameter_EE_ADDR ValveClass_EE_ADDR + 2 float32 SpecValveStemDiameter; // 包装类型 #define ValvePackingType_EE_ADDR ValveStemDiameter_EE_ADDR + 4 uint16_t SpecValvePackingType; // 控制输出模式 1:DAC 2:PWM #define ControlOutputMode_EE_ADDR ValvePackingType_EE_ADDR + 2 uint16_t SpecControlOutputMode; } uDeviceTypedef; /// 实时参数 typedef struct { // 头部信息: uint16_t crc; ///< CRC校验值 // 动态数据: uDateTime_TypeDef timestamp; ///< 时间戳 uint64_t write_cnt; ///< FM24写入次数 float32 travel_target; ///< 行程目标 uint32_t travel_cnt; ///< 行程累计 uint32_t action_cnt; ///< 动作次数 float32 max_recorded_temp; ///< 最高温度记录 float32 min_recorded_temp; ///< 最低温度记录 uint32_t number_of_power_ups; ///< 上电次数 // HART 动态数据 uint8_t last_device_variable; ///< 上一个设备变量,这表示应用程序应在现场设备中找到的最后一个设备变量代码 uint16_t configuration_update_count; ///< 配置更新次数 } uRealTimeDef; // 阀门执行机构参数 typedef struct { // 充/排气调节时间-阀门10%到90%或90%到10%所需要的时间,单位ms uint32_t AdjTime; // 纯延时时间-从进气开始到阀门开始动作的时间差,单位ms uint32_t DelayTime; // 最大速度 uint16_t Vmax; // 最大速度位置 uint16_t VmaxLoc; // 最大过冲量 uint16_t OVSmax; } ValveParaDef; // 驱动使能图标 typedef union { uint64_t dev; struct { uint64_t hart : 1; // hart模块 uint64_t bluetooth : 1; // 蓝牙模块 uint64_t work_mode : 3; // 工作模式 uint64_t lock : 1; // 锁模块 } Bits; } driver_icon_enable_u; #pragma pack() // 编译器中提供了#pragma pack(n)来设定变量以n字节对齐方式 extern uint16_t crc_param[CRC_NUM]; ///< CRC参数 extern float32 calib_param[CALIBPARA_NUM][2]; ///< 校准参数 extern mode_params_t mode_params; ///< 模式参数 extern uDeviceTypedef uDevice; ///< 设备参数 extern uRealTimeDef uRtData; ///< 实时参数 extern uint8_t cpu_percent; ///< CPU使用率 // 模拟量 extern uint16_t adc_raw[INMAX]; ///< ADC原始值 extern __IO uint16_t ip_out; ///< DAC输出值 // 数字量 extern __IO float32 loop_current; ///< 输入电流mA extern float32 actual_travel; ///< 实际阀门位置 % (1位小数,如 0~100%, 100% = 1000) extern float32 target_travel; ///< 目标阀门位置 % (1位小数,如 0~100%, 100% = 1000) extern float32 pid_target; ///< pid控制目标 extern float32 show_target; ///< lcd显示目标 extern float32 pid_actual; ///< pid控制实际 extern float32 show_actual; ///< lcd显示实际 extern float32 target_actual_diff; ///< 目标位置与实际位置的差值 extern uint8_t target_direction; ///< 目标方向,0:向下,1:向上 extern float32 temperature; ///< 温度 extern float32 pressure; ///< 气源压力 extern float32 pressureA; ///< A路压力 extern float32 pressureB; ///< B路压力 extern float32 range_percentage; ///< 量程百分比 extern driver_icon_enable_u driver_icon_enable; ///< 驱动使能图标 extern void h24_bluetooth_output_dbg(uint8_t *data, uint16_t len); #endif // __ENTITY_H__