update logger with simulator
This commit is contained in:
parent
96279fb220
commit
0222b0e377
@ -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)")
|
||||
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)
|
||||
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")
|
||||
|
||||
max_vel = radar_math.calculate_max_unambiguous_velocity(carrier_freq, prf)
|
||||
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':
|
||||
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)
|
||||
self.vars["dwell_time_text"].set(f"Dwell Time: {dwell_time * 1e3:, .2f} ms")
|
||||
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):
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# FlightMonitor/utils/logger.py
|
||||
# scenario_simulator/utils/logger.py
|
||||
import logging
|
||||
import logging.handlers # For RotatingFileHandler
|
||||
import tkinter as tk
|
||||
|
||||
Loading…
Reference in New Issue
Block a user