ifdef added to be able to switch between pressure controller and normal operation
This commit is contained in:
parent
eb917a1a30
commit
8817de2da0
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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(¤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);
|
// 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(¤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)
|
static void ProcessBoardFlowmeterDataOUT(float32 rawQ_f32)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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_ */
|
||||||
|
|
|
||||||
|
|
@ -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(¤tTimeMs_u64);
|
||||||
EnduranceTestBenchRun(&testBenchStarted_b);
|
|
||||||
|
|
||||||
if (testBenchStarted_b)
|
if ((currentTimeMs_u64 - lastPressureUpdateMs_u64) >= 5000)
|
||||||
{
|
{
|
||||||
ProcessBoardRun(true);
|
if (pressureSetpoint_u8 + 2 <= 15)
|
||||||
HalSystemGetRunTimeMs(¤tTimeMs_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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user