Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -r9488cd55cd4ed1680a6e2d87c178a994e35b8c78 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 9488cd55cd4ed1680a6e2d87c178a994e35b8c78) @@ -7,8 +7,8 @@ * * @file Valves.c * -* @author (last) Dara Navaei -* @date (last) 17-Nov-2022 +* @author (last) Michael Garthwaite +* @date (last) 01-Mar-2023 * * @author (original) Sean * @date (original) 06-May-2020 @@ -33,7 +33,7 @@ #define ENERGIZED 1 ///< 1 for energized valve. #define ALL_VALVES_DEENERGIZED 0x0000 ///< 0 in U16 bit field for all valves. -#define MAX_VALVE_STATE_MISMATCH_COUNT 3 ///< Maximum number of times commanded valves state can fail to match read back valve states in a row. +#define MAX_VALVE_STATE_MISMATCH_TIMER_COUNT (100 / TASK_PRIORITY_INTERVAL ) ///< Maximum time commanded valves state can fail to match read back valve states in a row. #define VALVES_STATE_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval ( ms / task time) at which valves states are published on CAN bus. #define DATA_PUBLISH_COUNTER_START_COUNT 50 ///< Data publish counter start count. @@ -53,7 +53,7 @@ static U32 valvesStatesPublicationTimerCounter; ///< Timer counter used to schedule valve state publication to CAN bus. static U16 commandedValvesStates = ALL_VALVES_DEENERGIZED; ///< Initialize commanded valves states bit field. -static U32 valveStateMismatchCounter; ///< Initialize valve state mismatch counter. +static U32 valveStateMismatchTimerCounter; ///< Initialize valve state mismatch timer. static U32 pendingValveStateChanges[ NUM_OF_VALVES ]; ///< Delayed (pending) valve state changes. static U32 pendingValveStateChangeCountDowns[ NUM_OF_VALVES ]; ///< Delayed (pending) valve state change count down timers (in task intervals). @@ -102,8 +102,8 @@ memset( &vpiTime, 0, sizeof( VPI_OPEN_CLOSE_TIME_T ) ); - valveStateMismatchCounter = 0; - commandedValvesStates = fromU32ArrayToU16(); + valveStateMismatchTimerCounter = 0; + commandedValvesStates = fromU32ArrayToU16(); setFPGAValveStates( commandedValvesStates ); // initially set all valves to de-energized state via FPGA valvesStatesPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; // reset valves states publication timer @@ -124,15 +124,15 @@ // Verify read back FPGA valve states match last commanded valve states if ( readValvesStates != commandedValvesStates ) { - valveStateMismatchCounter++; // increment valve state mismatch counter by 1 - if ( valveStateMismatchCounter > MAX_VALVE_STATE_MISMATCH_COUNT ) + valveStateMismatchTimerCounter++; // increment valve state mismatch counter by 1 + if ( valveStateMismatchTimerCounter > MAX_VALVE_STATE_MISMATCH_TIMER_COUNT ) { activateAlarmNoData( ALARM_ID_DG_VALVE_CONTROL_FAILURE ); } } else { - valveStateMismatchCounter = 0; + valveStateMismatchTimerCounter = 0; } // Handle pending delayed valve state changes @@ -525,7 +525,7 @@ data.valvesSensedState[ i ] = (U08)getValveStateName( (VALVES_T)i ); } - broadcastData( MSG_ID_DG_VALVES_STATES, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( DG_VALVES_DATA_T ) ); + broadcastData( MSG_ID_DG_VALVES_STATES_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( DG_VALVES_DATA_T ) ); valvesStatesPublicationTimerCounter = 0; }