update logger with simulator

This commit is contained in:
VALLONGOL 2025-09-30 12:15:27 +02:00
parent 96279fb220
commit 0222b0e377
2 changed files with 40 additions and 19 deletions

View File

@ -422,9 +422,9 @@ class App(tk.Tk):
report = []
max_range = radar_math.calculate_max_unambiguous_range(radar_cfg.prf)
max_vel = radar_math.calculate_max_unambiguous_velocity(radar_cfg.carrier_frequency, radar_cfg.prf)
report.append(f"--- Radar Configuration Analysis ---")
report.append("--- Radar Configuration Analysis ---")
report.append(f"Max Unambiguous Range: {max_range:,.0f} m")
report.append(f"Max Unambiguous Velocity: b1{max_vel:,.1f} m/s")
report.append(f"Max Unambiguous Velocity: +/-{max_vel:,.1f} m/s")
report.append(f"Current Antenna Azimuth: {current_az_deg:,.1f} deg")
if radar_cfg.scan_config.mode != 'staring' and radar_cfg.scan_config.scan_speed_deg_s > 0:
dwell_time = radar_math.calculate_dwell_time(radar_cfg.antenna_config.beamwidth_az_deg, radar_cfg.scan_config.scan_speed_deg_s)
@ -433,7 +433,7 @@ class App(tk.Tk):
report.append(f"Calculated Pulses on Target: {pulses_on_target:,}")
if pulses_on_target < self.vars["num_pulses_cpi"].get():
report.append("WARNING: Pulses per CPI > Pulses on Target")
report.append(f"\n--- Target Analysis ---")
report.append("\n--- Target Analysis ---")
if not targets:
report.append("No targets defined.")
else:
@ -453,29 +453,50 @@ class App(tk.Tk):
beamwidth = self.vars["beamwidth_az_deg"].get()
scan_mode = self.vars["scan_mode"].get()
scan_speed = self.vars["scan_speed_deg_s"].get()
if prf > 0:
pri = 1.0 / prf
pulse_width = pri * (duty_cycle / 100.0)
self.vars["pulse_width_text"].set(f"Pulse Width: {pulse_width * 1e6:,.2f} µs")
self.vars["listening_time_text"].set(f"Listening Window: {pri * 1e6:,.2f} µs (Max Range Time)")
else:
self.vars["pulse_width_text"].set("Pulse Width: N/A (PRF is zero)")
self.vars["listening_time_text"].set("Listening Window: N/A (PRF is zero)")
max_range = radar_math.calculate_max_unambiguous_range(prf)
max_vel = radar_math.calculate_max_unambiguous_velocity(carrier_freq, prf)
if np.isinf(max_range):
self.vars["max_range_text"].set("Max Unambiguous Range: Infinite (PRF is zero)")
else:
self.vars["max_range_text"].set(f"Max Unambiguous Range: {max_range:,.0f} m")
self.vars["max_velocity_text"].set(f"Max Unambiguous Velocity: b1{max_vel:, .1f} m/s")
if scan_mode == 'staring':
max_vel = radar_math.calculate_max_unambiguous_velocity(carrier_freq, prf)
if np.isinf(max_vel):
self.vars["max_velocity_text"].set("Max Unambiguous Velocity: Infinite (carrier freq is zero)")
else:
self.vars["max_velocity_text"].set(f"Max Unambiguous Velocity: +/-{max_vel:,.1f} m/s")
if scan_mode == 'staring' or scan_speed <= 0:
self.vars["dwell_time_text"].set("Dwell Time: N/A (Staring)")
self.vars["pulses_on_target_text"].set("Pulses on Target: N/A (Staring)")
else:
dwell_time = radar_math.calculate_dwell_time(beamwidth, scan_speed)
pulses_on_target = radar_math.calculate_pulses_on_target(dwell_time, prf)
if np.isinf(dwell_time):
self.vars["dwell_time_text"].set("Dwell Time: Infinite (Scan Speed is zero)")
self.vars["pulses_on_target_text"].set("Pulses on Target: Infinite")
else:
self.vars["dwell_time_text"].set(f"Dwell Time: {dwell_time * 1e3:,.2f} ms")
self.vars["pulses_on_target_text"].set(f"Pulses on Target: {pulses_on_target:,}")
self.check_target_warnings()
self._update_scan_info_text()
except (tk.TclError, ValueError, ZeroDivisionError): pass
except (tk.TclError, ValueError) as e:
self.log.error(f"Error updating derived parameters: {e}")
def _update_scan_info_text(self):
mode = self.vars['scan_mode'].get()
if mode == 'staring': self.vars['scan_info_text'].set("Mode: Staring")
if mode == 'staring':
self.vars['scan_info_text'].set("Mode: Staring")
else:
min_az, max_az, speed = self.vars['min_az_deg'].get(), self.vars['max_az_deg'].get(), self.vars['scan_speed_deg_s'].get()
self.vars['scan_info_text'].set(f"Mode: Sector Scan\nAz: [{min_az}°, {max_az}°] @ {speed}°/s")
@ -492,8 +513,8 @@ class App(tk.Tk):
target_initial_range = np.linalg.norm(values[0:3])
if target_initial_range > 0: target_radial_vel = np.dot(values[3:6], values[0:3] / target_initial_range)
else: target_radial_vel = 0
if target_initial_range > max_range: range_warning = True
if abs(target_radial_vel) > max_vel: vel_warning = True
if not np.isinf(max_range) and target_initial_range > max_range: range_warning = True
if not np.isinf(max_vel) and abs(target_radial_vel) > max_vel: vel_warning = True
self.max_range_label.config(foreground='orange' if range_warning else 'black')
self.max_velocity_label.config(foreground='orange' if vel_warning else 'black')
except (tk.TclError, ValueError, ZeroDivisionError):

View File

@ -1,4 +1,4 @@
# FlightMonitor/utils/logger.py
# scenario_simulator/utils/logger.py
import logging
import logging.handlers # For RotatingFileHandler
import tkinter as tk