diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-06-26 15:00:58 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-06-26 15:00:58 +0300 |
| commit | 4cd56e3ec4d715526aacdce732d20245af1411dc (patch) | |
| tree | 6c51a78cf7033b9f483193edd03ef4ae72c454c2 /Software/Embedded_SW/Embedded/Modules | |
| parent | 2c11fdf484f1fed9015c7f0c13ea222e5d96f7e6 (diff) | |
| parent | 5efdaff54ec70731fede1308c5b70b3f7048657d (diff) | |
| download | Tango-4cd56e3ec4d715526aacdce732d20245af1411dc.tar.gz Tango-4cd56e3ec4d715526aacdce732d20245af1411dc.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
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) |
