Index: firmware/App/Controllers/Voltages.c =================================================================== diff -u -r35de566c96433689821b7a21f731df26b40d67ae -r08e11fb11f818dd326617362ca7361b2fae1662a --- firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 35de566c96433689821b7a21f731df26b40d67ae) +++ firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 08e11fb11f818dd326617362ca7361b2fae1662a) @@ -64,6 +64,7 @@ 3.3, // MONITORED_LINE_V_REF 3.3, // MONITORED_LINE_EXT_ADC_1_REF_V 3.3, // MONITORED_LINE_EXT_ADC_2_REF_V + 5.5, // MONITORED_LINE_PS_GATE_DRIVER_V 26.4, // MONITORED_LINE_24V_PRIM_HTR_V 26.4 // MONITORED_LINE_24V_TRIM_HTR_V }; @@ -82,8 +83,9 @@ 2.7, // MONITORED_LINE_V_REF 2.7, // MONITORED_LINE_EXT_ADC_1_REF_V 2.7, // MONITORED_LINE_EXT_ADC_2_REF_V - 21.6, // MONITORED_LINE_24V_PRIM_HTR_V - 21.6 // MONITORED_LINE_24V_TRIM_HTR_V + 4.5, // MONITORED_LINE_PS_GATE_DRIVER_V + 0.0, // MONITORED_LINE_24V_PRIM_HTR_V + 0.0 // MONITORED_LINE_24V_TRIM_HTR_V }; // ********** private data ********** @@ -95,7 +97,7 @@ static OVERRIDE_U32_T voltagesDataPublishInterval = { VOLTAGES_DATA_PUB_INTERVAL, VOLTAGES_DATA_PUB_INTERVAL, 0, 0 }; static OVERRIDE_F32_T voltages[ NUM_OF_MONITORED_LINES ]; ///< Monitored voltages and currents. -static U32 voltageAlarmPerisistenceCtr[ NUM_OF_MONITORED_LINES ]; ///< Alarm persistence counters for voltage check failures. +static U32 voltageAlarmPersistenceCtr[ NUM_OF_MONITORED_LINES ]; ///< Alarm persistence counters for voltage check failures. // ********** private function prototypes ********** @@ -125,7 +127,7 @@ voltages[i].ovInitData = 0.0; voltages[i].override = OVERRIDE_RESET; - voltageAlarmPerisistenceCtr[i] = 0; + voltageAlarmPersistenceCtr[i] = 0; } } @@ -198,6 +200,7 @@ voltages[ MONITORED_LINE_V_REF ].data = getIntADCVoltageConverted( INT_ADC_REFERENCE_VOLTAGE ); voltages[ MONITORED_LINE_EXT_ADC_1_REF_V ].data = getIntADCVoltageConverted( INT_ADC_REF_IN1 ); voltages[ MONITORED_LINE_EXT_ADC_2_REF_V ].data = getIntADCVoltageConverted( INT_ADC_REF_IN2 ); + voltages[ MONITORED_LINE_PS_GATE_DRIVER_V ].data = getIntADCVoltageConverted( INT_ADC_POWER_SUPPLY_GATE_DRIVER ); voltages[ MONITORED_LINE_24V_PRIM_HTR_V ].data = getIntADCVoltageConverted( INT_ADC_PRIMARY_HEATER_24_VOLTS ); voltages[ MONITORED_LINE_24V_TRIM_HTR_V ].data = getIntADCVoltageConverted( INT_ADC_TRIMMER_HEATER_24_VOLTS ); @@ -211,38 +214,40 @@ * @brief * The checkVoltageRanges function checks each monitored voltage or current * against its minimum and maximum range. - * @details Inputs: voltageAlarmPerisistenceCtr, MAX_VOLTAGES[], MIN_VOLTAGES[], voltages[] - * @details Outputs: voltageAlarmPerisistenceCtr, alarm if out of range + * @details Inputs: voltageAlarmPersistenceCtr, MAX_VOLTAGES[], MIN_VOLTAGES[], voltages[] + * @details Outputs: voltageAlarmPersistenceCtr, alarm if out of range * @return none *************************************************************************/ static void checkVoltageRanges( void ) { U32 i; // Check range - for ( i = 0; i < NUM_OF_MONITORED_LINES; i++ ) + for ( i = 0; i <= MONITORED_LINE_LAST_RANGE_CHECKED_LINE; i++ ) { F32 volts = getMonitoredLineLevel( (MONITORED_VOLTAGES_T)i ); if ( volts > MAX_VOLTAGES[ i ] ) { - if ( ++voltageAlarmPerisistenceCtr[ i ] > VOLTAGES_ALARM_PERSISTENCE ) + if ( ++voltageAlarmPersistenceCtr[ i ] > VOLTAGES_ALARM_PERSISTENCE ) { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_VOLTAGE_OUT_OF_RANGE, (F32)i, volts ) } } else if ( volts < MIN_VOLTAGES[ i ] ) { - if ( ++voltageAlarmPerisistenceCtr[ i ] > VOLTAGES_ALARM_PERSISTENCE ) + if ( ++voltageAlarmPersistenceCtr[ i ] > VOLTAGES_ALARM_PERSISTENCE ) { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_VOLTAGE_OUT_OF_RANGE, (F32)i, volts ) } } else { - voltageAlarmPerisistenceCtr[ i ] = 0; + voltageAlarmPersistenceCtr[ i ] = 0; } } + + // TODO - check heater voltages depending on current PWM level } /*********************************************************************//** @@ -320,7 +325,8 @@ data.adc3_3V = getMonitoredLineLevel( MONITORED_LINE_3_3V ); data.adc3_3VSensors = getMonitoredLineLevel( MONITORED_LINE_3_3V_SENSORS ); data.adc5VLogic = getMonitoredLineLevel( MONITORED_LINE_5V_LOGIC ); - data.adc5VSensors = getMonitoredLineLevel( MONITORED_LINE_5V_SENSORS ); + data.adc5VSensors = getMonitoredLineLevel( MONITORED_LINE_5V_SENSORS ); + data.adc5VPSGateDriver = getMonitoredLineLevel( MONITORED_LINE_PS_GATE_DRIVER_V ); data.adc24V = getMonitoredLineLevel( MONITORED_LINE_24V_MAIN ); data.adc24VPrimaryHtr = getMonitoredLineLevel( MONITORED_LINE_24V_TRIM_HTR_V ); data.adc24VTrimmerHtr = getMonitoredLineLevel( MONITORED_LINE_24V_PRIM_HTR_V ); Index: firmware/App/Controllers/Voltages.h =================================================================== diff -u -r35de566c96433689821b7a21f731df26b40d67ae -r08e11fb11f818dd326617362ca7361b2fae1662a --- firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision 35de566c96433689821b7a21f731df26b40d67ae) +++ firmware/App/Controllers/Voltages.h (.../Voltages.h) (revision 08e11fb11f818dd326617362ca7361b2fae1662a) @@ -46,6 +46,8 @@ MONITORED_LINE_V_REF, ///< Reference voltage (3V) MONITORED_LINE_EXT_ADC_1_REF_V, ///< External ADC 1 reference voltage (3V) MONITORED_LINE_EXT_ADC_2_REF_V, ///< External ADC 2 reference voltage (3V) + MONITORED_LINE_PS_GATE_DRIVER_V, ///< INT_ADC_POWER_SUPPLY_GATE_DRIVER + MONITORED_LINE_LAST_RANGE_CHECKED_LINE = MONITORED_LINE_PS_GATE_DRIVER_V, ///< The last monitored line that is checked per fixed range. MONITORED_LINE_24V_PRIM_HTR_V, ///< Primary heater voltage (24V) MONITORED_LINE_24V_TRIM_HTR_V, ///< Trimmer heater voltage (24V) NUM_OF_MONITORED_LINES ///< Number of monitored voltages @@ -65,6 +67,7 @@ F32 adc3_3VSensors; ///< Internal ADC channel for 3.3V to sensors F32 adc5VLogic; ///< Internal ADC channel for 5V to logic F32 adc5VSensors; ///< Internal ADC channel for 5V to sensors + F32 adc5VPSGateDriver; ///< Internal ADC channel for 5V P/S gate driver F32 adc24V; ///< Internal ADC channel for 24V F32 adc24VPrimaryHtr; ///< Internal ADC channel for 24V to primary heater F32 adc24VTrimmerHtr; ///< Internal ADC channel for 24V to trimmer heater Index: firmware/App/Drivers/InternalADC.c =================================================================== diff -u -r35de566c96433689821b7a21f731df26b40d67ae -r08e11fb11f818dd326617362ca7361b2fae1662a --- firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 35de566c96433689821b7a21f731df26b40d67ae) +++ firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 08e11fb11f818dd326617362ca7361b2fae1662a) @@ -60,32 +60,32 @@ }; const F32 ADC_CHANNEL_READ_TO_UNITS[ NUM_OF_INT_ADC_CHANNELS ] = -{ // TODO - get conversion for these channels +{ 0.0, // - INT_ADC_NOT_USED - 0.06434, // PSIA- INT_ADC_RO_PUMP_INLET_PRESSURE - 0.06434, // PSIA- INT_ADC_RO_PUMP_OUTLET_PRESSURE - 0.06434, // PSIA- INT_ADC_DRAIN_PUMP_OUTLET_PRESSURE - 0.06434, // PSIA- INT_ADC_DRAIN_PUMP_INLET_PRESSURE - 1.0, // ? - INT_ADC_CONCENTRATE_PUMP_1 + 0.06438104, // PSIA- INT_ADC_RO_PUMP_INLET_PRESSURE + 0.06438104, // PSIA- INT_ADC_RO_PUMP_OUTLET_PRESSURE + 0.06438104, // PSIA- INT_ADC_DRAIN_PUMP_OUTLET_PRESSURE + 0.06438104, // PSIA- INT_ADC_DRAIN_PUMP_INLET_PRESSURE + 1.0, // ? - INT_ADC_CONCENTRATE_PUMP_1 // TODO - get units and conversion for these 2 channels 1.0, // ? - INT_ADC_CONCENTRATE_PUMP_2 - 1.0, // V - INT_ADC_PRIMARY_HEATER_24_VOLTS - 1.0, // V - INT_ADC_TRIMMER_HEATER_24_VOLTS - 1.0, // C - INT_ADC_BOARD_THERMISTOR - 1.0, // V - INT_ADC_FPGA_1_8_VOLTS - 1.0, // V - INT_ADC_FPGA_1_VOLT - 1.0, // V - INT_ADC_PROCESSOR_1_8_VOLTS - 1.0, // V - INT_ADC_PROCESSOR_1_2_VOLTS - 1.0, // V - INT_ADC_SENSORS_3_3_VOLTS - 1.0, // V - INT_ADC_SENSORS_5_VOLTS - 1.0, // V - INT_ADC_MAIN_24_VOLTS - 1.0, // V - INT_ADC_LOGIC_5_VOLTS - 1.0, // V - INT_ADC_3_3_VOLTS - 1.0, // V - INT_ADC_REFERENCE_VOLTAGE - 1.0, // V - INT_ADC_REF_IN1 - 1.0, // V - INT_ADC_REF_IN2 - 1.0, // C - INT_ADC_POWER_SUPPLY_1_THERMISTOR - 1.0, // C - INT_ADC_POWER_SUPPLY_2_THERMISTOR - 1.0 // V - INT_ADC_POWER_SUPPLY_GATE_DRIVER + 0.00700441, // V - INT_ADC_PRIMARY_HEATER_24_VOLTS (varies inversely with PWM for secondary element) + 0.00763285, // V - INT_ADC_TRIMMER_HEATER_24_VOLTS (varies inversely with PWM) + 0.001221, // V - INT_ADC_BOARD_THERMISTOR + 0.0007326, // V - INT_ADC_FPGA_1_8_VOLTS + 0.0007326, // V - INT_ADC_FPGA_1_VOLT + 0.0007326, // V - INT_ADC_PROCESSOR_1_8_VOLTS + 0.0007326, // V - INT_ADC_PROCESSOR_1_2_VOLTS + 0.00117296, // V - INT_ADC_SENSORS_3_3_VOLTS + 0.0014652, // V - INT_ADC_SENSORS_5_VOLTS + 0.00700441, // V - INT_ADC_MAIN_24_VOLTS + 0.0014652, // V - INT_ADC_LOGIC_5_VOLTS + 0.00117296, // V - INT_ADC_3_3_VOLTS + 0.00117296, // V - INT_ADC_REFERENCE_VOLTAGE (3V) + 0.0014652, // V - INT_ADC_REF_IN1 (3V) + 0.0014652, // V - INT_ADC_REF_IN2 (3V) + 0.001221, // V - INT_ADC_POWER_SUPPLY_1_THERMISTOR + 0.001221, // V - INT_ADC_POWER_SUPPLY_2_THERMISTOR + 0.00304608 // V - INT_ADC_POWER_SUPPLY_GATE_DRIVER (5V) }; // ********** private data ********** Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d -r08e11fb11f818dd326617362ca7361b2fae1662a --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 08e11fb11f818dd326617362ca7361b2fae1662a) @@ -33,17 +33,6 @@ #include "AlarmDefs.h" -/// Alarm data types list. -typedef enum Alarm_Data_Types -{ - ALARM_DATA_TYPE_NONE = 0, ///< No data given - ALARM_DATA_TYPE_U32 = 1, ///< Alarm data is unsigned 32-bit integer type - ALARM_DATA_TYPE_S32 = 2, ///< Alarm data is signed 32-bit integer type - ALARM_DATA_TYPE_F32 = 3, ///< Alarm data is 32-bit floating point type - ALARM_DATA_TYPE_BOOL = 4, ///< Alarm data is 32-bit boolean type - NUM_OF_ALARM_DATA_TYPES ///< Total number of alarm data types -} ALARM_DATA_TYPES_T; - #pragma pack(push,4) /// Record structure for unsigned integer alarm data. typedef struct