From aeabb681d16451e191a1620d4eebf40549771491 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 8 Dec 2019 14:51:46 +0200 Subject: Support for new head in ProtoBif and embedded (initial) --- Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 4de702e14..4c4ab2bcc 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -62,7 +62,7 @@ static uint32_t WindingConeLocation; static uint32_t WinderBackToBaseTime = 800; InternalWinderConfigStruc InternalWinderCfg = {0}; -#define READ_SCREW_ENCODER +//#define READ_SCREW_ENCODER #ifdef READ_SCREW_ENCODER uint32_t ScrewLocationLimitSwitch = 0,ScrewLocationStart = 0; uint32_t ScrewLocationRun[3]; @@ -289,8 +289,8 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) { //uint32_t Steps; double temp,tempScrewSpeed; - double screw_horizontal_speed = 0; - double RotationsPerSecond; + //double screw_horizontal_speed = 0; + //double RotationsPerSecond; if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION) { if (WinderMotorSpeedRollOver == false) -- cgit v1.3.1 From 20be2491f5f8c6a01848a591fa48e966b0749663 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 9 Dec 2019 08:31:02 +0200 Subject: Restart motors after FPGA failure. cone exist and lid open - report only --- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 1 + Software/Embedded_SW/Embedded/Modules/Control/control.c | 10 +++++++++- .../Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 10 +++++----- .../Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 14 ++++++++------ 4 files changed, 23 insertions(+), 12 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index 259fc65f0..03ee0a3ce 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -438,6 +438,7 @@ void FPGA_SetMotorsInit() MotorDriverRequest[i].Stop = Hard_Hiz; FPGA_SetMotStop((HardwareMotorType)i); } + FPGA_WD_Occurred = false; //LOW logic level resets the logic and puts the device into Standby mode. F1_Moto_Driver_NSTBYRST1 = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index d59aae8f4..f9e6e7009 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -169,8 +169,16 @@ uint32_t ControlActivityLed( uint32_t Parameter1) ACTIVITY_RED_LED_OFF; // Heaters indication - all the Heaters OFF if(FPGA_WD_Occurred == true) { + FPGA_WD_Occurred = false; + AlarmHandlingSetAlarm(EVENT_TYPE__FPGA_WATCHDOG_ACTIVATED,true); + JobEndReason = JOB_MOTOR_ALARM; + SendJobProgress(0.0,0,false, "Hardware Failure Error"); + AbortJob("FPGA Watchdog Error"); + ReportWithPackageFilter(FPGAFilter, "FPGA Watchdog Error",__FILE__,__LINE__,0,RpError, 0,0); + ACTIVITY_GREEN_LED_ON; - //Motor_ReconfigAllMotors(); + FPGA_SetMotorsInit(); + Motor_ReconfigAllMotors(); } else ACTIVITY_GREEN_LED_OFF; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 4c4ab2bcc..4db985954 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -140,13 +140,13 @@ uint32_t Winder_Prepare(void *JobDetails) * report ready to the job STM */ - /*if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT) + if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT) { REPORT_MSG(LIMIT, "No cone in winder"); - PrepareReady(Module_Winder,ModuleFail); - AlarmHandlingSetAlarm(EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST,true); - return ERROR; - }*/ + // PrepareReady(Module_Winder,ModuleFail); + // AlarmHandlingSetAlarm(EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST,true); + // return ERROR; + } #ifdef READ_SCREW_ENCODER ScrewLocationRun[0] = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index c0d571fab..8ccde6feb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -725,6 +725,8 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER,false); AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER,false); AlarmHandlingSetAlarm(EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST,false); + AlarmHandlingSetAlarm(EVENT_TYPE__FPGA_WATCHDOG_ACTIVATED,false); + EnableLubrication = JobTicket->enablelubrication; EnableIntersegment = JobTicket->enableintersegment; @@ -735,16 +737,16 @@ 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; + //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; + //JobEndReason = JOB_LIDS_OPEN; + //PrepareReady(Module_Thread,ModuleFail); + //return ERROR; } //start thread control for all motors -- cgit v1.3.1