diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-04 11:34:57 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-04 11:34:57 +0300 |
| commit | 10ec78ea3dee66328ca50cd7bfbc2c6acd52264b (patch) | |
| tree | c6422f2b73f0a74923a823da5813f37a323c638c /Software/Embedded_SW/Embedded/Modules | |
| parent | 613be9fa6348139fd00ab8144885356ba36f5595 (diff) | |
| download | Tango-10ec78ea3dee66328ca50cd7bfbc2c6acd52264b.tar.gz Tango-10ec78ea3dee66328ca50cd7bfbc2c6acd52264b.zip | |
Heater state in diagnostics. new error codes.
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
6 files changed, 62 insertions, 2 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 6f234e26a..9b4f945d8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -23,6 +23,7 @@ #include <Drivers/SSI_Comm/SSI_Comm.h> #include <Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.h> #include <Drivers/SSI_Comm/Dancer/Dancer.h> +#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include <inc/hw_ints.h> #include "drivers/adc_sampling/adc.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 934467277..4da305c33 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -37,6 +37,8 @@ #include <PMR/Diagnostics/EventType.pb-c.h> #include <PMR/Diagnostics/DigitalInterfaceState.pb-c.h> #include <PMR/Diagnostics/InterfaceIOs.pb-c.h> +#include "PMR/Diagnostics/HeaterType.pb-c.h" +#include "PMR/Diagnostics/HeaterState.pb-c.h" #include <PMR/debugging/DebugLogCategory.pb-c.h> #include "StateMachines/Printing/PrintingSTM.h" @@ -92,6 +94,8 @@ double MidTankpressure[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT]; DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS]; DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS]; +HeaterState **heatersstates; +HeaterState HeaterInfo[HEATER_TYPE__HeaterZone6+1]; /*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT]; double dispenser2motorfrequency[DIAGNOSTICS_LIMIT]; double dispenser3motorfrequency[DIAGNOSTICS_LIMIT]; @@ -143,6 +147,12 @@ void DiagnosticsInit(void) double_array__init(&DispenserFreq[i]); double_array__init(&DiagnosticsDispenserPressure[i]); } + heatersstates = (HeaterState**)malloc(sizeof(HeaterState *)*(HEATER_TYPE__HeaterZone6+1)); + for(i=0;i<=HEATER_TYPE__HeaterZone6;i++) + { + heater_state__init(&HeaterInfo[i]); + heatersstates[i] = &HeaterInfo[i]; + } return; } @@ -520,6 +530,14 @@ void SendDiagnostics(void) } } */ + for (i=HEATER_TYPE__HeaterZone1;i<=HEATER_TYPE__HeaterZone6;i++) + { + LoadHeaterState((HeaterType)i,&HeaterInfo[i]); + //heatersstates[i] = &HeaterInfo[i]; + } + response.n_heatersstates = HEATER_TYPE__HeaterZone6+1; + response.heatersstates = heatersstates; + diagnosticsresponseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size); diagnosticsresponseContainer.continuous = true; diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index fda955b98..ec2d9a9fe 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -26,6 +26,8 @@ double headairflow = 0; double dryerairflow = 0; int32_t tableindex = 0; +#define MAX_ALLOWED_TEMPERATURE 280 + ProcessParameters* ProcessParametersKeep; uint32_t HandleProcessParameters(ProcessParameters* ProcessParams) @@ -144,8 +146,21 @@ void ProcessRequestFunc(MessageContainer* requestContainer) container_buffer = malloc(message_container__get_packed_size(&responseContainer)); + REPORT_MSG (ProcessParams->dryerzone1temp,"Process Params Dryer"); + + if (ProcessParams->dryerzone1temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->dryerzone2temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->dryerzone3temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->mixertemp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->headzone1temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->headzone2temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->headzone3temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->headzone4temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->headzone5temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; + if (ProcessParams->headzone6temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__GENERAL_ERROR; - status = HandleProcessParameters(ProcessParams); + if (status == 0) + status = HandleProcessParameters(ProcessParams); if (status) { responseContainer.has_error = true; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index 74a8efeb3..1c1f45434 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -1,5 +1,7 @@ #include "PMR/common/MessageContainer.pb-c.h" #include "PMR/Hardware/HardwarePidControl.pb-c.h" +#include "PMR/Diagnostics/HeaterType.pb-c.h" +#include "PMR/Diagnostics/HeaterState.pb-c.h" #define MAX_HEATERS_NUM HARDWARE_PID_CONTROL_TYPE__MixerHeater+1 @@ -18,5 +20,7 @@ void HeatingStopReporting(void); bool HeaterGetOverTemperatureState(uint8_t HeaterId); +void LoadHeaterState(HeaterType HeaterType,HeaterState *HeaterState); + uint32_t HeatersEnd(void); uint32_t Heaters_Init(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index ace2bf683..61bc04ba4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -10,6 +10,8 @@ #include "PMR/Hardware/HardwarePidControlType.pb-c.h" #include "PMR/Hardware/HardwarePidControl.pb-c.h" +#include "PMR/Diagnostics/HeaterType.pb-c.h" +#include "PMR/Diagnostics/HeaterState.pb-c.h" #include "PMR/common/MessageContainer.pb-c.h" #include "../control/control.h" @@ -120,6 +122,26 @@ void HeatersControlStart(void) HeatersStartControlTimer(); } } +void LoadHeaterState(HeaterType HeaterType,HeaterState *HeaterState) +{ + HardwarePidControlType HeaterTypeToControlId[HEATER_TYPE__HeaterZone6] = {HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5,HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6}; + int HeaterId = HeaterTypeToControlId[HeaterType]; + + HeaterState->has_heatertype = true; + HeaterState->heatertype = HeaterType; + HeaterState->has_setpoint = true; + HeaterState->setpoint = HeaterCmd[HeaterId].targettemperatue/100; + HeaterState->has_currentvalue = true; + HeaterState->currentvalue = TemperatureSensorRead(HeaterId2PT100Id[HeaterId])/100; + HeaterState->has_isactive = true; + HeaterState->isactive = GetHeaterState(HeaterId); + HeaterState->has_isrampingup = true; + HeaterState->isrampingup = DCInitialHeating[HeaterId]; + HeaterState->has_isinsetpoint = true; + HeaterState->isinsetpoint = HeaterReady[HeaterId]; + + return; +} uint32_t HeatersSingleHeaterEnd(HardwarePidControlType HeaterId) { int status = OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index c7d5998c6..77e1939f9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -401,7 +401,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) usnprintf(Message, 60, "Dancer %d limit %d value %d Zero %d",DancerId,DancerStopActivityLimit[index],avreageSampleValue,DancersCfg[DancerId].zeropoint); //JobAbortedByUser = true; ThreadControlActive = false; - JobEndReason = JOB_DANCER_FAIL; + JobEndReason = JOB_WINDER_DANCER_FAIL+index; SendJobProgress(0.0,0,false, Message); //EndState(CurrentJob,Message ); SegmentReady(Module_Thread,ModuleFail); |
