Index: firmware/App/Controllers/MixingControl.c =================================================================== diff -u -rde5e503e4adc38658ac9d15cdad2b755a3ce566b -ra2180eecf9ed0c62849131ee19715c04d2dcbf22 --- firmware/App/Controllers/MixingControl.c (.../MixingControl.c) (revision de5e503e4adc38658ac9d15cdad2b755a3ce566b) +++ firmware/App/Controllers/MixingControl.c (.../MixingControl.c) (revision a2180eecf9ed0c62849131ee19715c04d2dcbf22) @@ -59,7 +59,7 @@ #define BICARB_TARGET_CONDUCTIVITY 2714.0F ///< Target bicarb conductivity #define BICARB_DELTA_CONDUCTIVITY 500.0F ///< Delta bicarb conductivity -#define DIALYSATE_TARGET_CONDUCTIVITY 3734.87F ///< Target dialysate conductivity +#define DIALYSATE_TARGET_CONDUCTIVITY 13734.87F ///< Target dialysate conductivity #define DIALYSATE_DELTA_CONDUCTIVITY 700.0F ///< Delta dialysate conductivity // this is for reference only , it can be removed later @@ -328,6 +328,14 @@ mixingControlDataPublicationTimerCounter = 0; + initializePIController( PI_CONTROLLER_ID_BICARB_VOL, 0.0F,\ + getBicarbKpGainCoefficient(), getBicarbKiGainCoefficient(),\ + MIN_BICARB_VOLUME_ML, MAX_BICARB_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); + + initializePIController( PI_CONTROLLER_ID_ACID_VOL, 0.0F, \ + getAcidKpGainCoefficient(), getAcidKiGainCoefficient(),\ + MIN_ACID_VOLUME_ML, MAX_ACID_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); + } /*********************************************************************//** @@ -761,16 +769,18 @@ PI_CONTROLLER_SIGNALS_DATA debugBicarbControl; F32 measuredBicarbConductivity = getFilteredConductivity( D17_COND ); F32 bicarbConductivity = getBicarbTargetConductivity();//getBicarbConductivityPre(); + //TODO: ALARM if measuredDialysateConductivity or bicarbConductivity is or both 0 if ( fabs ( bicarbConductivity - measuredBicarbConductivity ) > BICARB_DEADBAND_CONTROL ) { - bicarbMixVol = runPIController( PI_CONTROLLER_ID_BICARB_VOL, getBicarbConductivityPre() /*getBicarbTargetConductivity()*/, measuredBicarbConductivity ); - //Set bicarb mix vol only if its above dead band threshold, else use the previous set vlaue + bicarbMixVol = runPIController( PI_CONTROLLER_ID_BICARB_VOL, bicarbConductivity, measuredBicarbConductivity ); + //Set bicarb mix vol only if its above dead band threshold, else use the previous set value + // Note: bicarb volume will impact the D10 pump , if volume is set to 0 , then D10 doesn't run setBicarbMixVol( bicarbMixVol ); } else { - //use the previous value + //use the previous value, this is for debug lastBicarbMixVolume = getBicarbMixVol(); } @@ -793,16 +803,18 @@ F32 measuredDialysateConductivity = getFilteredConductivity( D27_COND ); F32 DialysateConductivity = getDialysateTargetConductivity();//getTotalConductivity(); PI_CONTROLLER_SIGNALS_DATA debugAcidControl; + //TODO: ALARM if measuredDialysateConductivity or DialysateConductivity is or both 0 if ( fabs ( DialysateConductivity - measuredDialysateConductivity ) > ACID_DEADBAND_CONTROL ) { acidMixVol = runPIController( PI_CONTROLLER_ID_ACID_VOL, DialysateConductivity, measuredDialysateConductivity ); // set acid mix volume if its above dead band threshold , else use previous set value + // Note: if acid volume is set as 0, then D11 pump doesn't run setAcidMixVol( acidMixVol ); } else { - // use the previous value + // use the previous value, this is for debug lastAcidMixVolume = getAcidMixVol(); } @@ -877,7 +889,7 @@ data.currentBicarbMixVolume = getBicarbMixVol(); data.lastBicarbMixVolume = lastBicarbMixVolume; data.currentAcidMixVolume = getAcidMixVol(); - data.currentAcidMixVolume = lastAcidMixVolume; + data.lastAcidMixVolume = lastAcidMixVolume; //TODO :broadcast theretical pre and post conductivity