Index: dialin/common/dg_defs.py =================================================================== diff -u -r56bed6feb01a0f857cb78d0ba39aacc2e432fff4 -r2189886992bd1ad988432a15052d0469d30ad4cb --- dialin/common/dg_defs.py (.../dg_defs.py) (revision 56bed6feb01a0f857cb78d0ba39aacc2e432fff4) +++ dialin/common/dg_defs.py (.../dg_defs.py) (revision 2189886992bd1ad988432a15052d0469d30ad4cb) @@ -262,3 +262,7 @@ NUM_OF_EVENT_DATA_TYPES = 5 +@unique +class DGServiceModesStates(DialinEnum): + DG_SERVICE_STATE_START = 0 # Start service mode state + NUM_OF_DG_SERVICE_STATES = 1 # Number of service mode states \ No newline at end of file Index: dialin/common/hd_defs.py =================================================================== diff -u -rbb3d6e80efc730856e4409d9a2c61c31e6a0aa7e -r2189886992bd1ad988432a15052d0469d30ad4cb --- dialin/common/hd_defs.py (.../hd_defs.py) (revision bb3d6e80efc730856e4409d9a2c61c31e6a0aa7e) +++ dialin/common/hd_defs.py (.../hd_defs.py) (revision 2189886992bd1ad988432a15052d0469d30ad4cb) @@ -200,20 +200,20 @@ @unique class PreTreatmentDrySelfTestsStates(DialinEnum): - DRY_SELF_TESTS_START_STATE = 0 # Dry self-tests starting state - DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 # Wait for door to close before executing self-tests - DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE = 2 # Used cartridge check dry self-test state - DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE = 3 # Occlusion sensors dry self-test state - DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE = 4 # Pressure sensors dry self-test setup valves and pump state - DRY_SELF_TESTS_PRESSURE_SENSORS_PRESSURIZED_STATE = 5 # Pressure sensors verify pressure readings state - DRY_SELF_TESTS_PRESSURE_SENSORS_DECAY_STATE = 6 # Pressure sensors verify pressure loss state - DRY_SELF_TESTS_PRESSURE_SENSORS_STABILITY_STATE = 7 # Pressure sensors verify pressure stability state - DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE = 8 # Pressure sensors verify normal pressure readings state - DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE = 9 # Prime syringe pump state - DRY_SELF_TESTS_SYRINGE_PUMP_OCCLUSION_DETECTION_STATE = 10 # Occlusion detection state - DRY_SELF_TESTS_STOPPED_STATE = 11 # Dry self-test stopped state - DRY_SELF_TESTS_COMPLETE_STATE = 12 # Dry self-test complete state - NUM_OF_DRY_SELF_TESTS_STATES = 13 # Number of dry self-tests states + DRY_SELF_TESTS_START_STATE = 0 # Dry self-tests starting state + DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 # Wait for door to close before executing self-tests + DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE = 2 # Used cartridge check dry self-test state + DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE = 3 # Occlusion sensors dry self-test state + DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE = 4 # Pressure sensors dry self-test setup valves and pump state + DRY_SELF_TESTS_PRESSURE_SENSORS_PRESSURIZED_STATE = 5 # Pressure sensors verify pressure readings state + DRY_SELF_TESTS_PRESSURE_SENSORS_DECAY_STATE = 6 # Pressure sensors verify pressure loss state + DRY_SELF_TESTS_PRESSURE_SENSORS_STABILITY_STATE = 7 # Pressure sensors verify pressure stability state + DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE = 8 # Pressure sensors verify normal pressure readings state + DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE = 9 # Prime syringe pump state + DRY_SELF_TESTS_SYRINGE_PUMP_OCCLUSION_DETECTION_STATE = 10 # Occlusion detection state + DRY_SELF_TESTS_STOPPED_STATE = 11 # Dry self-test stopped state + DRY_SELF_TESTS_COMPLETE_STATE = 12 # Dry self-test complete state + NUM_OF_DRY_SELF_TESTS_STATES = 13 # Number of dry self-tests states @unique Index: dialin/common/msg_ids.py =================================================================== diff -u -r60299303c0465f4519217d1a26fd5404f0f8f067 -r2189886992bd1ad988432a15052d0469d30ad4cb --- dialin/common/msg_ids.py (.../msg_ids.py) (revision 60299303c0465f4519217d1a26fd5404f0f8f067) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 2189886992bd1ad988432a15052d0469d30ad4cb) @@ -7,8 +7,8 @@ # # @file msg_ids.py # -# @author (last) Sean Nash -# @date (last) 29-Jul-2022 +# @author (last) Dara Navaei +# @date (last) 04-Sep-2022 # @author (original) Peter Lucia # @date (original) 06-Apr-2021 # @@ -202,6 +202,8 @@ MSG_ID_DG_FLOW_SENSORS_DATA = 0xB3 MSG_ID_DG_RESPONSE_SERVICE_MODE_REQUEST = 0xB4 MSG_ID_HD_REQUEST_DG_ALARMS = 0xB5 + MSG_ID_HD_REQUEST_DG_SERVICE_MODE = 0xB6 + MSG_ID_DG_RTC_EPOCH = 0xB7 MSG_ID_CAN_ERROR_COUNT = 0x999 Index: dialin/hd/alarms.py =================================================================== diff -u -rc2596a85ec09eaf40003833a4f68fb07cca27522 -r2189886992bd1ad988432a15052d0469d30ad4cb --- dialin/hd/alarms.py (.../alarms.py) (revision c2596a85ec09eaf40003833a4f68fb07cca27522) +++ dialin/hd/alarms.py (.../alarms.py) (revision 2189886992bd1ad988432a15052d0469d30ad4cb) @@ -116,7 +116,7 @@ @return: (int) the current alarms state. """ - return self.alarms_state + return self.alarms_priority_state def get_alarm_states(self): """ Index: tests/dg_tests.py =================================================================== diff -u -r75d8984d2074be9262e4e78d9e10da4895cef0e5 -r2189886992bd1ad988432a15052d0469d30ad4cb --- tests/dg_tests.py (.../dg_tests.py) (revision 75d8984d2074be9262e4e78d9e10da4895cef0e5) +++ tests/dg_tests.py (.../dg_tests.py) (revision 2189886992bd1ad988432a15052d0469d30ad4cb) @@ -8,7 +8,7 @@ # @file dg_tests.py # # @author (last) Dara Navaei -# @date (last) 26-Jul-2022 +# @date (last) 04-Sep-2022 # @author (original) Dara Navaei # @date (original) 16-Jan-2022 # @@ -42,6 +42,7 @@ from dialin.dg.conductivity_sensors import ConductivitySensorsEnum from dialin.dg.voltages import DGMonitoredVoltages from dialin.hd.valves import HDValves +from dialin.hd.voltages import HDMonitoredVoltages from dialin.hd.pretreatment import PreTreatmentRsrvrState from time import sleep from datetime import datetime @@ -199,13 +200,15 @@ def get_heaters_info(): 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}, ' - 'Primary_calc_temp, {:5.3f}, Trimmer_calc_temp, {:5.3f}, Primary_volt, {:5.3f}, Trimmer_volt, {:5.3f}, ' + 'Primary_calc_temp, {:5.3f}, Trimmer_calc_temp, {:5.3f}, Primary_volt, {:5.3f}, Primary_sec_volt, {:5.3f},' + ' Trimmer_volt, {: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_calc_target_temperature, dg.heaters.trimmer_calc_target_temperature, dg.voltages.monitored_voltages[DGMonitoredVoltages.MONITORED_LINE_24V_PRIM_HTR_V.value], + dg.voltages.monitored_voltages[DGMonitoredVoltages.MONITORED_LINE_24V_PRIM_HTR_GND_V.value], dg.voltages.monitored_voltages[DGMonitoredVoltages.MONITORED_LINE_24V_TRIM_HTR_V.value])) return info @@ -241,13 +244,12 @@ 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}, ' + 'HD_Power_supply, {:5.3f}, HD_FPGA_temp, {:5.3f}, Venous_temp, {:5.3f}, ' 'Arterial_temp, {:5.3f}, RPM_time_offset, {}, ' .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], hd.temperatures.hd_temperatures[HDTemperaturesNames.TEMPSENSOR_ARTERIAL_PRESS_TEMP.name], hd.fans.rpm_alarm_time)) @@ -261,9 +263,10 @@ def get_concentrate_pumps_info(): - info = ('Bicarb_tgt_speed, {:5.3f}, Bicarb_speed, {:5.3f}, Acid_tgt_speed, {:5.3f}, Acid_speed, {:5.3f}, ' + info = ('Bicarb_curr_speed, {:5.3f}, Bicarb_speed, {:5.3f}, Acid_curr_speed, {:5.3f}, Acid_speed, {:5.3f}, ' 'CPo, {:5.3f}, CD1, {:5.3f}, CD2, {:5.3f}, CP1_state, {}, CP2_state, {}, CPi_status, {}, CPo_status, {}, ' - 'CD1_status, {}, CD2_status, {}, CP1_pulse, {:5.3f}, CP2_pulse, {:5.3f}, ' + 'CD1_status, {}, CD2_status, {}, CP1_pulse, {:5.3f}, CP2_pulse, {:5.3f}, Acid_tgt_speed, {:5.3f}, ' + 'Bicarb_tgt_speed, {: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, @@ -274,7 +277,9 @@ DGConcentratePumpsStates(dg.concentrate_pumps.concentrate_pump_cp2_current_state).name, dg.conductivity_sensors.cpi_sensor_status, dg.conductivity_sensors.cpo_sensor_status, dg.conductivity_sensors.cd1_sensor_status, dg.conductivity_sensors.cd2_sensor_status, - dg.concentrate_pumps.cp1_temp_pulse, dg.concentrate_pumps.cp2_temp_pulse)) + dg.concentrate_pumps.cp1_temp_pulse, dg.concentrate_pumps.cp2_temp_pulse, + dg.concentrate_pumps.concentrate_pump_cp1_target_speed, + dg.concentrate_pumps.concentrate_pump_cp2_target_speed)) return info @@ -290,9 +295,11 @@ def get_hd_pumps_info(): - info = ('DialIn_tgt_flow, {}, DialIn_meas_flow, {:5.3f}, ' + info = ('DialIn_tgt_flow, {}, DialIn_meas_flow, {:5.3f}, DialIn_current, {:5.3f}, DialOut_current, {:5.3f}, ' .format(hd.dialysate_inlet_flow.target_dialysate_inlet_flow_rate, - hd.dialysate_inlet_flow.measured_dialysate_inlet_flow_rate)) + hd.dialysate_inlet_flow.measured_dialysate_inlet_flow_rate, + hd.dialysate_inlet_flow.measured_dialysate_inlet_pump_mc_current, + hd.dialysate_outlet_flow.measured_dialysate_outlet_pump_mc_current)) return info @@ -311,6 +318,12 @@ return info +def get_voltages_info(): + info = ('HD_24, {:5.3f}, HD_24_regen, {:5.3f}, '. + format(hd.voltages.monitored_voltages[HDMonitoredVoltages.MONITORED_LINE_24V.value], + hd.voltages.monitored_voltages[HDMonitoredVoltages.MONITORED_LINE_24V_REGEN.value])) + return info + def run_dg(): counter = 1 timer = 0.1 @@ -384,11 +397,13 @@ counter = 1 start = False - sleep_time = 1 + sleep_time = 0.05 - #dg.heaters.cmd_heaters_broadcast_interval_override(50) - #sleep(1) - #dg.voltages.cmd_monitored_voltages_broadcast_interval_override(50) + dg.heaters.cmd_heaters_broadcast_interval_override(50) + sleep(1) + dg.voltages.cmd_monitored_voltages_broadcast_interval_override(50) + #dg.concentrate_pumps.cmd_concentrate_pump_broadcast_interval_override(50) + #sleep(0.5) try: while True: @@ -399,8 +414,8 @@ drain = get_drain_states_info() load_cell = get_load_cells_info() valves = get_dg_valves_states() - ro = get_ro_info() - new_ro = get_new_ro_info() + ro = str(0)#get_ro_info() + new_ro = str(0)#get_new_ro_info() temp = get_temperature_sensors_info() heaters = get_heaters_info() dg_fans = get_dg_fans_info() @@ -447,20 +462,29 @@ #hd.cmd_hd_software_reset_request() + hd.dialysate_inlet_flow.cmd_dialysate_inlet_flow_broadcast_interval_override(50) + sleep(1) + hd.dialysate_outlet_flow.cmd_dialysate_outlet_flow_broadcast_interval_override(50) + sleep(1) + hd.voltages.cmd_monitored_voltages_broadcast_interval_override(50) + try: while True: - sleep(1) + hd_run = get_hd_run_info() + pumps_info = get_hd_pumps_info() + voltages = get_voltages_info() + var = hd_run + pumps_info + voltages + '\r' + print(var) + f.write(var) + sleep(0.05) except KeyboardInterrupt: - events = hd.hd_events.get_hd_events(2, 0) - for event in events: - print(event) f.close() def run_heat_disinfect(): complete_counter = 1 f = open("/home/fw/projects/dialin/tests/Heat_disinfect.log", "w") - dg.hd_proxy.cmd_start_stop_dg_heat_disinfect() + #dg.hd_proxy.cmd_start_stop_dg_heat_disinfect() try: while True: @@ -651,13 +675,13 @@ #run_heat_disinfect() - # run_chemical_disinfect() + #run_chemical_disinfect() #run_dg() # cmd_set_disinfect_ui_screen() - #collect_treatment_data() + collect_treatment_data() #collect_hd_treatment() @@ -669,16 +693,24 @@ # print(get_new_ro_info(), get_ro_info()) # sleep(1) - # test_dg_fans_alarms() + #while True: + # print(dg.rtc.get_rtc_epoch(), hd.rtc.get_rtc_epoch()) + # sleep(1) + #test_dg_fans_alarms() + #test_dvt_drain_pump() - test_conc_pumps() + #test_conc_pumps() #ui = HDSimulator() #ui.cmd_send_hd_operation_mode(3, 1) #test_hd_valves() + #while True: + # print(get_heaters_info()) + # sleep(1) + #dg.ro_pump.cmd_set_ro_flow_rate(0.6)