ifdef added to be able to switch between pressure controller and normal operation

This commit is contained in:
VineetaGupta 2025-11-10 11:35:25 +01:00
parent eb917a1a30
commit 8817de2da0
5 changed files with 105 additions and 110 deletions

2
.gitignore vendored
View File

@ -17,3 +17,5 @@
/EnduranceTestBench/Drivers/STM32G4xx_HAL_Driver/LICENSE.txt /EnduranceTestBench/Drivers/STM32G4xx_HAL_Driver/LICENSE.txt
/EnduranceTestBench/Drivers/CMSIS/LICENSE.txt /EnduranceTestBench/Drivers/CMSIS/LICENSE.txt
/EnduranceTestBench/EnduranceTestBench Debug.launch /EnduranceTestBench/EnduranceTestBench Debug.launch
EnduranceTestBench/EnduranceTestBench/Debug/*
EnduranceTestBench/EnduranceTestBench/.settings/language.settings.xml

View File

@ -85,9 +85,9 @@ bool GrundfosPmpSetSpeed(float32 setSpeed_f32)
data_au8[0] = (uint8)(dacVal_u16 >> 8); /* Upper 8 bits */ data_au8[0] = (uint8)(dacVal_u16 >> 8); /* Upper 8 bits */
data_au8[1] = (uint8)(dacVal_u16 & 0xFF); /* Lower 8 bits */ data_au8[1] = (uint8)(dacVal_u16 & 0xFF); /* Lower 8 bits */
// return HalI2CMasterTransmit(MAP_HAL_GRUNDFOS_PMP_I2C_HANDLE, return HalI2CMasterTransmit(MAP_HAL_GRUNDFOS_PMP_I2C_HANDLE,
// GRUNDFOS_PMP_INTERNAL_DAC_ADDR, GRUNDFOS_PMP_INTERNAL_DAC_ADDR,
// data_au8, 2u) == NMS_ERR_NONE; data_au8, 2u) == NMS_ERR_NONE;
} }

View File

@ -56,6 +56,7 @@ GrundfosMain_st grundfosPMP_gst;
static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32); static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32);
static void ProcessBoardPressureSensorDataOUT(float32 rawT_f32); static void ProcessBoardPressureSensorDataOUT(float32 rawT_f32);
static void ProcessBoardPumpSpeedDataOUT(uint32 pmpSpeed_u32); static void ProcessBoardPumpSpeedDataOUT(uint32 pmpSpeed_u32);
static void ProcessBoardGrundfosPumpHandler(void);
/****************************************************************************** /******************************************************************************
* Extern Function Declarations * Extern Function Declarations
******************************************************************************/ ******************************************************************************/
@ -105,9 +106,10 @@ void ProcessBoardRun(bool pumpTurnOn_b)
FlowmeterGetFlow(&flowmeterFM4_gst); FlowmeterGetFlow(&flowmeterFM4_gst);
/* Pressure sensor data IN */ /* Pressure sensor data IN */
// PressureSensorGetVal(&pressureSensorPS1_gst); /* Removed to work with pressure controller */
// PressureSensorGetVal(&pressureSensorPS2_gst); PressureSensorGetVal(&pressureSensorPS1_gst);
// PressureSensorGetVal(&pressureSensorPS3_gst); PressureSensorGetVal(&pressureSensorPS2_gst);
PressureSensorGetVal(&pressureSensorPS3_gst);
/* Flowmeter data OUT */ /* Flowmeter data OUT */
ProcessBoardFlowmeterDataOUT(flowmeterFM1_gst.rawQ_f32); ProcessBoardFlowmeterDataOUT(flowmeterFM1_gst.rawQ_f32);
@ -123,7 +125,7 @@ void ProcessBoardRun(bool pumpTurnOn_b)
ProcessBoardPumpSpeedDataOUT(grundfosPMP_gst.rawQ_f32); ProcessBoardPumpSpeedDataOUT(grundfosPMP_gst.rawQ_f32);
ProcessBoardGrundfosPumpHandler(pumpTurnOn_b); ProcessBoardGrundfosPumpHandler();
} }
else else
{ {
@ -131,68 +133,9 @@ void ProcessBoardRun(bool pumpTurnOn_b)
} }
} }
/* To be used with preesure controller */
void ProcessBoardGrundfosPumpHandler(uint8 speed_u8) //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)
//{ //{
// static uint8 speed_u8 = PU_PUMP_MIN_SPEED;
// static uint64 startTime_u64 = 0uLL;
// uint64 currentTimeMs_u64;
//
// HalSystemGetRunTimeMs(&currentTimeMs_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); // GrundfosPmpSetSpeed(speed_u8);
// //
// /* Grundfos Pump feedback speed OUT */ // /* Grundfos Pump feedback speed OUT */
@ -203,6 +146,51 @@ void ProcessBoardGrundfosPumpHandler(uint8 speed_u8)
// speed_u8 -= 2u; // 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(&currentTimeMs_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) static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32)
{ {

View File

@ -49,6 +49,4 @@ void ProcessBoardInit(void);
*/ */
void ProcessBoardRun(bool pumpTurnOn_b); void ProcessBoardRun(bool pumpTurnOn_b);
void ProcessBoardGrundfosPumpHandler(uint8 speed_u8);
#endif /* PROCESSBOARD_H_ */ #endif /* PROCESSBOARD_H_ */

View File

@ -42,8 +42,6 @@
/****************************************************************************** /******************************************************************************
* Type Declarations * Type Declarations
******************************************************************************/ ******************************************************************************/
static void SdlFilterInterrupt(void);
static inline float32 RevModelConvertToPercent(float32 value_f32, float32 minVal_f32, float32 maxVal_f32) static inline float32 RevModelConvertToPercent(float32 value_f32, float32 minVal_f32, float32 maxVal_f32)
{ {
float32 clamped = value_f32; float32 clamped = value_f32;
@ -63,71 +61,79 @@ static inline float32 RevModelConvertToPercent(float32 value_f32, float32 minVal
* Global Declarations * Global Declarations
******************************************************************************/ ******************************************************************************/
static bool testBenchStarted_b; static bool testBenchStarted_b;
static PuControllersPidInput_st pmpRoPressurePidInput_st = {0};
static PuFiltersSensorData_st receivedFilterData_st;
/****************************************************************************** /******************************************************************************
* Public Function Definitions * Public Function Definitions
******************************************************************************/ ******************************************************************************/
void SdlInit(void) void SdlInit(void)
{ {
testBenchStarted_b = false; testBenchStarted_b = false;
HalTimerStart(MAP_HAL_TIMER_FILTER);
NmsCanInit(); NmsCanInit();
PuFiltersInit();
ProcessBoardInit(); 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); PuControllersInitInputs(&pmpRoPressurePidInput_st);
#endif
} }
void SdlRun(void) void SdlRun(void)
{ {
NmsCanRun();
#ifdef PREESURE_CONTROLLER
static uint64 lastPressureUpdateMs_u64 = 0uLL; static uint64 lastPressureUpdateMs_u64 = 0uLL;
uint64 currentTimeMs_u64; uint64 currentTimeMs_u64;
static uint8 pressureSetpoint_u8 = 0u; static uint8 pressureSetpoint_u8 = 0u;
uint8 turnOnTestbench = 0u;
NmsCanGetObj_u8(0x2007, 0x0, &turnOnTestbench); if (NmsCanAreAllNodesOperational())
NmsCanRun(); {
EnduranceTestBenchRun(&testBenchStarted_b);
// if (turnOnTestbench == 1) if (testBenchStarted_b)
// { {
// if (NmsCanAreAllNodesOperational()) ProcessBoardRun(true);
// { HalSystemGetRunTimeMs(&currentTimeMs_u64);
EnduranceTestBenchRun(&testBenchStarted_b);
if (testBenchStarted_b) if ((currentTimeMs_u64 - lastPressureUpdateMs_u64) >= 5000)
{ {
ProcessBoardRun(true); if (pressureSetpoint_u8 + 2 <= 15)
HalSystemGetRunTimeMs(&currentTimeMs_u64);
if ((currentTimeMs_u64 - lastPressureUpdateMs_u64) >= 5000)
{ {
if (pressureSetpoint_u8 + 2 <= 15) pressureSetpoint_u8 += 2;
{
pressureSetpoint_u8 += 2;
}
else
{
pressureSetpoint_u8 = 0;
}
lastPressureUpdateMs_u64 = currentTimeMs_u64;
} }
else
SdlEnablePressureControl(pressureSetpoint_u8); {
pressureSetpoint_u8 = 0;
}
lastPressureUpdateMs_u64 = currentTimeMs_u64;
} }
// }
// } SdlEnablePressureControl(pressureSetpoint_u8);
// else }
// { }
// ProcessBoardRun(false); #else
// } if (NmsCanAreAllNodesOperational())
{
EnduranceTestBenchRun(&testBenchStarted_b);
if (testBenchStarted_b)
{
ProcessBoardRun(true);
}
else
{
ProcessBoardRun(false);
}
}
#endif
} }
#ifdef PREESURE_CONTROLLER
void SdlEnablePressureControl(uint8 pressureSetpoint_u8) void SdlEnablePressureControl(uint8 pressureSetpoint_u8)
{ {
static PuControllersPidOutput_st pmpRoPressurePidOutput_st = {0}; static PuControllersPidOutput_st pmpRoPressurePidOutput_st = {0};
@ -155,3 +161,4 @@ static void SdlFilterInterrupt(void)
receivedFilterData_st = PuFiltersRun(); receivedFilterData_st = PuFiltersRun();
} }
#endif