Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r85339f0aa398217143fa3178a05ad5d6c6374bb8 -ra3916397312e1dc73efe99d6b3569b7387a9419b --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 85339f0aa398217143fa3178a05ad5d6c6374bb8) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision a3916397312e1dc73efe99d6b3569b7387a9419b) @@ -173,7 +173,6 @@ initPersistentAlarm( ALARM_ID_DG_ACID_CONCENTRATE_PUMP_PARK_FAULT, CONENTREATE_PUMP_PARK_FAULT_TIMEOUT_MS, CONENTREATE_PUMP_PARK_FAULT_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_BICARB_CONCENTRATE_PUMP_PARK_FAULT, CONENTREATE_PUMP_PARK_FAULT_TIMEOUT_MS, CONENTREATE_PUMP_PARK_FAULT_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_CONCENTRATE_PUMP_FAULT, CONCENTRATE_PUMP_FAULT_PERSISTENCE_PERIOD, CONCENTRATE_PUMP_FAULT_PERSISTENCE_PERIOD ); - } /*********************************************************************//** @@ -185,8 +184,8 @@ *************************************************************************/ void execConcentratePumpMonitor( void ) { - U08 fpgaConcPumpsFault = getFPGAConcentratePumpsFault(); - BOOL isConcPumpFault = ( fpgaConcPumpsFault > 0 ? TRUE : FALSE ); + U08 fpgaConcPumpsFault = getFPGAConcentratePumpsFault(); + BOOL isConcPumpFault = ( fpgaConcPumpsFault > 0 ? TRUE : FALSE ); // Check if a new calibration is available if ( TRUE == isNewCalibrationRecordAvailable() ) @@ -231,16 +230,16 @@ { CONCENTRATE_PUMP_DATA_T data; - U08 cp1Direction = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].direction; - F32 cp1SetSpeed = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].currentPumpSpeed; - F32 cp1Speed = getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ); - F32 cp1TgtSpeed = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].pumpTargetSpeed; - BOOL cp1Parked = getConcPumpIsParked( CONCENTRATEPUMPS_CP1_ACID ); - BOOL cp2ParkFault = getConcPumpParkIsFaulted( CONCENTRATEPUMPS_CP1_ACID ); - U08 cp2Direction = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].direction; - F32 cp2SetSpeed = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].currentPumpSpeed; - F32 cp2Speed = getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB ); - F32 cp2TgtSpeed = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].pumpTargetSpeed; + U08 cp1Direction = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].direction; + F32 cp1SetSpeed = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].currentPumpSpeed; + F32 cp1Speed = getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ); + F32 cp1TgtSpeed = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].pumpTargetSpeed; + BOOL cp1Parked = getConcPumpIsParked( CONCENTRATEPUMPS_CP1_ACID ); + BOOL cp2ParkFault = getConcPumpParkIsFaulted( CONCENTRATEPUMPS_CP1_ACID ); + U08 cp2Direction = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].direction; + F32 cp2SetSpeed = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].currentPumpSpeed; + F32 cp2Speed = getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB ); + F32 cp2TgtSpeed = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].pumpTargetSpeed; // Use the above values to prepare the broadcast data data.cp1CurrentSetSpeed = ( CONCENTRATE_PUMP_REVERSE_DIR == cp1Direction ? cp1SetSpeed * -1.0 : cp1SetSpeed ); Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -rb8f298547eb578000b3ff3cf55732fda7a689ce0 -ra3916397312e1dc73efe99d6b3569b7387a9419b --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision b8f298547eb578000b3ff3cf55732fda7a689ce0) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision a3916397312e1dc73efe99d6b3569b7387a9419b) @@ -283,6 +283,8 @@ drainPumpControlModeSet = drainPumpControlMode; result = TRUE; isDrainPumpControlInFlowMode = TRUE; + + resetPIController( PI_CONTROLLER_ID_DRAIN_PUMP, DRAIN_PUMP_MIN_DAC ); } else { @@ -677,10 +679,11 @@ isDrainPumpControlInFlowMode = FALSE; } } - else if ( flowSubLPM > NEARLY_ZERO ) + else if ( flowSubLPM > 0.0F ) { // If measured flow if greater than the target flow, adjust the DAC to lower the flow rate tempDACSet = (U32)( ( flowSubLPM * DRP_CONTROL_FLOW_TO_DAC_P_ONLY_TERM ) + FLOAT_TO_INT_ROUNDUP_OFFSET ); + tempDACSet = ( tempDACSet > drainPumpDACSet ? DRAIN_PUMP_MIN_DAC : tempDACSet ); drainPumpDACSet -= ( tempDACSet > 0.0F ? tempDACSet : DRP_CONTROL_MIN_DAC_CHANGE ); } else @@ -691,11 +694,12 @@ F32 ppoSubPSI = roPumpOutletPressurePSI - DRP_CONTROL_MAX_ALLOWED_PPO_PSI; F32 maxPresPSI = MAX( pdrSubPSI, ppoSubPSI ); - if ( ( pdrSubPSI > NEARLY_ZERO ) || ( ppoSubPSI > NEARLY_ZERO ) ) + if ( ( pdrSubPSI > 0.0F ) || ( ppoSubPSI > 0.0F ) ) { // If either of the pressure values are greater than the maximum pressure, recalculate the DAC by the maximum pressure difference // If the calculated DAC value turned out to be 0, set it to 1 so it changes at least by 1 DAC tempDACSet = (U32)( ( maxPresPSI * DRP_CONTROL_PSI_TO_DAC_P_ONLY_TERM ) + FLOAT_TO_INT_ROUNDUP_OFFSET ); + tempDACSet = ( tempDACSet > drainPumpDACSet ? DRAIN_PUMP_MIN_DAC : tempDACSet ); drainPumpDACSet -= ( tempDACSet > 0.0F ? tempDACSet : DRP_CONTROL_MIN_DAC_CHANGE ); } else if ( ( fabs(pdrSubPSI) > DRP_CONTROL_PRES_TO_MAX_THRESHOLD_PSI ) && ( fabs(ppoSubPSI) > DRP_CONTROL_PRES_TO_MAX_THRESHOLD_PSI ) ) Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -r56ba1b163b0cbf6953638065b2108f745b17ec8f -ra3916397312e1dc73efe99d6b3569b7387a9419b --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 56ba1b163b0cbf6953638065b2108f745b17ec8f) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision a3916397312e1dc73efe99d6b3569b7387a9419b) @@ -286,6 +286,8 @@ initPersistentAlarm( ALARM_ID_DG_CHEM_DISINFECT_TARGET_TEMP_OUT_OF_RANGE, DISINFECT_TEMP_OUT_OF_RANGE_TIMEOUT_MS, DISINFECT_TEMP_OUT_OF_RANGE_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_CHEM_DISINFECT_TARGET_COND_OUT_OF_RANGE, DISINFECT_COND_OUT_OF_RANGE_TIMEOUT_MS, DISINFECT_COND_OUT_OF_RANGE_TIMEOUT_MS ); + + requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID, PARK_CONC_PUMPS ); } /*********************************************************************//** @@ -306,7 +308,7 @@ setCPLDCleanLEDColor( CPLD_CLEAN_LED_YELLOW ); #ifndef _RELEASE_ - if ( nelsonSupport != NELSON_POS_CONTROL_CHEM_DISINFECT ) + if ( nelsonSupport != NELSON_CHEM_DISINFECT ) #endif { activateAlarmNoData( ALARM_ID_DG_CHEM_DISINFECT_INSERT_ACID ); @@ -576,14 +578,8 @@ setValveState( VRD2, VALVE_STATE_CLOSED ); setValveState( VPI, VALVE_STATE_OPEN ); setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + turnOnUVReactor( INLET_UV_REACTOR ); -#ifndef _RELEASE_ - if ( nelsonSupport != NELSON_POS_CONTROL_CHEM_DISINFECT ) -#endif - { - turnOnUVReactor( INLET_UV_REACTOR ); - } - stateTrialCounter = 0; stateTimer = getMSTimerCount(); state = DG_CHEM_DISINFECT_STATE_FLUSH_DRAIN; @@ -621,18 +617,12 @@ // set pumps and valves for next state, flush circulation setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC ); setROPumpTargetFlowRateLPM( RO_PUMP_TARGET_FLUSH_FLOW_RATE_LPM, MAX_RO_PUMP_FLUSH_FILL_PRESSURE_PSI ); + // Start heating the water while we are flushing + setHeaterTargetTemperature( DG_PRIMARY_HEATER, CHEM_DISINFECT_HEATER_CONTROL_TEMPERATURE_C ); + startHeater( DG_PRIMARY_HEATER ); + // The UV reactors will be on for the entire disinfect cycle + turnOnUVReactor( OUTLET_UV_REACTOR ); -#ifndef _RELEASE_ - if ( nelsonSupport != NELSON_POS_CONTROL_CHEM_DISINFECT ) -#endif - { - // Start heating the water while we are flushing - setHeaterTargetTemperature( DG_PRIMARY_HEATER, CHEM_DISINFECT_HEATER_CONTROL_TEMPERATURE_C ); - startHeater( DG_PRIMARY_HEATER ); - // The UV reactors will be on for the entire disinfect cycle - turnOnUVReactor( OUTLET_UV_REACTOR ); - } - flushCircWaitTime = FLUSH_CICRCULATION_INITIAL_WAIT_TIME_MS; stateTimer = getMSTimerCount(); state = DG_CHEM_DISINFECT_STATE_FLUSH_CIRCULATION; @@ -696,7 +686,7 @@ } // Check if any of the temperature sensors are out of tolerance - if( ( TRUE == isTPoOut ) || ( TRUE == isTD2Out ) || ( TRUE == isCD2Out ) || ( TRUE == isCPoOut) ) + if( ( TRUE == isTPoOut ) || ( TRUE == isTD2Out ) || ( TRUE == isCD2Out ) || ( TRUE == isCPoOut ) ) { // Check if we have exceeded the number of trials. If not, try another time ++stateTrialCounter; @@ -762,7 +752,7 @@ #ifndef _RELEASE_ if ( ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_DISINFECT_CONDUCTIVITY_CHECK ) != SW_CONFIG_ENABLE_VALUE ) && - ( ( nelsonSupport != NELSON_POS_CONTROL_CHEM_DISINFECT ) || ( nelsonSupport != NELSON_CHEM_DISINFECT ) ) ) + ( nelsonSupport != NELSON_CHEM_DISINFECT ) ) #endif { if ( cd2Conductivity < MIN_PRIME_ACID_CONDUCTIVITY_US_PER_CM ) @@ -1099,7 +1089,7 @@ state = DG_CHEM_DISINFECT_STATE_DRAIN_R1; #ifndef _RELEASE_ - if ( ( NELSON_POS_CONTROL_CHEM_DISINFECT == nelsonSupport ) || ( NELSON_CHEM_DISINFECT == nelsonSupport ) ) + if ( NELSON_CHEM_DISINFECT == nelsonSupport ) { deenergizeActuators( NO_PARK_CONC_PUMPS ); state = DG_CHEM_DISINFECT_STATE_COMPLETE; @@ -1784,9 +1774,7 @@ { switch ( nelsonSupport ) { - case NELSON_POS_CONTROL_CHEM_DISINFECT: case NELSON_CHEM_DISINFECT: - // Set the valves to start flush circulation setValveState( VPI, VALVE_STATE_OPEN ); setValveState( VBF, VALVE_STATE_CLOSED ); @@ -1800,17 +1788,11 @@ setValveState( VRD1, VALVE_STATE_CLOSED ); setValveState( VRD2, VALVE_STATE_CLOSED ); setROPumpTargetFlowRateLPM( RO_PUMP_TARGET_FLUSH_FLOW_RATE_LPM, MAX_RO_PUMP_FLUSH_FILL_PRESSURE_PSI ); + setHeaterTargetTemperature( DG_PRIMARY_HEATER, CHEM_DISINFECT_HEATER_CONTROL_TEMPERATURE_C ); + startHeater( DG_PRIMARY_HEATER ); + turnOnUVReactor( INLET_UV_REACTOR ); + turnOnUVReactor( OUTLET_UV_REACTOR ); -#ifndef _RELEASE_ - if ( NELSON_CHEM_DISINFECT == nelsonSupport ) -#endif - { - setHeaterTargetTemperature( DG_PRIMARY_HEATER, CHEM_DISINFECT_HEATER_CONTROL_TEMPERATURE_C ); - startHeater( DG_PRIMARY_HEATER ); - turnOnUVReactor( INLET_UV_REACTOR ); - turnOnUVReactor( OUTLET_UV_REACTOR ); - } - flushCircWaitTime = FLUSH_CICRCULATION_INITIAL_WAIT_TIME_MS; stateTimer = getMSTimerCount(); chemDisinfectState = DG_CHEM_DISINFECT_STATE_FLUSH_CIRCULATION; Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r85339f0aa398217143fa3178a05ad5d6c6374bb8 -ra3916397312e1dc73efe99d6b3569b7387a9419b --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 85339f0aa398217143fa3178a05ad5d6c6374bb8) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision a3916397312e1dc73efe99d6b3569b7387a9419b) @@ -114,6 +114,7 @@ #define NELSON_SUPPORT_TARGET_TEMP_C 6.0F // Nelson support heat disinfect target temperature in C. #define NELSON_SUPPORT_STOP_TEMP_C ( NELSON_SUPPORT_TARGET_TEMP_C - 5.0F ) // Nelson support heat disinfect stop temperature in C. #define NELSON_SUPPORT_DISINFECT_TIME_MS ( 2 * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SECOND ) // Nelson support heat disinfect time in milliseconds. +#define NELSON_SUPPORT_INOCULATE_TIME_MS ( 30 * SEC_PER_MIN * MS_PER_SECOND ) // Nelson support inoculate time in milliseconds. #endif /// Cancellation paths @@ -1251,22 +1252,31 @@ break; case HEAT_DISINFECT_COMPLETE: - if ( TRUE == isRODisinfectDone ) { - requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID, NO_PARK_CONC_PUMPS ); - requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, NO_PARK_CONC_PUMPS ); - stopHeater( DG_PRIMARY_HEATER ); - stopHeater( DG_TRIMMER_HEATER ); +#ifndef _RELEASE_ + if ( ( NELSON_HEAT_DISINFECT == nelsonSupport ) || ( NELSON_POS_CONTROL_HEAT_DISINFECT == nelsonSupport ) ) + { + deenergizeActuators( NO_PARK_CONC_PUMPS ); + state = DG_HEAT_DISINFECT_STATE_COMPLETE; + } + else +#endif + { + requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID, NO_PARK_CONC_PUMPS ); + requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, NO_PARK_CONC_PUMPS ); + stopHeater( DG_PRIMARY_HEATER ); + stopHeater( DG_TRIMMER_HEATER ); - timeStatus[ RSRVR_AT_77_C ].startTimeMS = 0; - timeStatus[ RSRVR_AT_82_C ].startTimeMS = 0; - timeStatus[ RO_AT_77_C ].startTimeMS = 0; - timeStatus[ RO_AT_82_C ].startTimeMS = 0; - rsrvr1RefVolML = 0.0F; - rsrvr2RefVolML = 0.0F; - stateTimer = getMSTimerCount(); - state = DG_HEAT_DISINFECT_STATE_COOL_DOWN_HEATERS; + timeStatus[ RSRVR_AT_77_C ].startTimeMS = 0; + timeStatus[ RSRVR_AT_82_C ].startTimeMS = 0; + timeStatus[ RO_AT_77_C ].startTimeMS = 0; + timeStatus[ RO_AT_82_C ].startTimeMS = 0; + rsrvr1RefVolML = 0.0F; + rsrvr2RefVolML = 0.0F; + stateTimer = getMSTimerCount(); + state = DG_HEAT_DISINFECT_STATE_COOL_DOWN_HEATERS; + } } #ifndef _RELEASE_ if ( NELSON_INOCULATE == nelsonSupport ) @@ -1288,11 +1298,6 @@ rsrvr2RefVolML = 0.0F; state = DG_NELSON_HEAT_DISINFECT_STATE_FILL_R1_WITH_WATER; } - else if ( ( NELSON_HEAT_DISINFECT == nelsonSupport ) || ( NELSON_POS_CONTROL_HEAT_DISINFECT == nelsonSupport ) ) - { - deenergizeActuators( PARK_CONC_PUMPS ); - state = DG_HEAT_DISINFECT_STATE_COMPLETE; - } #endif break; @@ -1629,7 +1634,7 @@ static DG_RESERVOIR_STATUS_T getRsrvrFillStatus( DG_RESERVOIR_ID_T reservoir, F32 targetVol, U32 timeout ) { DG_RESERVOIR_STATUS_T status = DG_RESERVOIR_BELOW_TARGET; - F32 volume = 0.0; + F32 volume = 0.0F; if ( DG_RESERVOIR_1 == reservoir ) { @@ -2023,25 +2028,26 @@ timeStatus[ RO_AT_77_C ].startTempC = NELSON_SUPPORT_TARGET_TEMP_C; timeStatus[ RO_AT_77_C ].startTimeMS = 0; timeStatus[ RO_AT_77_C ].stopTempC = NELSON_SUPPORT_STOP_TEMP_C; - timeStatus[ RO_AT_77_C ].targetTimeMS = HEAT_DISINFECT_AT_77_C_TIME_MS; + timeStatus[ RO_AT_77_C ].targetTimeMS = NELSON_SUPPORT_INOCULATE_TIME_MS; timeStatus[ RO_AT_77_C ].tempSensor = TEMPSENSORS_HEAT_DISINFECT; timeStatus[ RO_AT_82_C ].startTempC = NELSON_SUPPORT_TARGET_TEMP_C; timeStatus[ RO_AT_82_C ].startTimeMS = 0; timeStatus[ RO_AT_82_C ].stopTempC = NELSON_SUPPORT_STOP_TEMP_C; - timeStatus[ RO_AT_82_C ].targetTimeMS = HEAT_DISINFECT_AT_82_C_TIME_MS; + timeStatus[ RO_AT_82_C ].targetTimeMS = NELSON_SUPPORT_INOCULATE_TIME_MS; timeStatus[ RO_AT_82_C ].tempSensor = TEMPSENSORS_HEAT_DISINFECT; timeStatus[ RSRVR_AT_77_C ].startTempC = NELSON_SUPPORT_TARGET_TEMP_C; timeStatus[ RSRVR_AT_77_C ].startTimeMS = 0; timeStatus[ RSRVR_AT_77_C ].stopTempC = NELSON_SUPPORT_STOP_TEMP_C; - timeStatus[ RSRVR_AT_77_C ].targetTimeMS = NELSON_SUPPORT_DISINFECT_TIME_MS; + // Set 82 C time to be the shorter time since the entire inoculation time should be 30 mins but the 77 C is 32 minutes + timeStatus[ RSRVR_AT_77_C ].targetTimeMS = HEAT_DISINFECT_AT_82_C_TIME_MS; timeStatus[ RSRVR_AT_77_C ].tempSensor = TEMPSENSORS_INLET_DIALYSATE; timeStatus[ RSRVR_AT_82_C ].startTempC = NELSON_SUPPORT_TARGET_TEMP_C; timeStatus[ RSRVR_AT_82_C ].startTimeMS = 0; timeStatus[ RSRVR_AT_82_C ].stopTempC = NELSON_SUPPORT_STOP_TEMP_C; - timeStatus[ RSRVR_AT_82_C ].targetTimeMS = NELSON_SUPPORT_DISINFECT_TIME_MS; + timeStatus[ RSRVR_AT_82_C ].targetTimeMS = HEAT_DISINFECT_AT_82_C_TIME_MS; timeStatus[ RSRVR_AT_82_C ].tempSensor = TEMPSENSORS_INLET_DIALYSATE; break; @@ -2142,7 +2148,7 @@ if ( DG_RESERVOIR_REACHED_TARGET == rsrvr1Status ) { - deenergizeActuators( PARK_CONC_PUMPS ); + deenergizeActuators( NO_PARK_CONC_PUMPS ); state = DG_HEAT_DISINFECT_STATE_COMPLETE; } else if ( DG_RESERVOIR_NOT_REACHED_TARGET == rsrvr1Status ) Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r85339f0aa398217143fa3178a05ad5d6c6374bb8 -ra3916397312e1dc73efe99d6b3569b7387a9419b --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 85339f0aa398217143fa3178a05ad5d6c6374bb8) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a3916397312e1dc73efe99d6b3569b7387a9419b) @@ -4414,11 +4414,6 @@ requestNewOperationMode( DG_MODE_HEAT ); break; - case NELSON_POS_CONTROL_CHEM_DISINFECT: - setChemNelsonSupportMode( nelson ); - requestNewOperationMode( DG_MODE_CHEM ); - break; - case NELSON_POS_CONTROL_HEAT_DISINFECT: setHeatNelsonSupportMode( nelson ); requestNewOperationMode( DG_MODE_HEAT ); Index: firmware/checkAlarms.sh =================================================================== diff -u -r6499ea25921fcf67826fa0c35bb03caf411ba542 -ra3916397312e1dc73efe99d6b3569b7387a9419b --- firmware/checkAlarms.sh (.../checkAlarms.sh) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) +++ firmware/checkAlarms.sh (.../checkAlarms.sh) (revision a3916397312e1dc73efe99d6b3569b7387a9419b) @@ -55,8 +55,8 @@ { if ( ALARM_RANK_TABLE[ alarm ].alarmSubRank != ALARM_TABLE[ ALARM_RANK_TABLE[ alarm ].alarmID ].alarmSubRank ) { - printf(\"\\\"AlarmDefs.h\\\", line %d: error #9999: Alarm has different rank from alarm property table!\n\", alarmRankLineNumber + alarm + 2 ); - exit(1); + printf(\"\\\"AlarmDefs.h\\\", line %d: error #9999: Alarm %d has different rank from alarm property table!\n\", alarmRankLineNumber + alarm + 2, alarm ); + exit(1); } }