|
|
@@ -18,6 +18,81 @@ uint32_t error_delay = 0; //错误持续时长
|
|
|
// test_result_struct result = {0};
|
|
|
heat_ctrl_struct g_heat_ctrl = {0};
|
|
|
|
|
|
+
|
|
|
+float get_avg(float value[10])
|
|
|
+{
|
|
|
+ float sum = 0;
|
|
|
+
|
|
|
+ for(int i = 0; i < 10; i++)
|
|
|
+ {
|
|
|
+ sum += value[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ sum /= 10;
|
|
|
+
|
|
|
+ return sum;
|
|
|
+}
|
|
|
+float get_std_avg(float value[10])
|
|
|
+{
|
|
|
+ float sum = 0;
|
|
|
+ float avg = 0;
|
|
|
+
|
|
|
+ avg = get_avg(value);
|
|
|
+
|
|
|
+ for(int i = 0; i < 10; i++)
|
|
|
+ {
|
|
|
+ sum += (value[i] - avg) * (value[i] - avg);
|
|
|
+ }
|
|
|
+
|
|
|
+ sum = sqrtf(sum / 9) / avg;
|
|
|
+
|
|
|
+ return sum;
|
|
|
+}
|
|
|
+
|
|
|
+float get_max_min(float value[10])
|
|
|
+{
|
|
|
+ float max = 0;
|
|
|
+ float min = 99999;
|
|
|
+
|
|
|
+ for(int i = 0; i < 10; i++)
|
|
|
+ {
|
|
|
+ if(value[i] > max)
|
|
|
+ max = value[i];
|
|
|
+
|
|
|
+ if(value[i] < min)
|
|
|
+ min = value[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ return (max - min);
|
|
|
+}
|
|
|
+void DatascopeSend(float value1,float value2, float value3, float value4, float value5,
|
|
|
+ float value6,float value7,float value8,float value9,float value10,float value11)//date_scope 10ch driver
|
|
|
+{
|
|
|
+ uint16_t check;
|
|
|
+ CmdMessage msg;
|
|
|
+ float temp;
|
|
|
+ uint8_t DataScopeOutPutBuffer[40]; // Serial port send buffer
|
|
|
+
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[0] = *(uint32_t*)&value1;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[4] = *(uint32_t*)&value2;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[8] = *(uint32_t*)&value3;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[12] = *(uint32_t*)&value4;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[16] = *(uint32_t*)&value5;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[20] = *(uint32_t*)&value6;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[24] = *(uint32_t*)&value7;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[28] = *(uint32_t*)&value8;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[32] = *(uint32_t*)&value9;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[36] = *(uint32_t*)&value10;
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[40] = *(uint32_t*)&value11; //时间
|
|
|
+
|
|
|
+ temp = get_max_min((float*)DataScopeOutPutBuffer);
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[44] = *(uint32_t*)&temp; //极差
|
|
|
+ temp = get_std_avg((float*)DataScopeOutPutBuffer);
|
|
|
+ *(uint32_t*)&DataScopeOutPutBuffer[48] = *(uint32_t*)&temp; //离散系数
|
|
|
+
|
|
|
+ data_send_to_pc(PC_CMD_DATASCOPE,DataScopeOutPutBuffer,sizeof(DataScopeOutPutBuffer));
|
|
|
+}
|
|
|
+
|
|
|
int TrigStateCheck(void)
|
|
|
{
|
|
|
return (HAL_GPIO_ReadPin(MINI7_V2_DEC_S1_GPIO_Port,MINI7_V2_DEC_S1_Pin)) ? 1 : 0; //
|
|
|
@@ -141,11 +216,11 @@ uint8_t error_set(uint8_t error)
|
|
|
error_info.error_report = 1;
|
|
|
data_send_to_pc(PC_CMD_REPORT_REEOR, (char*)&error_info, sizeof(str_error_info_t));
|
|
|
|
|
|
- if(error != ERROR_MOTOR_FIALED){
|
|
|
- sysinf.psmMaster.state = SW_Fault;
|
|
|
- // mcu_ack_ctrl.re_send_card = ACK_TIMEOUT;
|
|
|
- // Card_State_Send(HEAT_OFF); //降温至40°C,不开风扇
|
|
|
- }
|
|
|
+// if(error != ERROR_MOTOR_FIALED){
|
|
|
+// sysinf.psmMaster.state = SW_Fault;
|
|
|
+// // mcu_ack_ctrl.re_send_card = ACK_TIMEOUT;
|
|
|
+// // Card_State_Send(HEAT_OFF); //降温至40°C,不开风扇
|
|
|
+// }
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
@@ -184,12 +259,18 @@ void re_send_state(void){
|
|
|
void updateAmplifState(uint8_t newset){
|
|
|
if(sysinf.amplifState != newset){
|
|
|
sysinf.amplifState = newset;
|
|
|
+ if(newset == SYS_STATE_ERROR_HW){
|
|
|
+ sysinf.lysisState = newset;
|
|
|
+ }
|
|
|
sysinf.updateSt = 1;
|
|
|
}
|
|
|
}
|
|
|
void updateLysisState(uint8_t newset){
|
|
|
if(sysinf.lysisState != newset){
|
|
|
sysinf.lysisState = newset;
|
|
|
+ if(newset == SYS_STATE_ERROR_HW){
|
|
|
+ sysinf.amplifState = newset;
|
|
|
+ }
|
|
|
sysinf.updateSt = 1;
|
|
|
}
|
|
|
|
|
|
@@ -262,7 +343,7 @@ void usr_state_machine(ProcessStateMachine_t *sts, heat_ctrl_def *heater)
|
|
|
sts->controlword = Target_reached_cmd;
|
|
|
updateAmplifState(SYS_STATE_READY);
|
|
|
/*************lxx-add-20232.11.30****************/
|
|
|
- if (SensorSelfCheck() == SystemError)
|
|
|
+ if (SensorSelfCheckPass()==0)
|
|
|
{
|
|
|
error_set(ERROR_SENSOR_SELF_CHECK);
|
|
|
}
|
|
|
@@ -271,11 +352,11 @@ void usr_state_machine(ProcessStateMachine_t *sts, heat_ctrl_def *heater)
|
|
|
{
|
|
|
/*跳过温度判断*/
|
|
|
sts->controlword = Target_reached_cmd;
|
|
|
- if (SensorSelfCheck() == SystemError)
|
|
|
+ if (SensorSelfCheckPass()==0)
|
|
|
{
|
|
|
error_set(ERROR_SENSOR_SELF_CHECK);
|
|
|
}
|
|
|
- // Card_State_Send(HEAT_STOP);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (is_command(sts->controlword, Target_reached_cmd))
|
|
|
@@ -363,7 +444,7 @@ void usr_state_machine(ProcessStateMachine_t *sts, heat_ctrl_def *heater)
|
|
|
{
|
|
|
sample_calibrate_calc(sts->sampleTimes); //采样,前18组计算均值
|
|
|
//输出原始数据
|
|
|
- // DatascopeSend(CS[0].RDR,CS[1].RDR,CS[2].RDR,CS[3].RDR,CS[4].RDR,CS[5].RDR,CS[6].RDR,CS[7].RDR,CS[8].RDR,CS[9].RDR, g_card_tick_s/60.0f);
|
|
|
+ DatascopeSend(CS[0].RDR,CS[1].RDR,CS[2].RDR,CS[3].RDR,CS[4].RDR,CS[5].RDR,CS[6].RDR,CS[7].RDR,CS[8].RDR,CS[9].RDR,(sysinf.ms_conter/1000.0));
|
|
|
}
|
|
|
|
|
|
|