aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-10-15 07:53:18 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-10-15 07:53:18 +0300
commit94c14b3edbaec2f975df2f20175ba68c79a823ba (patch)
treec3d8ac524f20d0cf0a3247a4505815caf365cf43 /Software/Embedded_SW/Embedded/Modules
parentfb2991bde321e59160a3dd821ecc08db87ac9217 (diff)
parenta6f139678b625cc5cd99f4065956d2b8230f420a (diff)
downloadTango-94c14b3edbaec2f975df2f20175ba68c79a823ba.tar.gz
Tango-94c14b3edbaec2f975df2f20175ba68c79a823ba.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c45
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c57
5 files changed, 63 insertions, 50 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index c46e49672..15ebfc632 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -116,10 +116,10 @@ AlarmHandlingItem AlarmItem[MAX_SYSTEM_ALARMS]={
{100,LimitSwitchAlarm,LimitSwitchAlarmLow_6,false,true,DEBUG_LOG_CATEGORY__Warning,5,0,0,false,EVENT_TYPE__Dispenser6LowLevel,NULL,"Dispenser6LowLevel"},
{100,LimitSwitchAlarm,LimitSwitchAlarmLow_7,false,true,DEBUG_LOG_CATEGORY__Warning,6,0,0,false,EVENT_TYPE__Dispenser7LowLevel,NULL,"Dispenser7LowLevel"},
{100,LimitSwitchAlarm,LimitSwitchAlarmLow_8,false,true,DEBUG_LOG_CATEGORY__Warning,7,0,0,false,EVENT_TYPE__Dispenser8LowLevel,NULL,"Dispenser8LowLevel"},*/
-{100,TemperatureAlarm,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,300,true,DEBUG_LOG_CATEGORY__Error,0xFF,10,0,false,EVENT_TYPE__GeneralInternalOverTemperature,NULL,"GeneralInternalOverTemperature"},
+{100,TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP3,300,true,DEBUG_LOG_CATEGORY__Error,0xFF,10,0,false,EVENT_TYPE__GeneralInternalOverTemperature,NULL,"GeneralInternalOverTemperature"},
//{100,TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP1,250,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__GeneralInternalOverTemperature,NULL,"GeneralInternalOverTemperature"},
//{100,TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP2,80,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,0,false,EVENT_TYPE__GeneralInternalOverTemperature,NULL,"GeneralInternalOverTemperature"},
-{100,TemperatureAlarm,TEMP_SENSE_AN_ENCLOSURETEMP3,300,true,DEBUG_LOG_CATEGORY__Error,0xFF,10,0,false,EVENT_TYPE__DyeingHead6OverTemperature,NULL,"DyeingHead6OverTemperature"},
+{100,TemperatureAlarm,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,300,true,DEBUG_LOG_CATEGORY__Error,0xFF,10,0,false,EVENT_TYPE__DyeingHead6OverTemperature,NULL,"DyeingHead6OverTemperature"},
{100,TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,300,true,DEBUG_LOG_CATEGORY__Error,0xFF,10,0,false,EVENT_TYPE__DyeingHead1OverTemperature,NULL,"DyeingHead1OverTemperature"},
{100,TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,300,true,DEBUG_LOG_CATEGORY__Error,0xFF,10,0,false,EVENT_TYPE__DyeingHead2OverTemperature,NULL,"DyeingHead2OverTemperature"},
{100,TemperatureAlarm,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,300,true,DEBUG_LOG_CATEGORY__Error,0xFF,10,0,false,EVENT_TYPE__DyeingHead3OverTemperature,NULL,"DyeingHead3OverTemperature"},
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 9ce05b485..fa168067f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -494,13 +494,13 @@ uint32_t MillisecLoop(uint32_t tick)
{
Read_MidTank_Pressure_Sensor(Disp_i);
}
- for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++)
+/* for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++)
{
if (Motor_i == HARDWARE_MOTOR_TYPE__MOTO_SCREW)
continue; //
if (isMotorConfigured(Motor_i))
MotorGetStatusFromFPGA(Motor_i);
- }
+ }*/
}
//ROM_IntMasterEnable();
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 9873acb7e..67e0cf34b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -55,7 +55,6 @@ uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue)
DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT;
-DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM];
#define DIAGNOSTICS_LIMIT 10
#define DIAGNOSTICS_DANCER_LIMIT 100
int DiagnosticsIndex = 0;
@@ -95,7 +94,9 @@ DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS];
DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS];
HeaterState **heatersstates;
-HeaterState HeaterInfo[HEATER_TYPE__HeaterZone6+1];
+HeaterState HeaterInfo[HEATER_TYPE__MixerHeater+1];
+DigitalInterfaceState **digitalinterfacestates;
+DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM];
/*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT];
double dispenser2motorfrequency[DIAGNOSTICS_LIMIT];
double dispenser3motorfrequency[DIAGNOSTICS_LIMIT];
@@ -147,12 +148,20 @@ 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++)
+ heatersstates = (HeaterState**)malloc(sizeof(HeaterState *)*(HEATER_TYPE__MixerHeater+1));
+ for(i=0;i<=HEATER_TYPE__MixerHeater;i++)
{
heater_state__init(&HeaterInfo[i]);
heatersstates[i] = &HeaterInfo[i];
}
+ digitalinterfacestates = (DigitalInterfaceState**)malloc(sizeof(DigitalInterfaceState *)*MAX_HEATERS_NUM);
+ for (i = 0;i<MAX_HEATERS_NUM;i++ )
+ {
+ digital_interface_state__init(&DigitalOutputState[i]);
+ DigitalOutputState[i].has_interfaceio = true;
+ DigitalOutputState[i].has_value = true;
+ digitalinterfacestates[i] = &DigitalOutputState[i];
+ }
return;
}
@@ -181,12 +190,6 @@ void DiagnosticLoadMotor(int MotorId, int frequency)
void DiagnosticsLoadDigitalValues(void)
{
int i;
- for (i = 0;i<MAX_HEATERS_NUM;i++ )
- {
- digital_interface_state__init(&DigitalOutputState[i]);
- DigitalOutputState[i].has_interfaceio = true;
- DigitalOutputState[i].has_value = true;
- }
DigitalOutputState[0].interfaceio = INTERFACE_IOS__GPO_DRYER_SSR3_CTRL;
DigitalOutputState[0].value = GetHeaterState(0);
@@ -500,20 +503,6 @@ void SendDiagnostics(void)
DiagnosticsMonitor.dispenser8pressure = dispenserspressure[7];
response.monitors = &DiagnosticsMonitor;
- //DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM];
- response.n_digitalinterfacestates = 0;
- /*
- response.n_digitalinterfacestates = MAX_HEATERS_NUM;
- response.digitalinterfacestates = (DigitalInterfaceState**)malloc(sizeof(DigitalInterfaceState)*MAX_HEATERS_NUM);
- if (response.digitalinterfacestates)
- {
- DiagnosticsLoadDigitalValues();
- for (i=0;i<MAX_HEATERS_NUM;i++)
- {
- response.digitalinterfacestates[i] = &DigitalOutputState[i];
- }
- }
- */
//response.digitalpins = DigitalPinArray;
response.n_componentsstates = 0;
/* if (blowervolatgedisplay == true)
@@ -531,6 +520,12 @@ void SendDiagnostics(void)
}
}
*/
+ response.n_digitalinterfacestates = 0;
+
+ DiagnosticsLoadDigitalValues();
+ response.n_digitalinterfacestates = MAX_HEATERS_NUM;
+ response.digitalinterfacestates = digitalinterfacestates;
+
for (i=HEATER_TYPE__DryerAirHeater;i<=HEATER_TYPE__MixerHeater;i++)
{
LoadHeaterState((HeaterType)i,&HeaterInfo[i]);
@@ -564,8 +559,6 @@ void SendDiagnostics(void)
free(diagnosticsresponseContainer.data.data);
}
DiagnosticsReset();
- if (response.digitalinterfacestates)
- free(response.digitalinterfacestates);
}
uint32_t DiagnosticsControlId = 0xff;
uint32_t Diagnostics10MSControlId = 0xff;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index c4dd6150e..08a86ac39 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -124,8 +124,7 @@ void HeatersControlStart(void)
}
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];
+ int HeaterId = HeaterType;
HeaterState->has_heatertype = true;
HeaterState->heatertype = HeaterType;
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 05c6c9003..023e0dfc8 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -14,6 +14,7 @@
#include "PMR/Hardware/HardwareDancerType.pb-c.h"
#include "PMR/Printing/JobSegment.pb-c.h"
#include "PMR/Printing/JobTicket.pb-c.h"
+#include "PMR/common/ErrorCode.pb-c.h"
#include <PMR/Diagnostics/EventType.pb-c.h>
#include <utils/ustdlib.h>
@@ -144,10 +145,10 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
double length = 0.0;
char str[150];
int index = MAX_THREAD_MOTORS_NUM;
- if (ThreadControlActive == false)
- return OK;
- if (PrepareState == true)
- return OK;
+ // if (ThreadControlActive == false)
+ // return OK;
+ // if (PrepareState == true)
+ // return OK;
if (IfIndex>>8 != IfTypeThread)
{
LOG_ERROR (IfIndex, "Wrong Interface type");
@@ -310,14 +311,16 @@ uint32_t ThreadControlSpeedReadFunction(uint32_t IfIndex, uint32_t ReadValue)
}
return OK;
}
-double calculatedError[200];
+double calculatedError[1000];
//double eNormalizedError[100];
-int MotorId[200];
-int readValue[200];
+int MotorId[1000];
+int readValue[1000];
//int TranslatedreadValue[100];
-int AveragereadValue[200];
-int calculatedspeed[200];
+int AveragereadValue[1000];
+int calculatedspeed[1000];
+int timestamp[1000];
int controlIndex = 0;
+bool keepdata = true;
/*int32_t KeepReadValue = 0;
void testDancersControl()
{
@@ -343,6 +346,8 @@ void testDancersControl()
ThreadControlActive = false;
}*/
bool dancerinvalid = false;
+int MotorFailedSample[MAX_THREAD_MOTORS_NUM] = {0,0,0,0,0};
+char Message[60];
uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
{
//#define MAX_CONTROL_SAMPLES 6
@@ -375,11 +380,13 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
DancerId = ThreadMotorIdToDancerId[index];
if (ReadValue < 10)
{
+ MotorFailedSample[index]++;
REPORT_MSG(ReadValue, "Dancer value read too small.");
return OK;
}
if (ReadValue == 0x3FFF)
{
+ MotorFailedSample[index]++;
if (dancerinvalid == false)
{
dancerinvalid = true;
@@ -429,6 +436,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
//Stop Execution if the dancer moves too much
if ((abs(avreageSampleValue)> DancerStopActivityLimit[index])&&(JobCounter > eOneSecond))
{
+ keepdata = false;
usnprintf(Message, 60, "Dancer %d limit %d value %d Zero %d",DancerId,DancerStopActivityLimit[index],avreageSampleValue,DancersCfg[DancerId].zeropoint);
//JobAbortedByUser = true;
ThreadControlActive = false;
@@ -471,18 +479,25 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
}*/
if (abs(calculated_speed-CurrentControlledSpeed[index])>2)
{
- calculatedError[controlIndex] = MotorControlConfig[index].m_calculatedError;
- //double eNormalizedError[100];
- MotorId[controlIndex] = index;
- readValue[controlIndex] = ReadValue;
- //int TranslatedreadValue[100];
- AveragereadValue[controlIndex] = avreageSampleValue;
- calculatedspeed[controlIndex] = calculated_speed;
- if (controlIndex++>=199)
- controlIndex = 0;
+ if (keepdata == true)
+ {
+ calculatedError[controlIndex] = MotorControlConfig[index].m_calculatedError;
+ //double eNormalizedError[100];
+ MotorId[controlIndex] = index;
+ readValue[controlIndex] = ReadValue;
+ //int TranslatedreadValue[100];
+ AveragereadValue[controlIndex] = avreageSampleValue;
+ calculatedspeed[controlIndex] = calculated_speed;
+ timestamp[controlIndex] = HibernateRTCSSGet();
+ if (controlIndex++>=999)
+ controlIndex = 0;
+ }
CurrentControlledSpeed[index] = calculated_speed;
MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed);
}
+ else
+ MotorFailedSample[index]++;
+
}
return OK;
@@ -715,11 +730,17 @@ uint32_t ThreadDistanceToSpoolState(void )
return OK;
}
+char Endstr[150];
//********************************************************************************************************************
uint32_t ThreadEndState(void *JobDetails)
{
int Motor_i;
ThreadControlActive = false;
+
+ usnprintf(Endstr, 100, "Total processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength);
+ SendJobProgress(0.0,0,false, Endstr);
+ Report(Endstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0);
+
ThreadUpdateProcessLength (0.0,(void *)NULL);
SetOriginMotorSpeed(0);