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.c68
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