Index: tests/test_uf.py =================================================================== diff -u -re172ddc204389ba1eb69e14de52bd3b924087031 -r32e628abcbbd3fd70866505d9f2836a6f732ef06 --- tests/test_uf.py (.../test_uf.py) (revision e172ddc204389ba1eb69e14de52bd3b924087031) +++ tests/test_uf.py (.../test_uf.py) (revision 32e628abcbbd3fd70866505d9f2836a6f732ef06) @@ -1,46 +1,55 @@ ########################################################################### # -# Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +# Copyright (c) 2020-2024 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 test_uf.py +# @file test_uf.py # -# @author (last) Peter Lucia -# @date (last) 06-Aug-2020 -# @author (original) Peter Lucia -# @date (original) 14-Jul-2020 +# @author (last) Sean Nash +# @date (last) 24-Sep-2022 +# @author (original) Peter Lucia +# @date (original) 14-Jul-2020 # ############################################################################ import sys sys.path.append("..") from dialin.hd.hemodialysis_device import HD from dialin.dg.dialysate_generator import DG +from dialin.hd.valves import ValvesEnum +from dialin.dg.temperatures import DGTemperaturesNames from time import sleep if __name__ == "__main__": # create an HD object called hd - hd = HD() + hd = HD(log_level="DEBUG") # create a DG object called dg - dg = DG() + dg = DG(log_level="DEBUG") sleep(2) +# hd.ui.cmd_ui_start_treatment_request() +# exit(0) + # 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) +# hd.bloodflow.cmd_blood_flow_set_point_override(0) +# exit(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) + \ + ", HD.s, " + '{:2d}'.format(hd.hd_operation_sub_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) + \ @@ -50,30 +59,49 @@ 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() + \ + valves = ", DGVlvs, " + '{:4X}'.format(dg.valves.valve_states_all) + \ + ", VBA, " + hd.valves.valves_status[ValvesEnum.VBA.name]["PosID"] + \ + ", VBV, " + hd.valves.valves_status[ValvesEnum.VBV.name]["PosID"] + \ + ", VDi, " + hd.valves.valves_status[ValvesEnum.VDI.name]["PosID"] + \ + ", VDo, " + hd.valves.valves_status[ValvesEnum.VDO.name]["PosID"] + \ + ", VBT, " + '{:1d}'.format(hd.valves.hd_air_trap_status) + air = ", ADV, " + '{:1d}'.format(hd.air_bubbles.air_bubbles_status[0]) + \ + ", ULBl, " + '{:1d}'.format(hd.air_trap.lower_level) + \ + ", ULBu, " + '{:1d}'.format(hd.air_trap.upper_level) + pumpSetPts = ", BP.s, " + '{:4d}'.format(hd.bloodflow.target_blood_flow_rate) + \ + ", DPi.s, " + '{:4d}'.format(hd.dialysate_inlet_flow.target_dialysate_inlet_flow_rate) + \ + ", ROP.s, " + '{:9.2f}'.format(dg.ro_pump.target_pressure_psi) + \ + ", DRP.s, " + '{:9.2f}'.format(dg.drain_pump.target_drain_pump_rpm) + pumpMeasSpds = ", BP.m, " + '{:7.1f}'.format(hd.bloodflow.measured_blood_pump_speed) + \ + ", BP.m2, " + '{:7.1f}'.format(hd.bloodflow.get_measured_blood_pump_motor_controller_speed()) + \ + ", BP.r, " + '{:6.1f}'.format(hd.bloodflow.measured_blood_pump_rotor_speed) + \ + ", BP.f, " + '{:7.1f}'.format(hd.bloodflow.measured_blood_flow_rate) + \ + ", DPi.m, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.measured_dialysate_inlet_pump_speed) + \ + ", DPi.m2, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.get_measured_dialysate_inlet_pump_motor_controller_speed()) + \ + ", DPi.r, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.measured_dialysate_inlet_pump_rotor_speed) + \ + ", DPi.f, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.measured_dialysate_inlet_flow_rate) + \ + ", DPo.m, " + '{:7.1f}'.format(hd.dialysate_outlet_flow.measured_dialysate_outlet_pump_speed) + \ + ", DPo.m2, " + '{:7.1f}'.format(hd.dialysate_outlet_flow.get_measured_dialysate_outlet_pump_motor_controller_speed()) + \ + ", DPo.r, " + '{:6.1f}'.format(hd.dialysate_outlet_flow.measured_dialysate_outlet_pump_rotor_speed) + \ + ", FMD.f, " + '{:7.4f}'.format(dg.dialysate_flow_sensor.get_flow_rate()) + \ + ", ROP.f, " + '{:9.3f}'.format(dg.ro_pump.measured_flow_rate_lpm) + pumpPWMs = ", BP.w, "+'{:6.1f}'.format(hd.bloodflow.pwm_duty_cycle_pct) + \ + ", DPi.w, " + '{:6.1f}'.format(hd.dialysate_inlet_flow.pwm_duty_cycle_pct) + \ + ", DPo.w, " + '{:6.1f}'.format(hd.dialysate_outlet_flow.pwm_duty_cycle_pct) + \ + ", ROP.w, " + '{:6.1f}'.format(dg.ro_pump.pwm_duty_cycle_pct) + \ + ", DRP.w, " + '{:4d}'.format(dg.drain_pump.dac_value) + dgPress = ", PPi, " + '{:9.2f}'.format(dg.pressures.ro_pump_inlet_pressure) + \ + ", PPo, " + '{:9.2f}'.format(dg.pressures.ro_pump_outlet_pressure) + \ + ", PRd, " + '{:9.2f}'.format(dg.pressures.drain_pump_inlet_pressure) + \ + ", PDr, " + '{:9.2f}'.format(dg.pressures.drain_pump_outlet_pressure) + hdPress = ", PBA, " + '{:9.2f}'.format(hd.pressure_occlusion.arterial_pressure) + \ + ", PBV, " + '{:9.2f}'.format(hd.pressure_occlusion.venous_pressure) + \ + ", OB, " + '{:7d}'.format(hd.pressure_occlusion.blood_pump_occlusion) + Temps = ", TPi, " + '{:9.2f}'.format(dg.temperatures.temperatures[DGTemperaturesNames.INLET_PRIMARY_HEATER.name]) + \ + ", TPo, " + '{:9.2f}'.format(dg.temperatures.temperatures[DGTemperaturesNames.OUTLET_PRIMARY_HEATER.name]) + \ + ", TRo, " + '{:9.2f}'.format(dg.temperatures.temperatures[DGTemperaturesNames.INLET_DIALYSATE.name]) + \ + ", TDi, " + '{:9.2f}'.format(dg.temperatures.temperatures[DGTemperaturesNames.OUTLET_DIALYSATE_REDUNDANT.name]) + "," + alarms = ", AL.s, " + '{:1d}'.format(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) + \ @@ -84,18 +112,27 @@ ", 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) + htrs = (', Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Trimmer_DC, {:5.3f}, ' + 'Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, '. + format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.small_primary_heater_duty_cycle, + dg.heaters.trimmer_heater_duty_cycle, + dg.heaters.primary_heaters_target_temperature, dg.heaters.trimmer_heater_target_temperature)) - # log data + # 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(dgPress) f.write(alarms) f.write(accels) + f.write(hdPress) + f.write(Temps) + f.write(htrs) + f.write(air) f.write("\n") # print to console @@ -106,7 +143,11 @@ print("Pump Set Points: "+pumpSetPts) print(" Pump Speeds: "+pumpMeasSpds) print(" Pump PWMs/DACs: "+pumpPWMs) - print(" DG Pressures: "+dgPres) + print(" DG Pressures: "+dgPress) + print(" HD Pressures: "+hdPress) + print(" DG Heaters: "+htrs) + print(" Temperatures: "+Temps) + print(" Air: "+air) print(" Accelerometer: "+accels) print(" Alarms: "+alarms)