diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-06-30 10:07:12 +0300 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-06-30 10:07:12 +0300 |
| commit | 59487d307a565dfd6258beb0c348ef072fe6039e (patch) | |
| tree | 15177838bbc83b998395204d3c70821a7e18c75c /Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | |
| parent | 69355e96c90f1ae473421fd9c9d34b96e47fbeb3 (diff) | |
| parent | 2a72d2b881503a077670b3703a8f360294136ca0 (diff) | |
| download | Tango-59487d307a565dfd6258beb0c348ef072fe6039e.tar.gz Tango-59487d307a565dfd6258beb0c348ef072fe6039e.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 97 |
1 files changed, 83 insertions, 14 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index b9a28fe57..5efc3798e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -67,6 +67,7 @@ double PoolerLengthCalculationMultiplier; double TempPoolerTotalProcessedLength = 0.0; double TempTotalProcessedLength = 0.0; +bool InitialProcess = false; bool PrepareState = false; // job parameters bool EnableLubrication = false; @@ -148,10 +149,12 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) double length = 0.0; int index = MAX_THREAD_MOTORS_NUM; - // if (ThreadControlActive == false) - // return OK; - // if (PrepareState == true) - // return OK; +#ifndef FEEDER_LENGTH_CALCULATION + if (ThreadControlActive == false) + return OK; + if (PrepareState == true) + return OK; +#endif if (IfIndex>>8 != IfTypeThread) { LOG_ERROR (IfIndex, "Wrong Interface type"); @@ -194,13 +197,14 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) } } + TotalProcessedLength += (length/100); + TempTotalProcessedLength = TotalProcessedLength; +#ifdef FEEDER_LENGTH_CALCULATION CurrentProcessedLength+=length; - static int pooler_counter = 0; - pooler_counter++; - TotalProcessedLength+= (length/100); - TempTotalProcessedLength = TotalProcessedLength; - if (pooler_counter%10 == 0) + static int feeder_counter = 0; + feeder_counter++; + if (feeder_counter%10 == 0) { if (PrepareState == true) { @@ -225,18 +229,22 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) ProcessedLengthFuncPtr(); } -return OK; +#endif + + return OK; } uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) { - uint32_t positionDiff = 0; + uint32_t positionDiff = 0,prevprev; double length = 0.0; int index = MAX_THREAD_MOTORS_NUM; +#ifdef FEEDER_LENGTH_CALCULATION if (ThreadControlActive == false) return OK; if (PrepareState == true) return OK; +#endif if (IfIndex>>8 != IfTypeThread) { LOG_ERROR (IfIndex, "Wrong Interface type"); @@ -258,13 +266,56 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) PoolerPreviousPosition = PoolerCurrentPosition; Poolerinitialpos = 0; } + prevprev = PreviousPosition; positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition); //positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep; PoolerPreviousPosition = PoolerCurrentPosition; length = (double)(positionDiff)*PoolerLengthCalculationMultiplier; - PoolerTotalProcessedLength+= (length/100); - TempPoolerTotalProcessedLength = PoolerTotalProcessedLength; + //if (InitialProcess == false) + { + PoolerTotalProcessedLength+= (length/100); + TempPoolerTotalProcessedLength = PoolerTotalProcessedLength; + } + if (length > 1000) + { + usnprintf(Lenstr, 100, "pooler length huge: length %d, diff 0x%x, pos 0x%x prev 0x%x",(int)length*100,(int)positionDiff,PreviousPosition,prevprev); + SendJobProgress(0.0,0,false, Lenstr); + Report(Lenstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); + length = 0; + + } +#ifndef FEEDER_LENGTH_CALCULATION + CurrentProcessedLength+=length; + + static int puller_counter = 0; + puller_counter++; + if (puller_counter%10 == 0) + { + if (PrepareState == true) + { + //later - add temperatures + TemperatureListString(Lenstr); + + SendJobProgress(0.0,0,false, Lenstr); + } + else + { + SendJobProgress(PoolerTotalProcessedLength,0,false, NULL); + } + + } + if ((CurrentProcessedLength>=CurrentRequestedLength )&&(CurrentRequestedLength > 0.0)) + { + usnprintf(Lenstr, 100, "Total processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); + SendJobProgress(0.0,0,false, Lenstr); + Report(Lenstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); + // segment/intersegment/distance to spool finished + if (ProcessedLengthFuncPtr) + ProcessedLengthFuncPtr(); + + } +#endif return OK; } @@ -632,7 +683,6 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) ThreadPreSegmentState(request,0); return OK; } -bool InitialProcess = false; //******************************************************************************************************************** uint32_t ThreadPrepareState(void *JobDetails) @@ -780,6 +830,12 @@ void SetOriginMotorSpeed(float process_speed) MotorSpeedSamples[Motor_i][i] = motor_speed; } } +void ThreadPreSegmentEnded(void) +{ + InitialProcess = false; + REPORT_MSG (0,"First ThreadPreSegmentEnded"); + PreSegmentReady(Module_Thread,ModuleDone); +} //******************************************************************************************************************** uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId) @@ -834,6 +890,14 @@ uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId) PreSegmentState = true; DTSState = false; } + /*else if (InitialProcess==true) + { + ThreadUpdateProcessLength (dryerbufferlength,(void *)ThreadPreSegmentEnded); + REPORT_MSG (dryerbufferlength," ThreadPreSegmentState DTS length (sample)"); + SegmentState = false; + PreSegmentState = true; + DTSState = false; + }*/ else { ThreadUpdateProcessLength (0,(void *)NULL); @@ -893,7 +957,12 @@ uint32_t ThreadDistanceToSpoolState(void ) { seglength = dryerbufferlength; REPORT_MSG (seglength,"ThreadDistanceToSpoolState"); +//#ifdef FEEDER_LENGTH_CALCULATION ThreadUpdateProcessLength (seglength,(void *)ThreadDistanceToSpoolEnded); +/*#else + ThreadUpdateProcessLength (0,(void *)NULL); //move DTS to job start + DistanceToSpoolReady(Module_Thread,ModuleDone); +#endif*/ SegmentState = false; PreSegmentState = false; DTSState = true; |
