aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c39
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