diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/StateMachines')
| -rw-r--r-- | Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c | 12 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c | 77 |
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) |
