#ifndef __PARA_H #define __PARA_H #include "define_all.h" #include "1ADC.h" #define FIRMWARE_VER_1 0x0000 #define FIRMWARE_VER_2 0x0102 #define FIRMWARE_VER_3 0x0407 #define __UPPER_DATA_ALTER(__LAST__, __NOW__) ((__LAST__ != __NOW__) ? SET : RESET) ///////////////////////////////////// #define READSUCCESSFULLYTIMES 3 #define READFAILEDTIMES 200 //////////////////////////////////// #define PULSE_MODE 0x01 #define RS485_MODE 0x02 #define RS485_AND_PULSE_MODE 0x03 #define ACTIVE 1 #define NOACTIVE 0 #define HOST_COMPUTER_DATA_INDEX 3 ///////////////////Alarm code///////////////////// #define FLOW_LOW_PWR_ALARM_CODE 0x0101 #define FLOW_UNDER_VOLTAGE_ALARM_CODE 0x0102 #define FLOW_PWR_DOWN_ALARM_CODE 0x0103 #define ALKA_PWR_DOWN_ALARM_CODE 0x0104 #define LITH_PWR_DOWN_ALARM_CODE 0x0105 #define EXTERNAL_PWR_ACCESS_ALARM_CODE 0x0106 #define EXTERNAL_PWR_DOWN_ALARM_CODE 0x0107 #define ALKA_PWR_LOW_ALARM_CODE 0x0108 #define LITH_PWR_LOW_ALARM_CODE 0x0109 #define PULSE_LINE_DISCONNECTED_ALARM_CODE 0x0201 #define FORCED_TO_CLOSE_VALVE_ALARM_CODE 0x0202 #define VALVE_OPEN_ALARM_CODE 0x0203 #define VALVE_ABNORMAL_ALARM_CODE 0x0204 #define VALVE_FORCE_OPEN_ALARM_CODE 0x0205 #define PULSE_LINE_MISMATCH_ALARM_CODE 0xfff1 #define GAS_LEAK_ALARM_CODE 0x0208 #define RS485_READ_FLOW_FAILED_ALARM_CODE 0x0301 #define RS485_READ_ABNORMAL_SMALL_READING_CODE 0x0302 #define TEMPERATURE_ABNORMAL_ALARM_CODE 0x0401 #define PRESSURE_ABNORMAL_ALARM_CODE 0x0402 #define AMOUNT_SMALL_ALARM_CODE 0x0501 #define AMOUNT_ARREARS_ALARM_CODE 0x0502 #define AMOUNT_OVERDRAFT_ALARM_CODE 0x0503 #define E2RW_READ_ABNORMAL_ALARM_CODE 0x0701 #define E2RW_WRITE_ABNORMAL_ALARM_CODE 0x0702 #define CAP_OPEN_ALARM_CODE 0x0802 #pragma pack(1) //////////////////////////µØÖ··ÖÅä///////////////////// #define DeviceAddress_Addr 0x0004 #define Tyf_Addr 0x0012 //18 #define Ty_Addr 0x0014 //20 #define Typ_Addr 0x0016 //22 #define Tp_Addr 0x0018 //24 #define Time1_Flag_Addr 0x001C //28 #define SendTiming_Hour_Addr 0x001D //29 #define SendTiming_Min_Addr 0x001E //30 #define Time2_Flag_Addr 0x001F //31 #define SendTiming_Hour2_Addr 0x0020 //32 #define SendTiming_Min2_Addr 0x0021 //33 #define GPRS_RestartTime_Addr 0x0022 //34 #define IP_Addr 0x0028 //40 IP #define NumDataStored_Addr 0x0037 //55-56 #define DataStoredFlag_Addr 0x003C //60 #define KVER_ADDR 62 #define KEY_ADDR 64 //64-79 #define REALTIME_CUMULATIVE_GAS_USAGE_ADDR 80 #define REALTIME_CUMULATIVE_FEE_USAGE_ADDR 88 #define REALTIME_BALANCE_ADDR 96 //#define BALANCE_Addr 0x0064 //100 #define DATA_OBTAIN_TYPE_ADDR 104 #define PULSE_COE_ADDR 108 #define BILLING_TYPE_ADDR 112 #define SINGLE_BILLING_FEE_ADDR 113 #define STEP_BILLING_FIRST_ADDR 117 #define STEP_BILLING_FEE_FIRST_ADDR 121 #define STEP_BILLING_SECOND_ADDR 125 #define STEP_BILLING_FEE_SECOND_ADDR 129 #define STEP_BILLING_THIRD_ADDR 133 #define STEP_BILLING_FEE_THIRD_ADDR 137 #define BALANCE_INSUF_ALARM_AMOUNT_ADDR 141 #define CREDITS_ADDR 145 #define METER_TYPE_CODE_ADDR 149 #define PULSE_WITDH_ADDR 151 #define ACCOUNT_STATUS_ADDR 155 #define BAUD_RATE_CODE_ADDR 156 #define RS485_PARITY_ADDR 157 #define EXP_VOLTAGE_CODE_ADDR 158 #define LOW_POWER_ALARM_LINE_ADDR 159 #define SLAVE_ADDRESS_ADDR 160 #define SHOW_BALANCE_FLAG_ADDR 161 #define SHOW_PRICE_FLAG_ADDR 162 #define LCD_LOGO_ADDR 169 #define LCD_FLAG_ADDR 170 #define LOGO_DISPLAY_FLAG_ADDR 171 #define OPEN_VALVE_AUTHORIZE_FLAG_ADDR 172 #define OPEN_VALVE_AUTHORIZE_TIME_CNT_ADDRA 173 //173--176 Õ¼4λ #define VALVE_STATE_ADDR 177 #define VALVE_TYPE_ADDR 178 #define DeviceserialNum1_ADDR 200 #define DeviceserialNum2_ADDR 202 #define DeviceserialNum3_ADDR 204 #define DeviceserialNum4_ADDR 206 #define HardwareVerSn1_ADDR 208 #define HardwareVerSn2_ADDR 210 #define HardwareVerSn3_ADDR 212 #define FirmwareVerSn1_ADDR 214 #define FirmwareVerSn2_ADDR 216 #define FirmwareVerSn3_ADDR 218 #define FirmwareCRC_ADDR 220 #define FirmwareDateyear_ADDR 222 #define FirmwareDatemonth_ADDR 224 #define FirmwareDateday_ADDR 226 #define EquipmentCaliberAndModel_ADDR 228 //É豸¿Ú¾¶ÐͺŠ//485¶ÁȡУÑéÓõØÖ·ÇøÓò #define RS485_SETTLEMENT_FLAG_ADDR 299 // #define DATA_READABLE_FLAG_ADDR 300 //Êý¾Ý¿É¶Á±êÖ¾£¬0x01±íʾ¸ÃÇøÓò´æÓÐÊý¾Ý£¬¿ÉÓÃ×÷¼Æ·ÑУÑ鼯ËãÓã»·Ç0x01£º±íʾûÓС£¸Ã±ê־ʲôÊÇÇåÓдý¿¼ÂÇ¡£ #define SCACC_BIL_ADDR 301 //301- 304 £¬¼Æ·ÑУÑéÓñê¿ö×ÜÁ¿´æ´¢Çøu32 #define BALANCE_BIL_ADDR 305 //305- 312 £¬¼Æ·ÑУÑéÓÃÓà¶î´æ´¢Çødouble #define GAS_USAGE_BIL_ADDR 313 //313- 320 £¬¼Æ·ÑУÑéÓÃ×ÜÓÃÆøÁ¿´æ´¢Çødouble #define FEE_USAGE_BIL_ADDR 321 //321- 328 £¬¼Æ·ÑУÑéÓÃ×ÜÓÃÆø½ð¶î´æ´¢Çødouble #define TIME_BIL_ADDR 329 //329- 334 £¬»ùÊýʱ¼ä£¬ÄêÔÂÈÕʱ·ÖÃë #define REALTIME_CUMULATIVE_GAS_USAGE_B_ADDR 350 #define REALTIME_CUMULATIVE_FEE_USAGE_B_ADDR 358 #define REALTIME_BALANCE_B_ADDR 366 #define E2RW_READ_ABNORMAL_FLAG_ADDR 375 #define E2RW_WRITE_ABNORMAL_FLAG_ADDR 376 #define VALVE_OPEN_TIMES_ADDR 925 //¿ª·§´ÎÊý925-926 #define VALVE_CLOSE_TIMES_ADDR 927 //¹Ø·§´ÎÊý927-928 #define REALTIME_CUMULATIVE_GAS_USAGE_C_ADDR 970 #define REALTIME_CUMULATIVE_FEE_USAGE_C_ADDR 978 #define REALTIME_BALANCE_C_ADDR 986 #define NumStoredLength 750 //´Ë²»ÊǵØÖ·£¬ÊÇÊý¾ÝµÄÌõÊý #define WCACC_addr 0x03E8 //1000-4200 #define SCACC_addr 0x1068 //4200-7400 #define PRE_addr 0x1CE8 //7400-10600 #define TEM_addr 0x2968 //10600-13800 #define WCINS_addr 0x35E8 //13800-17000 #define SCINS_addr 0x4268 //17000-20200 #define SCCor_addr 0x4EE8 //20200-23400 #define YEAR_addr 0x5B68 //23400-24200 #define MONTH_addr 0x5E88 //24200-25000 #define DAY_addr 0x61A8 //25000-25800 #define HOUR_addr 0x64C8 //25800-26600 #define MIN_addr 0x67E8 //26600-27400 #define SEC_addr 0x6B08 //27400-28200 #define BAT_LITH_addr 0x6E28 //28200 #define BAT_ALKA_addr 0x6E2C // #define BAT_EX_addr 0x6E30 //28208 #define CUMULATIVE_GAS_USAGE_ADDR 31400 #define CUMULATIVE_FEE_USAGE_ADDR 37400 #define BALANCE_ADDR 43400 //43400-49400 /*¼Æ·Ñ²ÎÊýÐ޸ļǼ ±£´æ100Ìõ */ #define CURRENT_BIL_RECORD_NUM_ADDR 49990 #define BIL_RECORD_FULL_FLAG_ADDR 49992 #define FIRST_BIL_RECORD_ADDR 50000 #define BIL_RECORD_LENGTH 100 #define BIL_RECORD_NUM 100 /*±¨¾¯¼Ç¼£¬±£´æ1000Ìõ*/ #define CURRENT_ALARM_RECORD_NUM_ADDR 60000 #define ALARM_RECORD_FULL_FLAG_ADDR 60002 #define FIRST_ALARM_RECORD_ADDR 60004 #define ALARM_RECORD_LENGTH 9 #define ALARM_RECORD_NUM 1000 /*ÀÛ»ýÁ¿Ð޸ļǼ£¬±£´æ50Ìõ*/ #define CUMULANTS_MODIFY_RECORD_NUM_ADDR 70000 #define CUMULANTS_MODIFY_RECORD_FULL_FLAG_ADDR 70002 #define FIRST_CUMULANTS_MODIFY_RECORD_ADDR 70004 #define CUMULANTS_MODIFY_RECORD_LENGTH 50 #define CUMULANTS_MODIFY_RECORD_NUM 50 #define MODBUS_SLAVE_ADDR 75000 //ÁÙʱ±äÁ¿ ¼Æ·Ñģʽ #define BALANCE_SAVE_TYPE_ADDR 75002 typedef struct LLJ_data { uint16_t year; uint8_t month; uint8_t date; uint8_t hour; uint8_t min; uint8_t sec; float Lith_Battery_V; float Alka_Battery_V; float EX_Battery_V; float Meter_Battery_V; u8 MeterBatVoltagePercent; //·§ÃÅµç³Øµçѹ°Ù·Ö±È float SC_Accumulation; float WC_Accumulation; uint32_t SC_Accumulation_long; uint32_t WC_Accumulation_long; double SC_Accumulation_double; double WC_Accumulation_double; int16_t SC_Weight_Factor; int16_t WC_Weight_Factor; float Temperature; float Pressure; float SC_instant; float WC_instant; float KB_battery_Q; }LLJ_DATA; typedef struct{ uint8_t Tyf; uint8_t Tf; uint8_t Typ; uint8_t Tp; uint16_t sampling_Time; uint8_t time1_flag; //0x80,0x00 uint8_t sendTiming_hour; // BCD uint8_t sendTiming_min;// BCD uint8_t time2_flag; uint8_t sendTiming_hour2;// BCD uint8_t sendTiming_min2;// BCD uint8_t GPRS_RESTARTTIME; uint8_t real_sendTiming_hour; uint8_t real_sendTiming_min; uint8_t real_sendTiming_day; uint8_t RTC_sendTiming_hour; //BCD uint8_t RTC_sendTiming_min; uint8_t RTC_sendTiming_day; uint8_t AccountStatus; //0x01¿ª»§£¬00Ïú»§»òÕß먦»§¡£ uint8_t TestStatus; //²âÊÔ״̬£¬HWID4==1ʱ£¬TestStatus=1;´ËʱÓÃÓÚ³§¼Ò×Ô¼º²âÊÔ£¬²âÊԴ󲿷ֳö³§Ç°ÐèÒª¼ì²âµÄ¹¦ÄÜ¡£ uint8_t Hour_Updata_flag;//ʱÖÓ¸üÐÂflag£¬ÓÃÓÚһСʱ¶¨Ê±Óà uint8_t Key_Power_Det; //°´¼üµçÔ´¼ì²â±êÖ¾ uint8_t Logo_Display_Flag; //°´¼üµçÔ´¼ì²â±êÖ¾ // uint8_t EXPower_IR_Det;//ÍâµçÖն˲úÉúºóÐèÒªÑÓ³Ù¼ì²âµçƽÅжÏÊDz»ÊÇÕæµÄ״̬Óб仯 u16 Sample_Min_Time; //²É¼¯×îСʱ¼ä£¬µ¥Î»Ã룬¼ÓÈëÕâÀïÊÇ20£¬Òâ˼20ÃëÖ®ÄÚÖ»ÄÜÖ´ÐÐÒ»´Î²É¼¯£¬ ·ÀÖ¹20ÄÚ¶à´ÎÑ­»·Åжϲɼ¯ u16 Sample_Interval; //²É¼¯¼ä¸ô£¬µ¥Î»·ÖÖÓ ÊýÖµ·¶Î§1-1440 u16 Send_Interval; //·¢Ëͼä¸ô£¬µ¥Î»·ÖÖÓ ÊýÖµ·¶Î§0-1440, Ϊ0´ú±í²»Óüä¸ô·¢ËÍ u8 show_balance_flag;//0ΪÏÔʾ u8 show_price_flag; }DEVICE_PARM; //Alarm related typedef struct{ uint8_t alarm_l; uint16_t u16AlarmStoreNum; uint8_t u8AlarmStoreFullFlag; uint8_t alarm_Sample; uint8_t alarm_PRE; uint8_t alarm_TEM; uint8_t alarm_FlowPowerLOW; uint8_t alarm_FlowUnderPower; uint8_t alarm_FlowPowerDOWN; uint8_t alarm_AlkaPowerDOWN; uint8_t alarm_AlkaPowerLOW; uint8_t alarm_LithPowerDOWN; uint8_t alarm_LithPowerLOW; uint8_t alarm_EXPowerIN; uint8_t alarm_EXPowerRemove; uint8_t alarm_Pulse_Broken; uint8_t alarm_Pulse_Dismatch; uint8_t alarm_Valve_close; uint8_t alarm_Valve_open; uint8_t alarm_Valve_Abnormal; uint8_t alarm_Gas_Leak; uint8_t alarm_Gas_Leak_time; uint8_t alarm_Balance_Small; uint8_t alarm_Balance_0; uint8_t alarm_Credits_0; uint16_t alarm_Credits_0Times; uint8_t alarm_E2RW_read_abnormal; uint8_t alarm_E2RW_write_abnormal; uint8_t alarm_Cap_OPEN; uint8_t alarm_Valve_Force_Open; float fTempratureLowLimit; float fTempratureHighLimit; float fPressureLowLimit; float fPressureHighLimit; uint8_t u8ReadfailedTimes; uint8_t u8ReadSuccessfullyTimes; uint8_t alarm_Send_failed_time; uint8_t Data_Send_failed_time; uint8_t alarm_Valve_Abnormal_time; uint8_t alarm_RS485_Abnormal_Small_Reading; uint8_t u8PulseBrokenTimes; uint8_t alarm_FlowPowerLOW_time; /*LCD warrning flag*/ uint8_t alarm_AlkaPowerLow_LCDFLAG; uint8_t alarm_LithPowerLow_LCDFLAG; uint8_t alarm_AlkaPowerDOWN_LCDFLAG; uint8_t alarm_LithPowerDOWN_LCDFLAG; uint8_t alarm_Pulse_Broken_LCDFLAG; uint8_t alarm_Pulse_Dismatch_LCDFLAG; uint8_t alarm_Gas_Leak_LCDFLAG; uint8_t alarm_Sample_LCDFLAG; uint8_t alarm_PRE_LCDFLAG; uint8_t alarm_TEM_LCDFLAG; uint8_t alarm_Balance_Small_LCDFLAG; uint8_t alarm_RS485Cardinalityfree_LCDFLAG; uint8_t alarm_E2RW_read_abnormal_FLAG; uint8_t alarm_E2RW_write_abnormal_FLAG; uint8_t alarm_RS485_Abnormal_Small_Reading_FLAG; uint8_t alarm_Cap_OPEN_LCDFALG; uint8_t alarm_FlowPowerLOW_FLAG; }SYSTEM_ALARM; typedef struct{ //uint16_t u16AlarmRecordNUM; uint16_t u16BilRecordNUM; uint8_t u8BilStoreFullFlag; uint16_t u16CumulantsRecordNUM; uint8_t u8CumulantsStoreFullFlag; }SYSTEM_RECORD; /*-------------------------------¼Æ·Ñ²ÎÊýÐÅÏ¢--------------------------------*/ typedef struct parameter_bil { //float fTotal_balance; u8 cDataObtainType; // 0x01:µ¥Âö³åÎÞ485 0x02:µ¥485ÎÞÂö³å 0X03£ºÂö³å + 485 u8 u8PulseWidth; float fPulseCoefficient; u8 cBillingType; float fSingleBillingFee; float fStepBilling_First; float fStepBillingFee_First; float fStepBilling_Second; float fStepBillingFee_Second; float fStepBilling_Third; float fStepBillingFee_Third; int s32RechargeAmount; double dRechargeAmount; uint16_t iBalanceInsufAlarmAmount; float fCredits; }PARAMETER_BIL; /*-------------------------------·§ÃÅÒì³£ÅжÏ--------------------------------*/ #define VALVE_ABNORMAL_THRESHOLD 3 //Ôݶ¨·§ÃÅÒì³£Åж¨ãÐֵΪ3·½Á÷Á¿ typedef struct valve_abnormal_para { double valveCloseFirstCum; //¹Ø·§Ö®ºóµÚÒ»´Î¼Ç¼µÄÀÛ»ýÁ¿£¬¼Ç¼֮ºó¾Í²»»áÔٱ䣬³ý·ÇÔٴιط§´¥·¢ u8 valveCloseFirstFlag;//¹Ø·§Ö®ºóµÚÒ»´Î¼Ç¼±êÖ¾£¬ 1´ú±íÒѾ­¼Ç¼£¬0´ú±íûÓмǼ double valveCloseNextCum; //¹Ø·§Ö®ºó½ÓÏÂÀ´µÄ¼Ç¼µÄÀÛ»ýÁ¿£¬»á¸üРu8 valveCloseNextFlag;//¹Ø·§Ö®ºó½ÓÏÂÀ´µÄ¼Ç¼±êÖ¾£¬ 1´ú±íÒѾ­¼Ç¼£¬0´ú±íûÓмǼ }VALVE_ABNORMAL_PARA; /*-------------------------------É豸ÐòÁкÅ------------------------------------*/ //address: 0000~0039 typedef struct { /* Register Type R/W */ // uint16 serialNum[4]; /* 0 64bit integer r/w */ uint16 hardwareVerSn[3]; /* 1 32bit integer r/w */ uint16 firmwareVer[3]; /* 6 32bit integer r/w */ uint16 firmwareCRC; /* 8 16bit integer r/w */ uint16 firmwareVerDate_year; /* 9 32bit integer r/w */ uint16 firmwareVerDate_month; /* 9 32bit integer r/w */ uint16 firmwareVerDate_day; /* 9 32bit integer r/w */ uint8 EquipmentCaliberAndModel; //É豸¿Ú¾¶ÐͺÅ1:DN25, 2:DN32,3:DN40,4:DN50,5:DN80,6:DN100,7:DN150, 8:DN200 } deviceSerialNum_t; typedef struct { u8 slave_time_flag; u8 slave_addr; }MODBUS_DEV_PARA; #pragma pack() /*-------------------------------É豸ÐòÁкÅ------------------------------------*/ extern volatile deviceSerialNum_t regDevSerialNum; void arraya_2_arrayb(u8 * aA , u8 * aB, u8 len, u8 mode); uint8_t HexToChar(uint8_t bChar); uint8_t CharToHex(uint8_t bChar); uint8_t Set_parameters(uint8_t dev_or_bil); void parameters_2buff(uint8_t dev_or_bil,uint8_t key); void SendDataToSTM32(void); void calculate_Sample_Time(uint16_t NOW_year,uint8_t NOW_month,uint8_t NOW_day); void calculate_Send_Time(uint16_t NOW_year,uint8_t NOW_month,uint8_t NOW_day) ; void compara_Send_Sample(uint8_t NOW_year,uint8_t NOW_month,uint8_t NOW_day ,uint8_t NOW_hour,uint8_t NOW_min); void Variable_AllInit(void); void UART1_set(void); void Send_ParaUp(void); void Set_Billing_Para(void); void Alarm_record(uint16 AlarmCode); void Alarm_analysis(void); void CumulantsRecord(u8 GasModifyFlag,double PreModifyGasValue,u8 FeeModifyFlag,double PreModifyFeeValue); void CumulantsModify(void); //ÀÛ»ýÁ¿ÐÞ¸Ä void Send_Cumulants_Record(u16 num); void Send_Bil_Record(u16 num); void Send_Alarm_Record(u16 num); void LeakAlarmLine_Detection(void);//й©±¨¾¯Ïß void PulseLine_Detection(void); void RegisterInit(void); void VerRegisterSet(void); //°æ±¾ºÅÉèÖà void VerRegisterRead(void); //°æ±¾ºÅÉèÖà void Read_Valce_Para_Up(void); void BillRecord(void); //¼Æ·Ñ²ÎÊýÐ޸ļǼ void BigSmallSwitch(u8 * aA , u8 len); //Êý×é´óС¶ËÇл»£¬»òÕß½Ð×öÊý×éµ¹Ðò£¬Ä¿Ç°×Ϊ8×Ö½Ú unsigned char HEX2BCD(unsigned char hex_data); unsigned char BCD2HEX(unsigned char bcd_data); void Get_Sample_Send_Interval(void); void Sample_Send_Control(void); void Condition_det(void); void Valve_abnormal_judge(void); void dayly_flag_clear(void); extern uint16_t Time_For_valve_open; extern uint16_t Time_For_wakeup; extern uint16_t LCD_sleepTime; extern uint8_t LCD_flag; extern uint8_t LOGO_Flag ; extern uint32_t k_index; extern uint8_t flag,begin,LPM3_FLAG; extern int num,sleepTime; extern uint8_t total_dataGroupNum; extern uint8_t yushu; extern uint8_t FirstTimeRunFlag ; extern char Debug[150]; extern DEVICE_PARM device_Parm; extern PARAMETER_BIL parameter_bil; extern SYSTEM_ALARM system_alarm; extern SYSTEM_RECORD system_record; /////////////////////////////// extern u8 RS485_status,BT_status; extern volatile ad_data_s ad_data_g; extern volatile LLJ_DATA LLJ_data_g; extern u32 Power_ON_cnt; extern u8 Power_ON_flag; extern volatile MODBUS_DEV_PARA modbus_dev_para; extern VALVE_ABNORMAL_PARA valve_abnormal_para_g; #endif