aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2019-11-04 17:11:08 +0200
committerAvi Levkovich <avi@twine-s.com>2019-11-04 17:11:08 +0200
commit1c49e4bcf339abe3a0f0fc626a98f42e297db0c4 (patch)
tree6ded9d773d9a2ad5e5ad3a02f96866db0fab164a /Software/Embedded_SW/Embedded/Modules
parente0516859efe69aec98137abe9fcdad8a8a92e8c0 (diff)
parent96ef9b8f0f15dcf8f5382cac266fb0de6c540afb (diff)
downloadTango-1c49e4bcf339abe3a0f0fc626a98f42e297db0c4.tar.gz
Tango-1c49e4bcf339abe3a0f0fc626a98f42e297db0c4.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c17
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c27
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/Safety.c24
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/buttons.c5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h30
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c2
9 files changed, 72 insertions, 47 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 5b57b8870..6570ea8e0 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -558,7 +558,7 @@ JobEndReasonEnum getEndReason(uint32_t AlarmId)
return JOB_TEMPERATURE_ALARM;
case ALARM_SOURCE_TYPE__LimitSwitchAlarm:
usnprintf(AlarmReasonStr, 100, "Dispenser %d empty",AlarmItem[AlarmId].DeviceId);
- return JOB_LS_ALARM;
+ return JOB_OUT_OF_DYE;
case ALARM_SOURCE_TYPE__PressureAlarm:
usnprintf(AlarmReasonStr, 100, "Over pressure in dispenser %d",AlarmItem[AlarmId].DeviceId);
return JOB_PRESSURE_ALARM;
@@ -571,6 +571,21 @@ JobEndReasonEnum getEndReason(uint32_t AlarmId)
case ALARM_SOURCE_TYPE__CoversAlarm:
usnprintf(AlarmReasonStr, 100, "Machine door %d removed during a run",AlarmItem[AlarmId].DeviceId);
return JOB_TAMPER_ALARM;
+ case ALARM_SOURCE_TYPE__HardLimitAlarm:
+ usnprintf(AlarmReasonStr, 100, "Dispenser %d hit the hard limit",AlarmItem[AlarmId].DeviceId);
+ return JOB_LS_ALARM;
+ break;
+ case ALARM_SOURCE_TYPE__DoNotPollAlarm:
+ if (AlarmItem[AlarmId].Severity == DEBUG_LOG_CATEGORY__Critical)
+ {
+ usnprintf(AlarmReasonStr, 100, "Safety Critical Alarm %d",AlarmItem[AlarmId].EventType);
+ return JOB_SAFETY_CRITICAL_ALARM;
+ }
+ else
+ {
+ usnprintf(AlarmReasonStr, 100, "Alarm %d caused a job stop",AlarmId);
+ return JOB_OTHER_ALARM;
+ }
default:
usnprintf(AlarmReasonStr, 100, "Alarm %d caused a job stop",AlarmId);
return JOB_OTHER_ALARM;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index dcbd6b9b0..40bc50b4f 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -135,6 +135,7 @@ uint32_t HWConfigurationInit(void)
else
{
STATUS_RED_LED_OFF;
+ ACTIVITY_GREEN_LED_OFF;
}
upload_hardware_configuration_request__free_unpacked(UploadRequest,NULL);
}
@@ -169,11 +170,11 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_underheatcountlimit = true;
EmbeddedParameters->underheatcountlimit = 3;
EmbeddedParameters->has_closevalvetimeout = true;
- EmbeddedParameters->closevalvetimeout = 50;
+ EmbeddedParameters->closevalvetimeout = 52;
EmbeddedParameters->has_openvalvetimeout = true;
- EmbeddedParameters->openvalvetimeout = 50;
+ EmbeddedParameters->openvalvetimeout = 52;
EmbeddedParameters->has_initialdispenserpressure = true;
- EmbeddedParameters->initialdispenserpressure = 1.08;
+ EmbeddedParameters->initialdispenserpressure = 0.25;
EmbeddedParameters->has_initialdispensertimeout = true;
EmbeddedParameters->initialdispensertimeout = 60000;
EmbeddedParameters->has_initialdispensertimelag = true;
@@ -181,7 +182,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_dispenserbuildpressurespeed = true;
EmbeddedParameters->dispenserbuildpressurespeed=500;
EmbeddedParameters->has_dispenserbuildpressurelimit = true;
- EmbeddedParameters->dispenserbuildpressurelimit=0.8 ;
+ EmbeddedParameters->dispenserbuildpressurelimit=1.0 ;
EmbeddedParameters->has_dispenserbuildpressuretimeout = true;
EmbeddedParameters->dispenserbuildpressuretimeout=60000;
EmbeddedParameters->has_dispenserbuildpressurelag = true;
@@ -210,11 +211,11 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->generalparameters[3] = 0.0; //CheckMotorAlarms
EmbeddedParameters->generalparameters[4] = 800.0; //Winder homing time at end of job
EmbeddedParameters->generalparameters[5] = 1000.0; //Dispenser initial pressure speed
- EmbeddedParameters->generalparameters[6] = Diagnostic_Normal_Mode; //Diagnostic Mode SetDiagnosticMode
- EmbeddedParameters->generalparameters[7] = AutoHoming_JobEnd_PowerOn_off; //
+ EmbeddedParameters->generalparameters[6] = Diagnostic_Extended_Mode; //Diagnostic Mode SetDiagnosticMode
+ EmbeddedParameters->generalparameters[7] = AutoHoming_PowerOn_off; //
}
EmbeddedParameters->has_currentalarmlowlimit = true;
- EmbeddedParameters->currentalarmlowlimit = 0.77;
+ EmbeddedParameters->currentalarmlowlimit = 0.78;
EmbeddedParameters->has_currentalarmhighlimit = true;
EmbeddedParameters->currentalarmhighlimit= 1.07;
EmbeddedParameters->has_ids_segmentrefilltimeout = true;
@@ -222,15 +223,15 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_ids_presegmentbuilduptime = true;
EmbeddedParameters->ids_presegmentbuilduptime = 5000;
EmbeddedParameters->has_ids_cleaningspeed = true;
- EmbeddedParameters->ids_cleaningspeed = 50;
+ EmbeddedParameters->ids_cleaningspeed = 800;
EmbeddedParameters->has_ids_cleaningstopbeforesegmenttime = true;
- EmbeddedParameters->ids_cleaningstopbeforesegmenttime = 3000;
+ EmbeddedParameters->ids_cleaningstopbeforesegmenttime = 10000;
EmbeddedParameters->has_ids_cleaningstartspraypresegmenttime = true;
- EmbeddedParameters->ids_cleaningstartspraypresegmenttime = 1000;
+ EmbeddedParameters->ids_cleaningstartspraypresegmenttime = 2000;
EmbeddedParameters->has_ids_leftcleaningmotorspeed = true;
- EmbeddedParameters->ids_leftcleaningmotorspeed = 30;
+ EmbeddedParameters->ids_leftcleaningmotorspeed = 52;
EmbeddedParameters->has_ids_rightcleaningmotorspeed = true;
- EmbeddedParameters->ids_rightcleaningmotorspeed = 23;
+ EmbeddedParameters->ids_rightcleaningmotorspeed = 52;
EmbeddedParameters->has_switchtoidletimeinseconds = true;
EmbeddedParameters->switchtoidletimeinseconds = 3600;
EmbeddedParameters->has_idledriertemperature = true;
@@ -242,7 +243,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_powerofftemperaturelimit = true;
EmbeddedParameters->powerofftemperaturelimit = 50;
EmbeddedParameters->has_ids_presegment_wfcf_timebeforesegment = true;
- EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 1500;
+ EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 20000;
uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(EmbeddedParameters));
size_t response_size = 0;
if (response_buffer)
diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
index 4958139e6..2a4800b77 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
@@ -30,6 +30,8 @@ MachineState StoredMachineStatus = MACHINE_STATE__Ready;
void SetMachineStatus (MachineState State)
{
+ ReportWithPackageFilter(GeneralFilter,"SetMachineStatus",__FILE__,__LINE__,State,RpWarning,StoredMachineStatus, 0);
+
StoredMachineStatus = State;
}
char MachineUpdateToken[36+1] = {0};
diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
index 6a0b9a67b..ea2cc2e6b 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
@@ -42,10 +42,10 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
bool AllDispensersInSafety = true;
bool AnyDispensersInSafety = false;
bool DispenserBypass = false;
- /*bool mDrierDoorAlarmState = false;
+ bool mDrierDoorAlarmState = false;
bool mAirFlowAlarmState = false;
bool mAirFilterAlarmState = false;
- bool mWasteOverflowAlarmState = false;*/
+ bool mWasteOverflowAlarmState = false;
for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
{
if (isMotorConfigured(Disp_i + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)==true)
@@ -61,8 +61,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
{
//report and handle dryer door open
AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, true);
- // mDrierDoorAlarmState = true;
- // DrierDoorAlarmState = true;
+ mDrierDoorAlarmState = true;
+ DrierDoorAlarmState = true;
}
else
{
@@ -71,8 +71,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
//report and handle air flow failure
//if blower if off handling is different
AlarmHandlingSetAlarm(EVENT_TYPE__NO_AIR_PRESSURE, true);
- // mAirFlowAlarmState = true;
- // AirFlowAlarmState = true;
+ mAirFlowAlarmState = true;
+ AirFlowAlarmState = true;
}
else
{
@@ -80,8 +80,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
{
//report and handle filter missing
AlarmHandlingSetAlarm(EVENT_TYPE__AIR_FILTER_NOT_INSTALLED, true);
- // mAirFilterAlarmState = true;
- // AirFilterAlarmState = true;
+ mAirFilterAlarmState = true;
+ AirFilterAlarmState = true;
}
else
{
@@ -89,8 +89,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
{
//report and handle waste overflow
AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, true);
- // mWasteOverflowAlarmState = true;
- // WasteOverflowAlarmState = true;
+ mWasteOverflowAlarmState = true;
+ WasteOverflowAlarmState = true;
}
}
}
@@ -167,7 +167,7 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
}
}
}
-/* if ((mDrierDoorAlarmState != DrierDoorAlarmState)|| (mDrierDoorAlarmState == false))
+ if ((mDrierDoorAlarmState != DrierDoorAlarmState)|| (mDrierDoorAlarmState == false))
{
//alarm went off
AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, false);
@@ -191,7 +191,7 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, false);
WasteOverflowAlarmState = mWasteOverflowAlarmState;
}
-*/
+
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c
index 0a5cfc2f3..1b3f16044 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c
@@ -40,6 +40,7 @@ int PowerUp();
int thredJog();
#define BUTTONS_SAMPLE_TIME (eHundredMillisecond)
+#define SECOND1 (1000/BUTTONS_SAMPLE_TIME)
#define SECOND2 (2000/BUTTONS_SAMPLE_TIME)
#define SECOND5 (5000/BUTTONS_SAMPLE_TIME)
@@ -89,6 +90,8 @@ int PowerUp()
{
bool ret = OK;
+ PowerIdleOutOfIdleState();
+
return ret;
}
@@ -308,7 +311,7 @@ uint32_t ShortLongOffPB(uint8_t OnOffPB, button *pBtn)
case COUNTPB: // last OnOffPBstate was COUNTPB
if (OnOffPB)
{
- if( pBtn->count > SECOND2 )
+ if( pBtn->count > SECOND1 )
{
pBtn->Action = SHORTPB ;
ReportWithPackageFilter(GeneralFilter,"------------ 2 seconds count PB Power -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index a086fe898..b05f236c5 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -223,7 +223,7 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu
}
readValue = MillisecGetTemperatures(InternalId2PT100Id[index]);
- if((MINIMUM_HEATER_READ*100>=readValue)||(MAXIMUM_HEATER_READ*100 < readValue))
+ if((MINIMUM_HEATER_READ*100>=readValue)||(270.00*100 < readValue))
{
//ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0);
return ERROR;
@@ -558,6 +558,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
}
DeActivateHeater(HeaterId);
HeaterCmd[HeaterId].targettemperatue = 0;
+#warning PT100 error is misidentified as overheat in alarms
AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true);
return;
@@ -879,7 +880,8 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
HeaterMaxTempFlag[index] = true;
//ReportWithPackageFilter(HeatersFilter,(MinreadValue/100), "Heater Over the max temperature, turned off");
ReportWithPackageFilter(HeatersFilter,"DC Heater Over the max temperature, turned off",__FILE__,index,HeaterPreviousRead[index],RpWarning, HeaterReady[index],0);
- AlarmHandlingSetAlarm(HeaterEventType[index], true);
+ if (getIdleState() == false)
+ AlarmHandlingSetAlarm(HeaterEventType[index], true);
return OK;
}
else if ((HeaterPreviousRead[index]) < (HeaterControl[index].sensorminvalue))
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index 50fad6503..c5cdb00d6 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -334,7 +334,7 @@
CallbackCounter++;
MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, 15, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RDANCER], Thread_Load_HomingCallback,15000);
CallbackCounter++;
- MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 500, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000);
+ MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 600, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000);
return OK;
}
@@ -366,7 +366,7 @@
if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT)
{
REPORT_MSG(LIMIT, "No cone in winder");
- return ERROR;
+ //return ERROR;
}
CallbackCounter++;
MotorMovetoBreakSensor (HARDWARE_MOTOR_TYPE__MOTO_WINDER,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].directionthreadwize, 500, Thread_Load_HomingCallback,10000);
@@ -403,7 +403,7 @@
CallbackCounter++;
MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, 15, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RDANCER], Thread_Load_HomingCallback,10000);
CallbackCounter++;
- MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 500, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000);
+ MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 600, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000);
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
index 99117ca5d..29876549e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
@@ -50,22 +50,22 @@ uint32_t Winder_End(void);
typedef enum
{
- /*01*/ THREAD_LOAD_INIT,
- /*02*/ THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW,
- /*03*/ THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION,//USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY
- /*04*/ THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID
- /*05*/ THREAD_LOAD_LIFT_DANCERS,
- /*06*/ THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE
- /*07*/ THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND
- /*08*/ THREAD_LOAD_CLOSE_ROCKERS,
- /*09*/ THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD
- /*10*/ THREAD_LOAD_CLOSE_LIDS,
- /*11*/ THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION
- /*12*/ THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40
+ /*00*/ THREAD_LOAD_INIT,
+ /*01*/ THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW,
+ /*02*/ THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION,//USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY
+ /*03*/ THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID
+ /*04*/ THREAD_LOAD_LIFT_DANCERS,
+ /*05*/ THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE
+ /*06*/ THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND
+ /*07*/ THREAD_LOAD_CLOSE_ROCKERS,
+ /*08*/ THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD
+ /*09*/ THREAD_LOAD_CLOSE_LIDS,
+ /*10*/ THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION
+ /*11*/ THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40
//KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER
- /*13*/ THREAD_LOAD_RESUME_HEATING,
- /*14*/ THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING
- /*15*/ THREAD_LOAD_END
+ /*12*/ THREAD_LOAD_RESUME_HEATING,
+ /*13*/ THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING
+ /*14*/ THREAD_LOAD_END
}THREAD_LOAD_STAGES_ENUM;
uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue);
bool ThreadLoadingActive(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 28ba11fcd..41d98e892 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -735,12 +735,14 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID]) != LIMIT)
{
ReportWithPackageFilter(ThreadFilter,"Dyeing head is open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DH_LID,RpFatalError,LIMIT,0);
+ JobEndReason = JOB_LIDS_OPEN;
PrepareReady(Module_Thread,ModuleFail);
return ERROR;
}
if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) != LIMIT)
{
ReportWithPackageFilter(ThreadFilter,"Dryer lid is open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,RpFatalError,LIMIT,0);
+ JobEndReason = JOB_LIDS_OPEN;
PrepareReady(Module_Thread,ModuleFail);
return ERROR;
}