diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-15 07:53:18 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-15 07:53:18 +0300 |
| commit | 94c14b3edbaec2f975df2f20175ba68c79a823ba (patch) | |
| tree | c3d8ac524f20d0cf0a3247a4505815caf365cf43 /Software/Embedded_SW/Embedded/Modules | |
| parent | fb2991bde321e59160a3dd821ecc08db87ac9217 (diff) | |
| parent | a6f139678b625cc5cd99f4065956d2b8230f420a (diff) | |
| download | Tango-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')
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); |
