diff options
| author | Mirta <mirta@twine-s.com> | 2020-12-30 16:39:52 +0200 |
|---|---|---|
| committer | Mirta <mirta@twine-s.com> | 2020-12-30 16:39:52 +0200 |
| commit | 00a491d93733d4625ad329b2ba8237f445364b3f (patch) | |
| tree | 4b24c6fa78d7648f4bb7cefafa464bb0b063fec4 /Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | |
| parent | 124ad4150f80c6846fdee41dbbda9848c105f6e5 (diff) | |
| download | Tango-00a491d9.tar.gz Tango-00a491d9.zip | |
merge
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 559ffdecc..19507775e 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -134,7 +134,7 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl /*uint32_t IDS_DispenserControlInit() { - DispensersControl = (void *)(DISPENSERS_MAP_IN_FLASH); + DispensersControl = (void *)(?/); DispensersControl = DispensersCtrl; //EraseFlashSection(DispensersControl,sizeof(HardwarePidControl)*MAX_SYSTEM_DISPENSERS); @@ -459,11 +459,31 @@ c. Go to step 2.a x Segment.BrushStopsCount. uint32_t DispenserPrepareControlId = 0xFF; int NumOfActiveDispensers = 0; int DispenserBuildTimeCounter = 0; - double TargetNumberOfStepsPreRun,MaximalPressurePreRun; + double TargetNumberOfStepsPreRun = 120000,MaximalPressurePreRun = 4; int DispenserTotalPrepareSteps[MAX_SYSTEM_DISPENSERS]; bool DispenserLastMovementDown[MAX_SYSTEM_DISPENSERS]; #define PRESSURE_READ_TIME_GAP 100 + //this function returns preparation ratio for the most cool heater (current temperature/ target temerature) + double IdsPrepareProgress(void) + { + HardwarePidControlType i; + double MaxDifference = 1.00,temp = 0; + if (TargetNumberOfStepsPreRun == 0) + return 1.00; + for (i = 0; i < MAX_DYE_DISPENSERS; i++) + { + if (DispenserUsedInJob[i] == false) //we actually should check for all dispensers + continue; + if (DispenserTotalPrepareSteps[i]>TargetNumberOfStepsPreRun) + continue; + temp = DispenserTotalPrepareSteps[i]/TargetNumberOfStepsPreRun; + if (temp<MaxDifference) + MaxDifference = temp; + } + //Report("IdsPrepareProgress" ,__FILE__,__LINE__,(int)(MaxDifference*100),RpWarning,0,0); + return MaxDifference; + } uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) { @@ -1523,7 +1543,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId) //******************************************************************************************************************** uint32_t SegmentNumOfBrushStops = 0; -double BrushStopTime = 0; +double BrushStopTime = 0,BrushStopOffset = 0,PrevBrushStopOffset = 0; uint32_t BrushStopCounter = 0; uint32_t BrushStopStartTime = 0,BrushStopLength = 0; @@ -1532,7 +1552,16 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) int Dispenser_i,DispenserId; TimerMotors_t HW_Motor_Id; double segmentfirst_speed; + double tempBrushStopTime = 0; //ReportWithPackageFilter(IDSFilter,"IDS_StartBrushStop",__FILE__,__LINE__,(int)JobBrushStopId,RpWarning,(int)0,0); + PrevBrushStopOffset = BrushStopOffset; + BrushStopOffset = FileBrushStop->offsetmeters; + tempBrushStopTime = (BrushStopOffset-PrevBrushStopOffset); //length in meters + tempBrushStopTime = ((tempBrushStopTime*100)/dyeingspeed);//brushstop in seconds (length in cetimeters/ centimeters per second) + tempBrushStopTime *= 1000; // milliseconds + if (tempBrushStopTime > 100) + BrushStopTime = tempBrushStopTime; + ReportWithPackageFilter(IDSFilter,"IDS_StartBrushStop offset", __FILE__, tempBrushStopTime,(int)(BrushStopOffset*100), RpWarning,(int)(PrevBrushStopOffset*100), 0); if (n_dispensers) { @@ -1611,7 +1640,7 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers) //usnprintf(IdMessage, 80,"IDS_StartBrushStop %d/%d K %d,C %d,M %d,Y %d,TI %d",FileBrushStop->index,SegmentNumOfBrushStops,CurrentDispenserSpeed[0], // CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]); if (BuildIdsJobPrintString(IdMessage,"IDS_StartBrushStop ",FileBrushStop->index)) - ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, SegmentNumOfBrushStops, FileBrushStop->index, RpWarning,(int)FileBrushStop->offsetmeters, 0); + ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, SegmentNumOfBrushStops, FileBrushStop->index, RpWarning,(int)(FileBrushStop->offsetmeters*100), 0); } uint32_t IDSBrushStopRestartCallback(uint32_t IfIndex, uint32_t readValue) @@ -1714,6 +1743,8 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0) IDS_Cleaning_Stop_Cleaning_Solution(NULL); #endif + BrushStopOffset = 0; + PrevBrushStopOffset = 0; SegmentNumOfBrushStops = Segment->n_brushstops; BrushStopTime = Segment->length*1000/(double)SegmentNumOfBrushStops; //brushstop in meters //brushstop in millisecond BrushStopTime = ((BrushStopTime*100)/dyeingspeed);//brushstop in seconds |
