aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/StateMachines
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/StateMachines')
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c12
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c77
2 files changed, 72 insertions, 17 deletions
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
index df8f964fe..17166a095 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
@@ -92,10 +92,10 @@ void PowerIdleSetIdle(void)
ProcessParametersClear.dryerzone1temp = (ActiveProcessParameters.dryerzone1temp<80)? ActiveProcessParameters.dryerzone1temp:IdleDrierTemperature;
ProcessParametersClear.dryerzone2temp = (ActiveProcessParameters.dryerzone2temp<80)? ActiveProcessParameters.dryerzone2temp:IdleDrierTemperature;
ProcessParametersClear.dryerzone3temp = (ActiveProcessParameters.dryerzone3temp<80)? ActiveProcessParameters.dryerzone3temp:IdleDrierTemperature;
- ProcessParametersClear.mixertemp = (ActiveProcessParameters.mixertemp <80)? ActiveProcessParameters.mixertemp :IdleMixerTemperature;
- ProcessParametersClear.headzone1temp = (ActiveProcessParameters.headzone1temp <80)? ActiveProcessParameters.headzone1temp :IdleHeadTemperature;
- ProcessParametersClear.headzone2temp = (ActiveProcessParameters.headzone2temp <80)? ActiveProcessParameters.headzone2temp :IdleHeadTemperature;
- ProcessParametersClear.headzone3temp = (ActiveProcessParameters.headzone3temp <80)? ActiveProcessParameters.headzone3temp :IdleHeadTemperature;
+ ProcessParametersClear.mixertemp = (ActiveProcessParameters.mixertemp <60)? ActiveProcessParameters.mixertemp :IdleMixerTemperature;
+ ProcessParametersClear.headzone1temp = (ActiveProcessParameters.headzone1temp <60)? ActiveProcessParameters.headzone1temp :IdleHeadTemperature;
+ ProcessParametersClear.headzone2temp = (ActiveProcessParameters.headzone2temp <60)? ActiveProcessParameters.headzone2temp :IdleHeadTemperature;
+ ProcessParametersClear.headzone3temp = (ActiveProcessParameters.headzone3temp <60)? ActiveProcessParameters.headzone3temp :IdleHeadTemperature;
ProcessParametersClear.headzone4temp = (ActiveProcessParameters.headzone4temp <80)? ActiveProcessParameters.headzone4temp :IdleHeadTemperature;
ProcessParametersClear.headzone5temp = (ActiveProcessParameters.headzone5temp <80)? ActiveProcessParameters.headzone5temp :IdleHeadTemperature;
ProcessParametersClear.headzone6temp = (ActiveProcessParameters.headzone6temp <80)? ActiveProcessParameters.headzone6temp :IdleHeadTemperature;
@@ -109,8 +109,8 @@ void PowerIdleSetIdle(void)
ProcessParametersClear.dryerbufferlength = (ActiveProcessParameters.dryerbufferlength <30)? ActiveProcessParameters.dryerbufferlength :30;
ProcessParametersClear.rblowertemp = (ActiveProcessParameters.rblowertemp <80)? ActiveProcessParameters.rblowertemp :IdleHeadTemperature;
ProcessParametersClear.lblowertemp = (ActiveProcessParameters.lblowertemp <80)? ActiveProcessParameters.lblowertemp :IdleHeadTemperature;
- ProcessParametersClear.rblowerflow = (ActiveProcessParameters.rblowerflow <96)? ActiveProcessParameters.rblowerflow :96;
- ProcessParametersClear.lblowerflow = (ActiveProcessParameters.lblowerflow <96)? ActiveProcessParameters.lblowerflow :96;
+ ProcessParametersClear.rblowerflow = (ActiveProcessParameters.rblowerflow <1.2)? ActiveProcessParameters.rblowerflow :1.2;
+ ProcessParametersClear.lblowerflow = (ActiveProcessParameters.lblowerflow <1.2)? ActiveProcessParameters.lblowerflow :1.2;
ProcessParametersClear.headairflow = (ActiveProcessParameters.headairflow <3)? ActiveProcessParameters.headairflow :3;
if (HandleProcessParameters(&ProcessParametersClear,false)!= OK)
{
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
index dedf8ba98..bbb75328b 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
@@ -115,6 +115,8 @@ ModuleStateEnum PrepareWaiting[MAX_SYSTEM_MODULES] = {ModuleIdle,ModuleIdle,Modu
double job_length = 0.0;
char infomsg[190];
+bool prepare_state = false;
+
/********************************************************************************************
* functions describes motor operation flow and movement state during profile execution
* used to operate in runtime correct profileflow execution
@@ -259,6 +261,7 @@ static ReturnCode PrepareState(void *JobDetails)
}
if (Configured[Module_Waste])
Waste_Prepare();
+ prepare_state = true;
return retcode;
}
@@ -305,6 +308,7 @@ uint32_t PrepareReady(int ModuleId, ModuleStateEnum result)
Report(infomsg, __FILE__, __LINE__, ready, RpError, status, 0);
SendJobProgress(0.0,0,false, infomsg);
+ prepare_state = false;
SendJobProgress(0.0, 0, false, "Prepare Ready");
if (status == OK) Message.messageId = PreparationResultsOk;
else Message.messageId = PreparationResultsFail;
@@ -456,11 +460,26 @@ uint32_t ThreadJoggingFunc(int speed)
TSegment->length = 200.0;
TSegment->n_brushstops = 0;
Ticket.segments[0] = TSegment;
- Tspool->backingrate = 32;
- Tspool->bottombackingrate = 32;
- Tspool->segmentoffsetpulses = 1000;
- Tspool->startoffsetpulses = 220;
- Tspool->rotationsperpassage = 3.1415926*2;
+ if (InternalWinderCfg.spoolbackingrate)
+ Tspool->backingrate = InternalWinderCfg.spoolbackingrate;
+ else
+ Tspool->backingrate = 32;
+ if (InternalWinderCfg.SpoolBottomBackingRate)
+ Tspool->bottombackingrate = InternalWinderCfg.SpoolBottomBackingRate;
+ else
+ Tspool->bottombackingrate = 32;
+ if (InternalWinderCfg.segmentoffsetpulses)
+ Tspool->segmentoffsetpulses = InternalWinderCfg.segmentoffsetpulses;
+ else
+ Tspool->segmentoffsetpulses = 1000;
+ if (InternalWinderCfg.startoffsetpulses)
+ Tspool->startoffsetpulses = InternalWinderCfg.startoffsetpulses;
+ else
+ Tspool->startoffsetpulses = 220;
+ if (InternalWinderCfg.NumberOfRotationPerPassage)
+ Tspool->rotationsperpassage = InternalWinderCfg.NumberOfRotationPerPassage;
+ else
+ Tspool->rotationsperpassage = 3.1415926*3;
Tspool->has_limitswitchstartpointoffset = false;
Ticket.spool = Tspool;
Ticket.threadparameters = &SavedThreadParameters;
@@ -638,11 +657,27 @@ uint32_t ThreadCleaningJob(int speed)
Tdispenser->index = 4; //TI dispenser
Ticket.segments[0] = TSegment;
Ticket.segments[1] = TSegment;
- Tspool->backingrate = 32;
- Tspool->bottombackingrate = 32;
- Tspool->segmentoffsetpulses = 1000;
- Tspool->startoffsetpulses = 220;
- Tspool->rotationsperpassage = 3.1415926*2;
+ if (InternalWinderCfg.spoolbackingrate)
+ Tspool->backingrate = InternalWinderCfg.spoolbackingrate;
+ else
+ Tspool->backingrate = 32;
+ if (InternalWinderCfg.SpoolBottomBackingRate)
+ Tspool->bottombackingrate = InternalWinderCfg.SpoolBottomBackingRate;
+ else
+ Tspool->bottombackingrate = 32;
+ if (InternalWinderCfg.segmentoffsetpulses)
+ Tspool->segmentoffsetpulses = InternalWinderCfg.segmentoffsetpulses;
+ else
+ Tspool->segmentoffsetpulses = 1000;
+ if (InternalWinderCfg.startoffsetpulses)
+ Tspool->startoffsetpulses = InternalWinderCfg.startoffsetpulses;
+ else
+ Tspool->startoffsetpulses = 220;
+ if (InternalWinderCfg.NumberOfRotationPerPassage)
+ Tspool->rotationsperpassage = InternalWinderCfg.NumberOfRotationPerPassage;
+ else
+ Tspool->rotationsperpassage = 3.1415926*3;
+ Tspool->has_limitswitchstartpointoffset = false;
Tspool->has_limitswitchstartpointoffset = false;
Ticket.spool = Tspool;
Ticket.threadparameters = &SavedThreadParameters;
@@ -1118,11 +1153,14 @@ void SendCleaningJobProgress(double ProcessedLength, int SegmentId, bool done, c
}
}
+double heaterRatio = 1.00;
+double dispenserRatio = 1.00 ;
+float wfcf_count = 0;
+double prepare_progress = 0.0;
void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Message)
{
MessageContainer responseContainer;
uint8_t* container_buffer;
-
//int len;
//static msdid = 0;
//int length = (int)(ProcessedLength*100);
@@ -1136,6 +1174,22 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes
Report(infomsg,__FILE__,__LINE__,55,RpWarning,33, 44);
}*/
//UInt Key = Task_disable();
+
+ if (prepare_state == true)
+ {
+ heaterRatio = HeatersPrepareProgress();
+ dispenserRatio = IdsPrepareProgress();
+ if ((heaterRatio>0.99)&&(dispenserRatio>0.99))
+ {
+ wfcf_count+=1.00;
+ Report("prepare_progress wfcf" ,__FILE__,(int)(wfcf_count),(int)(heaterRatio*100),RpWarning,(int)(dispenserRatio*100),0);
+ }
+ prepare_progress = (0.9*heaterRatio)+(0.08*dispenserRatio) + (0.02*wfcf_count/25.0);
+ Report("prepare_progress" ,__FILE__,(int)(prepare_progress*1000),(int)(heaterRatio*1000),RpWarning,(int)(dispenserRatio*1000),0);
+ }
+ else
+ wfcf_count = 0;
+
double totlength = 0;
if (JobToken[0] != 0)
@@ -1247,6 +1301,7 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes
CurrentRequest = NULL;
}
JobStopReporting();
+ prepare_state = false;
HandleJobEnd(JobEndReason);
}
// if (responseContainer.data.data)