MainCode/adalm1000_logger.py aktualisiert
Change _execute_phase() to accept charge_cutoff, discharge_cutoff Use the passed-in values instead of nonexistent self.parent.charge_cutoff Update function calls accordingly start_time synchronization (C und D)
This commit is contained in:
parent
e9799c17de
commit
ba583337bb
@ -35,13 +35,8 @@ class MeasurementThread(QThread):
|
|||||||
error_signal = pyqtSignal(str)
|
error_signal = pyqtSignal(str)
|
||||||
status_signal = pyqtSignal(str)
|
status_signal = pyqtSignal(str)
|
||||||
|
|
||||||
def __init__(self, device: object, interval: float = 0.1):
|
def __init__(self, device: object, interval: float = 0.1, start_time: float = None):
|
||||||
"""Initialize measurement thread.
|
"""Initialize measurement thread."""
|
||||||
|
|
||||||
Args:
|
|
||||||
device: ADALM1000 device object
|
|
||||||
interval: Measurement interval in seconds
|
|
||||||
"""
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.device = device
|
self.device = device
|
||||||
self.interval = max(0.05, interval) # Minimum interval
|
self.interval = max(0.05, interval) # Minimum interval
|
||||||
@ -156,7 +151,7 @@ class TestSequenceThread(QThread):
|
|||||||
cycle = self.parent.cycle_count
|
cycle = self.parent.cycle_count
|
||||||
|
|
||||||
# Charge phase
|
# Charge phase
|
||||||
self._execute_phase("charge", test_current, charge_cutoff)
|
self._execute_phase("charge", test_current, charge_cutoff, discharge_cutoff, charge_cutoff)
|
||||||
if not self._running:
|
if not self._running:
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -166,7 +161,7 @@ class TestSequenceThread(QThread):
|
|||||||
break
|
break
|
||||||
|
|
||||||
# Discharge phase
|
# Discharge phase
|
||||||
self._execute_phase("discharge", test_current, discharge_cutoff)
|
self._execute_phase("discharge", test_current, discharge_cutoff, discharge_cutoff, charge_cutoff)
|
||||||
if not self.parent.continuous_mode:
|
if not self.parent.continuous_mode:
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -185,7 +180,7 @@ class TestSequenceThread(QThread):
|
|||||||
finally:
|
finally:
|
||||||
self._running = False
|
self._running = False
|
||||||
|
|
||||||
def _execute_phase(self, phase: str, current: float, target_voltage: float):
|
def _execute_phase(self, phase: str, current: float, target_voltage: float, discharge_cutoff: float, charge_cutoff: float):
|
||||||
"""Execute charge/discharge phase.
|
"""Execute charge/discharge phase.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -231,12 +226,10 @@ class TestSequenceThread(QThread):
|
|||||||
# Update capacity
|
# Update capacity
|
||||||
if phase == "charge":
|
if phase == "charge":
|
||||||
self.parent.charge_capacity += abs(self.parent.current_data[-1]) * delta_t / 3600
|
self.parent.charge_capacity += abs(self.parent.current_data[-1]) * delta_t / 3600
|
||||||
progress = (current_voltage - self.parent.discharge_cutoff) / \
|
progress = (current_voltage - discharge_cutoff) / (target_voltage - discharge_cutoff)
|
||||||
(target_voltage - self.parent.discharge_cutoff)
|
|
||||||
else:
|
else:
|
||||||
self.parent.capacity_ah += abs(self.parent.current_data[-1]) * delta_t / 3600
|
self.parent.capacity_ah += abs(self.parent.current_data[-1]) * delta_t / 3600
|
||||||
progress = (self.parent.charge_cutoff - current_voltage) / \
|
progress = (charge_cutoff - current_voltage) / (charge_cutoff - target_voltage)
|
||||||
(self.parent.charge_cutoff - target_voltage)
|
|
||||||
|
|
||||||
progress = max(0.0, min(1.0, progress))
|
progress = max(0.0, min(1.0, progress))
|
||||||
self.progress_updated.emit(progress, f"{phase.capitalize()}ing")
|
self.progress_updated.emit(progress, f"{phase.capitalize()}ing")
|
||||||
@ -693,6 +686,12 @@ class BatteryTester(QMainWindow):
|
|||||||
"""Start the measurement thread."""
|
"""Start the measurement thread."""
|
||||||
if self.measurement_thread is not None:
|
if self.measurement_thread is not None:
|
||||||
self.measurement_thread.stop()
|
self.measurement_thread.stop()
|
||||||
|
self.measurement_thread.wait(500)
|
||||||
|
|
||||||
|
self.measurement_thread = MeasurementThread(
|
||||||
|
device=self.dev,
|
||||||
|
interval=self.interval,
|
||||||
|
start_time=self.start_time
|
||||||
|
|
||||||
self.measurement_thread = MeasurementThread(self.dev, self.interval)
|
self.measurement_thread = MeasurementThread(self.dev, self.interval)
|
||||||
self.measurement_thread.update_signal.connect(self.update_measurements)
|
self.measurement_thread.update_signal.connect(self.update_measurements)
|
||||||
@ -999,7 +998,7 @@ class BatteryTester(QMainWindow):
|
|||||||
voltage_padding = 0.2
|
voltage_padding = 0.2
|
||||||
min_voltage = max(0, float(self.discharge_cutoff_input.text()) - voltage_padding)
|
min_voltage = max(0, float(self.discharge_cutoff_input.text()) - voltage_padding)
|
||||||
max_voltage = float(self.charge_cutoff_input.text()) + voltage_padding
|
max_voltage = float(self.charge_cutoff_input.text()) + voltage_padding
|
||||||
self.ax.set_ylim(min_voltage, max_volume)
|
self.ax.set_ylim(min_voltage, max_voltage)
|
||||||
|
|
||||||
self.canvas.draw()
|
self.canvas.draw()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user