Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r927c47388ab6bd716b857f76e2026c116dd52e69 -ra074eec2ed7d04a1ea90072d7c9c013bf27a6e90 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 927c47388ab6bd716b857f76e2026c116dd52e69) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision a074eec2ed7d04a1ea90072d7c9c013bf27a6e90) @@ -148,6 +148,16 @@ valvesDataPublishInterval.ovData = VALVES_DATA_PUB_INTERVAL; valvesDataPublishInterval.ovInitData = 0; valvesDataPublishInterval.override = OVERRIDE_RESET; + +#ifdef ASN_DEMO + currentValveStates[ H1_VALV ].positionsABC[ VALVE_POSITION_C_CLOSE ] = ROTARY_VALVE_MICROSTEP_FRACTION; + currentValveStates[ H1_VALV ].positionsABC[ VALVE_POSITION_B_OPEN ] = 1728; + currentValveStates[ H1_VALV ].positionsABC[ VALVE_POSITION_A_INSERT_EJECT ] = 880; + + currentValveStates[ H19_VALV ].positionsABC[ VALVE_POSITION_C_CLOSE ] = ROTARY_VALVE_MICROSTEP_FRACTION; + currentValveStates[ H19_VALV ].positionsABC[ VALVE_POSITION_B_OPEN ] = 1728; + currentValveStates[ H19_VALV ].positionsABC[ VALVE_POSITION_A_INSERT_EJECT ] = 880; +#endif } /*********************************************************************//** @@ -165,7 +175,6 @@ { BOOL result = FALSE; -#ifndef TEST_NO_PINCH_VALVES if ( valve < NUM_OF_VALVES ) { VALVE_STATE_T currState = currentValveStates[ valve ].controlState; @@ -189,7 +198,6 @@ { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_TD_VALVES_INVALID_VALVE8, (U32)valve ) } -#endif return result; } @@ -208,7 +216,6 @@ { BOOL result = FALSE; -#ifndef TEST_NO_PINCH_VALVES if ( ( valve < NUM_OF_VALVES ) && ( position < NUM_OF_VALVE_POSITIONS ) ) { currentValveStates[ valve ].pendingCommandedPosition = position; @@ -220,7 +227,6 @@ SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_TD_VALVES_INVALID_PARAM, ( (U32)valve << SHIFT_16_BITS_FOR_WORD_SHIFT ) | (U32)position ) } -#endif return result; } @@ -478,6 +484,10 @@ currentValveStates[ valve ].positionsABC[ VALVE_POSITION_C_CLOSE ] = ROTARY_VALVE_MICROSTEP_FRACTION; currentValveStates[ valve ].positionsABC[ VALVE_POSITION_D_VENOUS ] = POS_D_VENOUS_OFFSET_FROM_ZERO_CNT; nextState = VALVE_STATE_HOMING_NOT_STARTED; + +#ifdef ASN_DEMO + nextState = VALVE_STATE_IDLE; +#endif } return nextState; @@ -501,7 +511,7 @@ switch ( currentValveStates[ valve ].valveHomingStatus ) { case VALVE_HOMING_INIT: - currentValveStates[ valve ].proposedEnergizedPos = ROTARY_VALVE_FULL_SWING_TRAVEL_COUNTS; + currentValveStates[ valve ].proposedEnergizedPos = ROTARY_VALVE_INIT_FULL_SWING_COUNTS; break; case VALVE_HOMING_FORWARD: @@ -517,13 +527,22 @@ break; } - // Command valve to move to energized edge (end of travel) - currentValveStates[ valve ].valveOpsStartTime = 0; - currentValveStates[ valve ].hasValveBeenHomed = FALSE; - currentValveStates[ valve ].currentPosition = VALVE_POSITION_NOT_IN_POSITION; - nextState = VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE; - - setValveCmdChangePosition( valve, (U16)currentValveStates[ valve ].proposedEnergizedPos, MOTOR_DIR_FORWARD ); + if ( ( currentValveStates[ valve ].proposedEnergizedPos <= ROTARY_VALVE_ENERGIZED_EDGE_MIN_COUNTS ) || + ( currentValveStates[ valve ].proposedEnergizedPos >= ROTARY_VALVE_ENERGIZED_EDGE_MAX_COUNTS ) ) + { + currentValveStates[ valve ].hasHomingFailed = TRUE; + currentValveStates[ valve ].hasHomingBeenRequested = FALSE; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_VALVE_HOMING_FAILED, (U32)valve, (U32)currentValveStates[ valve ].proposedEnergizedPos ) + } + else + { + // Command valve to move to energized edge (end of travel) + currentValveStates[ valve ].valveOpsStartTime = 0; + currentValveStates[ valve ].hasValveBeenHomed = FALSE; + currentValveStates[ valve ].currentPosition = VALVE_POSITION_NOT_IN_POSITION; + nextState = VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE; + setValveCmdChangePosition( valve, (U16)currentValveStates[ valve ].proposedEnergizedPos, MOTOR_DIR_FORWARD ); + } } return nextState;