Index: dialin/common/dg_defs.py =================================================================== diff -u -ra1ee274cb5cab5f83deae1c39efef89ee81289df -r4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64 --- dialin/common/dg_defs.py (.../dg_defs.py) (revision a1ee274cb5cab5f83deae1c39efef89ee81289df) +++ dialin/common/dg_defs.py (.../dg_defs.py) (revision 4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64) @@ -74,7 +74,7 @@ @unique -class HeatStates(DialinEnum): +class HeatDisinfectStates(DialinEnum): DG_HEAT_DISINFECT_STATE_START = 0 # Heat disinfect, start mode state DG_HEAT_DISINFECT_STATE_DRAIN_R1 = 1 # Heat disinfect, drain R1 state DG_HEAT_DISINFECT_STATE_DRAIN_R2 = 2 # Heat disinfect, drain R2 state Index: dialin/common/msg_ids.py =================================================================== diff -u -rf8d379027a25b5497de67aabfb1e11b5e4fd6cbc -r4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision f8d379027a25b5497de67aabfb1e11b5e4fd6cbc) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64) @@ -8,9 +8,9 @@ # @file msg_ids.py # # @author (last) Peter Lucia -# @date (last) 10-Jun-2021 +# @date (last) 15-Jun-2021 # @author (original) Peter Lucia -# @date (original) 10-Jun-2021 +# @date (original) 15-Jun-2021 # ############################################################################ from enum import unique @@ -272,13 +272,14 @@ MSG_ID_HD_ALARM_AUDIO_CURRENT_LG_OVERRIDE = 0X8055 MSG_ID_HD_ALARM_BACKUP_AUDIO_CURRENT_OVERRIDE = 0X8056 MSG_ID_HD_VALVES_CURRENT_OVERRIDE = 0X8057 - MSD_ID_HD_VALVES_POSITION_COUNT_OVERRIDE = 0x8058 + MSG_ID_HD_VALVES_POSITION_COUNT_OVERRIDE = 0x8058 MSG_ID_HD_SYRINGE_PUMP_STATUS_OVERRIDE = 0X8059 MSG_ID_HD_SYRINGE_PUMP_ENCODER_STATUS_OVERRIDE = 0X805A MSG_ID_HD_SYRINGE_PUMP_ADC_DAC_STATUS_OVERRIDE = 0X805B MSG_ID_HD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE = 0X805C MSG_ID_HD_BUBBLES_DATA_SEND_INTERVAL_OVERRIDE = 0X805D MSG_ID_HD_BUBBLE_STATUS_OVERRIDE = 0X805E + MSG_ID_HD_BLOOD_PRIME_VOLUME_OVERRIDE = 0X805F MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST = 0X8060 MSG_ID_HD_BLOOD_PRIME_SAFETY_VOLUME_OVERRIDE = 0X8061 MSG_ID_HD_SWITCHES_STATUS_OVERRIDE = 0X8062 @@ -288,6 +289,19 @@ MSG_ID_HD_TEMPERATURES_PUBLISH_INTERVAL_OVERRIDE = 0x8066 MSG_ID_HD_FANS_PUBLISH_INTERVAL_OVERRIDE = 0x8067 MSG_ID_HD_FANS_RPM_OVERRIDE = 0x8068 + MSG_ID_HD_RINSEBACK_VOLUME_OVERRIDE = 0x8069 + MSG_ID_HD_RINSEBACK_SAFETY_VOLUME_OVERRIDE = 0x806A + MSG_ID_HD_ALARM_STATUS_PUBLISH_INTERVAL_OVERRIDE = 0x806B + MSG_ID_HD_TREATMENT_TIME_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x806C + MSG_ID_HD_TREATMENT_RANGES_PUBLISH_INTERVAL_OVERRIDE = 0x806D + MSG_ID_HD_TREATMENT_STOP_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x806E + MSG_ID_HD_BLOOD_PRIME_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x806F + MSG_ID_HD_RINSEBACK_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x8070 + MSG_ID_HD_STANDBY_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x8071 + MSG_ID_HD_OP_MODE_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x8072 + MSG_ID_HD_PRE_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x8073 + MSG_ID_HD_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x8074 + MSG_ID_HD_POST_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x8075 MSG_ID_DG_TESTER_LOGIN_REQUEST = 0XA000 MSG_ID_DG_ALARM_STATE_OVERRIDE = 0XA001 MSG_ID_DG_WATCHDOG_TASK_CHECKIN_OVERRIDE = 0XA002 @@ -317,7 +331,7 @@ MSG_ID_DRAIN_PUMP_SET_DELTA_PRESSURE_OVERRIDE = 0XA01C MSG_ID_DG_SWITCHES_STATUS_OVERRIDE = 0XA01D MSG_ID_DG_SWITCHES_PUBLISH_INTERVAL_OVERRIDE = 0XA01E - MSG_ID___AVAILABLE_14 = 0XA01F + MSG_ID_DG_OP_MODE_PUBLISH_INTERVAL_OVERRIDE = 0XA01F MSG_ID___AVAILABLE_15 = 0XA020 MSG_ID___AVAILABLE_16 = 0XA021 MSG_ID_DG_SOFTWARE_RESET_REQUEST = 0XA022 Index: dialin/dg/hd_proxy.py =================================================================== diff -u -r09ddffcf1fa77d9fd8f24d4332da16321cd21159 -r4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64 --- dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision 09ddffcf1fa77d9fd8f24d4332da16321cd21159) +++ dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision 4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64) @@ -216,9 +216,9 @@ # 0 is to stop payload = integer_to_bytearray(0) message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, - message_id=MsgIds.MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD.value, + message_id=MsgIds.MSG_ID_START_STOP_PRIMARY_HEATER.value, payload=payload) - self.logger.debug("Stopping heat disinfection process") + self.logger.debug("Stopping primary heater") self.can_interface.send(message, 0) def cmd_sample_water(self, cmd: int) -> None: Index: dialin/hd/valves.py =================================================================== diff -u -ra1ee274cb5cab5f83deae1c39efef89ee81289df -r4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64 --- dialin/hd/valves.py (.../valves.py) (revision a1ee274cb5cab5f83deae1c39efef89ee81289df) +++ dialin/hd/valves.py (.../valves.py) (revision 4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64) @@ -36,26 +36,26 @@ @unique class ValvesPositions(DialinEnum): - VALVE_POSITION_A_INSERT_EJECT = 1 - VALVE_POSITION_B_OPEN = 2 - VALVE_POSITION_C_CLOSE = 3 + VALVE_POSITION_A_INSERT_EJECT = 1 + VALVE_POSITION_B_OPEN = 2 + VALVE_POSITION_C_CLOSE = 3 @unique class ValvesStates(DialinEnum): - VALVE_STATE_WAIT_FOR_POST = 0 - VALVE_STATE_HOMING_NOT_STARTED = 1 - VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE = 2 + VALVE_STATE_WAIT_FOR_POST = 0 + VALVE_STATE_HOMING_NOT_STARTED = 1 + VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE = 2 VALVE_STATE_HOMING_FIND_DEENERGIZED_EDGE = 3 - VALVE_STATE_IDLE = 4 - VALVE_STATE_IN_TRANSITION = 5 - VALVE_STATE_IN_BYPASS_MODE = 6 + VALVE_STATE_IDLE = 4 + VALVE_STATE_IN_TRANSITION = 5 + VALVE_STATE_IN_BYPASS_MODE = 6 @unique class AirTrapState(DialinEnum): STATE_CLOSED = 0 - STATE_OPEN = 1 + STATE_OPEN = 1 class HDValves(_AbstractSubSystem): @@ -368,7 +368,7 @@ return False @_publish(["valves_status", "hd_air_trap_status"]) - def _handler_hd_valves_sync(self, message:dict) -> None: + def _handler_hd_valves_sync(self, message: dict) -> None: """ Handles published HD valves data messages. HD valves data are captured for reference. Index: tests/dg_heat_and_chemical_disinfect_test.py =================================================================== diff -u -r09ddffcf1fa77d9fd8f24d4332da16321cd21159 -r4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64 --- tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 09ddffcf1fa77d9fd8f24d4332da16321cd21159) +++ tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 4e57fcb909cbabb6f08ab2cffd339e99a2fc2f64) @@ -1,18 +1,24 @@ -import sys -sys.path.append("..") from dialin.dg.dialysate_generator import DG +<<<<<<< HEAD from dialin.common.dg_defs import HeatStates, HeatDisinfectUIStates +======= +from dialin.hd.hemodialysis_device import HD +from dialin.common.dg_defs import HeatDisinfectStates, HeatDisinfectUIStates +>>>>>>> DEN-9480-dialysate-temperature-control from dialin.dg.heat_disinfect import HeatCancellationModes from dialin.common.dg_defs import ChemicalDisinfectStates, ChemDisinfectUIStates 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.dialysate_generator import DGOperationModes -from dialin.hd.hemodialysis_device import HD +from dialin.hd.temperatures import HDTemperaturesNames from time import sleep +from datetime import datetime +import sys +sys.path.append("..") def get_chemical_disinfect_mode_info(): @@ -46,7 +52,7 @@ 'R1_level, {:5.3f}, R2_level, {:5.3f}, Top_alarm, {}, UI_state, {} ' .format(HeatDisinfectStates(dg.heat_disinfect.heat_disinfect_state).name, dg.heat_disinfect.overall_elapsed_time, dg.heat_disinfect.state_elapsed_time, - dg.heat_disinfect.heat_disinfect_elapsed_time, dg.heat_disinfect.r1_level, + dg.heat_disinfect.heat_disinfect_count_down_time, dg.heat_disinfect.r1_level, dg.heat_disinfect.r2_level, hd.alarms.alarm_top, HeatDisinfectUIStates(dg.chemical_disinfect.chemical_disinfect_ui_state).name)) return info @@ -106,22 +112,30 @@ 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}, ' + '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, + 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_int_temp, {:5.3f}, Prim_CJ_temp, {:5.3f}, ' + info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Pri_state, {}, Pri_int_temp, {:5.3f}, Prim_CJ_temp, {:5.3f}, ' 'Prim_TC_temp, {:5.3f}, Trimmer_DC, {:5.3f}, Trim_int_temp, {:5.3f}, Trim_CJ_temp, {:5.3f}, ' - 'Trim_TC_temp, {:5.3f}, Prim_TC_raw, {:5.3f}, Prim_CJ_raw, {:5.3f}, Trimmer_TC_raw, {:5.3f}, ' - 'Trimmer_CJ_raw, {:5.3f}, Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, '. + 'Trim_TC_temp, {: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.primary_heater_state, dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.PRIMARY_HEATER_INTERNAL.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.PRIMARY_HEATER_COLD_JUNCTION.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.PRIMARY_HEATER_THERMOCOUPLE.name], dg.heaters.trimmer_heater_duty_cycle, dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.TRIMMER_HEATER_INTERNAL.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.TRIMMER_HEATER_COLD_JUNCTION.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.TRIMMER_HEATER_THERMOCOUPLE.name], - dg.temperature_sensors.primary_raw_thermo_couple, dg.temperature_sensors.primary_raw_cold_junc, - dg.temperature_sensors.trimmer_raw_thermo_couple, dg.temperature_sensors.trimmer_raw_cold_junc, dg.heaters.primary_heaters_target_temperature, dg.heaters.trimmer_heater_target_temperature)) return info @@ -138,86 +152,248 @@ return info -def get_fans_info(): +def get_dg_fans_info(): - info = ('Target_fans_DC, {:5.3f}, Inlet1_RPM, {:5.3f}, Outlet1_RPM, {:5.3f}, ' - 'Inlet2_RPM, {:5.3f}, Outlet2_RPM, {:5.3f}, Inlet3_RPM, {:5.3f}, Outlet3_RPM, {:5.3f}, Board_temp, {:5.3f},' - ' FPGA_temp, {:5.3f}, Load_cell_A1_B1, {:5.3f}, Load_cell_A2_B2, {:5.3f}, ' - .format(dg.fans.target_duty_cycle, dg.fans.inlet_1_rpm, dg.fans.inlet_2_rpm, dg.fans.inlet_2_rpm, + info = ('Target_fans_DC, {:5.3f}, Inlet1_RPM, {:5.3f}, Outlet1_RPM, {:5.3f}, Inlet2_RPM, {:5.3f}, ' + 'Outlet2_RPM, {:5.3f}, Inlet3_RPM, {:5.3f}, Outlet3_RPM, {:5.3f}, Board_temp, {:5.3f}, ' + 'Power_supply_1, {:5.3f}, Power_supply_2, {:5.3f}, FPGA_temp, {:5.3f}, Load_cell_A1_B1, {:5.3f}, ' + 'Load_cell_A2_B2, {:5.3f}, ' + .format(dg.fans.dg_fans_duty_cycle, dg.fans.inlet_1_rpm, dg.fans.inlet_2_rpm, dg.fans.inlet_2_rpm, dg.fans.outlet_2_rpm, dg.fans.inlet_3_rpm, dg.fans.outlet_3_rpm, 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])) return info -def run_dg(): +def get_hd_fans_info(): + info = ('HD_Fan_DC, {:5.3f}, Target_HD_RPM, {:5.3f}, Inlet1_RPM, {:5.3f}, HD_Board_temp, {:5.3f}, ' + 'HD_Power_supply, {:5.3f}, HD_FPGA_temp, {:5.3f}, PBA_ADC_temp, {:5.3f}, Venous_temp, {:5.3f}, ' + .format(hd.fans.duty_cycle, hd.fans.target_rpm, hd.fans.inlet_1_rpm, + hd.temperatures.hd_temperatures[HDTemperaturesNames.THERMISTOR_ONBOARD_NTC.name], + hd.temperatures.hd_temperatures[HDTemperaturesNames.THERMISTOR_POWER_SUPPLY_1.name], + hd.temperatures.hd_temperatures[HDTemperaturesNames.TEMPSENSOR_FPGA_BOARD.name], + hd.temperatures.hd_temperatures[HDTemperaturesNames.TEMPSENSOR_PBA_ADC_SENSOR.name], + hd.temperatures.hd_temperatures[HDTemperaturesNames.TEMPSENSOR_VENOUS_PRESS_TEMP.name])) + return info + + +def cmd_test_heaters(): + + f = open("/home/fw/projects/dialin/tests/test_heaters.log", "w") + + dg.hd_proxy.cmd_start_stop_dg() + sleep(0.1) + + try: + while True: + + """ + command = input() + + # s for stop the heaters + if command == 's': + dg.hd_proxy.cmd_stop_primary_heater() + # e for exit the run and close everything + elif command == 'e': + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + # c for change the flow rate and keep going + elif command == 'c': + pass + #TODO figure out the right command for this + """ + + dg_run = get_dg_run_info() + temperature = get_temperature_sensors_info() + heaters = get_heaters_info() + ro = get_ro_info() + + var = dg_run + temperature + heaters + ro + '\r' + + print(var) + f.write(var) + sleep(1) + + except KeyboardInterrupt: + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + + +def run_heaters(): counter = 1 timer = 1 sleep_time = 1 run_number = 1 - f = open("/home/fw/projects/dialin/tests/run_dg.log", "w") + f = open("/home/fw/projects/dialin/tests/run_heaters.log", "w") - """ - Set the broadcast to the fastest for studying a phenomenon - dg.valves.cmd_valve_broadcast_interval_override(50) - sleep(0.25) - dg.pressures.cmd_pressure_broadcast_interval_override(50) - sleep(0.25) - dg.drain_pump.cmd_drain_pump_data_broadcast_interval_override(50) - sleep(0.25) - dg.ro_pump.cmd_ro_pump_data_broadcast_interval_override(50) - sleep(0.25) - """ - dg.hd_proxy.cmd_start_stop_dg() sleep(0.1) try: while True: + try: + dg_run = get_dg_run_info() + temperature = get_temperature_sensors_info() + heaters = get_heaters_info() + ro = get_ro_info() + var = str(run_number) + ', ' + str(timer) + ', ' + dg_run + temperature + heaters + ro + '\r' + + print(var) + f.write(var) + sleep(sleep_time) + + except KeyboardInterrupt: + dg.hd_proxy.cmd_stop_primary_heater() + + except KeyboardInterrupt: + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + + +def run_dg(): + + counter = 1 + timer = 0.1 + sleep_time = 1 + run_number = 1 + recirc_delay = 1 + f = open("/home/fw/projects/dialin/tests/run_dg.log", "w") + + dg.hd_proxy.cmd_start_stop_dg() + sleep(0.1) + + try: + while True: dg_run = get_dg_run_info() temperature = get_temperature_sensors_info() - heaters = get_heaters_info() + heaters = get_heaters_with_no_temp_info() load_cell = get_load_cells_info() drain = get_drain_states_info() ro = get_ro_info() + fans = get_dg_fans_info() valves = get_dg_valves_states() - var = str(run_number) + ', ' + str(timer) + ', ' + dg_run + temperature + heaters + load_cell + drain + \ - ro + valves + '\r' + var = str(datetime.now()) + ', ' + str(run_number) + ', ' + str(recirc_delay) + ', ' + dg_run + \ + temperature + heaters + load_cell + drain + ro + fans + valves + '\r' print(var) f.write(var) - tpo = dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_PRIMARY_HEATER.name] - - if run_number > 3 and dg.dg_operation_sub_mode == 2: + if run_number > 5 and dg.dg_operation_sub_mode == 2: dg.hd_proxy.cmd_start_stop_dg(start=False) f.close() break elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ dg.dg_operation_sub_mode == 2 and counter == 1: - if timer == 1: - dg.hd_proxy.cmd_switch_reservoirs(reservoirID=1) - timer += 1 + if recirc_delay < 5: + recirc_delay += 1 + else: + if timer == 1: + dg.hd_proxy.cmd_switch_reservoirs(reservoirID=1) + timer += 1 - if timer > ((1/sleep_time) * 1): - timer = 1 + if timer > ((1/sleep_time) * 1): + timer = 1 + recirc_delay = 1 + counter += 1 + + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + dg.dg_operation_sub_mode == 2 and counter == 2: + dg.hd_proxy.cmd_drain(tare_load_cell=True) + counter += 1 + timer = 1 + + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + dg.dg_operation_sub_mode == 2 and counter == 3: + + timer += 1 + if timer > 4: + dg.hd_proxy.cmd_fill(volume=1700) counter += 1 elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + dg.dg_operation_sub_mode == 2 and counter == 4: + counter = 1 + run_number += 1 + + sleep(sleep_time) + + except KeyboardInterrupt: + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + pass + + +def run_ro_pump_duty_cycles(): + + counter = 1 + timer = 0.1 + sleep_time = 1 + run_number = 1 + recirc_delay = 1 + ro_dc = 10 + ro_dc_step = 5 + f = open("/home/fw/projects/dialin/tests/run_ro_pump.log", "w") + + dg.hd_proxy.cmd_start_stop_dg() + sleep(0.1) + dg.ro_pump.cmd_ro_pump_duty_cycle_pct(ro_dc) + sleep(0.1) + + try: + while True: + dg_run = get_dg_run_info() + temperature = get_temperature_sensors_info() + heaters = get_heaters_with_no_temp_info() + load_cell = get_load_cells_info() + drain = get_drain_states_info() + ro = get_ro_info() + fans = get_dg_fans_info() + valves = get_dg_valves_states() + + var = str(datetime.now()) + ', ' + str(run_number) + ', ' + str(ro_dc) + ', ' + dg_run + \ + temperature + heaters + load_cell + drain + ro + fans + valves + '\r' + + print(var) + f.write(var) + + if ro_dc > 95 and dg.dg_operation_sub_mode == 2: + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + break + + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + dg.dg_operation_sub_mode == 2 and counter == 1: + + if recirc_delay < 1: + recirc_delay += 1 + else: + if timer == 1: + dg.hd_proxy.cmd_switch_reservoirs(reservoirID=1) + + timer += 1 + + if timer > ((1/sleep_time) * 1): + timer = 1 + recirc_delay = 1 + counter += 1 + + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ dg.dg_operation_sub_mode == 2 and counter == 2: dg.hd_proxy.cmd_drain(tare_load_cell=True) counter += 1 timer = 1 elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ - dg.dg_operation_sub_mode == 2 and counter == 3: #and tpo > 39.0: + dg.dg_operation_sub_mode == 2 and counter == 3: timer += 1 if timer > 4: @@ -228,12 +404,15 @@ dg.dg_operation_sub_mode == 2 and counter == 4: counter = 1 run_number += 1 + ro_dc += ro_dc_step + dg.ro_pump.cmd_ro_pump_duty_cycle_pct(ro_dc) sleep(sleep_time) except KeyboardInterrupt: dg.hd_proxy.cmd_start_stop_dg(start=False) f.close() + pass def run_heat_disinfect(): @@ -252,9 +431,10 @@ ro = get_ro_info() temp = get_temperature_sensors_info() heaters = get_heaters_info() - fans = get_fans_info() + dg_fans = get_dg_fans_info() + hd_fans = get_hd_fans_info() - var = disinfect + load_cell + drain + ro + temp + heaters + fans + valves + '\r' + var = disinfect + load_cell + drain + ro + temp + heaters + dg_fans + hd_fans + valves + '\r' print(var) f.write(var) @@ -296,7 +476,7 @@ ro = get_ro_info() temp = get_temperature_sensors_info() heaters = get_heaters_info() - fans = get_fans_info() + fans = get_dg_fans_info() var = disinfect + load_cell + conc + drain + ro + temp + heaters + fans + valves + '\r' @@ -340,13 +520,22 @@ hd.cmd_log_in_to_hd() sleep(1) - run_heat_disinfect() + #run_heat_disinfect() #run_chemical_disinfect() #run_dg() + run_ro_pump_duty_cycles() + #cmd_set_disinfect_ui_screen() + #cmd_test_heaters() + #dg.concentrate_pumps.cmd_concentrate_pump_state_change_request(0, 0) + #sleep(0.1) + #dg.concentrate_pumps.cmd_concentrate_pump_state_change_request(1, 0) + #dg.valves.cmd_valve_override(4, 0) + +