aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Thread
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-06-17 12:37:13 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-06-17 12:37:13 +0300
commit381c741261a6eba5ba39e2ed3116ac8a4fa61469 (patch)
tree4c31a0e82eb13528beae25c181caa1ef38e517cb /Software/Embedded_SW/Embedded/Modules/Thread
parentbf33c0d9c37ec68ffbbded2e08bff6cc65558037 (diff)
parent969afb0ba72af89a368ac124458b06b848cd1bed (diff)
downloadTango-381c741261a6eba5ba39e2ed3116ac8a4fa61469.tar.gz
Tango-381c741261a6eba5ba39e2ed3116ac8a4fa61469.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c45
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c19
4 files changed, 46 insertions, 20 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index 349215d7d..965ea30da 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -35,6 +35,7 @@
#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h>
#include <Drivers/I2C_Communication/I2C_Task.h>
#include "drivers/FPGA/FPGA_SPI_Comm.h"
+#include "drivers/FPGA/Full_Vme/FPGA_Programming_Up.h"
#include "PMR/Stubs/StubHeatingTestRequest.pb-c.h"
#include "PMR/Stubs/StubHeatingTestResponse.pb-c.h"
@@ -53,7 +54,7 @@
//#include <stdbool.h>
static char* LoadStagesStr[15] = {
/*00*/ "Initialization",
- /*01*/ "heating stop",
+ /*01*/ "Heating stop",
/*02*/ "Rockers opening",
/*03*/ "Drier unloading",
/*04*/ "Lids opening",
@@ -93,7 +94,7 @@
uint32_t LoadStatus = OK;
char LoadErrorMsg[100];
int32_t keepmicrostep;
- int32_t keepkvalrun,keepkvalhold;
+ int32_t keepkvalrun,keepkvalhold,kval_upperValue;
uint8_t CallbackCounter = 0;
uint8_t TimeoutsCounter = 0;
bool SecondTry = false,TryAgain = false;
@@ -140,7 +141,6 @@
//EEPROM_STORAGE_DRYER_CYCLES
MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&LoadArmRounds);
-
Report("Read_Dryer_ENC_Position()",__FILE__,__LINE__,0,RpWarning,Read_Dryer_ENC_Position(),0);
Report("MotorMovetoEncoderPosition",__FILE__,__LINE__,LoadArmRounds,RpWarning,0,0);
@@ -165,6 +165,11 @@
uint32_t Thread_Load_Reduce_Heat(void)
{
+ if (Is_PP_Machine())
+ kval_upperValue = 40;
+ else
+ kval_upperValue = 70;
+
//Heaters Off, Dryer Blower Off, Blower Low,
REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Reduce_Heat");
memcpy (&ProcessParametersClear,&ProcessParametersKeep,sizeof(ProcessParameters));
@@ -190,6 +195,9 @@
ProcessParametersClear.lblowerflow = 0;
ProcessParametersClear.dyeingspeed = 40;
ProcessParametersClear.dryerbufferlength = ProcessParametersKeep.dryerbufferlength;
+ ProcessParametersClear.pullertension = ProcessParametersKeep.pullertension;
+ ProcessParametersClear.windertension = ProcessParametersKeep.windertension;
+
if (HandleProcessParameters(&ProcessParametersClear,false)!= OK)
{
LOG_ERROR (LoadStages, "Thread_Load_Reduce_Heat failed");
@@ -286,7 +294,7 @@
{
TimeoutsCounter = 0;
load.color = fastBILNK;
- usnprintf(LoadErrorMsg, 100, "Stage %s - motor %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]);
+ usnprintf(LoadErrorMsg, 100, "Stage %s - %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]);
Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0);
LoadStatus = ERROR;
@@ -389,8 +397,8 @@
REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Lift_Rockers");
MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 8);
MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 8);
- MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70);
- MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70);
+ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, kval_upperValue);
+ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, kval_upperValue);
Task_sleep(10);
CallbackCounter++;
MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 250, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,35000);
@@ -424,8 +432,8 @@
MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 8);
MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 8);
- MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70);
- MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70);
+ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, kval_upperValue);
+ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, kval_upperValue);
REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Close_Rockers");
CallbackCounter++;
@@ -647,6 +655,7 @@
{
REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Dryer_Loading");
+ int CurrentlyLoaded = 0;
if (dryerbufferlength)
LoadArmRounds = (int)dryerbufferlength;
if (LoadArmRounds <= 2)
@@ -656,7 +665,12 @@
// OriginalMotorSpd_2PPS[FEEDER_MOTOR] = 1000;
// CurrentControlledSpeed[FEEDER_MOTOR] = 1000;
- //MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds);
+ MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&CurrentlyLoaded);
+ Report("Thread_Load_Dryer_Loading cycles",__FILE__,LoadArmRounds,CurrentlyLoaded,RpMessage,LoadArmRounds-CurrentlyLoaded,0);
+ if (CurrentlyLoaded)
+ {
+ LoadArmRounds -= CurrentlyLoaded;
+ }
ThreadMotorIdToMotorId[FEEDER_MOTOR] = HARDWARE_MOTOR_TYPE__MOTO_RDRIVING ;
ThreadMotorIdToMotorId[DRYER_MOTOR] = HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING;
@@ -806,14 +820,14 @@
else //done enough cycles, go to the center point
{
MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Thread_Load_Set_Load_Arm_To_Stopper_Callback,30000);
- MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds-numberOfCycles);
+ MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,0);
Report("Store Number of cycles in drier",__FILE__,__LINE__,numberOfCycles,RpMessage,LoadArmRounds,0);
}
}
else //timeout or no movement
{
Report("Store Number of cycles in drier - halted",__FILE__,__LINE__,numberOfCycles,RpMessage,LoadArmRounds,0);
- MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds-(numberOfCycles-1));
+ MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds-numberOfCycles);
TimeoutsCounter = 0;
CallbackCounter = 0;
/*if(PullerControlId != 0xFF)
@@ -919,7 +933,12 @@
if (SecondTry == true)
{
- LoadArmRounds = 30;
+ MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&LoadArmRounds);
+ if (LoadArmRounds == 0) //prev trial stopped
+ {
+ LoadArmRounds = (int)dryerbufferlength;
+ }
+ //LoadArmRounds = 30;
}
else
{
@@ -1048,7 +1067,7 @@
}
uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue)
{
- if (JobIsActive())
+ if (JobIsActive()||(MachineReadyForHeating == false)||(FPGABurningActive==true))
{
Report("ThreadLoadButton called on job",__FILE__,__LINE__,LoadStages,RpMessage,ReadValue,0);
return ERROR;
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index 9ee2e1f37..b796cae50 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -151,6 +151,7 @@ uint32_t Winder_Prepare(void *JobDetails)
REPORT_MSG(LIMIT, "No cone in winder");
if (Is_PP_Machine())
{
+ JobEndReason = JOB_THREAD_BREAK;
PrepareReady(Module_Winder,ModuleFail);
AlarmHandlingSetAlarm(EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST,true);
return ERROR;
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
index 1e730e252..5c9b360f6 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
@@ -81,6 +81,7 @@ void ThreadLoadRequest(MessageContainer* requestContainer);
uint32_t StartThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t ContinueThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer);
+uint32_t TryThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t Thread_Load_End(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 545fb40e6..efcbd5030 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -217,6 +217,7 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
if (FeederSpeedIndex>=SPEED_STORE_SIZE)
{
FeederSpeedIndex = 0;
+ FeederSpeedAverage = 0;
for (Speed_i = 0;Speed_i<SPEED_STORE_SIZE;Speed_i++)
FeederSpeedAverage+=FeederSpeedStore[Speed_i];
FeederSpeedAverage = FeederSpeedAverage/SPEED_STORE_SIZE;
@@ -316,6 +317,7 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
if (PullerSpeedIndex>=SPEED_STORE_SIZE)
{
PullerSpeedIndex = 0;
+ PullerSpeedAverage = 0;
for (Speed_i = 0;Speed_i<SPEED_STORE_SIZE;Speed_i++)
PullerSpeedAverage+=PullerSpeedStore[Speed_i];
PullerSpeedAverage = PullerSpeedAverage/SPEED_STORE_SIZE;
@@ -976,16 +978,19 @@ uint32_t ThreadPrepare_Tension (int DancerId, double tension)
//return ERROR;
}*/
- if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_LID]) == LIMIT)
+ if ((FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_LID]) == LIMIT)&&(JoggingJobActive == false))
{
- ReportWithPackageFilter(ThreadFilter,"Dyeing head is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DH_LID,RpFatalError,LIMIT,0);
- JobEndReason = JOB_LIDS_OPEN;
- PrepareReady(Module_Thread,ModuleFail);
- return ERROR;
+ if(Head_Type != HEAD_TYPE_STAPLE_SPUN)
+ {
+ ReportWithPackageFilter(ThreadFilter,"Dyeing head is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DH_LID,RpError,LIMIT,0);
+ JobEndReason = JOB_LIDS_OPEN;
+ PrepareReady(Module_Thread,ModuleFail);
+ return ERROR;
+ }
}
- if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) == LIMIT)
+ if ((FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) == LIMIT)&&(JoggingJobActive == false))
{
- ReportWithPackageFilter(ThreadFilter,"Dryer lid is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,RpFatalError,LIMIT,0);
+ ReportWithPackageFilter(ThreadFilter,"Dryer lid is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,RpError,LIMIT,0);
JobEndReason = JOB_LIDS_OPEN;
PrepareReady(Module_Thread,ModuleFail);
return ERROR;