190 lines
5.8 KiB
C
190 lines
5.8 KiB
C
|
|
#include "includes.h"
|
|||
|
|
#include "TankPrediction.h"
|
|||
|
|
|
|||
|
|
typedef struct TankPara TankPara;
|
|||
|
|
typedef struct MonitoringData MonitoringData;
|
|||
|
|
|
|||
|
|
#pragma pack(push, 1)
|
|||
|
|
|
|||
|
|
typedef struct // size = 1350
|
|||
|
|
{
|
|||
|
|
uint16_t check; // <20><>־<EFBFBD><D6BE><EFBFBD>̶<EFBFBD>Ϊ0x55AA
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
TankPara tank; // size = 1298
|
|||
|
|
uint8_t tankBuff[1346];
|
|||
|
|
};
|
|||
|
|
uint16_t crc; // <20><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>crc
|
|||
|
|
} ccs_tank_t;
|
|||
|
|
|
|||
|
|
#pragma pack(pop)
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><DEB2><EFBFBD>
|
|||
|
|
ccs_tank_t ccsTank;
|
|||
|
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
MonitoringData ccsMData;
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC>
|
|||
|
|
void CCS_Init()
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡtankֵ
|
|||
|
|
FRAM_LoadInfo(FRAM_CCS_TANK_BASE, (uint8_t *)&ccsTank, sizeof(ccsTank));
|
|||
|
|
|
|||
|
|
// // <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
|
|||
|
|
// memset(&ccsTank, 0, sizeof(ccsTank));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if 1
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ԥ<EFBFBD>⺯<EFBFBD><E2BAAF>
|
|||
|
|
void CCS_Predict()
|
|||
|
|
{
|
|||
|
|
S_RTC_TIME_DATA_T sRTC;
|
|||
|
|
uint32_t totoalSeconds;
|
|||
|
|
|
|||
|
|
// <20>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
|
|||
|
|
if(dcBuff.sampleData.staExtTempr[0].notConnect || dcBuff.sampleData.staExtTempr[0].overFlow || dcBuff.sampleData.staExtTempr[0].underFlow)
|
|||
|
|
return;
|
|||
|
|
if(dcBuff.sampleData.staPress.notConnect || dcBuff.sampleData.staPress.overFlow || dcBuff.sampleData.staPress.underFlow)
|
|||
|
|
return;
|
|||
|
|
if(dcBuff.sampleData.staDPress.notConnect || dcBuff.sampleData.staDPress.overFlow || dcBuff.sampleData.staDPress.underFlow)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC>MData
|
|||
|
|
memset(&ccsMData, 0, sizeof(ccsMData));
|
|||
|
|
|
|||
|
|
// MData<74><61>ֵ
|
|||
|
|
// ccsMData.Record_ID;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ID
|
|||
|
|
// //unsigned char Record_Date[12]; //<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
|
|||
|
|
RTC_GetDateAndTime(&sRTC);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>gps<70><73>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
totoalSeconds = Calc_SecondsFromYear(INITIAL_YEAR, sRTC.u32Year, sRTC.u32Month, sRTC.u32Day,
|
|||
|
|
sRTC.u32Hour, sRTC.u32Minute, sRTC.u32Second);
|
|||
|
|
Wakeup_CalcUTCTime(totoalSeconds + RTC_offsetSeconds, &sRTC);
|
|||
|
|
ccsMData.Record_Date = sRTC.u32Year;
|
|||
|
|
ccsMData.Record_Date = ccsMData.Record_Date * 100 + sRTC.u32Month;
|
|||
|
|
ccsMData.Record_Date = ccsMData.Record_Date * 100 + sRTC.u32Day;
|
|||
|
|
ccsMData.Record_Date = ccsMData.Record_Date * 100 + sRTC.u32Hour;
|
|||
|
|
ccsMData.Record_Date = ccsMData.Record_Date * 100 + sRTC.u32Minute;
|
|||
|
|
ccsMData.Record_Date = ccsMData.Record_Date * 100;
|
|||
|
|
ccsMData.Record_T = dcBuff.sampleData.extTempr[0];//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>¶ȣ<C2B6><C8A3>棩
|
|||
|
|
ccsMData.Record_P = dcBuff.sampleData.pressure * 0.001;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>KPa-MPa<50><61>
|
|||
|
|
ccsMData.Record_L = dcBuff.sampleData.volumePct * 0.01;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>װ<EFBFBD>ʣ<EFBFBD>0.01%->1%<25><>
|
|||
|
|
// ccsMData.Record_Amp_x;//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ccsMData.Record_Amp_y;//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ccsMData.Record_Amp_z;//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// ccsMData.Record_fr_x;//<2F>˶<EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
|
// ccsMData.Record_fr_y;//<2F>˶<EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
|
// ccsMData.Record_fr_z;//<2F>˶<EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
|
// ccsMData.Record_OutT;//<2F><><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
|||
|
|
|
|||
|
|
//20220506<30><36><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
|
|||
|
|
if(dcBuff.dtuData.recentPosState)
|
|||
|
|
ccsMData.WE = dcBuff.dtuData.longitude * 0.000001;//<2F><><EFBFBD>ȣ<EFBFBD><C8A3>㣩
|
|||
|
|
if(dcBuff.dtuData.recentPosState)
|
|||
|
|
ccsMData.SN = dcBuff.dtuData.latitude * 0.000001;//γ<>ȣ<EFBFBD><C8A3>㣩
|
|||
|
|
|
|||
|
|
ccsMData.Record_Tg = ccsMData.Record_T;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
|||
|
|
ccsMData.Record_Tl = ccsMData.Record_T;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
|||
|
|
|
|||
|
|
// ccsMData.Yewei = dcBuff.sampleData.height * 0.001;//Һλ<D2BA><CEBB>mm->m<><6D>
|
|||
|
|
// if(dcBuff.sampleData.vacuum[0].staVacuum == VACUUM_STATUS_OK)
|
|||
|
|
// ccsMData.zkd = dcBuff.sampleData.vacuum[0].vacuum;// <20><><EFBFBD>նȣ<D5B6>Pa<50><61>
|
|||
|
|
// ccsMData.dP = dcBuff.sampleData.diff; //ѹ<>KPa<50><61>
|
|||
|
|
|
|||
|
|
// ccsMData.mdY2;// Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ccsMData.mdY3;
|
|||
|
|
// ccsMData.mdY4;
|
|||
|
|
// ccsMData.mdY5;
|
|||
|
|
// ccsMData.mdY6;
|
|||
|
|
// ccsMData.mdY7;
|
|||
|
|
// ccsMData.mdY8;
|
|||
|
|
// ccsMData.mdY9;
|
|||
|
|
// ccsMData.mdY10;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ά<EFBFBD><CEAC>ʱ<EFBFBD><CAB1><EFBFBD>㷨
|
|||
|
|
PredictTime(&ccsMData, &ccsTank.tank);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>tankֵ<6B><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
FRAM_SaveInfo(FRAM_CCS_TANK_BASE, (uint8_t *)&ccsTank, sizeof(ccsTank));
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
dcBuff.sampleData.ccsRemainDay = (uint16_t) ccsTank.tank.MaintainTime;
|
|||
|
|
dcBuff.sampleData.ccsVer = ccsTank.tank.sfbm;
|
|||
|
|
|
|||
|
|
PRINTF("\r\n*** MaintainTime: %d, sfbm: %06d ***\r\n", dcBuff.sampleData.ccsRemainDay, dcBuff.sampleData.ccsVer);
|
|||
|
|
}
|
|||
|
|
#else
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ԥ<EFBFBD>⺯<EFBFBD><E2BAAF>
|
|||
|
|
void CCS_Predict()
|
|||
|
|
{
|
|||
|
|
static uint32_t idx = 0;
|
|||
|
|
|
|||
|
|
double Record_Date[2] = {20161228060000, 20161228120000};
|
|||
|
|
float extTempr[2] = {-158.96, -158.89};
|
|||
|
|
float pressure[2] = {0.01, 0.01125};
|
|||
|
|
float volumePct[2] = {81.4965821058808, 81.5329064771208};
|
|||
|
|
float longitude[2] = {114.297203, 114.297203};
|
|||
|
|
float latitude[2] = {30.579869, 30.579869};
|
|||
|
|
float Record_OutT[2] = {2.4, 7.3};
|
|||
|
|
|
|||
|
|
if(idx >= 2)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC>MData
|
|||
|
|
memset(&ccsMData, 0, sizeof(ccsMData));
|
|||
|
|
|
|||
|
|
// MData<74><61>ֵ
|
|||
|
|
// ccsMData.Record_ID;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ID
|
|||
|
|
// //unsigned char Record_Date[12]; //<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
ccsMData.Record_Date = Record_Date[idx];
|
|||
|
|
ccsMData.Record_T = extTempr[idx];//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>¶ȣ<C2B6><C8A3>棩
|
|||
|
|
ccsMData.Record_P = pressure[idx];//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>KPa-MPa<50><61>
|
|||
|
|
ccsMData.Record_L = volumePct[idx];//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>װ<EFBFBD>ʣ<EFBFBD>0.01%->1%<25><>
|
|||
|
|
// ccsMData.Record_Amp_x;//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ccsMData.Record_Amp_y;//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ccsMData.Record_Amp_z;//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// ccsMData.Record_fr_x;//<2F>˶<EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
|
// ccsMData.Record_fr_y;//<2F>˶<EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
|
// ccsMData.Record_fr_z;//<2F>˶<EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
|
ccsMData. Record_OutT = Record_OutT[idx];//<2F><><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
|||
|
|
|
|||
|
|
//20220506<30><36><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
|
|||
|
|
ccsMData.WE = longitude[idx];//<2F><><EFBFBD>ȣ<EFBFBD><C8A3>㣩
|
|||
|
|
ccsMData.SN = latitude[idx];//γ<>ȣ<EFBFBD><C8A3>㣩
|
|||
|
|
|
|||
|
|
ccsMData.Record_Tg = ccsMData.Record_T;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
|||
|
|
ccsMData.Record_Tl = ccsMData.Record_T;//<2F>洢ÿ<E6B4A2>δӴ<CEB4><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
|||
|
|
|
|||
|
|
// ccsMData.Yewei;//Һλ<D2BA><CEBB>mm->m<><6D>
|
|||
|
|
// ccsMData.zkd;// <20><><EFBFBD>նȣ<D5B6>Pa<50><61>
|
|||
|
|
// ccsMData.dP; //ѹ<>KPa<50><61>
|
|||
|
|
|
|||
|
|
// ccsMData.mdY2;// Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ccsMData.mdY3;
|
|||
|
|
// ccsMData.mdY4;
|
|||
|
|
// ccsMData.mdY5;
|
|||
|
|
// ccsMData.mdY6;
|
|||
|
|
// ccsMData.mdY7;
|
|||
|
|
// ccsMData.mdY8;
|
|||
|
|
// ccsMData.mdY9;
|
|||
|
|
// ccsMData.mdY10;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ά<EFBFBD><CEAC>ʱ<EFBFBD><CAB1><EFBFBD>㷨
|
|||
|
|
PredictTime(&ccsMData, &ccsTank.tank);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>tankֵ<6B><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
FRAM_SaveInfo(FRAM_CCS_TANK_BASE, (uint8_t *)&ccsTank, sizeof(ccsTank));
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
dcBuff.sampleData.ccsRemainDay = (uint16_t) ccsTank.tank.MaintainTime;
|
|||
|
|
dcBuff.sampleData.ccsVer = ccsTank.tank.sfbm;
|
|||
|
|
|
|||
|
|
PRINTF("\r\n*** MaintainTime: %d, sfbm: %06d ***\r\n", dcBuff.sampleData.ccsRemainDay, dcBuff.sampleData.ccsVer);
|
|||
|
|
|
|||
|
|
idx++;
|
|||
|
|
}
|
|||
|
|
#endif
|