aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-10-04 11:34:57 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-10-04 11:34:57 +0300
commit10ec78ea3dee66328ca50cd7bfbc2c6acd52264b (patch)
treec6422f2b73f0a74923a823da5813f37a323c638c /Software/Embedded_SW/Embedded/Modules
parent613be9fa6348139fd00ab8144885356ba36f5595 (diff)
downloadTango-10ec78ea3dee66328ca50cd7bfbc2c6acd52264b.tar.gz
Tango-10ec78ea3dee66328ca50cd7bfbc2c6acd52264b.zip
Heater state in diagnostics. new error codes.
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c18
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c17
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c22
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c2
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);