From 08230d9473ade10bba291b9f336583ff5b4f571c Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 12 Aug 2018 15:35:02 +0300 Subject: alarm handling (basic) --- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 5 ++++- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 559db0e79..58d3f9889 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -74,6 +74,8 @@ typedef struct MillisecMessage{ uint32_t Dancer_Data[NUM_OF_DANCERS] = {0}; uint32_t Speed_Data = 0; +bool watchdogCriticalAlarm = false; + MillisecMotorDataStruc MotorData[NUM_OF_MOTORS] = {0}; MillisecMotorDataStruc SpeedSetPending[NUM_OF_MOTORS] = {0}; MillisecMotorDataStruc PT100Data[MAX_TEMPERATURE_SENSOR_ID] = {0}; @@ -417,7 +419,8 @@ uint32_t MillisecLoop(uint32_t tick) for (Sensor_i = 0;Sensor_i < MAX_SYSTEM_DISPENSERS;Sensor_i++) CalculateDispenserPressure(Sensor_i); FPGA_GetAllDispensersValveBusyOCD(); - Control_WD(ENABLE,50); //activate heaters/dispenser watchdog, 5 seconds + if (watchdogCriticalAlarm == false) + Control_WD(ENABLE,50); //activate heaters/dispenser watchdog, 5 seconds } //ROM_IntMasterEnable(); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h index ef9a9d21b..77c3a5ef8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h @@ -32,5 +32,7 @@ void MillisecInit(void); void MillisecStop(void); void MillisecStart(void); +extern bool watchdogCriticalAlarm; + extern Task_Handle Millisecond_Task_Handle; #endif /* MODULES_CONTROL_MILLISECTASK_H_ */ -- cgit v1.3.1 From da8c561c85c9ee296cb18796e5db95ca759d1063 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 12 Aug 2018 18:22:48 +0300 Subject: fix dryer heaters --- Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c | 2 +- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 5 +++-- Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c | 4 ++++ .../Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c | 1 + Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 6 +++--- 5 files changed, 12 insertions(+), 6 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c b/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c index 99190e02a..5f5f04063 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c +++ b/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c @@ -39,7 +39,7 @@ static GPIOIntPortMap portMap[MAX_HEATERS_NUM] = { {DRYER_SSR2_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature {DRYER_SSR1_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain - {DRYER_SSR3_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary + {DRYER_SSR2_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary {DYEINGH_SSR8_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1 - Head Heater #1 - rightmost {DYEINGH_SSR7_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2 - Head Heaters #2 #3 #4 {DYEINGH_SSR6_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3 - Head Heaters #5 #6 #7 #8 diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 559db0e79..25f826d92 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -179,6 +179,7 @@ int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, MSecFptr Callback) PT100Activity++; //get response PT100Activity++; //read request PT100Data[TempSensorId].Callback = Callback; + PT100Data[TempSensorId].WaitForData = true; PT100Data[TempSensorId].DataRequired = true; PT100Data[TempSensorId].Active = true; @@ -343,7 +344,7 @@ uint32_t MillisecLoop(uint32_t tick) { TemperatureSendSensorDummyClk((TEMPERATURE_SENSOR_ID_ENUM)Sensor_i); PT100Data[Sensor_i].SyncRequired = false; - if (PT100Data[Sensor_i].DataRequired == true) + /*if (PT100Data[Sensor_i].DataRequired == true) { PT100Data[Sensor_i].WaitForData = true; // mark the motor for data request next round } @@ -351,7 +352,7 @@ uint32_t MillisecLoop(uint32_t tick) { if (PT100Data[Sensor_i].Callback) PT100Data[Sensor_i].Callback(Sensor_i,0); // call the callback to report execution - } + }*/ PT100Activity--; } diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 1ca1e5f84..56e2d65bb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -229,6 +229,10 @@ void Diagnostic100msecCollection(void) DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, TemperatureSensorRead(TEMP_SENSE_ANALOG_DYEINGH_TEMP5)); DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, TemperatureSensorRead(TEMP_SENSE_ANALOG_MIXCHIP_TEMP)); #ifndef DEMO_TEMPERATURE +//#define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2 +//#define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1 +//#define DRYER_SECONDARY_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP3 + DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, TemperatureSensorRead(TEMP_SENSE_ANALOG_DRYER_TEMP1)); DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, TemperatureSensorRead(TEMP_SENSE_ANALOG_DRYER_TEMP2)); DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, TemperatureSensorRead(TEMP_SENSE_ANALOG_DRYER_TEMP3)); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index 4e573cb82..2d73379d6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -456,5 +456,6 @@ uint32_t SetComponentValueRequestRequestFunc(MessageContainer* requestContainer) //free(requestContainer); set_component_value_request__free_unpacked(request,NULL); + return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 01a08125a..861c77e3b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -46,9 +46,9 @@ uint32_t ControlIdtoHeaterId [MAX_HEATERS_NUM] = {0xFF,0xFF,0xFF,0xFF,0xFF,0x uint32_t MainDryerHeaterMaxTempControl = 0xFF; uint32_t SecondDryerHeaterMaxTempControl = 0xFF; -#define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP3 -#define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1 -#define DRYER_SECONDARY_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2 +#define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1 +#define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2 +#define DRYER_SECONDARY_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP3 uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,TEMP_SENSE_AN_ENCLOSURETEMP3}; uint32_t DryerInternalPT100Id = DRYER_AIR_PT100; -- cgit v1.3.1 From 2054939d97dd0f2b9729781329337868fea1113b Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 13 Aug 2018 11:20:45 +0300 Subject: heating fix. alarm handling stops pnly active job --- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 14 ++++++++++---- .../Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 2 +- .../Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c | 4 ++-- .../Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 5 ++++- 4 files changed, 17 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index ef95311bb..7a766a552 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -228,14 +228,20 @@ uint32_t AlarmHandlingConsequentActions(EventType EventId, DebugLogCategory Seve //raise flag fr next job break; case DEBUG_LOG_CATEGORY__Error: - JobEndReason = JOB_OTHER_ALARM; - EndState(NULL,event_type__descriptor.name[EventId]); + if (JobIsActive()) + { + JobEndReason = JOB_OTHER_ALARM; + EndState(NULL,event_type__descriptor.name[EventId]); + } //Stop Job break; case DEBUG_LOG_CATEGORY__Critical: - JobEndReason = JOB_OTHER_ALARM; + if (JobIsActive()) + { + JobEndReason = JOB_OTHER_ALARM; + EndState(NULL,event_type__descriptor.name[EventId]); + } watchdogCriticalAlarm = true; - EndState(NULL,event_type__descriptor.name[EventId]); //stop job //turn machine off break; diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 9212eb501..75462bd7c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -102,7 +102,7 @@ void MillisecInit(void) Error_init(&eb); - MillisecMsgQ = Mailbox_create(sizeof(MillisecMessageStruc), 20, NULL,&eb); + MillisecMsgQ = Mailbox_create(sizeof(MillisecMessageStruc), 2, NULL,&eb); for (i=0;i