########################################################################### # # Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. # # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN # WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # # @file HD_UFTest.py # # @date 28-Jan-2020 # @author S. Nash # # @brief This script simulates 300 grams of load cell increase over 15 minutes (20 mL/min). # ############################################################################ import sys sys.path.append("..") from dialin.hd.hemodialysis_device import HD from time import sleep if __name__ == "__main__": # create an HD object called hd hd = HD() sleep(2) # log in to HD as tester if hd.cmd_log_in_to_hd() == 0: exit(1) sleep(1) loadCellGrams = float(1500.0) #start reservoir at 1.5 L (1,500 g) hdUFRate = 20.0 #assuming UF rate is 20 mL/min idealWeightChange = hdUFRate / 60.0 #if DPo is controlling perfectly, this would be the weight gain per second while hd.dialysate_outlet_flow.PWMDutyCyclePct < 15.0: #wait for treatment to start hd.dialysate_outlet_flow.CmdSetLoadCellWeights(loadCellGrams, 0.0, 0.0, 0.0) sleep(1) # simulate load cell increase over time w/ some response to UF control while True: sleep(1) error = hd.dialysate_outlet_flow.PWMDutyCyclePct - hd.dialysate_outlet_flow.PWMDutyCyclePct addedWeight = error * 0.1 loadCellGrams += addedWeight hd.dialysate_outlet_flow.CmdSetLoadCellWeights(loadCellGrams, 0.0, 0.0, 0.0) print("DPi PWM: " + str(hd.dialysate_outlet_flow.PWMDutyCyclePct) + " DPo PWM: " + str(hd.dialysate_outlet_flow.PWMDutyCyclePct)) print("Treatment Time: " + str(hd.treatment.TreatmentTimeElapsed) + " sec.") print("Reservoir Vol.: " + str(loadCellGrams) + " mL.") print("Reference Vol.: " + str(hd.dialysate_outlet_flow.ReferenceDialysateOutletUFVolume) + " mL.") print("Meas. UF Vol.: " + str(hd.dialysate_outlet_flow.MeasuredDialysateOutletUFVolume) + " mL.") print("") exit(1)