aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-07-27 12:57:06 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-07-27 12:57:06 +0300
commit6bb63a96166785b09ad2e65885133f32077dc6c8 (patch)
tree47da865bd395aebe45060d06b513f2b054d2c7b0 /Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
parentc12f613bbcf149668cfd3e15cde46bc75c508893 (diff)
downloadTango-6bb63a96166785b09ad2e65885133f32077dc6c8.tar.gz
Tango-6bb63a96166785b09ad2e65885133f32077dc6c8.zip
initial blower value 2/3 of process value. build pressure in cleaner. stop job on waste overlow or cartridge inserted
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c41
1 files changed, 33 insertions, 8 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 5f1dfe138..a69b7fac5 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -45,6 +45,7 @@ HardwarePidControl DispensersCtrl[MAX_SYSTEM_DISPENSERS];
#define MAX_DYE_DISPENSERS 6
#define IDS_PRESEGMENT_TIME_STEP 50
+int32_t minimal_intersegment_length = 0;
int32_t DispenserSamples[MAX_SYSTEM_DISPENSERS][MAX_CONTROL_SAMPLES] = {0};
int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0};
double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0};
@@ -119,15 +120,15 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl
LeftRockerSpeed = ids_leftcleaningmotorspeed;
if ( ids_rightcleaningmotorspeed)
RightRockerSpeed = ids_rightcleaningmotorspeed;
+ minimal_intersegment_length = ids_cleaningstopbeforesegmenttime+ids_cleaningstartspraypresegmenttime+2000;
Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,__LINE__,RightRockerSpeed,RpWarning,(int)LeftRockerSpeed,0);
- Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,__LINE__,InterSegmentStartSprayCleaner,RpWarning,(int)InterSegmentCenterRockers,0);
+ Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,minimal_intersegment_length,InterSegmentStartSprayCleaner,RpWarning,(int)InterSegmentCenterRockers,0);
Report("IDS_Dispenser actuator times ",__FILE__,(int)LeftRockerSpeed/100*IDS_PRESEGMENT_TIME_STEP,(int)LeftRockerSpeed%100*IDS_PRESEGMENT_TIME_STEP,RpWarning,(int)RightRockerSpeed*IDS_PRESEGMENT_TIME_STEP,0);
-
}
uint32_t DispenserPreSegmentControlId = 0xFF;
uint32_t BrushStopControlId = 0xFF;
- uint32_t PreSegmentControlId = 0xFF;
+ //uint32_t PreSegmentControlId = 0xFF;
/*uint32_t IDS_DispenserControlInit()
{
@@ -576,6 +577,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
}
}
}
+ if (GetDispenserPressure(CLEANER_DISPENSER) > 0.02)
+ {
+ HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ CurrentDispenserSpeed[CLEANER_DISPENSER] = 0;
+ Report("IDS stop cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
+ }
if ((NumofReadyDispensers)&&(DispenserBuildTimeCounter%1000 == 0))
{
@@ -689,6 +697,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
//start new stage
if (endOfPrepareWCF == true)
{
+ if (CurrentDispenserSpeed[CLEANER_DISPENSER])
+ {
+ HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ CurrentDispenserSpeed[CLEANER_DISPENSER] = 0;
+ Report("IDS stop cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
+ }
SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback );
DispenserPrepareControlId = 0xFF;
Report("IDS_Prepare_Callback SafeRemoveControlCallback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
@@ -848,6 +863,12 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
}*/
}
}
+ TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
+ MotorSetSpeed((TimerMotors_t)HW_Motor_Id,400); //set the dispenser to the
+ CurrentDispenserSpeed[CLEANER_DISPENSER] = 400;
+ Report("IDS start cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
+
+
}
DispenserBuildTimeCounter = 0;
DispenserPrepareControlId = AddControlCallback(NULL, IDS_Prepare_Callback, PRESSURE_READ_TIME_GAP,TemplateDataReadCBFunction ,0, 0, 0 );
@@ -1259,15 +1280,19 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
if (SegmentId>0)
{
lInterSegmentLength = ((IntersegmentLength*100)*1000/dyeingspeed);
+
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
- if (DispenserPreSegmentControlId == 0xFF)
+ if (minimal_intersegment_length<((IntersegmentLength*100)*1000/dyeingspeed))
{
- Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
- return ERROR;
+ DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
+ if (DispenserPreSegmentControlId == 0xFF)
+ {
+ Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
+ return ERROR;
+ }
+ Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0);
}
- Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0);
/*if (EnableCleaning == true)
{
InterSegmentStartSprayCleaner = 500;