diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-04-01 14:05:26 +0200 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-04-01 14:05:26 +0200 |
| commit | 44c91de2b71d128d9b47e240ee6f4e58b6b8544e (patch) | |
| tree | 631ceb852328908d3a8295683e3bd3e0ab980410 /Software/Embedded_SW/Embedded/Modules | |
| parent | 69a8c4d6b902d866a7a7e2ff8f70b25637cd8196 (diff) | |
| parent | 91fde2b410712c7866b9d3d139d97ee8db008223 (diff) | |
| download | Tango-44c91de2b71d128d9b47e240ee6f4e58b6b8544e.tar.gz Tango-44c91de2b71d128d9b47e240ee6f4e58b6b8544e.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
5 files changed, 156 insertions, 90 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 1176d3132..98b3704ce 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -54,10 +54,11 @@ void IDS_Dispenser_SetPrepareValues( uint32_t DispenserBuildPressureSpeed, } void IDS_Dispenser_SetTimeOutValues(uint32_t CloseTimeout, uint32_t OpenTimeout) { -#ifndef SPECIAL_DISPENSERS - CloseValveTimeout = CloseTimeout; - OpenValveTimeout = OpenTimeout; -#endif + if (Special_Dispensers == false) + { + CloseValveTimeout = CloseTimeout; + OpenValveTimeout = OpenTimeout; + } Report("IDS_Dispenser_SetTimeOutValues ",__FILE__,__LINE__,OpenValveTimeout,RpWarning,(int)CloseValveTimeout,0); } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h index 89892801b..ad1d5b5c4 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h @@ -94,6 +94,9 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl void IDS_Dispenser_SetPreSegmentCleaningValues(double ids_cleaningspeed,double ids_cleaningstartspraypresegmenttime ,double ids_cleaningstopbeforesegmenttime,double ids_leftcleaningmotorspeed,double ids_rightcleaningmotorspeed); void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config); +double Get_WFCF(void); +double Get_WFCF_Time(void); + bool Set_Check_Pressure_Bypass(int); uint32_t IDS_Dispenser_Close_Valve_And_Stop_Motor(int DispenserId, callback_fptr callback); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 107fd425b..1fe5968e6 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -90,11 +90,14 @@ AutoHoming_Config_enum AutoHoming_Config = AutoHoming_off; void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config) { Report("IDS_Dispenser_SetAutoHoming_Config ",__FILE__,__LINE__,Config,RpWarning,AutoHoming_Config,0); -#ifdef SPECIAL_DISPENSERS - AutoHoming_Config = AutoHoming_off; -#else - AutoHoming_Config = Config; -#endif + if (Special_Dispensers == false) + { + AutoHoming_Config = Config; + } + else + { + AutoHoming_Config = AutoHoming_off; + } } void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag, uint32_t initialdispenserspeed) @@ -548,8 +551,9 @@ void IDS_Dispenser_Init(uint8_t DispenserId) PrimingActive[DispenserId]= false; Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF); Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer -#ifdef SPECIAL_DISPENSERS - if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF) - ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,DispenserId, 0, 0 ); -#endif + if (Special_Dispensers == true) + { + if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF) + ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,DispenserId, 0, 0 ); + } } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index a34594d56..213774270 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -51,6 +51,8 @@ HardwarePidControlType ThreadDispenserIdToControlId[MAX_SYSTEM_DISPENSERS] = { JobUploadStrategy uploadstrategy = JOB_UPLOAD_STRATEGY__Default; bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true}; bool IDS_Active = false; + +bool Special_Dispensers = false; /******************** STRUCTURES AND ENUMs ********************************************/ uint32_t IDS_Valve_DistanceToSpoolReady(uint32_t deviceID, uint32_t ReadValue); uint32_t IDS_Valve_PresegmentReady(uint32_t deviceID, uint32_t ReadValue); @@ -82,7 +84,15 @@ int lInterSegmentLength = 0; uint32_t WFCF = 80; bool EnableCleaning = true; bool JobEndSequence = false; - void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, double ids_presegment_wfcf_timebeforesegment) +double Get_WFCF(void) +{ + return WFCF; +} +double Get_WFCF_Time(void) +{ + return InterSegmentStartWFCFDispensers; +} +void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, double ids_presegment_wfcf_timebeforesegment) { if (ids_presegment_wfcf_timebeforesegment) InterSegmentStartWFCFDispensers = ids_presegment_wfcf_timebeforesegment; @@ -506,13 +516,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) if (pressureReady == false) { -#ifndef SPECIAL_DISPENSERS - if (DispenserBuildTimeCounter<(2*eOneSecond)) + if (Special_Dispensers == false) { - //REPORT_MSG(DispenserBuildTimeCounter,"waiting 2 seconds for pressure changes"); - return OK; + if (DispenserBuildTimeCounter<(2*eOneSecond)) + { + //REPORT_MSG(DispenserBuildTimeCounter,"waiting 2 seconds for pressure changes"); + return OK; + } } -#endif for (i = 0; i < MAX_DYE_DISPENSERS; i++) { //IDS_StopHomeDispenser(i); @@ -522,33 +533,36 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) if (GetDispenserPressure(i) > DispenserPreparePressure*1.05) { NumofReadyDispensers++; -#ifdef SPECIAL_DISPENSERS - MotorStop(HW_Motor_Id, Hard_Hiz); - CurrentDispenserSpeed[i] = 0; + if (Special_Dispensers == true) + { + MotorStop(HW_Motor_Id, Hard_Hiz); + CurrentDispenserSpeed[i] = 0; //Report("IDS stopped ready",__FILE__,i,(int)(DispenserPreparePressure*100),RpWarning,(int)NumofReadyDispensers,0); -#else - tempSpeed = CurrentDispenserSpeed[i]; - updatedSpeed = (tempSpeed*0.992>100)?tempSpeed*0.992:100; - MotorSetSpeed(HW_Motor_Id, updatedSpeed); - CurrentDispenserSpeed[i] = updatedSpeed; - //Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); -#endif + } + else + { + tempSpeed = CurrentDispenserSpeed[i]; + updatedSpeed = (tempSpeed*0.992>100)?tempSpeed*0.992:100; + MotorSetSpeed(HW_Motor_Id, updatedSpeed); + CurrentDispenserSpeed[i] = updatedSpeed; + //Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); + } } else { -#ifdef SPECIAL_DISPENSERS - tempSpeed = (DispenserPreparePressure-GetDispenserPressure(i))*InitialDispenserSpeed; - if (tempSpeed<300) - tempSpeed = 300; -#else - tempSpeed = CurrentDispenserSpeed[i]; -#endif + if (Special_Dispensers == true) + { + tempSpeed = (DispenserPreparePressure-GetDispenserPressure(i))*InitialDispenserSpeed; + if (tempSpeed<300) + tempSpeed = 300; + } + else + { + tempSpeed = CurrentDispenserSpeed[i]; + } updatedSpeed = (tempSpeed*1.03<InitialDispenserSpeed)?tempSpeed*1.03:InitialDispenserSpeed; MotorSetSpeed(HW_Motor_Id, updatedSpeed); CurrentDispenserSpeed[i] = updatedSpeed; -#ifdef SPECIAL_DISPENSERS - //Report("IDS accelerate speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); -#endif } } } @@ -569,7 +583,6 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) Report("pressureReady = true or timeout;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); } } -//#ifndef SPECIAL_DISPENSERS else if (endOfPrepareWCF == false) { if ((DispenserBuildTimeCounter == PRESSURE_READ_TIME_GAP)&&(FirstBrushStop)) @@ -614,11 +627,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) segmentfirst_speed /= 100; DispenserSegmentReady[DispenserId] = false; //Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer -#ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL); -#else - MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); -#endif + if (Special_Dispensers == true) + { + IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL); + } + else + { + MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); + } CurrentDispenserSpeed[Dispenser_i] = segmentfirst_speed; usnprintf(IdMessage, 80, @@ -660,13 +676,8 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) } } -/*#endif -#ifdef SPECIAL_DISPENSERS - if (pressureReady == true) -#else*/ //start new stage if (endOfPrepareWCF == true) -//#endif { SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); DispenserPrepareControlId = 0xFF; @@ -791,9 +802,10 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) for (i = 0; i < MAX_DYE_DISPENSERS; i++) { dispenserspeed = DispenserPrepareSpeed; -#ifdef SPECIAL_DISPENSERS - dispenserspeed = 300; -#endif + if (Special_Dispensers == true) + { + dispenserspeed = 300; + } TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[i]; if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers @@ -802,11 +814,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) { Report("Prepare Speed",__FILE__,HomingActive[i],i,RpWarning,(int)dispenserspeed,0); MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); //set the dispenser to the -#ifdef SPECIAL_DISPENSERS - MotorSetSpeed((TimerMotors_t)HW_Motor_Id,dispenserspeed); //set the dispenser to the -#else - IDS_Dispenser_Start_Motor_and_Open_Valve(i,dispenserspeed, NULL); -#endif + if (Special_Dispensers == true) + { + MotorSetSpeed((TimerMotors_t)HW_Motor_Id,dispenserspeed); //set the dispenser to the + } + else + { + IDS_Dispenser_Start_Motor_and_Open_Valve(i,dispenserspeed, NULL); + } } /*else { @@ -943,11 +958,14 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) { if (DispenserUsedInJob[DispenserId] == true) { -#ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); -#else - MotorStop(HW_Motor_Id, Hard_Hiz); -#endif + if (Special_Dispensers == true) + { + IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); + } + else + { + MotorStop(HW_Motor_Id, Hard_Hiz); + } CurrentDispenserSpeed[Dispenser_i] = 0; usnprintf(IdsMessage, 80,"Presegment Prepare Dispenser %d stopped",DispenserId,(int) segmentfirst_speed); Report(IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0); @@ -1069,7 +1087,6 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //cleaning return OK; } -//#ifndef SPECIAL_DISPENSERS if ((InterSegmentStartWFCFDispensers > 12000)&&(InterSegmentStartWFCFDispensers == (InterSegmentStepsCount+12000))) { //start prepare 4 seconds before wcf @@ -1150,7 +1167,6 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //close waste valve one second before segment - trial Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head); } -//#endif return OK; } uint32_t IDSCheckSegmentData(void *SegmentDetails, int SegmentId) @@ -1336,11 +1352,14 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) { if (DispenserUsedInJob[DispenserId] == true) { -#ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); -#else - MotorStop(HW_Motor_Id,Soft_Hiz); //26/03/19 test without valves -#endif + if (Special_Dispensers == true) + { + IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); + } + else + { + MotorStop(HW_Motor_Id,Soft_Hiz); //26/03/19 test without valves + } CurrentDispenserSpeed[DispenserId] = 0; //MotorSetSpeed(HW_Motor_Id, 5); //CurrentDispenserSpeed[Dispenser_i] = 5; @@ -1406,11 +1425,14 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) segmentfirst_speed, NULL);*/ //Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer -#ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed, NULL); -#else - MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); -#endif + if (Special_Dispensers == true) + { + IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed, NULL); + } + else + { + MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); + } CurrentDispenserSpeed[DispenserId] = segmentfirst_speed; usnprintf(IdsMessage, 80, "Dispenser %d nl/sec %d nl/pulse %d Pulse/sec %d speed %d steps %d/%d", @@ -1429,11 +1451,14 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) //IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);*/ if (DispenserUsedInJob[DispenserId] == true) { -#ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); -#else - MotorStop(HW_Motor_Id, Hard_Hiz); -#endif + if (Special_Dispensers == true) + { + IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); + } + else + { + MotorStop(HW_Motor_Id, Hard_Hiz); + } CurrentDispenserSpeed[DispenserId] = 0; } //Report("inActive dispenser stopped", __FILE__, __LINE__, DispenserId, RpWarning, segmentfirst_speed, 0); @@ -1615,11 +1640,14 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) if (DispenserUsedInJob[Dispenser_i]==true)//unconfigured dispenser { DispenserDistanceToSpoolReady[Dispenser_i] = false; - #ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL); - #else - MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); - #endif + if (Special_Dispensers == true) + { + IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL); + } + else + { + MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); + } Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer CurrentDispenserSpeed[Dispenser_i] = 0; //IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady); @@ -1700,11 +1728,14 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) { if (DispenserUsedInJob[Dispenser_i] == true) { -#ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL); -#else - MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); -#endif + if (Special_Dispensers == true) + { + IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL); + } + else + { + MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); + } Control3WayValvesWithCallback (Dispenser_i, MidTank_Dispenser, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer CurrentDispenserSpeed[Dispenser_i] = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 7a9b66a0b..ed15b74bf 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -685,6 +685,33 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) response.has_progress = true; } else + if(request->amount == 0xE3) //fast refresh for pressure + { + Report("Set WFCF Value ",__FILE__,__LINE__,request->delay,RpWarning,(int)Get_WFCF_Time(),0); + IDS_Dispenser_SetPreSegmentWFCFValues((double) request->delay, Get_WFCF_Time()); + response.progress = (double)OK; + response.has_progress = true; + } + else + if(request->amount == 0xE4) //fast refresh for pressure + { + Report("Set WFCF build to waste Time Value ",__FILE__,__LINE__,request->delay,RpWarning,(int)Get_WFCF(),0); + IDS_Dispenser_SetPreSegmentWFCFValues(Get_WFCF(),(double) request->delay); + response.progress = (double)OK; + response.has_progress = true; + } + else + if(request->amount == 0xE5) //fast refresh for pressure + { + if (request->delay<=1) + { + Report("Set special dispensers ",__FILE__,__LINE__,request->delay,RpWarning,Special_Dispensers,0); + Special_Dispensers = request->delay; + } + response.progress = (double)OK; + response.has_progress = true; + } + else if(request->amount == 0xB1) //fast refresh for pressure { LOG_ERROR(request->delay,"Set loading arm center"); |
