diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 68 |
1 files changed, 42 insertions, 26 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 97c37cc4f..9832bf773 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -88,6 +88,9 @@ int lInterSegmentLength = 0; uint32_t InterSegmentStartWFCFDispensers; uint32_t WFCF = 80; bool EnableCleaning = true; + + bool short_cycle = false; + // in short cycle mode: no dispenser autohoming after job, no prerun. bool JobEndSequence = false; double Get_WFCF(void) { @@ -489,14 +492,17 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) { if (AutoHoming_Config >= AutoHoming_JobEnd_PowerOn_off) { - if ((HomingActive[DispenserId] == false)&&(PrimingActive[DispenserId] == false)) + if (short_cycle==false) { - ReportWithPackageFilter(IDSFilter,"Homing Inactive dispenser",__FILE__,DispenserId,HomingActive[DispenserId],RpWarning,PrimingActive[DispenserId],0); - IDS_HomeDispenser (DispenserId, 1000 , NULL); - } - else - { - ReportWithPackageFilter(IDSFilter,"Inactive dispenser already homing",__FILE__,DispenserId,HomingActive[DispenserId],RpWarning,PrimingActive[DispenserId],0); + if ((HomingActive[DispenserId] == false)&&(PrimingActive[DispenserId] == false)) + { + ReportWithPackageFilter(IDSFilter,"Homing Inactive dispenser",__FILE__,DispenserId,HomingActive[DispenserId],RpWarning,PrimingActive[DispenserId],0); + IDS_HomeDispenser (DispenserId, 1000 , NULL); + } + else + { + ReportWithPackageFilter(IDSFilter,"Inactive dispenser already homing",__FILE__,DispenserId,HomingActive[DispenserId],RpWarning,PrimingActive[DispenserId],0); + } } } return OK; @@ -605,6 +611,11 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl DispenserBuildTimeCounter+=PRESSURE_READ_TIME_GAP; + if (short_cycle==true) + { + ReportWithPackageFilter(IDSFilter,"IDS prepare short cycle - skip pre-run",__FILE__,i,(int)DispenserTotalPrepareSteps[i],RpWarning,(int)(pressure*100),0); + pressureReady = true; + } if (pressureReady == false) { if (DispenserBuildTimeCounter<(2*eOneSecond)) @@ -972,15 +983,18 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl DispenserTotalPrepareSteps[i] = 0; if (AutoHoming_Config >= AutoHoming_JobEnd_PowerOn_off) { - if ((HomingActive[i] == false)&&(PrimingActive[i] == false)) + if (short_cycle==false) { - ReportWithPackageFilter(IDSFilter,"Homing Inactive dispenser",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0); - if (IDS_HomeDispenser (i, 1000 , NULL) == ERROR) - Control3WayValvesWithCallback (i, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer; - } - else - { - ReportWithPackageFilter(IDSFilter,"Inactive dispenser already homing",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0); + if ((HomingActive[i] == false)&&(PrimingActive[i] == false)) + { + ReportWithPackageFilter(IDSFilter,"Homing Inactive dispenser",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0); + if (IDS_HomeDispenser (i, 1000 , NULL) == ERROR) + Control3WayValvesWithCallback (i, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer; + } + else + { + ReportWithPackageFilter(IDSFilter,"Inactive dispenser already homing",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0); + } } } #ifdef DISPENSER_VALVES_OPEN @@ -1006,7 +1020,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl { ReportWithPackageFilter(IDSFilter,"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 - MotorSetSpeed((TimerMotors_t)HW_Motor_Id,dispenserspeed); //set the dispenser to the + IDS_Dispenser_Start_Motor_and_Open_Valve(i,dispenserspeed, NULL); } /*else { @@ -1162,7 +1176,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl { if (DispenserUsedInJob[DispenserId] == true) { - IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); + MotorStop(HW_Motor_Id, Hard_Hiz); CurrentDispenserSpeed[DispenserId] = 0; //usnprintf(IdsMessage, 80,"Presegment Prepare Dispenser %d stopped",DispenserId,(int) segmentfirst_speed); //ReportWithPackageFilter(IDSFilter,IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0); @@ -1549,7 +1563,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) { if (DispenserUsedInJob[DispenserId] == true) { - IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); + MotorStop(HW_Motor_Id,Soft_Hiz); //26/03/19 test without valves CurrentDispenserSpeed[DispenserId] = 0; DispenserPreSegmentReady[DispenserId] = true; //27/03/19 check if job should be stopped REPORT_MSG(DispenserId,"Dispenser stopped pre Segment"); @@ -1622,7 +1636,7 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) /*IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId, segmentfirst_speed, NULL);*/ - IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed, NULL); + 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", @@ -1641,7 +1655,7 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) //IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL);*/ if (DispenserUsedInJob[DispenserId] == true) { - IDS_Dispenser_Close_Valve_And_Stop_Motor(DispenserId,NULL); + MotorStop(HW_Motor_Id, Hard_Hiz); CurrentDispenserSpeed[DispenserId] = 0; } //ReportWithPackageFilter(IDSFilter,"inActive dispenser stopped", __FILE__, __LINE__, DispenserId, RpWarning, segmentfirst_speed, 0); @@ -1851,7 +1865,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) { DispenserDistanceToSpoolReady[Dispenser_i] = false; dispenserCount++; - IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL); + 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); @@ -1895,10 +1909,13 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) //MotorStop(HW_Motor_Id,Hard_Hiz); if (AutoHoming_Config >= AutoHoming_JobEnd_PowerOn_off) { - if (deviceID!=LUBRICANT_DISPENSER) + if (short_cycle==false) { - ReportWithPackageFilter(IDSFilter,"IDS_Valve_EndValveReady start homing",__FILE__,deviceID,(int)AutoHoming_Config,RpWarning,(int)AutoHoming_JobEnd_PowerOn_off,0); - IDS_HomeDispenser (deviceID, 1000 , NULL); + if (deviceID!=LUBRICANT_DISPENSER) + { + ReportWithPackageFilter(IDSFilter,"IDS_Valve_EndValveReady start homing",__FILE__,deviceID,(int)AutoHoming_Config,RpWarning,(int)AutoHoming_JobEnd_PowerOn_off,0); + IDS_HomeDispenser (deviceID, 1000 , NULL); + } } } return OK; @@ -1939,8 +1956,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) if (DispenserUsedInJob[Dispenser_i] == true) { AlarmHandlingSetAlarm (EVENT_TYPE__DISPENSER_1_UNDERPRESSURE+Dispenser_i,OFF); //handle alarm detection and operation - TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[Dispenser_i]; - MotorStop(HW_Motor_Id,Hard_Hiz); + MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); #ifdef DISPENSER_VALVES_OPEN Control3WayValvesWithCallback (Dispenser_i, Dispenser_Mixer, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer #else |
