aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Thread
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c54
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