diff --git a/.gitignore b/.gitignore index b6ba832..9e0a816 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,6 @@ /EnduranceTestBench/.settings/* /EnduranceTestBench/Drivers/STM32G4xx_HAL_Driver/LICENSE.txt /EnduranceTestBench/Drivers/CMSIS/LICENSE.txt -/EnduranceTestBench/EnduranceTestBench Debug.launch \ No newline at end of file +/EnduranceTestBench/EnduranceTestBench Debug.launch +EnduranceTestBench/EnduranceTestBench/Debug/* +EnduranceTestBench/EnduranceTestBench/.settings/language.settings.xml diff --git a/EnduranceTestBench/nehemis/grundfos.c b/EnduranceTestBench/nehemis/grundfos.c index f81c799..36a1a42 100644 --- a/EnduranceTestBench/nehemis/grundfos.c +++ b/EnduranceTestBench/nehemis/grundfos.c @@ -85,9 +85,9 @@ bool GrundfosPmpSetSpeed(float32 setSpeed_f32) data_au8[0] = (uint8)(dacVal_u16 >> 8); /* Upper 8 bits */ data_au8[1] = (uint8)(dacVal_u16 & 0xFF); /* Lower 8 bits */ -// return HalI2CMasterTransmit(MAP_HAL_GRUNDFOS_PMP_I2C_HANDLE, -// GRUNDFOS_PMP_INTERNAL_DAC_ADDR, -// data_au8, 2u) == NMS_ERR_NONE; + return HalI2CMasterTransmit(MAP_HAL_GRUNDFOS_PMP_I2C_HANDLE, + GRUNDFOS_PMP_INTERNAL_DAC_ADDR, + data_au8, 2u) == NMS_ERR_NONE; } diff --git a/EnduranceTestBench/nehemis/processBoard.c b/EnduranceTestBench/nehemis/processBoard.c index ea400e9..a5e0cfe 100644 --- a/EnduranceTestBench/nehemis/processBoard.c +++ b/EnduranceTestBench/nehemis/processBoard.c @@ -56,6 +56,7 @@ GrundfosMain_st grundfosPMP_gst; static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32); static void ProcessBoardPressureSensorDataOUT(float32 rawT_f32); static void ProcessBoardPumpSpeedDataOUT(uint32 pmpSpeed_u32); +static void ProcessBoardGrundfosPumpHandler(void); /****************************************************************************** * Extern Function Declarations ******************************************************************************/ @@ -105,9 +106,10 @@ void ProcessBoardRun(bool pumpTurnOn_b) FlowmeterGetFlow(&flowmeterFM4_gst); /* Pressure sensor data IN */ -// PressureSensorGetVal(&pressureSensorPS1_gst); -// PressureSensorGetVal(&pressureSensorPS2_gst); -// PressureSensorGetVal(&pressureSensorPS3_gst); + /* Removed to work with pressure controller */ + PressureSensorGetVal(&pressureSensorPS1_gst); + PressureSensorGetVal(&pressureSensorPS2_gst); + PressureSensorGetVal(&pressureSensorPS3_gst); /* Flowmeter data OUT */ ProcessBoardFlowmeterDataOUT(flowmeterFM1_gst.rawQ_f32); @@ -123,7 +125,7 @@ void ProcessBoardRun(bool pumpTurnOn_b) ProcessBoardPumpSpeedDataOUT(grundfosPMP_gst.rawQ_f32); - ProcessBoardGrundfosPumpHandler(pumpTurnOn_b); + ProcessBoardGrundfosPumpHandler(); } else { @@ -131,68 +133,9 @@ void ProcessBoardRun(bool pumpTurnOn_b) } } - -void ProcessBoardGrundfosPumpHandler(uint8 speed_u8) -{ - GrundfosPmpSetSpeed(speed_u8); - - /* Grundfos Pump feedback speed OUT */ - GrundfosPmpFeedback(&grundfosPMP_gst); - - if ((uint8)(grundfosPMP_gst.rawQ_f32) > PU_PMP_RATED_SPEED) - { - speed_u8 -= 2u; - } -} -/****************************************************************************** - * Private function definitions - ******************************************************************************/ -//static void ProcessBoardGrundfosPumpHandler(bool pumpTurnOn_b) +/* To be used with preesure controller */ +//void ProcessBoardGrundfosPumpHandler(uint8 speed_u8) //{ -// static uint8 speed_u8 = PU_PUMP_MIN_SPEED; -// static uint64 startTime_u64 = 0uLL; -// uint64 currentTimeMs_u64; -// -// HalSystemGetRunTimeMs(¤tTimeMs_u64); -// -// if (startTime_u64 == 0uLL) -// { -// HalSystemGetRunTimeMs(&startTime_u64); -// } -// -// if (pumpTurnOn_b == true) -// { -// GrundfosPmpEnable(PU_PMP_ENABLE); -// } -// else -// { -// GrundfosPmpEnable(PU_PMP_DISABLE); -// } -// -// -// if ((currentTimeMs_u64 - startTime_u64) >= PU_PUMP_SPEED_CHANGE_INTERVAL) -// { -// if (pressureSensorPS1_gst.rawT_f32 > PU_MAX_PRESSURE || pressureSensorPS2_gst.rawT_f32 > PU_MAX_PRESSURE || -// pressureSensorPS3_gst.rawT_f32 > PU_MAX_PRESSURE || pressureSensorPS4_gst.rawT_f32 > PU_MAX_PRESSURE) -// { -// /* Decrease speed if pressure is too high */ -// if (speed_u8 > PU_PUMP_MIN_SPEED) -// { -// speed_u8 -= 2u; -// } -// } -// else if (speed_u8 <= PU_PUMP_MAX_SPEED) -// { -// speed_u8 += 2u; -// } -// else -// { -// speed_u8 = PU_PUMP_MIN_SPEED; -// } -// -// startTime_u64 = currentTimeMs_u64; -// } -// // GrundfosPmpSetSpeed(speed_u8); // // /* Grundfos Pump feedback speed OUT */ @@ -203,6 +146,51 @@ void ProcessBoardGrundfosPumpHandler(uint8 speed_u8) // speed_u8 -= 2u; // } //} +/****************************************************************************** + * Private function definitions + ******************************************************************************/ +static void ProcessBoardGrundfosPumpHandler(void) +{ + static uint8 speed_u8 = PU_PUMP_MIN_SPEED; + static uint64 startTime_u64 = 0uLL; + uint64 currentTimeMs_u64; + + GrundfosPmpEnable(PU_PMP_ENABLE); + HalSystemGetRunTimeMs(¤tTimeMs_u64); + + if (startTime_u64 == 0uLL) + { + HalSystemGetRunTimeMs(&startTime_u64); + } + + if ((currentTimeMs_u64 - startTime_u64) >= PU_PUMP_SPEED_CHANGE_INTERVAL) + { + if (pressureSensorPS1_gst.rawT_f32 > PU_MAX_PRESSURE || pressureSensorPS2_gst.rawT_f32 > PU_MAX_PRESSURE || + pressureSensorPS3_gst.rawT_f32 > PU_MAX_PRESSURE || pressureSensorPS4_gst.rawT_f32 > PU_MAX_PRESSURE) + { + /* Decrease speed if pressure is too high */ + if (speed_u8 > PU_PUMP_MIN_SPEED) + { + speed_u8 -= 2u; + } + } + else if (speed_u8 <= PU_PUMP_MAX_SPEED) + { + speed_u8 += 2u; + } + else + { + speed_u8 = PU_PUMP_MIN_SPEED; + } + + startTime_u64 = currentTimeMs_u64; + } + + GrundfosPmpSetSpeed(speed_u8); + + /* Grundfos Pump feedback speed OUT */ + GrundfosPmpFeedback(&grundfosPMP_gst); +} static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32) { diff --git a/EnduranceTestBench/nehemis/processBoard.h b/EnduranceTestBench/nehemis/processBoard.h index e01bd93..1afba4c 100644 --- a/EnduranceTestBench/nehemis/processBoard.h +++ b/EnduranceTestBench/nehemis/processBoard.h @@ -49,6 +49,4 @@ void ProcessBoardInit(void); */ void ProcessBoardRun(bool pumpTurnOn_b); -void ProcessBoardGrundfosPumpHandler(uint8 speed_u8); - #endif /* PROCESSBOARD_H_ */ diff --git a/EnduranceTestBench/scheduler/sdl.c b/EnduranceTestBench/scheduler/sdl.c index 3a0e1ac..28b9995 100644 --- a/EnduranceTestBench/scheduler/sdl.c +++ b/EnduranceTestBench/scheduler/sdl.c @@ -42,8 +42,6 @@ /****************************************************************************** * Type Declarations ******************************************************************************/ -static void SdlFilterInterrupt(void); - static inline float32 RevModelConvertToPercent(float32 value_f32, float32 minVal_f32, float32 maxVal_f32) { float32 clamped = value_f32; @@ -63,71 +61,79 @@ static inline float32 RevModelConvertToPercent(float32 value_f32, float32 minVal * Global Declarations ******************************************************************************/ static bool testBenchStarted_b; -static PuControllersPidInput_st pmpRoPressurePidInput_st = {0}; -static PuFiltersSensorData_st receivedFilterData_st; /****************************************************************************** * Public Function Definitions ******************************************************************************/ void SdlInit(void) { testBenchStarted_b = false; - - HalTimerStart(MAP_HAL_TIMER_FILTER); NmsCanInit(); - PuFiltersInit(); ProcessBoardInit(); - HalTimerConfigureCallback(MAP_HAL_TIMER_FILTER, SdlFilterInterrupt); +#ifdef PREESURE_CONTROLLER + static PuControllersPidInput_st pmpRoPressurePidInput_st = {0}; + static PuFiltersSensorData_st receivedFilterData_st; + + HalTimerStart(MAP_HAL_TIMER_FILTER); + HalTimerConfigureCallback(MAP_HAL_TIMER_FILTER, SdlFilterInterrupt); + PuFiltersInit(); PuControllersInitInputs(&pmpRoPressurePidInput_st); +#endif } void SdlRun(void) { + NmsCanRun(); + +#ifdef PREESURE_CONTROLLER static uint64 lastPressureUpdateMs_u64 = 0uLL; uint64 currentTimeMs_u64; static uint8 pressureSetpoint_u8 = 0u; - uint8 turnOnTestbench = 0u; - NmsCanGetObj_u8(0x2007, 0x0, &turnOnTestbench); - NmsCanRun(); + if (NmsCanAreAllNodesOperational()) + { + EnduranceTestBenchRun(&testBenchStarted_b); -// if (turnOnTestbench == 1) -// { -// if (NmsCanAreAllNodesOperational()) -// { - EnduranceTestBenchRun(&testBenchStarted_b); + if (testBenchStarted_b) + { + ProcessBoardRun(true); + HalSystemGetRunTimeMs(¤tTimeMs_u64); - if (testBenchStarted_b) + if ((currentTimeMs_u64 - lastPressureUpdateMs_u64) >= 5000) { - ProcessBoardRun(true); - HalSystemGetRunTimeMs(¤tTimeMs_u64); - - if ((currentTimeMs_u64 - lastPressureUpdateMs_u64) >= 5000) + if (pressureSetpoint_u8 + 2 <= 15) { - if (pressureSetpoint_u8 + 2 <= 15) - { - pressureSetpoint_u8 += 2; - } - else - { - pressureSetpoint_u8 = 0; - } - lastPressureUpdateMs_u64 = currentTimeMs_u64; + pressureSetpoint_u8 += 2; } - - SdlEnablePressureControl(pressureSetpoint_u8); + else + { + pressureSetpoint_u8 = 0; + } + lastPressureUpdateMs_u64 = currentTimeMs_u64; } -// } -// } -// else -// { -// ProcessBoardRun(false); -// } + + SdlEnablePressureControl(pressureSetpoint_u8); + } + } +#else + if (NmsCanAreAllNodesOperational()) + { + EnduranceTestBenchRun(&testBenchStarted_b); + if (testBenchStarted_b) + { + ProcessBoardRun(true); + } + else + { + ProcessBoardRun(false); + } + } +#endif } - +#ifdef PREESURE_CONTROLLER void SdlEnablePressureControl(uint8 pressureSetpoint_u8) { static PuControllersPidOutput_st pmpRoPressurePidOutput_st = {0}; @@ -155,3 +161,4 @@ static void SdlFilterInterrupt(void) receivedFilterData_st = PuFiltersRun(); } +#endif