RS485 and algorithm in central controller are ok

This commit is contained in:
zhengjihong 2025-04-24 17:46:19 +08:00
parent 9f84b5a233
commit 0e2cdea4bf
3 changed files with 71 additions and 63 deletions

View File

@ -9,26 +9,26 @@ void get_weights_scores_range(GetFeatureValue* feature)
{ {
// 填充 weights_normal // 填充 weights_normal
float weights_normal[ROWS][COLS_NORMAL] = { float weights_normal[ROWS][COLS_NORMAL] = {
{0.02782361153708092f, 0.07425339118419849f, 0.12759042354281214f, 0.12291090933910485f, 0.057825758510349136f}, {0.02536112373147522f,0.05512614321141711f,0.14267535646902674f,0.16133346206755558f,0.10950333816620461f},
{0.027564071230094304f, 0.034914011597243846f, 0.03428079481697248f, 0.01543479395828397f, 0.07718536996417004f}, {0.022501814070676942f,0.04732276804576742f,0.04194724344174091f,0.02621574442760558f,0.047215370581991545f},
{0.019488141538371105f, 0.03279628785143933f, 0.07694254491891732f, 0.010422855733018327f, 0.022348371109245885f}, {0.018003586497350618f,0.0431656287153646f,0.07865669397927093f,0.017026200202278845f,0.003652478376425392f},
{0.30791780437151484f, 0.0433871871689603f, 0.03287291407974492f, 0.22075997995717458f, 0.11441410143843696f}, {0.32024982967117427f,0.035535672541306684f,0.031030858413814488f,0.24429833563710904f,0.09967948230006361f},
{0.041967380936312006f, 0.03073173344712312f, 0.10570414834976417f, 0.038395937926823887f, 0.4457716705304025f}, {0.029334689721561346f,0.02969550083218594f,0.09925900579103232f,0.029629006919347025f,0.4357667452203222f},
{0.08006381221588085f, 0.016748822025924905f, 0.02814835728381258f, 0.06657550807501712f, 8.589391929335013e-15f}, {0.05787595533854885f,0.01554478121686156f,0.028520717142108763f,0.07200373575215642f,0.0006793460069581621f},
{0.08219625282668795f, 0.010732292674554226f, 0.030018966581668607f, 0.09360232815172899f, 0.081724331840547f}, {0.11164004553402096f,0.021488846081792058f,0.027015323736423267f,0.06835601650464118f,0.06507896606999451f},
{0.029540427522817107f, 0.04301860142552467f, 0.02658344150030427f, 0.12924826197604972f, 0.012136341727289321f}, {0.03512378851112017f,0.04353279811744198f,0.02353244436926462f,0.11985817699670917f,0.026400101174232783f},
{0.07933570776110352f, 0.014970424884683423f, 0.055678037816256847f, 0.04312882532615478f, 0.01724498153241749f}, {0.0679031765133709f,0.015229294191235638f,0.02114050815724666f,0.047639082979661976f,0.04478038713658755f},
{0.13425223325463498f, 0.20821822793072117f, 0.18170578370731505f, 0.07162196775825218f, 0.05237352825266105f}, {0.1406890147631353f,0.1880250839886159f,0.20847554840928026f,0.0810319935793325f,0.04348556994313417f},
{0.03346582696060625f, 0.031537897016211264f, 0.07854916838700497f, 0.038058057152586464f, 0.018421685430336208f}, {0.03156489452065363f,0.022497648211455456f,0.07162434867943443f,0.035050436098907636f,0.013979034047182124f},
{0.02450787860501228f, 0.020163834961829358f, 0.032592734764566145f, 0.027770217521932265f, 0.06720024464681389f}, {0.016102335088496025f,0.015524545028903453f,0.0472261768209504f,0.024201430458576385f,0.05320423374249968f},
{0.02270181024144438f, 0.151882044343984f, 0.05846495235235432f, 0.0692621315241782f, 0.03335361501730471f}, {0.02532395637816995f,0.13180297364581464f,0.05950058091445133f,0.0459745429704959f,0.031178515883672587f},
{0.02469783116319416f, 0.24075458769337896f, 0.09324354614973776f, 0.04024389436146122f, 8.589391929335013e-15f}, {0.02299058880568741f,0.2719675224112871f,0.09280615745629113f,0.015702128841647265f,0.008980547313484886f},
{0.0644772098352455f, 0.04589065579422297f, 0.03762418574876846f, 0.012564331238233306f, 8.589391929335013e-15f} {0.07533520085455829f,0.06354079376055055f,0.026589036219663745f,0.011679706563975762f,0.01641588403724634f}
}; };
// 填充 weights_abnormal // 填充 weights_abnormal
// 填充标准分数 // 填充标准分数
float std_scores_normal[COLS_NORMAL] = { 4.3300748832172875f,1.0124176131894556f,1.2331122890852892f,2.2906345596071116f,1.8271316432346785f }; float std_scores_normal[COLS_NORMAL] = {4.426009220352611f,1.0100249366124394f,1.229524185950373f,2.5243247379778886f,1.8966734702247467f};
// 填充范围值 // 填充范围值
float range_values[COLS_NORMAL] = {0.14035106713875936f,0.07188706493959258f,0.34388788541653376f,0.6280178217431671f,0.30525313799525955f}; float range_values[COLS_NORMAL] = {0.14035106713875936f,0.07188706493959258f,0.34388788541653376f,0.6280178217431671f,0.30525313799525955f};
@ -48,7 +48,8 @@ void get_weights_scores_range(GetFeatureValue* feature)
0.0f, // 转速幅度最小值 0.0f, // 转速幅度最小值
0.0f, // 转速方差最小值 0.0f, // 转速方差最小值
0.0f, // X振动严重性最小值 0.0f, // X振动严重性最小值
0.0f // Y振动严重性最小值 0.0f, // Y振动严重性最小值
0.0f // Z振动严重性最小值
}; };
float max_values[ROWS] = { float max_values[ROWS] = {
@ -65,7 +66,8 @@ void get_weights_scores_range(GetFeatureValue* feature)
30.0f, // 转速幅度最大值 30.0f, // 转速幅度最大值
3150.0f, // 转速方差最大值 3150.0f, // 转速方差最大值
5.0f, // X振动严重性最大值 5.0f, // X振动严重性最大值
5.0f // Y振动严重性最大值 5.0f, // Y振动严重性最大值
5.0f // Z振动严重性最大值
}; };
// 将数据赋值到结构体 // 将数据赋值到结构体
@ -152,12 +154,6 @@ unsigned char Get_MeasureData(GetDataValue DataValeNear) {
float Mean_RPM = DataValeNear.Mean_RPM; //转速平均值 float Mean_RPM = DataValeNear.Mean_RPM; //转速平均值
float Mean_InTemprature = DataValeNear.Mean_InTemprature; //管内温度平均值 float Mean_InTemprature = DataValeNear.Mean_InTemprature; //管内温度平均值
float Mean_OutTemprature = DataValeNear.Mean_OutTemprature; //环空温度平均值 float Mean_OutTemprature = DataValeNear.Mean_OutTemprature; //环空温度平均值
float Mean_AxisX = DataValeNear.Mean_AxisX; //X轴振动平均值
float Mean_AxisY = DataValeNear.Mean_AxisY; //Y轴振动平均值
float Mean_AxisZ = DataValeNear.Mean_AxisZ; //Z轴振动平均值
float Mean_InDielectric = DataValeNear.Mean_InDielectric; //管内介电平均值
float Mean_OutDielectric = DataValeNear.Mean_OutDielectric; //环空介电平均值
float Different_Press = DataValeNear.Different_Press; //压力差值 float Different_Press = DataValeNear.Different_Press; //压力差值
float Energy_InPress = DataValeNear.Energy_InPress; //内压能量值 float Energy_InPress = DataValeNear.Energy_InPress; //内压能量值
float Energy_OutPress = DataValeNear.Energy_OutPress; //外压能量值 float Energy_OutPress = DataValeNear.Energy_OutPress; //外压能量值
@ -191,23 +187,23 @@ unsigned char Get_MeasureData(GetDataValue DataValeNear) {
int con_result = Zuanjin_weights_judge(data, &dataFeature); int con_result = Zuanjin_weights_judge(data, &dataFeature);
if (con_result == 1) if (con_result == 0)
{ {
Temp = 'A'; Temp = 'A';
}; };
if (con_result == 2) if (con_result == 1)
{ {
Temp = 'B'; Temp = 'B';
} }
if (con_result == 3) if (con_result == 2)
{ {
Temp = 'C'; Temp = 'C';
} }
if (con_result == 4) if (con_result == 3)
{ {
Temp = 'D'; Temp = 'D';
} }
if (con_result == 5) if (con_result == 4)
{ {
Temp = 'E'; Temp = 'E';
} }
@ -229,11 +225,6 @@ void DataCompute(void)
.Mean_RPM = 4.293f, .Mean_RPM = 4.293f,
.Mean_InTemprature = 22.74f, .Mean_InTemprature = 22.74f,
.Mean_OutTemprature = 0.93f, .Mean_OutTemprature = 0.93f,
.Mean_AxisX = 1.08f,
.Mean_AxisY = 0.32f,
.Mean_AxisZ = 0.3f,
.Mean_InDielectric = 4.2f,
.Mean_OutDielectric = 3.8f,
.Different_Press = 2.5f, .Different_Press = 2.5f,
.Energy_InPress = 10.0f, .Energy_InPress = 10.0f,
.Energy_OutPress = 8.5f, .Energy_OutPress = 8.5f,

View File

@ -51,8 +51,8 @@ typedef struct VibrateData
// int ViaZ_Data; //zÖá // int ViaZ_Data; //zÖá
//}VIBRA_DATA; //}VIBRA_DATA;
//#define DATALENG 15 // 假设 DATALENG 的值为25 //#define DATALENG 15 // ?? DATALENG ???25
#define DATALENG 25 // 假设 DATALENG 的值为25 #define DATALENG 26 // ?? DATALENG ???25
#define ROWS 15 #define ROWS 15
#define COLS_NORMAL 5 #define COLS_NORMAL 5
#define COLS_ABNORMAL 1 #define COLS_ABNORMAL 1
@ -62,32 +62,42 @@ typedef union tuGetDataValue
float DataValue[DATALENG]; float DataValue[DATALENG];
unsigned char ucDataValueBuf[DATALENG*4]; unsigned char ucDataValueBuf[DATALENG*4];
struct{ struct{
float Mean_InPress; //内压平均值 float Different_Press; //????
float Mean_OutPress; //外压平均值 float Mean_InPress; //?????
float Mean_WOB; //钻压平均值 float Mean_OutPress; //?????
float Mean_Torque; //扭矩平均值 float Energy_InPress; //?????
float Mean_RPM; //转速平均值 float Energy_OutPress; //?????
float Mean_InTemprature; //管内温度平均值
float Mean_OutTemprature; //环空温度平均值
float Mean_AxisX; //X轴振动平均值
float Mean_AxisY; //X轴振动平均值
float Mean_AxisZ; //X轴振动平均值
float Mean_InDielectric; //管内介电平均值
float Mean_OutDielectric; //环空介电平均值
float Different_Press; //压力差值
float Energy_InPress; //内压能量值
float Energy_OutPress; //外压能量值 float Mean_WOB; //?????
float Amplitude_WOB; //钻压幅度值 float Amplitude_WOB; //?????
float Variance_WOB; //钻压方差 float Variance_WOB; //????
float Amplitude_Torque; //扭矩幅度值
float Variance_Torque; //扭矩方差 float Mean_Torque; //?????
float Amplitude_RPM; //转速幅度值 float Amplitude_Torque; //?????
float Variance_RPM; //转速方差 float Variance_Torque; //????
float Vibration_AxisX; //X轴振动严重性
float Vibration_AxisY; //Y轴振动严重性
float Vibration_AxisZ; //Z轴振动严重性 float Mean_RPM; //?????
float Variance_Vibration; //振动方差 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; }GetDataValue;

View File

@ -282,6 +282,7 @@ void GetData(void)
switch(s_Data.ReceiveBuf[3]) switch(s_Data.ReceiveBuf[3])
{ {
case 0x40: //获取近端工程参数数据 case 0x40: //获取近端工程参数数据
#if 0
for(i=0;i<12;i++) //赋值压力差值,内压能量,外压能量 48-59 6-17 3 for(i=0;i<12;i++) //赋值压力差值,内压能量,外压能量 48-59 6-17 3
{ {
MeasurementData_Nearbit.ucDataValueBuf[i+48] = s_Data.ReceiveBuf[6+i]; MeasurementData_Nearbit.ucDataValueBuf[i+48] = s_Data.ReceiveBuf[6+i];
@ -315,6 +316,12 @@ void GetData(void)
// MeasurementData_Nearbit.ucDataValueBuf[i] = s_Data.ReceiveBuf[6+i]; // MeasurementData_Nearbit.ucDataValueBuf[i] = s_Data.ReceiveBuf[6+i];
// } // }
// MeasurementData_Nearbit.ucDataValueBuf[] // MeasurementData_Nearbit.ucDataValueBuf[]
#else
for(i = 0; i < 26*4; i++) //赋值压力差值,内压能量,外压能量 48-59 6-17 3
{
MeasurementData_Nearbit.ucDataValueBuf[i] = s_Data.ReceiveBuf[6+i];
}
#endif
break; break;
case 0x41: //获取远端工程参数数据 case 0x41: //获取远端工程参数数据
for(i=0;i<12;i++) //赋值压力差值,内压能量,外压能量 48-59 6-17 3 for(i=0;i<12;i++) //赋值压力差值,内压能量,外压能量 48-59 6-17 3