ifdef added to be able to switch between pressure controller and normal operation
This commit is contained in:
parent
eb917a1a30
commit
8817de2da0
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -16,4 +16,6 @@
|
|||
/EnduranceTestBench/.settings/*
|
||||
/EnduranceTestBench/Drivers/STM32G4xx_HAL_Driver/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[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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -49,6 +49,4 @@ void ProcessBoardInit(void);
|
|||
*/
|
||||
void ProcessBoardRun(bool pumpTurnOn_b);
|
||||
|
||||
void ProcessBoardGrundfosPumpHandler(uint8 speed_u8);
|
||||
|
||||
#endif /* PROCESSBOARD_H_ */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user