Index: tests/dg_heat_and_chemical_disinfect_test.py =================================================================== diff -u -r5400dea744738a3fed51b246038c93ebffcd914a -r51548ed75c78df9665dcb2188c0445ceb91d09e0 --- tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 5400dea744738a3fed51b246038c93ebffcd914a) +++ tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 51548ed75c78df9665dcb2188c0445ceb91d09e0) @@ -23,12 +23,16 @@ from dialin.dg.chemical_disinfect import ChemCancellationModes from dialin.dg.drain_pump import DrainPumpStates from dialin.dg.thermistors import ThermistorsNames -from dialin.dg.temperature_sensors import TemperatureSensorsNames +from dialin.dg.temperatures import DGTemperaturesNames from dialin.dg.dialysate_generator import DGOperationModes from dialin.hd.temperatures import HDTemperaturesNames +from dialin.dg.uv_reactors import ReactorsNames from dialin.common.hd_defs import HDOpModes, HDOpSubModes from dialin.common.dg_defs import DGEventList from dialin.common.hd_defs import HDEventList +from dialin.hd.reservoirs import HDReservoirStates +from dialin.dg.reservoirs import DGReservoirsNames +from dialin.common.alarm_defs import AlarmList from time import sleep from datetime import datetime import sys @@ -71,21 +75,46 @@ def get_hd_run_info(): - info = ('HD_op_mode, {}, HD_sub_mode, {}, Op, {}, Sub, {}, '.format(HDOpModes(hd.hd_operation_mode).name, - hd.hd_operation_sub_mode, - hd.hd_events.get_hd_events(HDEventList(1).value), - hd.hd_events.get_hd_events(HDEventList(2).value))) + info = ('HD_op_mode, {}, HD_sub_mode, {}, Top_alarm, {}, Target_UF_ml, {:5.3f}, Meas_UF_ml, {:5.3f}, ' + .format(HDOpModes(hd.hd_operation_mode).name, hd.hd_operation_sub_mode, hd.alarms.alarm_top, + hd.dialysate_outlet_flow.reference_dialysate_outlet_uf_volume, + hd.dialysate_outlet_flow.measured_dialysate_outlet_uf_volume)) return info +def get_hd_reservoirs_info(): + info = ('HD_rsrvr_state, {}, Active_rsrvr, {}, Active_rsrvr_uf, {:5.3f}, Active_rsrvr_vol_spent, {:5.3f}, ' + 'Dilution_level_pct, {:5.3f}, Recirc_level_pct, {:5.3f}, Time_depletion, {}, Time_wait_to_fill, {}, ' + 'Target_fill_flow, {:5.3f}, ' + .format(HDReservoirStates(hd.hd_reservoirs.reservoir_state).name, + DGReservoirsNames(dg.reservoirs.active_reservoir).name, hd.hd_reservoirs.active_reservoir_uf_ml, + hd.hd_reservoirs.active_reservoir_spent_vol_ml, hd.hd_reservoirs.dilution_level_pct, + hd.hd_reservoirs.recirculation_level_pct, hd.hd_reservoirs.time_depletion, + hd.hd_reservoirs.time_wait_to_fill, hd.hd_reservoirs.temp_remove_fill_flow)) + return info + + +def get_dg_reservoirs_info(): + info = ('Time_rsrvr_cycle, {}, Time_rsrvr_fill_2_switch, {}, Time_uf_decay, {:5.3f}, Temp_uf_fill, {:5.3f}, ' + 'Temp_rsrvr_use_actual, {:5.3f}, Temp_rsrvr_end_fill, {:5.3}, Temp_avg_fill, {:5.3f}, ' + 'Temp_last_fill, {:5.3f}, Time_rsrvr_fill, {:5.3f}, '.format(dg.reservoirs.time_reservoir_cycle, + dg.reservoirs.time_reservoir_fill_2_switch, + dg.reservoirs.time_uf_decay, dg.reservoirs.temp_uf_fill, + dg.reservoirs.temp_reservoir_use_actual, + dg.reservoirs.temp_reservoir_end_fill, dg.reservoirs.temp_avg_fill, + dg.reservoirs.temp_last_fill, dg.reservoirs.time_rsrvr_fill)) + return info + + def get_dg_run_info(): # info = ('DG_op_mode, {}, DG_sub_mode, {}, Op, {}, Sub, {}, '.format(DGOperationModes(dg.dg_operation_mode).name, # dg.dg_operation_sub_mode, # dg.events.get_dg_events(DGEventList(1).value, 3), # dg.events.get_dg_events(DGEventList(2).value, 3))) - info = ('DG_op_mode, {}, DG_sub_mode, {}, '.format(DGOperationModes(dg.dg_operation_mode).name, - dg.dg_operation_sub_mode)) + info = ('DG_op_mode, {}, DG_op_mode_num, {}, DG_sub_mode, {}, '.format(DGOperationModes(dg.dg_operation_mode).name, + dg.dg_operation_mode, + dg.dg_operation_sub_mode)) return info @@ -125,40 +154,42 @@ def get_ro_info(): - info = ('RO, {}, PPi, {:5.3f}, PPo, {:5.3f}, PWM, {:5.3f}, Flow, {:5.3f}, Tgt_flow, {:5.3f}, ' + info = ('RO, {}, PPi, {:5.3f}, PPo, {:5.3f}, PWM, {:5.3f}, Flow, {:5.3f}, Tgt_flow, {:5.3f}, Dia_flow, {:5.3f}, ' .format(dg.ro_pump.ro_pump_state, dg.pressures.ro_pump_inlet_pressure, dg.pressures.ro_pump_outlet_pressure, dg.ro_pump.pwm_duty_cycle_pct, - dg.ro_pump.measured_flow_rate_lpm, dg.ro_pump.target_flow_lpm)) + dg.ro_pump.measured_flow_rate_lpm, dg.ro_pump.target_flow_lpm, dg.dialysate_flow_sensor.flow_rate)) return info def get_heaters_with_no_temp_info(): - info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, ' + info = ('Pri_main_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, Trim_state, {}, ' '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.primary_heater_state, dg.heaters.trimmer_heater_duty_cycle, + format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.primary_heater_state, + dg.heaters.trimmer_heater_duty_cycle, dg.heaters.trimmer_heater_state, dg.heaters.primary_heaters_target_temperature, dg.heaters.trimmer_heater_target_temperature)) return info def get_heaters_info(): - info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, ' - 'Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, Primary_eff, {:5.3f}, '. - format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.small_primary_heater_duty_cycle, - dg.heaters.primary_heater_state, dg.heaters.trimmer_heater_duty_cycle, + info = ('Pri_main_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, Trimmer_state, {}, ' + 'Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, Primary_eff, {:5.3f}, Dia_flow, {:5.3f}, ' + 'Interim_int_temp, {:5.3f}, Heater_RO_flow, {:5.3f}, '. + format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.primary_heater_state, + dg.heaters.trimmer_heater_duty_cycle, dg.heaters.trimmer_heater_state, dg.heaters.primary_heaters_target_temperature, dg.heaters.trimmer_heater_target_temperature, - dg.heaters.primary_efficiency)) + dg.heaters.primary_efficiency, dg.heaters.temporary_remove_flow, + dg.heaters.temporary_internal_target, dg.heaters.temporary_target_ro_flow)) return info def get_temperature_sensors_info(): info = ('TPi, {:5.3f}, TPo, {:5.3f}, TD1, {:5.3f}, TD2, {:5.3f}, TRo, {:5.3f}, TDi, {:5.3f}, ' - .format(dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.INLET_PRIMARY_HEATER.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_PRIMARY_HEATER.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.CONDUCTIVITY_SENSOR_1.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.CONDUCTIVITY_SENSOR_2.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_DIALYSATE_REDUNDANT.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.INLET_DIALYSATE.name])) + .format(dg.temperatures.temperatures[DGTemperaturesNames.INLET_PRIMARY_HEATER.name], + dg.temperatures.temperatures[DGTemperaturesNames.OUTLET_PRIMARY_HEATER.name], + dg.temperatures.temperatures[DGTemperaturesNames.CONDUCTIVITY_SENSOR_1.name], + dg.temperatures.temperatures[DGTemperaturesNames.CONDUCTIVITY_SENSOR_2.name], + dg.temperatures.temperatures[DGTemperaturesNames.OUTLET_DIALYSATE_REDUNDANT.name], + dg.temperatures.temperatures[DGTemperaturesNames.INLET_DIALYSATE.name])) return info @@ -172,9 +203,9 @@ dg.thermistors.thermistors[ThermistorsNames.THERMISTOR_ONBOARD_NTC.name], dg.thermistors.thermistors[ThermistorsNames.THERMISTOR_POWER_SUPPLY_1.name], dg.thermistors.thermistors[ThermistorsNames.THERMISTOR_POWER_SUPPLY_2.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.FPGA_BOARD_SENSOR.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.LOAD_CELL_A1_B1.name], - dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.LOAD_CELL_A2_B2.name])) + dg.temperatures.temperatures[DGTemperaturesNames.FPGA_BOARD_SENSOR.name], + dg.temperatures.temperatures[DGTemperaturesNames.LOAD_CELL_A1_B1.name], + dg.temperatures.temperatures[DGTemperaturesNames.LOAD_CELL_A2_B2.name])) return info @@ -196,6 +227,19 @@ return info +def get_concentrate_pumps_info(): + + info = ('Bicarb_tgt_speed, {:5.3f}, Bicarb_speed, {:5.3f}, Acid_tgt_speed, {:5.3f}, Acid_speed, {:5.3f}, ' + 'CPo, {:5.3f}, CD1, {:5.3f}, CD2, {:5.3f}, ' + .format(dg.concentrate_pumps.concentrate_pump_cp2_current_set_speed, + dg.concentrate_pumps.concentrate_pump_cp2_measured_speed, + dg.concentrate_pumps.concentrate_pump_cp1_current_set_speed, + dg.concentrate_pumps.concentrate_pump_cp1_measured_speed, + dg.conductivity_sensors.conductivity_sensor_cpo, dg.conductivity_sensors.conductivity_sensor_cd1, + dg.conductivity_sensors.conductivity_sensor_cd2)) + return info + + def cmd_test_heaters(): f = open("/home/fw/projects/dialin/tests/test_heaters.log", "w") @@ -429,11 +473,13 @@ def collect_treatment_data(): f = open("/home/fw/projects/dialin/tests/treatment_run.log", "w") - dg.cmd_dg_software_reset_request() + #dg.cmd_dg_software_reset_request() try: while True: hd_run = get_hd_run_info() + hd_rsrvrs = get_hd_reservoirs_info() + dg_rsrvrs = get_dg_reservoirs_info() dg_run = get_dg_run_info() drain = get_drain_states_info() load_cell = get_load_cells_info() @@ -442,9 +488,10 @@ temp = get_temperature_sensors_info() heaters = get_heaters_info() dg_fans = get_dg_fans_info() + conc_pumps = get_concentrate_pumps_info() - var = str(datetime.now()) + ', ' + hd_run + dg_run + load_cell + drain + ro + temp + heaters + dg_fans + \ - valves + '\r' + var = str(datetime.now()) + ', ' + hd_run + dg_run + hd_rsrvrs + dg_rsrvrs + load_cell + drain + ro + \ + temp + heaters + conc_pumps + dg_fans + valves + '\r' print(var) f.write(var) @@ -575,19 +622,35 @@ # run_chemical_disinfect() - #run_dg() + # run_dg() # run_ro_pump_duty_cycles() # cmd_set_disinfect_ui_screen() # cmd_test_heaters() - # collect_treatment_data() + #collect_treatment_data() - collect_hd_treatment() + # collect_hd_treatment() + #hd.fans.cmd_fans_rpm_alarm_start_time_override(24, 59, reset=1) + #hd.fans.cmd_fans_rpm_override(0, 1200.0, reset=1) + #sleep(3) + #hd.fans.cmd_fans_rpm_override(0, 1200.0, reset=0) + #while True: + # print(hd.alarms.get_alarm_state(AlarmList.ALARM_ID_HD_FAN_RPM_OUT_OF_RANGE.value), hd.alarms.alarm_top, + # hd.alarms.alarm_conditions[AlarmList.ALARM_ID_HD_FAN_RPM_OUT_OF_RANGE.value]) + # sleep(1) + #dg.fans.cmd_fans_rpm_override(2, 5000) + #hd.rtc.cmd_set_rtc_time_and_date(25,52,16, 3,1, 2022) + + + + + +