########################################################################### # # 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 dialin.dg.dialysate_generator import DG from time import sleep if __name__ == "__main__": # create an HD object called hd hd = HD() # create a DG object called dg dg = DG() sleep(2) # log in to HD and DG as tester # if hd.cmd_log_in_to_hd() == 0: # exit(1) # if dg.cmd_log_in_to_dg() == 0: # exit(1) # sleep(1) # create log file with open("UF_test.log", "w") as f: # collect UF related data from HD and DG while True: sleep(1) modes = "HD.m, " + '{:2d}'.format(hd.hd_operation_mode) + \ ", DG.m, " + '{:2d}'.format(dg.dg_operation_mode) + \ ", DG.s, " + '{:2d}'.format(dg.dg_operation_sub_mode) loadCells = ", A1, " + '{:8.1f}'.format(dg.load_cells.load_cell_A1) + \ ", B1, " + '{:8.1f}'.format(dg.load_cells.load_cell_B1) + \ ", A2, " + '{:8.1f}'.format(dg.load_cells.load_cell_A2) + \ ", B2, " + '{:8.1f}'.format(dg.load_cells.load_cell_B2) ultraFilt = ", RfUF, " + '{:9.2f}'.format(hd.dialysate_outlet_flow.reference_dialysate_outlet_uf_volume) + \ ", MsUF, " + '{:9.2f}'.format(hd.dialysate_outlet_flow.measured_dialysate_outlet_uf_volume) + \ ", Act.Res, " + '{:1d}'.format(dg.reservoirs.active_reservoir) valves = ", Vlv, " + '{:4X}'.format(dg.valves.valve_states_all) pumpSetPts = ", B.s, " + '{:4d}'.format(hd.bloodflow.target_blood_flow_rate) + \ ", DI.s, " + '{:4d}'.format(hd.dialysate_inlet_flow.target_dialysate_inlet_flow_rate) + \ ", RO.s, " + '{:4d}'.format(dg.ro_pump.target_pressure_psi) + \ ", DR.s, " + '{:5d}'.format(dg.drain_pump.target_drain_pump_speed_RPM) pumpMeasSpds = ", B.m, " + '{:7.1f}'.format(hd.bloodflow.measured_blood_pump_speed) + \ ", B.r, " + '{:6.1f}'.format(hd.bloodflow.measured_blood_pump_rotor_speed) + \ ", B.f, " + '{:7.1f}'.format(hd.bloodflow.measured_blood_flow_rate) + \ ", DI.m, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.measured_dialysate_inlet_pump_speed) + \ ", DI.r, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.measured_dialysate_inlet_pump_rotor_speed) + \ ", DI.f, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.measured_dialysate_inlet_flow_rate) + \ ", DO.m, " + '{:7.1f}'.format(hd.dialysate_outlet_flow.measured_dialysate_outlet_pump_speed) + \ ", DO.r, " + '{:6.1f}'.format(hd.dialysate_outlet_flow.measured_dialysate_outlet_pump_rotor_speed) + \ ", RO.f, " + '{:7.1f}'.format(dg.ro_pump.measured_flow_rate_lpm) pumpPWMs = ", B.w, "+'{:6.1f}'.format(hd.bloodflow.pwm_duty_cycle_pct) + \ ", DI.w, " + '{:6.1f}'.format(hd.dialysate_inlet_flow.pwm_duty_cycle_pct) + \ ", DO.w, " + '{:6.1f}'.format(hd.dialysate_outlet_flow.pwm_duty_cycle_pct) + \ ", RO.w, " + '{:6.1f}'.format(dg.ro_pump.pwm_duty_cycle_pct) + \ ", DR.w, " + '{:4d}'.format(dg.drain_pump.dac_value) dgPres = ", ROi, " + '{:9.2f}'.format(dg.pressures.ro_pump_inlet_pressure) + \ ", ROo, " + '{:9.2f}'.format(dg.pressures.ro_pump_outlet_pressure) + \ ", DRi, " + '{:9.2f}'.format(dg.pressures.drain_pump_inlet_pressure) + \ ", DRo, " + '{:9.2f}'.format(dg.pressures.drain_pump_outlet_pressure) alarms = ", AL.s, " + hd.alarms.get_current_alarms_state() + \ ", AL.t, " + '{:4d}'.format(hd.alarms.alarm_top) accels = ", AC.x, " + '{:9.4f}'.format(hd.accel.get_accel_vector().x) + \ ", AC.y, " + '{:9.4f}'.format(hd.accel.get_accel_vector().y) + \ ", AC.z, " + '{:9.4f}'.format(hd.accel.get_accel_vector().z) + \ ", ACm.x, " + '{:9.4f}'.format(hd.accel.get_accel_max_vector().x) + \ ", ACm.y, " + '{:9.4f}'.format(hd.accel.get_accel_max_vector().y) + \ ", ACm.z, " + '{:9.4f}'.format(hd.accel.get_accel_max_vector().z) + \ ", ACt.x, " + '{:9.4f}'.format(hd.accel.get_accel_tilts().x) + \ ", ACt.y, " + '{:9.4f}'.format(hd.accel.get_accel_tilts().y) + \ ", ACt.z, " + '{:9.4f}'.format(hd.accel.get_accel_tilts().z) # log data f.write(modes) f.write(loadCells) f.write(ultraFilt) f.write(valves) f.write(pumpSetPts) f.write(pumpMeasSpds) f.write(pumpPWMs) f.write(dgPres) f.write(alarms) f.write(accels) f.write("\n") # print to console print(" Modes: "+modes) print(" Load Cells: "+loadCells) print("Ultrafiltration: "+ultraFilt) print(" DG Valves: "+valves) print("Pump Set Points: "+pumpSetPts) print(" Pump Speeds: "+pumpMeasSpds) print(" Pump PWMs/DACs: "+pumpPWMs) print(" DG Pressures: "+dgPres) print(" Accelerometer: "+accels) print(" Alarms: "+alarms)