From c0fd77fecad0bf9cdc77d09cad4f5ea8cc414e17 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Fri, 21 Feb 2020 09:32:18 +0200 Subject: send power off update at least once every 1 sec --- .../Embedded/StateMachines/Initialization/PowerOffSequence.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 5cc94a909..d737b3172 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -91,11 +91,7 @@ uint32_t PowerOffScheduler(uint32_t IfIndex, uint32_t BusyFlag) StoredMachineState = PowerOffMachineState; PowerOffSequenceStateMachine (PowerOffMachineState); } - if (UpdateCounter++ >= UPDATE_TIMEOUT) - { - UpdateCounter = 0; - PowerDownUpdate(PowerOffMachineState); - } + PowerDownUpdate(PowerOffMachineState); return OK; } /*******************************************************************************************************/ -- cgit v1.3.1 From 3e44776ad8b02c71954d3090f9532f3c121d0618 Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Sun, 23 Feb 2020 08:17:12 +0200 Subject: push before merge --- .../I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c | 8 ++++---- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c | 8 ++++---- .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 12 +++++------- .../Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c | 4 ++-- 4 files changed, 15 insertions(+), 17 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c index ca3ef7c63..a670819d7 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c @@ -16,7 +16,7 @@ FAN_DRIVER_INFO Fan_Driver_Info[maxFAN-1]; #define NUM_OF_FAN_DRIVER 3 - +#define DEFAULT_FAN_SPEED 0xFF #define FAN_SPEED_OFF 0x00 #define PUSH_PULL 1 uint8_t Fan_Mux_Channel = UNKNOWN; @@ -149,9 +149,9 @@ uint16_t WHS_Get_fan_tach(WHS_fan_num fan_number) void Read_All_WHS_Fans_Tach() { - WHS_fan_num fan_number=0; + WHS_fan_num fan_number = FAN1; - for (fan_number = FAN1 ; fan_number < FAN5/*maxFAN*/; fan_number++) + for (fan_number = FAN1 ; fan_number < maxFAN; fan_number++) { WHS_Read_fan_tach(fan_number); } @@ -250,7 +250,7 @@ bool init_WHS_fan() { Select_WHS_Fan_Mux_Channel(fan_number); status |= D_Fan_PWM_Output_Config(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), PUSH_PULL ); - status |= D_Fan_Setting(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), FAN_SPEED_OFF); + status |= D_Fan_Setting(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), DEFAULT_FAN_SPEED);//FAN_SPEED_OFF } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c index aa2be496e..539977138 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c @@ -279,15 +279,15 @@ double GetWHSAirFlow(uint8_t OR_Id) switch (OR_Id) { case DRIER_FLOW_METER: - //get_orf_1(&value); - Q_value = get_average_ORF1_Q(); + //get_orf_3(&value); + Q_value = get_average_ORF3_Q(); break; case NU_FLOW_METER: get_orf_2(&value); break; case HEAD_FLOW_METER: - //get_orf_3(&value); - Q_value = get_average_ORF3_Q(); + //get_orf_1(&value); + Q_value = get_average_ORF1_Q(); break; default: break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index f00d6c6ed..e8c423dbd 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -224,11 +224,10 @@ double WHS_Blower_Avarege_ORF1() i += 1; } sum_orifice_Q -= average_orf1_Q_buff[i]; - //get_orf_1(&orifice_hex_value ); average_orf1_Q_buff[i] = get_Q(orifice_hex_value); sum_orifice_Q += average_orf1_Q_buff[i]; average_Q_orifice1 = sum_orifice_Q / ORF_BUFF_SIZE; - ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3*1000), 0); + ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice1 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice1*1000), 0); } return average_Q_orifice1; } @@ -251,8 +250,7 @@ double WHS_Blower_Avarege_ORF3() { average_orf3_Q_buff[i] = Q_temp; } - ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head new value-----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3*1000), 0); - + ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head new value-----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3 * 1000), 0); } else { @@ -269,7 +267,7 @@ double WHS_Blower_Avarege_ORF3() sum_orifice_Q += average_orf3_Q_buff[i]; average_Q_orifice3 = sum_orifice_Q /ORF_BUFF_SIZE; } - ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3*1000), 0); + ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3 * 1000), 0); return average_Q_orifice3; } @@ -322,7 +320,7 @@ bool Test_WHS_blower() bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint_Q) { //double average_ORF1_Q = 0; - double current_dying_head_flow_Q = 0; + double current_dying_head_flow_Q = 0.0; uint16_t volt; double tmp = 0.0; @@ -395,7 +393,7 @@ void WHS_Start_Blower_Control_Closed_Loop () } double WHS_Get_Blower_Control_Closed_Loop_SetPoint(void) { - double SetPoint = 0; + double SetPoint = 0.0; // to do return the setpoint return SetPoint; } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index ccd051c71..e99bde2f9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -182,10 +182,10 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) temp_double = get_ORF3_Q(); break; case 20: - temp_double = get_average_ORF1_Q(); + temp_double = get_average_ORF1_Q(); //HEAD break; case 22: - temp_double = get_average_ORF3_Q(); + temp_double = get_average_ORF3_Q(); //Drier break; case 11: -- cgit v1.3.1 From ffbe0df145c04bc9e39d5db162a49928ae205da3 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 23 Feb 2020 15:41:29 +0200 Subject: switch ADC line 16 and 17 (drier 1, drier 2). pt100 error is a BIT failure. dancer status, and use low dancer values and 0x3FFF (for dancer rollover) --- Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h | 4 ++-- .../Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c | 4 ++++ .../Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h | 1 + Software/Embedded_SW/Embedded/Main.c | 4 ++-- .../Embedded_SW/Embedded/Modules/General/GeneralHardware.c | 4 ++-- .../Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 4 ++-- .../Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 14 ++++++-------- 7 files changed, 19 insertions(+), 16 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h index 65064c837..2d5a95c2a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h +++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h @@ -30,8 +30,8 @@ typedef enum ADC_LEFT_DANCER_1 ,//13 ADC_LEFT_DANCER_2 ,//14 ADC_RIGHT_DANCER ,//15 - ADC_DRYER_CURRENT_2 ,//16 - ADC_DRYER_CURRENT_1 ,//17 + ADC_DRYER_CURRENT_1 ,//16 + ADC_DRYER_CURRENT_2 ,//17 ADC_DRYER_CURRENT_3 ,//18 ADC_FPGA_3V3 ,//19 ADC_MAX_ADC_DEVICES ,//20 diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c index b2be0d407..749fad6b0 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c @@ -85,6 +85,10 @@ uint32_t Read_Dryer_ENC_Position () //REPORT_MSG(Dryer_ENC.Position,"Read_Dryer_ENC_Position"); return Dryer_ENC.Position; } +uint32_t Read_Dryer_Status(HardwareDancerType DancerId) +{ + return Dryer_ENC.Gen_status; +} uint32_t Control_Read_Dryer_Position(HardwareDancerType DancerId, uint32_t Parameter1) { return Dryer_ENC.Position; diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h index 33a961c58..8c9d8cfd7 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h @@ -13,6 +13,7 @@ uint32_t Read_Dancer_Position (HardwareDancerType DancerId); uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1); uint32_t Read_Dryer_ENC_Position (); uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1); +uint32_t Read_Dryer_Status(HardwareDancerType DancerId); void Loop_SSI(); diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 604fc73fb..845cd2ba8 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -122,12 +122,12 @@ bool UpdateFlag = false; /* ======== errHook ======== */ Void errHook(Error_Block *eb) { - FRESULT Fresult = FR_OK; + /*FRESULT Fresult = FR_OK; FIL *FileHandle = 0; //the system supports a single active file uint32_t Bytes = 0; char File[50] = ""; char message[300]; - int len; + int len;*/ STATUS_GREEN_LED_OFF; ACTIVITY_GREEN_LED_OFF; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index ec59385ab..8e360cf6e 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -367,7 +367,7 @@ uint32_t EmbeddedParametersInit(void) return Fresult; } -uint32_t GenHWControlId; +/*uint32_t GenHWControlId; uint32_t GenHWInitCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { @@ -380,7 +380,7 @@ uint32_t GenHWInitCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) Disable_MidTank_Pressure_Reading(Dispenser_i); } return OK; -} +}*/ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) { diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 06da53823..5434765e1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -662,7 +662,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) DeActivateHeater(HeaterId); HeaterCmd[HeaterId].targettemperatue = 0; #warning PT100 error is misidentified as overheat in alarms - AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true); + AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); return; } @@ -738,7 +738,7 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue) ControlIdtoHeaterId [HeaterId] = 0xFF; } DeActivateHeater(HeaterId); - AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true); + AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); HeaterCmd[HeaterId].targettemperatue = 0; return ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 1dd101f82..9e0a2ac7f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -442,7 +442,6 @@ void testDancersControl() ThreadControlActive = false; } #endif -bool dancerinvalid = false; int MotorFailedSample[MAX_THREAD_MOTORS_NUM] = {0,0,0,0,0}; char TMessage[150]; //char time[150]; @@ -481,21 +480,20 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //if (MotorDriverResponse[ThreadMotorIdToMotorId[index]].Busy == true) // return OK; DancerId = ThreadMotorIdToDancerId[index]; - if (ReadValue < 10) +/* if (ReadValue < 10) { MotorFailedSample[index]++; ReportWithPackageFilter(ThreadFilter,"Dancer value read too small.",__FILE__,__LINE__,DancerId,RpError,ReadValue,0); return OK; - } + }*/ if (ReadValue == 0x3FFF) { - MotorFailedSample[index]++; - if (dancerinvalid == false) + if (Read_Dryer_Status(DancerId) != OK) { - dancerinvalid = true; - ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,__LINE__,(int)IfIndex,RpError,(int)ReadValue,0); + ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,ReadValue,(int)DancerId,RpError,(int)Read_Dryer_Status(DancerId),0); + MotorFailedSample[index]++; + return OK; } - return OK; } KeepReadValue = ReadValue; TranslatedReadValue = ReadValue - DancersCfg[DancerId].zeropoint; -- cgit v1.3.1 From 4f4bb676ec270a7a32dc91403c003669910ff591 Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Sun, 23 Feb 2020 17:20:28 +0200 Subject: add command 3EA to view CURREN or AVAREGE --- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c | 35 +++++++++++++++++----- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h | 13 ++++++-- .../Embedded/Modules/Stubs_Handler/Progress.c | 10 +++++++ .../StateMachines/Initialization/InitSequence.c | 1 + 4 files changed, 50 insertions(+), 9 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c index 539977138..20b2cc25e 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c @@ -20,10 +20,11 @@ #include -MAX11614 U20_MAX11614 ; - - +MAX11614 U20_MAX11614 ; +static WHS_Display_View display_view = AVARAGE; +//static uint16_t orf1V0Value = 0; +//static uint16_t orf3V0Value = 0; uint32_t WHS_MAX11614_Init () { @@ -267,6 +268,12 @@ bool get_orf_1(uint16_t *value) // U34 connected to AIN2 return status; } +bool SetDisplayView(WHS_Display_View view ) +{ + display_view = view; + return display_view; +} + uint16_t Orf_zero_value[HEAD_FLOW_METER+1] = {1112,0,1040}; @@ -279,15 +286,29 @@ double GetWHSAirFlow(uint8_t OR_Id) switch (OR_Id) { case DRIER_FLOW_METER: - //get_orf_3(&value); - Q_value = get_average_ORF3_Q(); + if (display_view == AVARAGE) + { + Q_value = get_average_ORF3_Q(); + } + else // CURRENT + { + get_orf_3(&value); + Q_value = get_Q(value-orf3V0Value); + } break; case NU_FLOW_METER: get_orf_2(&value); break; case HEAD_FLOW_METER: - //get_orf_1(&value); - Q_value = get_average_ORF1_Q(); + if (display_view == AVARAGE) + { + Q_value = get_average_ORF1_Q(); + } + else //CURRENT + { + get_orf_1(&value); + Q_value = get_Q(value-orf1V0Value); + } break; default: break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h index 8e3502f0a..ba12b0e6f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h @@ -31,8 +31,17 @@ typedef enum }WHS_Flow_Meter; +typedef enum +{ + CURRENT = 0, + AVARAGE +}WHS_Display_View; + double GetWHSAirFlow(uint8_t OR_Id); -uint16_t GetWHSGasSensor(); -uint16_t GetWHSWasteTankLevel(); +uint16_t GetWHSGasSensor(void); +uint16_t GetWHSWasteTankLevel(void); +bool SetDisplayView(WHS_Display_View view ); +//uint16_t Get_orf1_V0(void); +//uint16_t Get_orf3_V0(void); #endif /* WHS_MAX11614_H_ */ diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index e99bde2f9..c907f7cb8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -146,6 +146,16 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) double temp_double = 0.0; if (WHS_Type == WHS_TYPE_NEW) { + + if (request->delay & 0x8000) // bit15 select the chip address + { + SetDisplayView( CURRENT ); + } + else + { + SetDisplayView( AVARAGE ); + } + switch(request->delay )// get A2D { case 0: diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 20780b8c1..03f290e00 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -30,6 +30,7 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/adc_sampling/adc.h" #include "drivers/Valves/Valve.h" +#include #include "heaters/heaters_ex.h" -- cgit v1.3.1 From e4b6aae111fefea65835cf2a40089fb8528fe588 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 24 Feb 2020 10:02:36 +0200 Subject: EC PT100 upper limit lowered. fix short jog screw alarm, improve current measurement --- .../Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 2 +- .../Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 13 ++++++++++--- .../Embedded/StateMachines/Initialization/InitSequence.c | 6 +++++- 3 files changed, 16 insertions(+), 5 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 5434765e1..bc0d1002b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -320,7 +320,7 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu } readValue = MillisecGetTemperatures(InternalId2PT100Id[index]); - if((MINIMUM_HEATER_READ*100>=readValue)||(270.00*100 < readValue)) + if((MINIMUM_HEATER_READ*100>=readValue)||(200.00*100 < readValue)) { //ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0); return ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 78092ae2b..78150e9f9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -213,9 +213,16 @@ uint32_t Winder_PrepareStage2(uint32_t deviceID, uint32_t ReadValue) REPORT_MSG(millisecondCounter/*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].maxfrequency*/, "Winder_PrepareStage2"); if (ReadValue != LIMIT) { - LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!"); - //returned with a timeout - Winder_ScrewAtOffsetCallback(0,0); + if (JobIsActive()==true) + { + LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!"); + //returned with a timeout + Winder_ScrewAtOffsetCallback(0,0); + } + else //short jog, etc + { + AlarmHandlingSetAlarm (EVENT_TYPE__SCREW_MOTOR_LIMIT_TIMEOUT,OFF); //on a short jog, this callback will be called without need + } } else { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 20780b8c1..92f22b0ac 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -222,6 +222,7 @@ double MainCurrent,SecondaryCurrent,StableCurrent; double InitDrierAcVoltage = 0.0; int InitDrierAcVoltageCount = 0; double Zone2Resistance = 0.0; +int WaitForCurrentRaise = 0;//let the heater current raise void InitCurrentReadingStable(void) { memset(Heater_Current,0,sizeof(Heater_Current)); @@ -229,8 +230,9 @@ void InitCurrentReadingStable(void) count_Heater_Current = 0; Maxcount_Heater_Current = 0; StableCurrent = 0.0; + WaitForCurrentRaise = 0; } - +#define MaxStabilization 10 bool DetectIfCurrentReadingStable(double HeaterCurrent) { bool ret = false; @@ -268,6 +270,8 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag) { ReportWithPackageFilter(InitFilter,"PowerManagementCallBack", __FILE__,MainHeaterStable,(int)(SecondaryHeaterStable), RpMessage, Maxcount_Heater_Current, 0); ReportWithPackageFilter(InitFilter,"PowerManagementCallBack", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(GetHeaterState(HEATER_TYPE__DryerSecondaryHeater)), RpMessage, Maxcount_Heater_Current, 0); + if (WaitForCurrentRaise++ < MaxStabilization) + return OK; if ((MainHeaterStable == false)&&(Maxcount_Heater_Current Date: Mon, 24 Feb 2020 16:17:45 +0200 Subject: Version 1.4.6.13 fix current calculation --- Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/StateMachines/Initialization/InitSequence.c | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 201b896ff..3cf96dd03 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,6,12}; +TangoVersion_t _gTangoVersion = {1,4,6,13}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index f9bf853c8..af2178348 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -30,7 +30,6 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/adc_sampling/adc.h" #include "drivers/Valves/Valve.h" -#include #include "heaters/heaters_ex.h" @@ -214,7 +213,7 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) /////////////////////////////////////////////////////////////////////////////////////////////////////// #define MAX_CURRENT_READING 5 #define CURRENT_READING_ERROR_UNSTABLE 100 -int Heater_Current[MAX_CURRENT_READING] ; +double Heater_Current[MAX_CURRENT_READING] ; bool initial_wait = false; int count_Heater_Current = 0; int Maxcount_Heater_Current = 0; @@ -238,8 +237,8 @@ bool DetectIfCurrentReadingStable(double HeaterCurrent) { bool ret = false; int i=0; - int sum = 0; - int average = 0; + double sum = 0; + double average = 0; Maxcount_Heater_Current++; //ReportWithPackageFilter(InitFilter,"DetectIfCurrentReadingStable", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(HeaterCurrent*100), RpMessage, Maxcount_Heater_Current, 0); @@ -278,7 +277,7 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag) { InitDrierAcVoltage += ReadVAC(); InitDrierAcVoltageCount++; - ReportWithPackageFilter(InitFilter,"main heater current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); + ReportWithPackageFilter(InitFilter,"main heater current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(Get_Heaters_Current(HEATER_DRYER_CURRENT_1)*100), RpMessage, Maxcount_Heater_Current, 0); MainHeaterStable = DetectIfCurrentReadingStable(Get_Heaters_Current(HEATER_DRYER_CURRENT_1)); Read_Heaters_Current(HEATER_DRYER_CURRENT_1); if (MainHeaterStable == true) @@ -297,7 +296,7 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag) DeActivateHeater(HEATER_TYPE__DryerMainHeater); if (Maxcount_Heater_Current>=CURRENT_READING_ERROR_UNSTABLE) { - ReportWithPackageFilter(InitFilter,"drier heaters current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerSecondaryHeater),(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); + ReportWithPackageFilter(InitFilter,"drier heaters current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerSecondaryHeater),(int)(Get_Heaters_Current(HEATER_DRYER_CURRENT_2)*100), RpMessage, Maxcount_Heater_Current, 0); if (SafeRemoveControlCallback(HWControlId, PowerManagementCallBack )==OK) HWControlId = 0xFF; else @@ -315,7 +314,7 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag) Read_Heaters_Current(HEATER_DRYER_CURRENT_2); if (SecondaryHeaterStable == true) { - ReportWithPackageFilter(InitFilter,"main heater current stable", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); + ReportWithPackageFilter(InitFilter,"secondary heater current stable", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); SecondaryCurrent = StableCurrent; InitCurrentReadingStable(); DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater); -- cgit v1.3.1