Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -ref6283257df7c1f993d58fb934da57ea3e0a7067 -rd8015ede9ee8620fa26318990ebfeed9c84a9344 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision ef6283257df7c1f993d58fb934da57ea3e0a7067) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision d8015ede9ee8620fa26318990ebfeed9c84a9344) @@ -79,8 +79,10 @@ #define INITIAL_EDGE_OFFSET_READ_COUNT 100U ///< Offset in counts from energized and de-energized edges -#define INITIAL_ENERGIZED_EDGE_UPPER_RANGE 13250U ///< Energized edge maximum count (originally 13000 count) +#define INITIAL_ENERGIZED_EDGE_UPPER_RANGE 13250U ///< Energized edge maximum count #define INITIAL_ENERGIZED_EDGE_LOWER_RANGE 10750U ///< Energized edge minimum count +#define INITIAL_V3_ENERGIZED_EDGE_UPPER_RANGE 14000U ///< Energized edge maximum count +#define INITIAL_V3_ENERGIZED_EDGE_LOWER_RANGE 10750U ///< Energized edge minimum count #define AIR_TRAP_VALVE_GPIO_PIN 0x12 ///< Air trap valve GPIO Pin 18 of HET Port 1 @@ -199,8 +201,8 @@ // ********** private data ********** -static VALVE_SELF_TEST_STATE_T valveSelfTestState = VALVE_SELF_TEST_ENABLE_VALVES; ///< Valves self test state -static SELF_TEST_STATUS_T valvesSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; ///< Valves self test result +static VALVE_SELF_TEST_STATE_T valveSelfTestState; ///< Valves self test state +static SELF_TEST_STATUS_T valvesSelfTestResult; ///< Valves self test result static VALVE_STATUS_T valvesStatus[ NUM_OF_VALVES ]; ///< Array of type VALVE_STATUS_T structure that holds the status of each valve static OVERRIDE_U32_T valvesDataPublishInterval = { VALVES_DATA_PUB_INTERVAL, VALVES_DATA_PUB_INTERVAL, 0, 0 }; ///< Valves data publish interval @@ -702,11 +704,20 @@ *************************************************************************/ static VALVE_STATE_T handleValveStateHomingFindDeenergizedEdge( VALVE_T valve ) { - VALVE_STATE_T state = VALVE_STATE_HOMING_FIND_DEENERGIZED_EDGE; + VALVE_STATE_T state = VALVE_STATE_HOMING_FIND_DEENERGIZED_EDGE; + S16 currentPosition = getValvePositionCounts( valve ); + S16 targetPosition = valvesStatus[ valve ].targetPositionInCounts; + S16 deltaPosition = currentPosition - targetPosition; + U32 energizedUpperEdge = INITIAL_ENERGIZED_EDGE_UPPER_RANGE; + U32 deenergizedLowerEdge = INITIAL_ENERGIZED_EDGE_LOWER_RANGE; - S16 currentPosition = getValvePositionCounts( valve ); - S16 targetPosition = valvesStatus[ valve ].targetPositionInCounts; - S16 deltaPosition = currentPosition - targetPosition; +#ifndef _RELEASE_ + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_ENABLE_V3_SYSTEM ) ) + { + energizedUpperEdge = INITIAL_V3_ENERGIZED_EDGE_UPPER_RANGE; + deenergizedLowerEdge = INITIAL_V3_ENERGIZED_EDGE_LOWER_RANGE; + } +#endif // Still too far from intermediate target position? Either still more travel to go or stuck at end of travel if ( deltaPosition > MAX_DEVIATION_FROM_TGT_IN_TRAVEL_CNTS ) @@ -717,8 +728,8 @@ S16 energizedEdge = valvesStatus[ valve ].positions[ VALVE_POSITION_B_OPEN ]; S16 deltaEdges = energizedEdge - currentPosition; - // The range from energized to de-energized should be in between 10750 to 13250 steps - if ( ( deltaEdges <= INITIAL_ENERGIZED_EDGE_UPPER_RANGE ) && ( deltaEdges >= INITIAL_ENERGIZED_EDGE_LOWER_RANGE ) ) + // The range from energized to de-energized should be in the specified range + if ( ( deltaEdges <= energizedUpperEdge ) && ( deltaEdges >= deenergizedLowerEdge ) ) { S16 positionC = currentPosition + INITIAL_EDGE_OFFSET_READ_COUNT; S16 positionB = valvesStatus[ valve ].positions[ VALVE_POSITION_B_OPEN ];