147 lines
5.1 KiB
C
147 lines
5.1 KiB
C
#ifndef __DATAPROCESS_H
|
|
#define __DATAPROCESS_H
|
|
|
|
#include "main.h"
|
|
#include "system.h"
|
|
//#include "stm32f30x_tim.h"
|
|
|
|
#define OVER_VALUE_TIMES 4 //超过次数
|
|
#define COLLECT_SPEC_TIME 1 //采集时间
|
|
#define STORE_DATA_SIZE 600 //存储采集数据缓存
|
|
#define SECTOR_DATA_SIZE 512 //单个扇区包含字节数
|
|
|
|
#define ALLOW_GETDATA_TIMES 30 //指令响应后等待30s重新进入采集
|
|
|
|
#define SECTOR_DATA_SIZE 512 //单个扇区包含字节数
|
|
#define SECTOR_VIBRATION_GROUPS 64 //振动单个扇区包含字节数
|
|
#define SECTOR_SPEED_GROUPS 128 //转速单个扇区包含字节数
|
|
|
|
#define VIBRATION_SECTOR_START 10 //振动存储起始扇区
|
|
#define VIBRATION_SECTOR_END 59000000 //振动存储结束扇区 振动存储扇区范围 10-59000000 0x0A
|
|
|
|
#define SPEED_SECTOR_START 59000100 //转速温度存储起始扇区
|
|
#define SPEED_SECTOR_END 61600000 //转速温度存储结束扇区 转速温度存储扇区范围 59000100-61600000 0x3844524
|
|
|
|
#define DATA_BIT0 0x01 //允许采集计算位
|
|
|
|
|
|
typedef struct Get_Collect_Data
|
|
{
|
|
unsigned char Store_Get_Data[STORE_DATA_SIZE]; //存储数据数组
|
|
// unsigned char Collect_Spec_Time; //最小定时时间
|
|
uint16_t Store_Data_Count; //存储数据记录
|
|
uint16_t GET_Data_times; //采集计数
|
|
uint16_t Sampling_Wite_times; //采样时间
|
|
uint16_t get_tpd; //钻压定时器计数值
|
|
uint8_t get_tps; //振动分频值
|
|
// u8 Store_Data_Cound; //存储数据计数
|
|
}GET_COLLECT_DATA;
|
|
|
|
//振动数据
|
|
typedef struct VibrateData
|
|
{
|
|
float ViaX_Data; //x轴
|
|
float ViaY_Data; //y轴
|
|
float ViaZ_Data; //z轴
|
|
}VIBRA_DATA;
|
|
//typedef struct VibrateData
|
|
//{
|
|
// int ViaX_Data; //x轴
|
|
// int ViaY_Data; //y轴
|
|
// int ViaZ_Data; //z轴
|
|
//}VIBRA_DATA;
|
|
|
|
//#define DATALENG 15 // ?? DATALENG ???25
|
|
#define DATALENG 26 // ?? DATALENG ???25
|
|
#define ROWS 15
|
|
#define COLS_NORMAL 5
|
|
#define COLS_ABNORMAL 1
|
|
|
|
typedef union tuGetDataValue
|
|
{
|
|
float DataValue[DATALENG];
|
|
unsigned char ucDataValueBuf[DATALENG*4];
|
|
struct{
|
|
float Different_Press; //????
|
|
float Mean_InPress; //?????
|
|
float Mean_OutPress; //?????
|
|
float Energy_InPress; //?????
|
|
float Energy_OutPress; //?????
|
|
|
|
|
|
|
|
float Mean_WOB; //?????
|
|
float Amplitude_WOB; //?????
|
|
float Variance_WOB; //????
|
|
|
|
float Mean_Torque; //?????
|
|
float Amplitude_Torque; //?????
|
|
float Variance_Torque; //????
|
|
|
|
|
|
float Mean_RPM; //?????
|
|
float Amplitude_RPM; //?????
|
|
float Variance_RPM; //????
|
|
float Min_RPM; //?????
|
|
float Max_RPM; //?????
|
|
|
|
|
|
float Variance_Vibration; //??????
|
|
float Vibration_AxisX; //X??????
|
|
float Vibration_AxisY; //Y??????
|
|
float Vibration_AxisZ; //Z??????
|
|
|
|
int count_greater_than_10; // Z?????10g???
|
|
float Mean_InTemprature; //???????
|
|
float Mean_OutTemprature; //???????
|
|
|
|
float Variance_AxisX; //X?????
|
|
float Variance_AxisY; //Y?????
|
|
float Variance_AxisZ; //Z?????
|
|
};
|
|
}GetDataValue;
|
|
|
|
typedef struct {
|
|
// 存储正常情况的权重和标准化相关数据
|
|
float weights_normal[ROWS][COLS_NORMAL]; // 正常情况的权重
|
|
float std_scores_normal[COLS_NORMAL]; // 正常情况的标准化得分
|
|
float range_values[COLS_NORMAL]; // 正常情况的范围值
|
|
|
|
// 存储异常情况的权重和标准化相关数据
|
|
float weights_abnormal[ROWS][COLS_ABNORMAL]; // 异常情况的权重
|
|
float std_scores_abnormal[COLS_ABNORMAL]; // 异常情况的标准化得分
|
|
|
|
// 存储每行的最小值和最大值(可能用于归一化等操作)
|
|
float min_values[ROWS]; // 每行的最小值
|
|
float max_values[ROWS]; // 每行的最大值
|
|
}GetFeatureValue;
|
|
|
|
extern GetDataValue MeasurementData_Nearbit; //近端测量值
|
|
extern GetDataValue MeasurementData_Farbit; //远端测量值
|
|
|
|
extern GET_COLLECT_DATA GET_Vibration_Data; //振动数据采集
|
|
extern GET_COLLECT_DATA GET_Speed_Data; //转速数据采集
|
|
extern GET_COLLECT_DATA GET_WobTor_Data; //钻压扭矩数据采集
|
|
extern VIBRA_DATA Vibrate_Data_Value; //计算振动数值
|
|
|
|
extern unsigned char Get_MeasureData(GetDataValue DataValeNear);
|
|
|
|
extern void Get_Data_Process(void); //数据采集处理
|
|
|
|
extern void DataCompute(void); //数据计算
|
|
//extern void Data_Process(void); //数据处理
|
|
extern void Store_Vibration_Speed_Time(void); //时间存储
|
|
extern void updatetime (void); //时间更新
|
|
extern void Data_Cllect(void);
|
|
extern void Store_Time_Once(void); //存储一次时间
|
|
extern void Store_CollVibrateTime_Once(void); //
|
|
extern void Store_CollSpeedTime_Once(void); //
|
|
//extern int Get_Mid_Data(int data1,int data2,int data3);
|
|
//extern int Get_Mid_Data(unsigned int data1,unsigned int data2,unsigned int data3);
|
|
//extern void Store_Time_Once(void);
|
|
//extern void GET_MaxData(void); //提取频点及幅值
|
|
//extern void GET_SpotData(void); //提取间隔频点数据
|
|
//extern void GET_MaxData_Gate(void); //按频点间隔获得幅频数据
|
|
//extern void GET_Sort(long *DatTab,unsigned int length,unsigned int *DatOrder);
|
|
|
|
#endif |