From a1edf5f9117dd8b092a0320a4f24e338417d03e8 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 26 Jun 2018 10:55:37 +0300 Subject: Diagnostics + eTenSilliseconds --- .../AlarmHandling/AlarmHandlingDiagnostics.c | 37 +++++++++++++++++++--- .../Embedded/Modules/Control/MillisecTask.c | 2 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 4 +-- .../Embedded_SW/Embedded/Modules/Control/control.h | 2 +- .../Embedded/Modules/Heaters/Heaters_ex.h | 2 ++ .../Embedded/Modules/Heaters/Heaters_print.c | 6 +++- 6 files changed, 43 insertions(+), 10 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c index 85afbbea9..abd10383f 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c @@ -42,9 +42,9 @@ bool DiagnosticsActive = false; //********************************************************************** #define DIAGNOSTICS_LIMIT 10 int DiagnosticsIndex = 0; -int DiagnosticCollectionLimit = 1; -int DiagnosticLimit = eHundredMillisecond; -DigitalPin DigitalPinArray[MAX_GPI][DIAGNOSTICS_LIMIT]; +int DiagnosticCollectionLimit = 3; //number of data samples to collect before sending to the host +int DiagnosticLimit = eTenMillisecond; //frequency of data collection +DigitalPin DigitalPinArray[1][DIAGNOSTICS_LIMIT]; double dancer1angle[DIAGNOSTICS_LIMIT]; double dancer2angle[DIAGNOSTICS_LIMIT]; double dancer3angle[DIAGNOSTICS_LIMIT]; @@ -63,6 +63,14 @@ double dryerzone2temperature[DIAGNOSTICS_LIMIT]; double dryerzone3temperature[DIAGNOSTICS_LIMIT]; double dispensermotorfrequency[DIAGNOSTICS_LIMIT][MAX_SYSTEM_DISPENSERS]; +double dispenser1motorfrequency[DIAGNOSTICS_LIMIT]; +double dispenser2motorfrequency[DIAGNOSTICS_LIMIT]; +double dispenser3motorfrequency[DIAGNOSTICS_LIMIT]; +double dispenser4motorfrequency[DIAGNOSTICS_LIMIT]; +double dispenser5motorfrequency[DIAGNOSTICS_LIMIT]; +double dispenser6motorfrequency[DIAGNOSTICS_LIMIT]; +double dispenser7motorfrequency[DIAGNOSTICS_LIMIT]; +double dispenser8motorfrequency[DIAGNOSTICS_LIMIT]; void DiagnosticCollection(void) { @@ -90,7 +98,16 @@ void DiagnosticCollection(void) { dispensermotorfrequency[DiagnosticsIndex][i] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1+i); } - for (i=0;i MAX_HEATERS_NUM) return false; + return HeaterMaxTempFlag[HeaterId]; +} uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) { int index=MAX_HEATERS_NUM; -- cgit v1.3.1 From 5efdaff54ec70731fede1308c5b70b3f7048657d Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 26 Jun 2018 12:43:53 +0300 Subject: some heater control bugs --- .../AlarmHandling/AlarmHandlingDiagnostics.c | 9 +++- .../Embedded/Modules/Heaters/Heaters_print.c | 60 +++++++++++----------- 2 files changed, 38 insertions(+), 31 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c index abd10383f..a11c472b3 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c @@ -180,7 +180,7 @@ void SendDiagnostics(void) response.monitors = &DiagnosticsMonitor; - response.n_digitalpins = DiagnosticsIndex; + response.n_digitalpins = DiagnosticsIndex/**MAX_GPI*/; response.digitalpins = DigitalPinArray; response.n_events = 0; response.n_componentsstates = 0; @@ -199,6 +199,11 @@ void SendDiagnostics(void) } uint32_t AlarmHandlingControlId = 0xff; +uint32_t AlarmHandlingEmptyCBFunction(uint32_t IfIndex, uint32_t ReadValue) +{ + return OK; +} + uint32_t StartDiagnosticsRequestFunc(MessageContainer* requestContainer) { uint32_t status = NOT_SUPPORTED; @@ -209,7 +214,7 @@ uint32_t StartDiagnosticsRequestFunc(MessageContainer* requestContainer) StartDiagnosticsRequest* request = start_diagnostics_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); strcpy (DiagnosticsToken, requestContainer->token); DiagnosticsActive = true; - AlarmHandlingControlId = AddControlCallback(AlarmHandler_SendDiagnostics,DiagnosticLimit,NULL,0,0,0); + AlarmHandlingControlId = AddControlCallback(AlarmHandler_SendDiagnostics,DiagnosticLimit,AlarmHandlingEmptyCBFunction,0,0,0); start_diagnostics_request__free_unpacked(request,NULL); return status; } diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index c66e1bd25..2de675d5c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -46,7 +46,7 @@ HeaterCommand HeaterCmd[MAX_HEATERS_NUM]; uint32_t ControlIdtoHeaterId [MAX_HEATERS_NUM] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; uint32_t DryerHeaterMaxTempControl = 0xFF; #warning the PT100 id for the dryer control is number2 - dryer internal ambient sensor -uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {TEMP_SENSE_ANALOG_DRYER_TEMP1,TEMP_SENSE_ANALOG_DRYER_TEMP2,TEMP_SENSE_ANALOG_DRYER_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_MIXCHIP_TEMP}; +uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {TEMP_SENSE_ANALOG_DRYER_TEMP2,TEMP_SENSE_ANALOG_DRYER_TEMP1,TEMP_SENSE_ANALOG_DRYER_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_MIXCHIP_TEMP}; uint32_t DryerInternalPT100Id = TEMP_SENSE_ANALOG_DRYER_TEMP1; bool HeatersRestart = false; @@ -135,7 +135,7 @@ uint32_t HeatersEnd(void) } } if (i == HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w) //DC Heaters - if (ControlIdtoHeaterId [i]!=0xFF) + if (DryerHeaterMaxTempControl) { status |=RemoveControlCallback(DryerHeaterMaxTempControl ,HeaterMaxTempCBFunction); ControlIdtoHeaterId [i]=0xFF; @@ -575,39 +575,41 @@ uint32_t HeatersControlLoop(uint32_t tick) 0,0, HeaterPIDConfig[HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w].m_calculatedError, HeaterPIDConfig[HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1].m_calculatedError,"First Control"); } - if (TimeSliceAllocation[SliceCounter] == HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w) + if (InitialHeating == false) { - if (HeaterMaxTempFlag[HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w] == false) + if (TimeSliceAllocation[SliceCounter] == HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w) { - //If HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w should be active - //Activate HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w - ActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w); - //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 - DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1); - DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2); + if (HeaterMaxTempFlag[HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w] == false) + { + //If HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w should be active + //Activate HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w + ActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w); + //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 + DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1); + DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2); + } } - } - else if (TimeSliceAllocation[SliceCounter] == HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1) - { - if (HeaterMaxTempFlag[HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1] == false) + else if (TimeSliceAllocation[SliceCounter] == HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1) + { + if (HeaterMaxTempFlag[HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1] == false) + { + //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w + DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w); + //If HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 should be active + //Activate HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 + ActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1); + ActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2); + } + } + else { - //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w - DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w); - //If HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 should be active - //Activate HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 - ActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1); - ActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2); + //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w + DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w); + //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 + DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1); + DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2); } } - else - { - //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w - DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w); - //DeActivate HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 - DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1); - DeActivateHeater (HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2); - } - for ( DcHeaterId = HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1; DcHeaterId<= HARDWARE_PID_CONTROL_TYPE__MixerHeater;DcHeaterId++) { if (HeaterReady[DcHeaterId] == false) -- cgit v1.3.1