diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 11 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 18 |
2 files changed, 21 insertions, 8 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index f97082365..50c99bf62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -22,6 +22,8 @@ #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" bool Winder_ScrewHoming = false; +bool Winder_Active = false; + uint32_t Winder_ScrewAtOffsetCallback(uint32_t deviceID, uint32_t BusyFlag); uint32_t Winder_PrepareStage2(uint32_t deviceID, uint32_t ReadValue); @@ -71,7 +73,7 @@ uint32_t Winder_Prepare(void) { uint32_t status = 0; //JobTicket* JobTicket = JobDetails; - + Winder_Active = true; //float process_speed = JobTicket->processparameters->dyeingspeed; double ScrewSpeed = 1000;//(process_speed*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].pulleyradius); // we will use pulley radius of the screw for this purpose, as of now //REPORT_MSG(ScrewSpeed, "Winder_Prepare"); @@ -214,6 +216,8 @@ uint32_t ScrewDirectionChange(uint32_t deviceID, uint32_t BusyFlag) BusyfirstCall = false; return OK; } + if (Winder_Active == false) + return OK; wtick++; //ScrewCurrentDirection: false moves out, true moves home if (BusyFlag == NOTBUSY) @@ -226,7 +230,7 @@ uint32_t ScrewDirectionChange(uint32_t deviceID, uint32_t BusyFlag) wgap_counter = 0; } else - return; + return OK; CalculateNumberOfSteps (DirectionChangeCounter++, ScrewCurrentDirection); Steps = ScrewNumberOfSteps; if (ScrewCurrentDirection == false) @@ -296,7 +300,7 @@ uint32_t Winder_Presegment(void *JobDetails, uint32_t SegmentId) ScrewSpeed = screw_horizontal_speed*RotationsPerSecond; MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_SCREW,ScrewSpeed); - usnprintf(Message, 80, "SCREW speed Rot/sec %d horizon %d pulses %d",RotationsPerSecond,screw_horizontal_speed,ScrewSpeed); + usnprintf(Message, 80, "SCREW speed Rot/sec %d horizon %d pulses %d",(int)RotationsPerSecond,(int)screw_horizontal_speed,(int)ScrewSpeed); //LOG_ERROR(segmentfirst_speed,Message); //Report(Message,__FILE__,__LINE__,Dispenser_i,RpWarning,segmentfirst_speed,0); SendJobProgress(0.0,0,false, Message); @@ -325,6 +329,7 @@ uint32_t Winder_End(void) int pend; //stop screw ScrewNumberOfSteps = 0; + Winder_Active = false; if (ScrewControlId != 0xFF) RemoveControlCallback(ScrewControlId,ScrewDirectionChange); pend = MillisecFlushMsgQ(HARDWARE_MOTOR_TYPE__MOTO_SCREW); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 54a47e927..69eafe152 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -377,10 +377,13 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { //consider applying the debouce parameters later //BreakSensordebouncetimemilli - //LOG_ERROR(index, "ReadBreakSensor Error"); JobEndReason = JOB_THREAD_BREAK; - //SendJobProgress(0.0,0,false, "ReadBreakSensor Error"); - EndState(CurrentJob,"ReadBreakSensor Error" ); + ThreadControlActive = false; + SendJobProgress(0.0,0,false, "ReadBreakSensor Error"); + SegmentReady(Module_Thread,ModuleFail); + //EndState(CurrentJob,"ReadBreakSensor Error" ); + LOG_ERROR(index, "ReadBreakSensor Error"); + return OK; } } } @@ -390,9 +393,14 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) if ((abs(avreageSampleValue)> DancerStopActivityLimit[index])&&(JobCounter > eOneSecond)) { usnprintf(Message, 60, "Dancer %d limit %d value %d Zero %d",DancerId,DancerStopActivityLimit[index],avreageSampleValue,DancersCfg[DancerId].zeropoint); - JobAbortedByUser = true; + //JobAbortedByUser = true; + ThreadControlActive = false; JobEndReason = JOB_DANCER_FAIL; - EndState(CurrentJob,Message ); + SendJobProgress(0.0,0,false, Message); + //EndState(CurrentJob,Message ); + SegmentReady(Module_Thread,ModuleFail); + LOG_ERROR (index, "Dancer Failure"); + return OK; } NormalizedError = avreageSampleValue*NormalizedErrorCoEfficient[index]; MotorControlConfig[index].m_mesuredParam = NormalizedError; |
