Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -ra9f55b2dd2aad22db9676faf661b81866b47affa -rc4a199308f24cb8f6c805928b433903d95b59c6d --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision a9f55b2dd2aad22db9676faf661b81866b47affa) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision c4a199308f24cb8f6c805928b433903d95b59c6d) @@ -107,18 +107,11 @@ U32 controlTimerCounter; ///< Timer counter to perform control on concentrate pump. CONCENTRATE_PUMP_STATE_T execState; ///< Concentrate pump execute current state. BOOL hasTurnOnPumpsBeenRequested; ///< Flag indicates a request to turn concentrate pumps on. - OVERRIDE_U32_T hasParkBeenRequested; ///< Flag indicates a request to park the pump. - OVERRIDE_F32_T pumpTargetSpeed; ///< Target concentrate pumps' speed (mL/min). - OVERRIDE_U32_T pumpTargetRevCnt; ///< Target concentrate pump revolution count - OVERRIDE_U32_T pumpMesauredRevCnt; ///< Current measured concentrate pump revolution count F32 currentPumpSpeed; ///< Current controlled concentrate pumps' speed (mL/min). - OVERRIDE_F32_T measuredPumpSpeed; ///< Measured concentrate pump speed (mL/min). U16 togglePeriodCount; ///< Converted pump speed (mL/min) to toggle period counts (0.5 uS increment counts per step). U08 direction; ///< Concentrate pump motor direction. U08 controlSet; ///< Concentrate pump control set. (Used in DVT) F32 pulseWidthUS; ///< Concentrate pump pulse width in microseconds. - OVERRIDE_U32_T parked; ///< Concentrate pump is currently parked (T/F). - OVERRIDE_U32_T parkFaulted; ///< Concentrate pump park command has faulted (T/F). BOOL isConcPumpParkInProgress; ///< Concentrate pump park progress boolean flag (T/F). } CONCENTRATE_PUMP_T; @@ -141,6 +134,14 @@ static OVERRIDE_U32_T concentratePumpDataPublishInterval = { CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL, CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL, 0, 0 }; static CONCENTRATE_PUMP_T concentratePumps[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Array of concentrate pumps' data structure. +static OVERRIDE_U32_T hasParkBeenRequested[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Flag indicates a request to park the pump. +static OVERRIDE_F32_T pumpTargetSpeed[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Target concentrate pumps' speed (mL/min). +static OVERRIDE_U32_T pumpTargetRevCnt[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Target concentrate pump revolution count +static OVERRIDE_U32_T pumpMesauredRevCnt[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Current measured concentrate pump revolution count +static OVERRIDE_F32_T measuredPumpSpeed[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Measured concentrate pump speed (mL/min). +static OVERRIDE_U32_T parked[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Concentrate pump is currently parked (T/F). +static OVERRIDE_U32_T parkFaulted[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Concentrate pump park command has faulted (T/F). + //static DD_ACID_CONCENTRATES_RECORD_T acidConcentrateCalRecord; ///< Acid concentrate calibration record. //static DD_BICARB_CONCENTRATES_RECORD_T bicarbConcentrateCalRecord; ///< Bicarb concentrate calibration record. //static DD_CONC_PUMPS_CAL_RECORD_T concentratePumpsCalRecord; ///< Concentrate pumps calibration record. @@ -176,35 +177,35 @@ { concentratePumps[ pumpId ].controlTimerCounter = 0; concentratePumps[ pumpId ].execState = CONCENTRATE_PUMP_OFF_STATE; - concentratePumps[ pumpId ].measuredPumpSpeed.data = 0.0F; - concentratePumps[ pumpId ].measuredPumpSpeed.ovInitData = 0.0F; - concentratePumps[ pumpId ].measuredPumpSpeed.ovData = 0.0F; - concentratePumps[ pumpId ].measuredPumpSpeed.override = OVERRIDE_RESET; + measuredPumpSpeed[ pumpId ].data = 0.0F; + measuredPumpSpeed[ pumpId ].ovInitData = 0.0F; + measuredPumpSpeed[ pumpId ].ovData = 0.0F; + measuredPumpSpeed[ pumpId ].override = OVERRIDE_RESET; concentratePumps[ pumpId ].hasTurnOnPumpsBeenRequested = FALSE; - concentratePumps[ pumpId ].hasParkBeenRequested.data = FALSE; - concentratePumps[ pumpId ].hasParkBeenRequested.ovInitData = FALSE; - concentratePumps[ pumpId ].hasParkBeenRequested.ovData = FALSE; - concentratePumps[ pumpId ].hasParkBeenRequested.override = OVERRIDE_RESET; - concentratePumps[ pumpId ].parked.data = FALSE; - concentratePumps[ pumpId ].parked.ovInitData = FALSE; - concentratePumps[ pumpId ].parked.ovData = FALSE; - concentratePumps[ pumpId ].parked.override = OVERRIDE_RESET; - concentratePumps[ pumpId ].parkFaulted.data = FALSE; - concentratePumps[ pumpId ].parkFaulted.ovInitData = FALSE; - concentratePumps[ pumpId ].parkFaulted.ovData = FALSE; - concentratePumps[ pumpId ].parkFaulted.override = OVERRIDE_RESET; - concentratePumps[ pumpId ].pumpTargetSpeed.data = 0.0F; - concentratePumps[ pumpId ].pumpTargetSpeed.ovInitData = 0.0F; - concentratePumps[ pumpId ].pumpTargetSpeed.ovData = 0.0F; - concentratePumps[ pumpId ].pumpTargetSpeed.override = OVERRIDE_RESET; - concentratePumps[ pumpId ].pumpTargetRevCnt.data = 0; - concentratePumps[ pumpId ].pumpTargetRevCnt.ovInitData = 0; - concentratePumps[ pumpId ].pumpTargetRevCnt.ovData = 0; - concentratePumps[ pumpId ].pumpTargetRevCnt.override = OVERRIDE_RESET; - concentratePumps[ pumpId ].pumpMesauredRevCnt.data = 0; - concentratePumps[ pumpId ].pumpMesauredRevCnt.ovInitData = 0; - concentratePumps[ pumpId ].pumpMesauredRevCnt.ovData = 0; - concentratePumps[ pumpId ].pumpMesauredRevCnt.override = OVERRIDE_RESET; + hasParkBeenRequested[ pumpId ].data = FALSE; + hasParkBeenRequested[ pumpId ].ovInitData = FALSE; + hasParkBeenRequested[ pumpId ].ovData = FALSE; + hasParkBeenRequested[ pumpId ].override = OVERRIDE_RESET; + parked[ pumpId ].data = FALSE; + parked[ pumpId ].ovInitData = FALSE; + parked[ pumpId ].ovData = FALSE; + parked[ pumpId ].override = OVERRIDE_RESET; + parkFaulted[ pumpId ].data = FALSE; + parkFaulted[ pumpId ].ovInitData = FALSE; + parkFaulted[ pumpId ].ovData = FALSE; + parkFaulted[ pumpId ].override = OVERRIDE_RESET; + pumpTargetSpeed[ pumpId ].data = 0.0F; + pumpTargetSpeed[ pumpId ].ovInitData = 0.0F; + pumpTargetSpeed[ pumpId ].ovData = 0.0F; + pumpTargetSpeed[ pumpId ].override = OVERRIDE_RESET; + pumpTargetRevCnt[ pumpId ].data = 0; + pumpTargetRevCnt[ pumpId ].ovInitData = 0; + pumpTargetRevCnt[ pumpId ].ovData = 0; + pumpTargetRevCnt[ pumpId ].override = OVERRIDE_RESET; + pumpMesauredRevCnt[ pumpId ].data = 0; + pumpMesauredRevCnt[ pumpId ].ovInitData = 0; + pumpMesauredRevCnt[ pumpId ].ovData = 0; + pumpMesauredRevCnt[ pumpId ].override = OVERRIDE_RESET; concentratePumps[ pumpId ].direction = CONCENTRATE_PUMP_FORWARD_DIR; concentratePumps[ pumpId ].controlSet = CONCENTRATE_PUMP_CONTROL_FORWARD; concentratePumps[ pumpId ].isConcPumpParkInProgress = FALSE; @@ -244,13 +245,13 @@ // Calculate pump speed for each defined pump calcMeasuredPumpsSpeed(); - concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].parked.data = (U32)getFPGAAcidPumpIsParked(); - concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].parked.data = (U32)getFPGABicarbPumpIsParked(); - concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].parkFaulted.data = (U32)getFPGAAcidPumpParkFault(); - concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].parkFaulted.data = (U32)getFPGABicarbPumpParkFault(); + parked[ CONCENTRATEPUMPS_CP1_ACID ].data = (U32)getFPGAAcidPumpIsParked(); + parked[ CONCENTRATEPUMPS_CP2_BICARB ].data = (U32)getFPGABicarbPumpIsParked(); + parkFaulted[ CONCENTRATEPUMPS_CP1_ACID ].data = (U32)getFPGAAcidPumpParkFault(); + parkFaulted[ CONCENTRATEPUMPS_CP2_BICARB ].data = (U32)getFPGABicarbPumpParkFault(); - concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].pumpMesauredRevCnt.data = (U32)getFPGACPARevolutionCountStatus(); - concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].pumpMesauredRevCnt.data = (U32)getFPGACPBRevolutionCountStatus(); + pumpMesauredRevCnt[ CONCENTRATEPUMPS_CP1_ACID ].data = (U32)getFPGACPARevolutionCountStatus(); + pumpMesauredRevCnt[ CONCENTRATEPUMPS_CP2_BICARB ].data = (U32)getFPGACPBRevolutionCountStatus(); if ( ( TRUE == getConcPumpIsParked( CONCENTRATEPUMPS_CP1_ACID ) ) || ( TRUE == getConcPumpParkIsFaulted( CONCENTRATEPUMPS_CP1_ACID ) ) ) { @@ -459,7 +460,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { concentratePumps[ pumpId ].hasTurnOnPumpsBeenRequested = FALSE; - concentratePumps[ pumpId ].hasParkBeenRequested.data = park; + hasParkBeenRequested[ pumpId ].data = park; } else { @@ -497,7 +498,7 @@ //Update target revolution count if ( targetVolume_ml > 0.0 ) { - concentratePumps[ pumpId ].pumpTargetRevCnt.data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ); + pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ); if ( CONCENTRATEPUMPS_CP1_ACID == pumpId ) { setFPGACPARevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); @@ -515,15 +516,15 @@ */ if ( ( CONCENTRATE_PUMP_MIN_SPEED <= targetSpeed_ml_min ) && ( targetSpeed_ml_min <= CONCENTRATE_PUMP_MAX_SPEED ) ) { - concentratePumps[ pumpId ].pumpTargetSpeed.data = targetSpeed_ml_min; + pumpTargetSpeed[ pumpId ].data = targetSpeed_ml_min; } else if ( targetSpeed_ml_min < CONCENTRATE_PUMP_MIN_SPEED ) { - concentratePumps[ pumpId ].pumpTargetSpeed.data = 0.0; + pumpTargetSpeed[ pumpId ].data = 0.0; } else { - concentratePumps[ pumpId ].pumpTargetSpeed.data = CONCENTRATE_PUMP_MAX_SPEED; + pumpTargetSpeed[ pumpId ].data = CONCENTRATE_PUMP_MAX_SPEED; } } else @@ -574,7 +575,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - speed = getF32OverrideValue( &concentratePumps[ pumpId ].pumpTargetSpeed ); + speed = getF32OverrideValue( &pumpTargetSpeed[ pumpId ] ); } else { @@ -603,7 +604,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - speed = getF32OverrideValue( &concentratePumps[ pumpId ].measuredPumpSpeed ); + speed = getF32OverrideValue( &measuredPumpSpeed[ pumpId ] ); speed = ( CONCENTRATE_PUMP_REVERSE_DIR == concentratePumps[ pumpId ].direction ? speed * -1.0F : speed ); } else @@ -631,7 +632,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - result = (BOOL)getU32OverrideValue( &concentratePumps[ pumpId ].hasParkBeenRequested ); + result = (BOOL)getU32OverrideValue( &hasParkBeenRequested[ pumpId ] ); } else { @@ -657,7 +658,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - result = (U16)getU32OverrideValue( &concentratePumps[ pumpId ].pumpTargetRevCnt ); + result = (U16)getU32OverrideValue( &pumpTargetRevCnt[ pumpId ] ); } else { @@ -683,7 +684,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - result = (U16)getU32OverrideValue( &concentratePumps[ pumpId ].pumpMesauredRevCnt ); + result = (U16)getU32OverrideValue( &pumpMesauredRevCnt[ pumpId ] ); } else { @@ -709,7 +710,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - result = (BOOL)getU32OverrideValue( &concentratePumps[ pumpId ].parked ); + result = (BOOL)getU32OverrideValue( &parked[ pumpId ] ); } else { @@ -735,7 +736,7 @@ if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - result = (BOOL)getU32OverrideValue( &concentratePumps[ pumpId ].parkFaulted ); + result = (BOOL)getU32OverrideValue( &parkFaulted[ pumpId ] ); } else { @@ -758,11 +759,11 @@ { BOOL parkPump = getConcPumpParkRequest( pumpId ); - concentratePumps[ pumpId ].hasParkBeenRequested.data = FALSE; // reset park request for next time + hasParkBeenRequested[ pumpId ].data = FALSE; // reset park request for next time concentratePumps[ pumpId ].hasTurnOnPumpsBeenRequested = FALSE; // Just to make sure pump is in Off state. concentratePumps[ pumpId ].currentPumpSpeed = 0.0F; // set target rate to zero - concentratePumps[ pumpId ].pumpTargetSpeed.data = 0.0F; - concentratePumps[ pumpId ].pumpTargetRevCnt.data = 0; + pumpTargetSpeed[ pumpId ].data = 0.0F; + pumpTargetRevCnt[ pumpId ].data = 0; // Disable the motor when stopping, to take next revolution count // Send zero rate command to stop the pump @@ -1022,11 +1023,11 @@ // Determine measured speed for the pump if ( CONCENTRATE_PUMP_ZERO_FLOW_RATE == pulseWidthCount ) { - concentratePumps[ pumpId ].measuredPumpSpeed.data = 0.0F; + measuredPumpSpeed[ pumpId ].data = 0.0F; } else if ( FALSE == isPumpPulseWidthOut ) { - concentratePumps[ pumpId ].measuredPumpSpeed.data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE * SEC_PER_MIN; + measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE * SEC_PER_MIN; } // If pulse width is out of range capture pump out of range, pumpId and pulse width @@ -1200,7 +1201,7 @@ *************************************************************************/ BOOL testConcentratePumpTargetSpeedOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, &concentratePumps[0].pumpTargetSpeed, NUM_OF_CONCENTRATE_PUMPS - 1 ); + BOOL result = f32ArrayOverride( message, &pumpTargetSpeed[ 0 ], NUM_OF_CONCENTRATE_PUMPS - 1 ); return result; } @@ -1217,7 +1218,7 @@ *************************************************************************/ BOOL testConcentratePumpMeasuredSpeedOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, &concentratePumps[0].measuredPumpSpeed, NUM_OF_CONCENTRATE_PUMPS - 1 ); + BOOL result = f32ArrayOverride( message, &measuredPumpSpeed[ 0 ], NUM_OF_CONCENTRATE_PUMPS - 1 ); return result; } @@ -1234,7 +1235,7 @@ *************************************************************************/ BOOL testConcentratePumpParkedOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &concentratePumps[0].parked, NUM_OF_CONCENTRATE_PUMPS - 1, FALSE, TRUE ); + BOOL result = u32ArrayOverride( message, &parked[ 0 ], NUM_OF_CONCENTRATE_PUMPS - 1, FALSE, TRUE ); return result; } @@ -1251,7 +1252,7 @@ *************************************************************************/ BOOL testConcentratePumpTargetRevCountOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &concentratePumps[0].pumpTargetRevCnt, NUM_OF_CONCENTRATE_PUMPS - 1, 0, 65535 ); + BOOL result = u32ArrayOverride( message, &pumpTargetRevCnt[ 0 ], NUM_OF_CONCENTRATE_PUMPS - 1, 0, 65535 ); return result; } @@ -1268,7 +1269,7 @@ *************************************************************************/ BOOL testConcentratePumpParkCmdFaultedOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &concentratePumps[0].parkFaulted, NUM_OF_CONCENTRATE_PUMPS - 1, FALSE, TRUE ); + BOOL result = u32ArrayOverride( message, &parkFaulted[ 0 ], NUM_OF_CONCENTRATE_PUMPS - 1, FALSE, TRUE ); return result; } @@ -1350,10 +1351,10 @@ { U32 value = override.state.u32; - concentratePumps[ pumpId ].hasParkBeenRequested.ovData = value; - concentratePumps[ pumpId ].hasParkBeenRequested.override = OVERRIDE_KEY; + hasParkBeenRequested[ pumpId ].ovData = value; + hasParkBeenRequested[ pumpId ].override = OVERRIDE_KEY; - if ( TRUE == concentratePumps[ pumpId ].hasParkBeenRequested.ovData ) + if ( TRUE == hasParkBeenRequested[ pumpId ].ovData ) { // If pump is running, stop it w/ park option if ( TRUE == concentratePumps[ pumpId ].hasTurnOnPumpsBeenRequested ) @@ -1369,8 +1370,8 @@ } else { - concentratePumps[ pumpId ].hasParkBeenRequested.override = OVERRIDE_RESET; - concentratePumps[ pumpId ].hasParkBeenRequested.ovData = concentratePumps[ pumpId ].hasParkBeenRequested.ovInitData; + hasParkBeenRequested[ pumpId ].override = OVERRIDE_RESET; + hasParkBeenRequested[ pumpId ].ovData = hasParkBeenRequested[ pumpId ].ovInitData; } result = TRUE;