aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-06-26 15:00:58 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-06-26 15:00:58 +0300
commit4cd56e3ec4d715526aacdce732d20245af1411dc (patch)
tree6c51a78cf7033b9f483193edd03ef4ae72c454c2 /Software/Embedded_SW/Embedded/Modules
parent2c11fdf484f1fed9015c7f0c13ea222e5d96f7e6 (diff)
parent5efdaff54ec70731fede1308c5b70b3f7048657d (diff)
downloadTango-4cd56e3ec4d715526aacdce732d20245af1411dc.tar.gz
Tango-4cd56e3ec4d715526aacdce732d20245af1411dc.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c44
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c66
6 files changed, 80 insertions, 40 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandlingDiagnostics.c
index 85afbbea9..a11c472b3 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_GPI;i++)
+ dispenser1motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1);
+ dispenser2motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_2);
+ dispenser3motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_3);
+ dispenser4motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_4);
+ dispenser5motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_5);
+ dispenser6motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_6);
+ dispenser7motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_7);
+ dispenser8motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8);
+
+ for (i=0;i<1;i++)
{
DigitalPinArray[i][DiagnosticsIndex].has_port = true;
DigitalPinArray[i][DiagnosticsIndex].port = i;
@@ -152,8 +169,18 @@ void SendDiagnostics(void)
DiagnosticsMonitor.dispensersmotorsfrequency = dispensermotorfrequency;
+ DiagnosticsMonitor.dispenser1motorfrequency = dispenser1motorfrequency;
+ DiagnosticsMonitor.dispenser2motorfrequency = dispenser2motorfrequency;
+ DiagnosticsMonitor.dispenser3motorfrequency = dispenser3motorfrequency;
+ DiagnosticsMonitor.dispenser4motorfrequency = dispenser4motorfrequency;
+ DiagnosticsMonitor.dispenser5motorfrequency = dispenser5motorfrequency;
+ DiagnosticsMonitor.dispenser6motorfrequency = dispenser6motorfrequency;
+ DiagnosticsMonitor.dispenser7motorfrequency = dispenser7motorfrequency;
+ DiagnosticsMonitor.dispenser8motorfrequency = dispenser8motorfrequency;
+
+
response.monitors = &DiagnosticsMonitor;
- response.n_digitalpins = DiagnosticsIndex*MAX_GPI;
+ response.n_digitalpins = DiagnosticsIndex/**MAX_GPI*/;
response.digitalpins = DigitalPinArray;
response.n_events = 0;
response.n_componentsstates = 0;
@@ -172,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;
@@ -182,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/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index a2d8760a1..4b0c42412 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -266,7 +266,7 @@ uint32_t MillisecLoop(uint32_t tick)
//test dancers and speed encoders
//check all callback units (state machine waiting for completion of a change)
bool Ten_msTick, Hundred_msTick, Onesecond_Tick,O900Millisecond_Tick;
- Ten_msTick = (tick%eTenMilliSecond == 0) ?true:false;
+ Ten_msTick = (tick%eTenMillisecond == 0) ?true:false;
Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false;
O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false;
Onesecond_Tick = (tick%eOneSecond == 0) ?true:false;
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c
index 48c6680f1..1e087eda3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c
@@ -282,7 +282,7 @@ uint32_t ControlLoop(uint32_t tick)
//check all callback units (state machine waiting for completion of a change)
uint32_t Device_i;
bool Ten_msTick, Hundred_msTick, Onesecond_Tick,Tick98,Tick998;
- Ten_msTick = (tick%eTenMilliSecond == 0) ?true:false;
+ Ten_msTick = (tick%eTenMillisecond == 0) ?true:false;
Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false;
Onesecond_Tick = (tick%eOneSecond == 0) ?true:false;
Tick98 = (tick%eHundredMillisecond == 99) ?true:false;
@@ -307,7 +307,7 @@ uint32_t ControlLoop(uint32_t tick)
else
LOG_ERROR (Device_i, "Invalid callback ptr");
break;
- case eTenMilliSecond:
+ case eTenMillisecond:
if (Ten_msTick)
{
if(ControlArray[Device_i].ControlDataReadPtr)
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.h b/Software/Embedded_SW/Embedded/Modules/Control/control.h
index 853393739..97b0e16a1 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.h
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.h
@@ -16,7 +16,7 @@ typedef uint32_t (* DataReadCBFunction)( uint32_t Parameter1, uint32_t Paramete
typedef enum {
eNoControl = 0,
eOneMillisecond = 1,
- eTenMilliSecond = 10,
+ eTenMillisecond = 10,
eHundredMillisecond = 100,
eOneSecond = 1000
}CTRL_TIMING_ENUM;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index 4cee9b196..962f9b651 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -10,5 +10,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
void HeatingTestRequest(MessageContainer* requestContainer);
void HeatingTestPollRequest(MessageContainer* requestContainer);
+bool HeaterGetOverTemperatureState(uint8_t HeaterId);
+
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 110d1918d..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;
@@ -286,7 +286,11 @@ void HeaterPrepareReady(void)
* called by: Communication from host
* initialized all global data
*/
-//DryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction
+bool HeaterGetOverTemperatureState(uint8_t HeaterId)
+{
+ if (HeaterId > MAX_HEATERS_NUM) return false;
+ return HeaterMaxTempFlag[HeaterId];
+}
uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
{
int index=MAX_HEATERS_NUM;
@@ -571,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)