Skip to content
Snippets Groups Projects
Commit 510efe85 authored by Martin Killenberg's avatar Martin Killenberg
Browse files

refactor phase and magnitude simulation

Currently only sensitive to temperature changes. This is to prepare for humidity simulation.
parent 073119df
No related branches found
No related tags found
No related merge requests found
......@@ -24,12 +24,12 @@ class VnaDummy:
self.result_format = 'SDAT'
self.simulated_power = '10.dBm'
self.simulated_frequency = '10.MHz'
self.simulated_magnitude = 0.7
self.simulated_phase = 70
self.simulated_magnitude_difference_temp = 0.0
self.simulated_phase_difference_temp = 0.0
self.simulated_state = shared_simulated_state.get_simulated_state()
self.last_simulated_time = self.simulated_state.simulated_time
self.tau_mag = 25
self.tau_phase = 35
self.tau_mag_temp = 25
self.tau_phase_temp = 35
self.reference_magnitude = 0.7 # at reference temp and reference hum
self.reference_phase = 70 # at reference temp and reference hum
self.reference_temp = 25
......@@ -44,23 +44,26 @@ class VnaDummy:
def simulate_magnitude(self):
target_magnitude = self.reference_magnitude - self.magnitude_slope * \
(self.simulated_state.simulated_temperature - self.reference_temp)
delta_magnitude = target_magnitude - self.simulated_magnitude
new_time = self.simulated_state.simulated_time
delta_time = new_time - self.last_simulated_time
target_magnitude_difference_temp = -1. * self.magnitude_slope * \
(self.simulated_state.simulated_temperature - self.reference_temp)
delta_magnitude = target_magnitude_difference_temp - self.simulated_magnitude_difference_temp
self.simulated_magnitude = self.simulated_magnitude+delta_magnitude*(1-(math.exp(-1.*delta_time/self.tau_mag)))
delta_time = self.simulated_state.simulated_time - self.last_simulated_time
self.simulated_magnitude_difference_temp = self.simulated_magnitude_difference_temp + \
delta_magnitude * \
(1 - (math.exp(-1. * delta_time / self.tau_mag_temp)))
def simulate_phase(self):
target_phase = self.reference_phase + self.phase_slope * \
(self.simulated_state.simulated_temperature - self.reference_temp)
delta_phase = target_phase - self.simulated_phase
new_time = self.simulated_state.simulated_time
delta_time = new_time - self.last_simulated_time
target_phase_difference_temp = self.phase_slope * \
(self.simulated_state.simulated_temperature - self.reference_temp)
delta_phase = target_phase_difference_temp - self.simulated_phase_difference_temp
delta_time = self.simulated_state.simulated_time - self.last_simulated_time
self.simulated_phase = self.simulated_phase + delta_phase*(1 - (math.exp(-1. * delta_time/self.tau_phase)))
self.simulated_phase_difference_temp = self.simulated_phase_difference_temp + \
delta_phase * (1 - (math.exp(-1. * delta_time / self.tau_phase_temp)))
def get_tupple_of_current_traces(self):
"""
......@@ -92,15 +95,18 @@ class VnaDummy:
def set_sweep_mode(self, mode):
return '1'
def get_measurement_string(self, trace, result_format):
if trace not in self.simulated_traces:
raise Exception('trace '+trace+' is not known to VNA dummy!')
raise Exception('trace ' + trace + ' is not known to VNA dummy!')
self.result_format = result_format
phase_radian = self.simulated_phase / 180. * math.pi
real_val = self.simulated_magnitude * math.cos(phase_radian)
imaginary_val = self.simulated_magnitude * math.sin(phase_radian)
simulated_magnitude = self.reference_magnitude + self.simulated_magnitude_difference_temp
simulated_phase = self.reference_phase + self.simulated_phase_difference_temp
phase_radian = simulated_phase / 180. * math.pi
real_val = simulated_magnitude * math.cos(phase_radian)
imaginary_val = simulated_magnitude * math.sin(phase_radian)
measurment_string = ' '
for i in range(50):
......@@ -124,5 +130,3 @@ class VnaDummy:
def do_single_sweep(self):
pass
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment