Index: firmware/App/Drivers/SafetyShutdown.c =================================================================== diff -u -r9e5ee62245eb2a73b167eabd6c274a71a76a7b0e -re5e7a37f5f1e2942630f748be23eac9f452af3aa --- firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision 9e5ee62245eb2a73b167eabd6c274a71a76a7b0e) +++ firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision e5e7a37f5f1e2942630f748be23eac9f452af3aa) @@ -36,8 +36,9 @@ #define SAFETY_SHUTDOWN_POST_TIMEOUT_MS 500 ///< Safety shutdown POST test timeout (in ms). #define SAFETY_SHUTDOWN_RECOVERY_TIME_MS 500 ///< After safety shutdown POST test, wait this long (in ms) to recover before moving on. -#define MAX_24V_LEVEL_ON_SAFETY_SHUTDOWN 5.0F ///< Maximum voltage on 24V line when safety shutdown asserted. -#define MIN_24V_LEVEL_ON_SAFETY_RECOVER 22.6F ///< Minimum voltage on 24V line when safety shutdown is recovered. +#define MAX_24V_LEVEL_ON_SAFETY_SHUTDOWN 5.0F ///< Maximum voltage on 24V line when safety shutdown asserted. +#define MAX_ISOLATED_24V_LEVEL_ON_SS_EXPIRED 22.6F ///< Maximum voltage on isolated 24V line when watchdog is expired. 10% of 24V. +#define MIN_24V_LEVEL_ON_SAFETY_RECOVER 22.6F ///< Minimum voltage on 24V line when safety shutdown is recovered. /// Enumeration of safety shutdown self-test states. typedef enum Safety_Shutdown_Self_Test_States @@ -126,7 +127,8 @@ case SAFETY_SHUTDOWN_SELF_TEST_STATE_IN_PROGRESS: if ( TRUE == didTimeout( safetyShutdownSelfTestTimerCount, SAFETY_SHUTDOWN_POST_TIMEOUT_MS ) ) { - F32 v24 = getIntADCVoltageConverted( INT_ADC_SECONDARY_HEATER_24_VOLTS ); + F32 v24 = getIntADCVoltageConverted( INT_ADC_SECONDARY_HEATER_24_VOLTS ); + F32 isolatedV24 = getMonitoredLineLevel( MONITORED_LINE_24V_POWER_PRIM_HTR_V ); // Verify 24V is down when w.d. expired if ( v24 > MAX_24V_LEVEL_ON_SAFETY_SHUTDOWN ) @@ -144,11 +146,13 @@ case SAFETY_SHUTDOWN_SELF_TEST_STATE_RECOVER: if ( TRUE == didTimeout( safetyShutdownSelfTestTimerCount, SAFETY_SHUTDOWN_RECOVERY_TIME_MS ) ) { - F32 v24 = getIntADCVoltageConverted( INT_ADC_SECONDARY_HEATER_24_VOLTS ); + F32 v24 = getIntADCVoltageConverted( INT_ADC_SECONDARY_HEATER_24_VOLTS ); + F32 isolatedV24 = getMonitoredLineLevel( MONITORED_LINE_24V_POWER_PRIM_HTR_V ); // Verify 24V is down when w.d. recovered - if ( v24 < MIN_24V_LEVEL_ON_SAFETY_RECOVER ) // TODO - If issue persisted talk with systems why 24V does not recover fully. + if ( v24 < MIN_24V_LEVEL_ON_SAFETY_RECOVER ) { + // TODO - If issue persisted talk with systems why 24V does not recover fully. SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_SAFETY_SHUTDOWN_POST_TEST_FAILED, 2.0, v24 ); safetyShutdownSelfTestStatus = SELF_TEST_STATUS_FAILED; }