diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-03-01 17:47:27 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-03-01 17:47:27 +0200 |
| commit | 6c1f8f8df6b9ee71104098f548ba8be8504fc89b (patch) | |
| tree | fc0948888bb5dc156341f73d82306b26cc8523df /Software/Embedded_SW/Embedded/Modules/Thread | |
| parent | 046fce068413ae04454d07a0fd591bb200b30eef (diff) | |
| parent | 2c0f48e170634b93daa75abda4e246e85ffed519 (diff) | |
| download | Tango-6c1f8f8df6b9ee71104098f548ba8be8504fc89b.tar.gz Tango-6c1f8f8df6b9ee71104098f548ba8be8504fc89b.zip | |
merge conflicts
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread')
3 files changed, 60 insertions, 13 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 128564586..eeb0051f5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -186,8 +186,10 @@ ProcessParametersClear.headzone10temp = 0; ProcessParametersClear.headzone11temp = 0; ProcessParametersClear.headzone12temp = 0; - ProcessParametersClear.stspzone1temp = 0; - ProcessParametersClear.stspzone2temp = 0; + ProcessParametersClear.rblowertemp = 0; + ProcessParametersClear.lblowertemp = 0; + ProcessParametersClear.rblowerflow = 0; + ProcessParametersClear.lblowerflow = 0; ProcessParametersClear.dyeingspeed = 40; ProcessParametersClear.dryerbufferlength = ProcessParametersKeep.dryerbufferlength; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 78092ae2b..78150e9f9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -213,9 +213,16 @@ uint32_t Winder_PrepareStage2(uint32_t deviceID, uint32_t ReadValue) REPORT_MSG(millisecondCounter/*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].maxfrequency*/, "Winder_PrepareStage2"); if (ReadValue != LIMIT) { - LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!"); - //returned with a timeout - Winder_ScrewAtOffsetCallback(0,0); + if (JobIsActive()==true) + { + LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!"); + //returned with a timeout + Winder_ScrewAtOffsetCallback(0,0); + } + else //short jog, etc + { + AlarmHandlingSetAlarm (EVENT_TYPE__SCREW_MOTOR_LIMIT_TIMEOUT,OFF); //on a short jog, this callback will be called without need + } } else { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 1dd101f82..60cd994dd 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -15,6 +15,7 @@ #include "PMR/Hardware/HardwareDancerType.pb-c.h" #include "PMR/Printing/JobSegment.pb-c.h" #include "PMR/Printing/JobTicket.pb-c.h" +#include "PMR/Printing/ThreadParameters.pb-c.h" #include <PMR/Diagnostics/EventType.pb-c.h> #include <utils/ustdlib.h> @@ -442,7 +443,6 @@ void testDancersControl() ThreadControlActive = false; } #endif -bool dancerinvalid = false; int MotorFailedSample[MAX_THREAD_MOTORS_NUM] = {0,0,0,0,0}; char TMessage[150]; //char time[150]; @@ -481,21 +481,20 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //if (MotorDriverResponse[ThreadMotorIdToMotorId[index]].Busy == true) // return OK; DancerId = ThreadMotorIdToDancerId[index]; - if (ReadValue < 10) +/* if (ReadValue < 10) { MotorFailedSample[index]++; ReportWithPackageFilter(ThreadFilter,"Dancer value read too small.",__FILE__,__LINE__,DancerId,RpError,ReadValue,0); return OK; - } + }*/ if (ReadValue == 0x3FFF) { - MotorFailedSample[index]++; - if (dancerinvalid == false) + if (Read_Dryer_Status(DancerId) != OK) { - dancerinvalid = true; - ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,__LINE__,(int)IfIndex,RpError,(int)ReadValue,0); + ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,ReadValue,(int)DancerId,RpError,(int)Read_Dryer_Status(DancerId),0); + MotorFailedSample[index]++; + return OK; } - return OK; } KeepReadValue = ReadValue; TranslatedReadValue = ReadValue - DancersCfg[DancerId].zeropoint; @@ -746,7 +745,44 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) ThreadPreSegmentState(request,0); return OK; } +uint32_t HandleJobThreadControlParameters(ThreadParameters* ThreadParams) +{ + /* + FEEDER_MOTOR, + DRYER_MOTOR, + POOLER_MOTOR, + WINDER_MOTOR, + MotorControlConfig[Motor_i].m_params.Kd = MotorsControl[Pid_Id].derivativetime; + MotorControlConfig[Motor_i].m_params.Kp = MotorsControl[Pid_Id].proportionalgain; + MotorControlConfig[Motor_i].m_params.Ki = MotorsControl[Pid_Id].integraltime; + */ + if (ThreadParams == NULL) + { + return OK; + } + if(ThreadParams->feederp) + MotorControlConfig[FEEDER_MOTOR].m_params.Kd = ThreadParams->feederp; + if(ThreadParams->feederi) + MotorControlConfig[FEEDER_MOTOR].m_params.Ki = ThreadParams->feederi; + if(ThreadParams->feederd) + MotorControlConfig[FEEDER_MOTOR].m_params.Kd = ThreadParams->feederd; + + if(ThreadParams->pullerp) + MotorControlConfig[POOLER_MOTOR].m_params.Kd = ThreadParams->pullerp; + if(ThreadParams->pulleri) + MotorControlConfig[POOLER_MOTOR].m_params.Ki = ThreadParams->pulleri; + if(ThreadParams->pullerd) + MotorControlConfig[POOLER_MOTOR].m_params.Kd = ThreadParams->pullerd; + + if(ThreadParams->winderp) + MotorControlConfig[WINDER_MOTOR].m_params.Kd = ThreadParams->winderp; + if(ThreadParams->winderi) + MotorControlConfig[WINDER_MOTOR].m_params.Ki = ThreadParams->winderi; + if(ThreadParams->winderd) + MotorControlConfig[WINDER_MOTOR].m_params.Kd = ThreadParams->winderd; + +} //******************************************************************************************************************** uint32_t ThreadPrepareState(void *JobDetails) { @@ -907,6 +943,8 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) if (Motor_i == ThreadMotorIdToMotorId[DRYER_MOTOR]) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled continue; } + HandleJobThreadControlParameters(JobTicket->threadparameters); //OVERRIDES CONFIGURATION PARAMETERS!!! + #ifdef TEST_PID_THREAD testDancersControl(); #endif |
