From e5bd4aae30455510bdcdb492a34794c0747d7900 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 11 Jun 2020 15:06:31 +0300 Subject: Version 1.4.6.31: init failures - stop init until new version loaded / FSE arrives. read / write main CPU data (embedded parameters); VOC read to diagnostics; --- Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index c1d547f59..aec2988a2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -53,7 +53,7 @@ //#include static char* LoadStagesStr[15] = { /*00*/ "Initialization", - /*01*/ "heating stop", + /*01*/ "Heating stop", /*02*/ "Rockers opening", /*03*/ "Drier unloading", /*04*/ "Lids opening", -- cgit v1.3.1 From 1b5906087017b5092dd51cc1a639a95e7f41701d Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 11 Jun 2020 17:38:45 +0300 Subject: Merge with Avi's pressure sensor --- .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 12 +++++++- .../Modules/Diagnostics/DiagnosticsHoming.c | 15 +++++++--- .../Embedded/Modules/Thread/ThreadLoad.c | 16 ++++++---- .../Embedded/StateMachines/Printing/JobSTM.c | 35 ++++++++++++++++++++++ .../Embedded/StateMachines/Printing/PrintingSTM.c | 1 + .../Embedded/StateMachines/Printing/PrintingSTM.h | 1 + 6 files changed, 69 insertions(+), 11 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index 5675bf95c..2728b5cb2 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -444,7 +444,7 @@ bool WHS_Set_Blower_Control_Closed_Loop(double Q_value) } volt = getBlowerState(); WHS_Pid_Testing_Func(Q_value,current_dying_head_flow_Q); - close_loop_time = 1; + //close_loop_time = 1; if (0)//(tmp > 0.02) { //volt = g_MAX5805_device.CODE; @@ -585,6 +585,16 @@ uint32_t WHS_Pid_Testing_Func(double setParam,double measuredParam) usnprintf(whs_str, 150, "WHS_Pid_Testing_Func meas %d set %d error %d integral %d blower %d", (int)(measuredParam*100),(int)(setParam*100),(int)(WHS_ControlData.m_calculatedError*100),(int)(WHS_ControlData.m_integral*100),(int)(calculated_speed)); Report(whs_str, __FILE__,__LINE__, (int)(calculated_speed), RpMessage, (int)(volt), 0); + if (fabs(WHS_ControlData.m_calculatedError)>(WHS_ControlData.m_params.MAX/2)) + { + close_loop_time = 1; + WHS_ControlData.m_params.dt = 1; + } + else + { + close_loop_time = 10; + WHS_ControlData.m_params.dt = 10; + } SendLimitedBlowerControl(calculated_speed); return OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index 2d14f972e..8e875b6e7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -135,6 +135,13 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) LoadArmRounds = (int)dryerbufferlength; + int kval_upper_value; + if (Is_PP_Machine()) + kval_upper_value = 40; + else + kval_upper_value = 70; + + int direction; TimerMotors_t MotorId = (TimerMotors_t)request->motortype; if (LoadArmRounds <= 2) @@ -175,12 +182,12 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_RLOADING) { //keepkvalright = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun; - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, kval_upper_value); } if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_LLOADING) { //keepkvalleft = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].kvalrun; - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, kval_upper_value); } MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed, Motor_Id_to_LS_IdUp[MotorId], MotorHomingRequestCallback,30000); status = OK; @@ -216,12 +223,12 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_RLOADING) { //keepkvalright = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun; - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, kval_upper_value); } if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_LLOADING) { //keepkvalleft = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].kvalrun; - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, kval_upper_value); } MotorMovetoLimitSwitch (MotorId,MotorsCfg[MotorId].directionthreadwize, speed, Motor_Id_to_LS_IdDown[MotorId], MotorHomingRequestCallback,30000); status = OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index aec2988a2..31c9be4ff 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -93,7 +93,7 @@ uint32_t LoadStatus = OK; char LoadErrorMsg[100]; int32_t keepmicrostep; - int32_t keepkvalrun,keepkvalhold; + int32_t keepkvalrun,keepkvalhold,kval_upperValue; uint8_t CallbackCounter = 0; uint8_t TimeoutsCounter = 0; bool SecondTry = false,TryAgain = false; @@ -140,7 +140,6 @@ //EEPROM_STORAGE_DRYER_CYCLES MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&LoadArmRounds); - Report("Read_Dryer_ENC_Position()",__FILE__,__LINE__,0,RpWarning,Read_Dryer_ENC_Position(),0); Report("MotorMovetoEncoderPosition",__FILE__,__LINE__,LoadArmRounds,RpWarning,0,0); @@ -165,6 +164,11 @@ uint32_t Thread_Load_Reduce_Heat(void) { + if (Is_PP_Machine()) + kval_upperValue = 40; + else + kval_upperValue = 70; + //Heaters Off, Dryer Blower Off, Blower Low, REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Reduce_Heat"); memcpy (&ProcessParametersClear,&ProcessParametersKeep,sizeof(ProcessParameters)); @@ -392,8 +396,8 @@ REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Lift_Rockers"); MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 8); MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 8); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, kval_upperValue); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, kval_upperValue); Task_sleep(10); CallbackCounter++; MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 250, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,35000); @@ -427,8 +431,8 @@ MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 8); MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 8); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, kval_upperValue); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, kval_upperValue); REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Close_Rockers"); CallbackCounter++; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 71393cf48..f22d09d9d 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -101,6 +101,7 @@ JobSegment *TSegment; JobBrushStop *TbrushStop; JobDispenser *Tdispenser; JobSpool *Tspool; +HeadCleaningParameters *CleaningParameters; bool CopyConfigured[MAX_SYSTEM_MODULES]; bool CleaningJobActive = false, JoggingJobActive = false; char ErrorMsg[100]; @@ -570,6 +571,10 @@ uint32_t ThreadCleaningJob(int speed) TSegment = my_malloc(sizeof(JobSegment)); Tspool = my_malloc(sizeof(JobSpool)); TbrushStop = my_malloc(sizeof(JobBrushStop)); + CleaningParameters = my_malloc(sizeof(CleaningParameters)); + CleaningParameters->has_cleanerflow = true; + CleaningParameters->cleanerflow = 800; + Ticket.headcleaningparameters = CleaningParameters; TSegment->length = 10.0; Ticket.length += (TSegment->length*n_segments); TSegment->n_brushstops = 1; @@ -613,6 +618,36 @@ uint32_t ThreadCleaningJob(int speed) } return status; } +void FreeCleaningJobData(void *JobDetails) +{ + JobTicket* JobTicket = JobDetails; + + if (JobTicket->headcleaningparameters) + free (JobTicket->headcleaningparameters); + if (JobTicket->spool) + { + free (JobTicket->spool); + } + if (JobTicket->segments[0]->brushstops[0]->n_dispensers) + { + if (JobTicket->segments[0]->brushstops[0]->dispensers[0]); + free (JobTicket->segments[0]->brushstops[0]->dispensers[0]); + if (JobTicket->segments[0]->brushstops[0]->dispensers); + free (JobTicket->segments[0]->brushstops[0]->dispensers); + } + if (JobTicket->segments[0]->n_brushstops) + { + if (JobTicket->segments[0]->brushstops[0]); + free (JobTicket->segments[0]->brushstops[0]); + if (JobTicket->segments[0]->brushstops); + free (JobTicket->segments[0]->brushstops); + } + if (JobTicket->segments[0]) + free (JobTicket->segments[0]); + if (JobTicket->segments) + free (JobTicket->segments); + +} void ThreadJoggingRequestFunc(MessageContainer* requestContainer) { uint32_t status = OK; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 61561c6a9..a0828322e 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -650,6 +650,7 @@ uint32_t EndState(void *JobDetails, char *Message) } if (CleaningJobActive == true) { + //FreeCleaningJobData(JobDetails); CleaningJobActive = false; //memcpy(&Configured,&CopyConfigured,sizeof(CopyConfigured)); //usnprintf(ErMsg, 80,"Copy Configured T %d W %d I %d H %d W %d",CopyConfigured[Module_Thread],CopyConfigured[Module_Winder],CopyConfigured[Module_IDS],CopyConfigured[Module_Heaters],CopyConfigured[Module_Waste]); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h index de3191a85..9c282d0f0 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h @@ -175,6 +175,7 @@ uint32_t ThreadJoggingFunc(int speed); uint32_t ThreadCleaningJobFunc(MessageContainer* requestContainer); uint32_t ThreadCleaningAbortJobFunc(MessageContainer* requestContainer); uint32_t ThreadCleaningJob(int speed); +void FreeCleaningJobData(void *JobDetails); uint32_t CurrentJobRequestFunc(MessageContainer* requestContainer); uint32_t ResumeCurrentJobRequestFunc(MessageContainer* requestContainer); -- cgit v1.3.1