diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-09-22 11:09:01 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-09-22 11:09:01 +0300 |
| commit | 383332c5ff77d9d8ea0532e5f04c23217563ab30 (patch) | |
| tree | 26ecc29880589f2b0fcb01b30bfc50a87f7fe432 /Software/Embedded_SW/Embedded/Modules | |
| parent | 6715e2fccbfb38f803d5cf5e2e98377a47340582 (diff) | |
| download | Tango-383332c5ff77d9d8ea0532e5f04c23217563ab30.tar.gz Tango-383332c5ff77d9d8ea0532e5f04c23217563ab30.zip | |
handle safety alarms, log winder better.
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
4 files changed, 42 insertions, 12 deletions
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); |
