diff --git a/Python_script/VNA_dummy.py b/Python_script/VNA_dummy.py index 488477da221411ea85bbc0dfcf2aae0230146879..69260881b8b9cf1149e6f02f12ea365906f370a3 100644 --- a/Python_script/VNA_dummy.py +++ b/Python_script/VNA_dummy.py @@ -26,15 +26,22 @@ class VnaDummy: self.simulated_frequency = '10.MHz' self.simulated_magnitude_difference_temp = 0.0 self.simulated_phase_difference_temp = 0.0 + self.simulated_magnitude_difference_hum = 0.0 + self.simulated_phase_difference_hum = 0.0 self.simulated_state = shared_simulated_state.get_simulated_state() self.last_simulated_time = self.simulated_state.simulated_time - self.tau_mag_temp = 25 - self.tau_phase_temp = 35 + self.tau_mag_temp = 25 # change rate of magnitude in dependence on temperature + self.tau_phase_temp = 35 # change rate of phase in dependence on temperature + self.tau_mag_hum = 250 # change rate of magnitude in dependence on humidity + self.tau_phase_hum = 350 # change rate of phase in dependence on humidity 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 - self.magnitude_slope_temp = 0.02 + self.reference_hum = 35 + self.magnitude_slope_temp = -0.02 + self.magnitude_slope_hum = -0.018 self.phase_slope_temp = 0.1 + self.phase_slope_hum = -0.15 self.communication_delay = 0.2 def run_simulation(self): @@ -44,26 +51,41 @@ class VnaDummy: def simulate_magnitude(self): - target_magnitude_difference_temp = -1. * self.magnitude_slope_temp * \ + target_magnitude_difference_temp = self.magnitude_slope_temp * \ (self.simulated_state.simulated_temperature - self.reference_temp) - delta_magnitude = target_magnitude_difference_temp - self.simulated_magnitude_difference_temp + delta_magnitude_temp = target_magnitude_difference_temp - self.simulated_magnitude_difference_temp + + target_magnitude_difference_hum = self.magnitude_slope_hum * \ + (self.simulated_state.simulated_humidity - self.reference_hum) + delta_magnitude_hum = target_magnitude_difference_hum - self.simulated_magnitude_difference_hum delta_time = self.simulated_state.simulated_time - self.last_simulated_time self.simulated_magnitude_difference_temp = self.simulated_magnitude_difference_temp + \ - delta_magnitude * \ + delta_magnitude_temp * \ (1 - (math.exp(-1. * delta_time / self.tau_mag_temp))) + self.simulated_magnitude_difference_hum = self.simulated_magnitude_difference_hum + \ + delta_magnitude_hum * \ + (1 - (math.exp(-1. * delta_time / self.tau_mag_hum))) + def simulate_phase(self): target_phase_difference_temp = self.phase_slope_temp * \ (self.simulated_state.simulated_temperature - self.reference_temp) - delta_phase = target_phase_difference_temp - self.simulated_phase_difference_temp + delta_phase_temp = target_phase_difference_temp - self.simulated_phase_difference_temp + target_phase_difference_hum = self.phase_slope_hum * \ + (self.simulated_state.simulated_humidity - self.reference_hum) + delta_phase_hum = target_phase_difference_hum - self.simulated_phase_difference_hum delta_time = self.simulated_state.simulated_time - self.last_simulated_time self.simulated_phase_difference_temp = self.simulated_phase_difference_temp + \ - delta_phase * (1 - (math.exp(-1. * delta_time / self.tau_phase_temp))) + delta_phase_temp *\ + (1 - (math.exp(-1. * delta_time / self.tau_phase_temp))) + self.simulated_phase_difference_hum = self.simulated_phase_difference_hum + \ + delta_phase_hum *\ + (1 - (math.exp(-1. * delta_time / self.tau_phase_hum))) def get_tupple_of_current_traces(self): """ @@ -101,9 +123,10 @@ class VnaDummy: raise Exception('trace ' + trace + ' is not known to VNA dummy!') self.result_format = result_format - simulated_magnitude = self.reference_magnitude + self.simulated_magnitude_difference_temp - simulated_phase = self.reference_phase + self.simulated_phase_difference_temp - + simulated_magnitude = self.reference_magnitude + self.simulated_magnitude_difference_temp + \ + self.simulated_magnitude_difference_hum + simulated_phase = self.reference_phase + self.simulated_phase_difference_temp + \ + self.simulated_phase_difference_hum phase_radian = simulated_phase / 180. * math.pi real_val = simulated_magnitude * math.cos(phase_radian) imaginary_val = simulated_magnitude * math.sin(phase_radian)