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 --- Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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/Embedded/Modules') 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/Embedded/Modules') 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/Embedded/Modules') 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