aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-09-22 11:09:01 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-09-22 11:09:01 +0300
commit383332c5ff77d9d8ea0532e5f04c23217563ab30 (patch)
tree26ecc29880589f2b0fcb01b30bfc50a87f7fe432 /Software/Embedded_SW/Embedded/Modules
parent6715e2fccbfb38f803d5cf5e2e98377a47340582 (diff)
downloadTango-383332c5ff77d9d8ea0532e5f04c23217563ab30.tar.gz
Tango-383332c5ff77d9d8ea0532e5f04c23217563ab30.zip
handle safety alarms, log winder better.
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/Safety.c34
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c5
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);