From 383332c5ff77d9d8ea0532e5f04c23217563ab30 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 22 Sep 2019 11:09:01 +0300 Subject: handle safety alarms, log winder better. --- .../Embedded_SW/Embedded/Modules/General/Safety.c | 34 +++++++++++++++++++--- .../Embedded/Modules/Heaters/Heaters_print.c | 2 +- .../Embedded/Modules/IDS/IDS_dispenser.c | 13 +++++---- .../Embedded/Modules/Thread/Thread_Winder.c | 5 +++- 4 files changed, 42 insertions(+), 12 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c index f54a4be19..d301fe503 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c +++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c @@ -24,6 +24,7 @@ uint32_t SafetyControlId; bool DispenserOverPressure[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false}; +EventType DispenserAlarm[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0}; uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag); bool DrierDoorAlarmState = false; bool AirFlowAlarmState = false; @@ -101,9 +102,33 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) { if (Check_Disp_Safety_Stop_Indication(Disp_i) == true) { - //report dispenser over pressure - AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i, true); - DispenserOverPressure[Disp_i] = true; + if(GetDispenserPressure(Disp_i)>5.0) + { + //report dispenser over pressure + AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i, true); + DispenserAlarm[Disp_i] = EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i; + DispenserOverPressure[Disp_i] = true; + Report("Dispenser over pressure", __FILE__,Disp_i,0, RpFatalError, (int)(1000*GetDispenserPressure(Disp_i)), 0); + } + else if (Get_Notification_Disp_UP(Disp_i)) + { + AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_UPPER_HARD_LIMIT+Disp_i, true); + DispenserAlarm[Disp_i] = EVENT_TYPE__DISPENSER_1_UPPER_HARD_LIMIT+Disp_i; + DispenserOverPressure[Disp_i] = true; + Report("Dispenser upper hard limit", __FILE__,Disp_i,0, RpFatalError, Get_Notification_Disp_UP(Disp_i), 0); + } + else if (Get_Notification_Disp_Down(Disp_i)) + { + AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_LOWER_HARD_LIMIT+Disp_i, true); + DispenserAlarm[Disp_i] = EVENT_TYPE__DISPENSER_1_LOWER_HARD_LIMIT+Disp_i; + DispenserOverPressure[Disp_i] = true; + Report("Dispenser lower hard limit", __FILE__,Disp_i,0, RpFatalError, Get_Notification_Disp_Down(Disp_i), 0); + } + else + { + Report("Dispenser unknown safety alarm", __FILE__,Disp_i,0, RpFatalError, (int)(1000*GetDispenserPressure(Disp_i)), 0); + } + } } } @@ -117,7 +142,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) if (Check_Disp_Safety_Stop_Indication(Disp_i) == false) { //report dispenser over pressure - AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i, false); + AlarmHandlingSetAlarm(DispenserAlarm[Disp_i], false); + DispenserAlarm[Disp_i] = 0; DispenserOverPressure[Disp_i] = false; } } diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index c54287b6b..d2eff1442 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -966,7 +966,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) } HeaterPreviousRead[index] = readValue; - if (readValue>(HeaterCmd[index].targettemperatue+200)) + if (readValue>(HeaterCmd[index].targettemperatue+800)) { ReportWithPackageFilter(HeatersFilter, "AC OverHeating in progress",__FILE__,readValue,HeaterReady[index],RpError, HeaterAtTemp[index],0); } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index dd1ef5a1d..3cccd42ed 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -301,14 +301,15 @@ uint32_t IDS_Dispenser_Store_Data (void) EraseFlashSection(DISPENSERS_MAP_IN_FLASH,response_size+4); ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH, 4,&response_size); ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH+4, response_size, IDS_Dispenser_Data); - } - Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath,BIOS_NO_WAIT); - if (Status == FR_OK) - { - DispenserDataUpdated = false; - REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time"); + Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath,BIOS_NO_WAIT); + if (Status == FR_OK) + { + DispenserDataUpdated = false; + REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time"); + } } + return Status; } void IDS_Dispenser_Content_Calculation (char DispenserId) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 20045e5fb..4cbe1f70f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -322,7 +322,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) #ifdef READ_SCREW_ENCODER int WinderRun; WinderRun = abs(ScrewLocationRun[1] - ScrewLocationRun[0]); - if /*((WinderRun < 50000)&&(Add100 == false))*/(Add100 == false) + if ((WinderRun < 50000)&&(Add100 == false)) { WinderRunSum+=WinderRun; WinderRunSamples++; @@ -334,6 +334,9 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) Report(ScrewStr,__FILE__,__LINE__,CalculationDirectionChangeCounter,RpWarning,ScrewLocationStart, 0); } } + else + Report("winder run error value" ,__FILE__,WinderRun,ScrewLocationRun[0],RpWarning,ScrewLocationRun[1], 0); + //Report(ScrewStr,__FILE__,__LINE__,CalculationDirectionChangeCounter,RpWarning,ScrewLocationStart, 0); //REPORT_MSG(abs(ScrewLocationRun[1] - ScrewLocationRun[0]), "Screw Run NumberOfSteps"); //usnprintf(ScrewStr, 100, "Winder Encoder: 0 0x%x 1 0x%x diff %d intent %d rot %d",ScrewLocationRun[0],ScrewLocationRun[1],abs(ScrewLocationRun[1] - ScrewLocationRun[0]),ScrewNumberOfSteps,Rotations*10); -- cgit v1.3.1