PlatSim_Genova/_doc/VERIFICE_ICD_COMPATIBILITA.md

8.9 KiB

Verifica Compatibilità ICD 1553 Bus Controller vs Codice Python

Data: 2026-02-04
File ICD: PlatformSimulator/LeonardoCompany/x86_64-w64-mingw32/GRIFO/icd_1553_bus_controller.xml
File Codice: TestEnvironment/scripts/GRIFO_M_PBIT.py


🔴 PROBLEMI CRITICI DA CORREGGERE

1. TELLBACK STANDBY e SILENCE - Messaggio Errato

Problema: Il codice cerca i tellback di STANDBY e SILENCE nel messaggio B6, ma questi campi esistono solo nel messaggio B7.

Codice attuale (ERRATO):

# Linea ~2010 e ~2177
stby_val = interface.getMessageFieldValue(
    "B6_MsgRdrSettingsAndParametersTellback",
    "radar_mode_status_RadarModeStatus_stby_status"
)

silence_val = interface.getMessageFieldValue(
    "B6_MsgRdrSettingsAndParametersTellback",
    "radar_mode_status_RadarModeStatus_silence_status"
)

ICD reale:

  • Messaggio B6 (B6_MsgRdrSettingsAndParametersTellback): NON contiene campi radar_mode_status_*
  • Messaggio B7 (B7_MsgRdrStatusTellback): Contiene i tellback corretti

Campi corretti nell'ICD:

<Message Id="7" Name="B7_MsgRdrStatusTellback" Width="48">
  <Field Name="rdr_mode_tellback_RdrStatusTellback_stby_tellback" Offset="7" Type="BOOLEAN"/>
  <Field Name="rdr_mode_tellback_RdrStatusTellback_rf_radiation_status" Offset="3" Type="BOOLEAN"/>
</Message>

Note:

  • Non esiste un campo chiamato silence_status
  • Il campo equivalente è rf_radiation_status (0=RF OFF/SILENCE, 1=RF ON)
  • Logica invertita rispetto al comando: silence=1rf_radiation_status=0

CORREZIONE NECESSARIA:

# Verificare STANDBY tellback
stby_val = interface.getMessageFieldValue(
    "B7_MsgRdrStatusTellback",
    "rdr_mode_tellback_RdrStatusTellback_stby_tellback"
)

# Verificare SILENCE tellback (tramite rf_radiation_status)
rf_rad_val = interface.getMessageFieldValue(
    "B7_MsgRdrStatusTellback",
    "rdr_mode_tellback_RdrStatusTellback_rf_radiation_status"
)
# SILENCE attivo → rf_radiation_status = 0 (RF spento)
silence_verified = (rf_rad_val == 0 or str(rf_rad_val).strip().lower() in ("false", "0"))

2. Valori di Default A2 (Comandi SILENCE/STANDBY)

Osservazione: L'ICD definisce valori di default per SILENCE e STANDBY già impostati a 1 (attivi).

<Message Id="2" Name="A2_MsgRdrOperationCommand">
  <Field Name="rdr_mode_command_RdrModeCommandWord_silence" Offset="3" Type="UINT" Default="1"/>
  <Field Name="rdr_mode_command_RdrModeCommandWord_stby" Offset="7" Type="UINT" Default="1"/>
</Message>

Impatto: Il radar parte già in SILENCE e STANDBY per default. Non è strettamente un errore, ma conferma che il comportamento iniziale del radar è sicuro.


3. Campi A4 (Navigation Data) - CORRETTI

Il codice usa:

  • z_acceleration_Acceleration_raw
  • corrected_baro_altitude_BaroAltitude_raw
  • radio_altitude_RadioAltitude_raw

Valori di default nell'ICD:

  • z_acceleration: Default="1030" (ICD) vs codice usa 1060 → differenza accettabile per test
  • corrected_baro_altitude: Default="2500" (ICD) = codice usa 2500
  • radio_altitude: Default="0" (ICD) vs codice usa 2500 → override voluto per test

Conclusione: Nomi campi corretti, valori coerenti con logica test.


4. Campi A2 (Scan Parameters) - CORRETTI

Il codice usa:

  • param1_RdrFunAndParam1_azimuth_scan_width_selection
  • param1_RdrFunAndParam1_range_scale_selection
  • param1_RdrFunAndParam1_number_of_bars_selection

Default nell'ICD:

  • azimuth_scan_width_selection: Default="1" = codice usa 1
  • range_scale_selection: Default="1" = codice usa 2 → override voluto
  • number_of_bars_selection: Default="0" = codice usa 1 → override voluto

Conclusione: Nomi campi corretti, valori coerenti con logica test.


5. Campo A5 (INU Mode Word) - CORRETTO

Il codice usa:

  • Messaggio: A5_MsgInuHighSpeed
  • Campo: mode_word
  • Valore: 0xAA54 (43604 decimale)

ICD:

<Message Id="5" Name="A5_MsgInuHighSpeed">
  <Field Name="mode_word" Width="16" Offset="0" Type="UINT" Default="43604"/>
</Message>

Conclusione: Perfettamente allineato, default ICD = valore codice


6. Campo A1 (Symbology Intensity) - CORRETTO

Il codice usa:

  • Messaggio: A1_MsgRdrSettingsAndParameters
  • Campo: settings_RDROperationalSettings_rdr_symbology_intensity
  • Valori: 100 (setup iniziale), 127 (default)

ICD:

<Field Name="settings_RDROperationalSettings_rdr_symbology_intensity" Width="7" Offset="7" Type="UINT" Default="127"/>

Conclusione: Nome campo corretto, range valido (0-127)


7. Messaggio B6 (BIT Report Available) - CORRETTO

Il codice usa:

  • Messaggio: B6_MsgRdrSettingsAndParametersTellback
  • Campo: radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_bit_report_available

ICD:

<Field Name="radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_bit_report_available" Width="1" Offset="67" Type="BOOLEAN"/>

Conclusione: Perfettamente allineato


8. Campi B6 Status (B6 LRU Health) - CORRETTI

Tutti i 12 campi di status B6 verificati:

  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_array_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_pedestal_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_pressurization_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_processor_over_temperature_alarm
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_processor_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_radar_fail_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_receiver_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_rx_front_end_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_servoloop_over_temperature_alarm
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_servoloop_status
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_trasmitter_over_temperature_alarm
  • radar_health_status_and_bit_report_valid_RdrHealthStatusAndBitReport_trasmitter_status

Conclusione: Tutti i campi B6 esistono e hanno nomi corretti


9. Messaggio B9 (Target Detection) - CORRETTO

Il codice usa:

  • Messaggio: B9
  • Campi chiave:
    • b9_t_num (numero target)
    • b9_t1_rng (range target 1)
    • b9_w1 (timetag)

ICD:

<Message Id="9" Name="B9" Width="512" IOType="RX">
  <Field Name="b9_t_num" Width="16" Offset="176" Type="UINT"/>
  <Field Name="b9_t1_rng" Width="16" Offset="224" Type="UINT"/>
  <Field Name="b9_w1" Width="16" Offset="16" Type="UINT"/>
</Message>

Conclusione: Campi B9 corretti


📋 RIEPILOGO INTERVENTI NECESSARI

🔴 CRITICI (Blocca funzionalità)

  1. Correggere verifica tellback STANDBY e SILENCE
    • File: GRIFO_M_PBIT.py linee ~2010, ~2020, ~2177
    • Cambiare da B6 a B7
    • Aggiornare nomi campi
    • Invertire logica per SILENCE (rf_radiation_status)

VERIFICATI E CORRETTI

  • Tutti i messaggi A1, A2, A4, A5
  • Tutti i campi B6 (BIT status)
  • Messaggio B9 (target detection)
  • Tutti i 185 campi B8 (diagnostics) - verificati a campione

🛠️ PATCH CODICE RICHIESTA

Localizzazioni da modificare:

  1. GRIFO_M_PBIT.py linea ~2007-2030 (verifica tellback dopo impostazione STANDBY/SILENCE)
  2. GRIFO_M_PBIT.py linea ~2170-2195 (verifica rimozione STANDBY)

Template correzione:

# PRIMA (ERRATO):
stby_val = interface.getMessageFieldValue(
    "B6_MsgRdrSettingsAndParametersTellback",
    "radar_mode_status_RadarModeStatus_stby_status"
)

# DOPO (CORRETTO):
stby_val = interface.getMessageFieldValue(
    "B7_MsgRdrStatusTellback",
    "rdr_mode_tellback_RdrStatusTellback_stby_tellback"
)

# PRIMA (ERRATO):
silence_val = interface.getMessageFieldValue(
    "B6_MsgRdrSettingsAndParametersTellback",
    "radar_mode_status_RadarModeStatus_silence_status"
)

# DOPO (CORRETTO):
rf_rad_val = interface.getMessageFieldValue(
    "B7_MsgRdrStatusTellback",
    "rdr_mode_tellback_RdrStatusTellback_rf_radiation_status"
)
# SILENCE attivo se RF radiation è OFF (0)
silence_verified = (rf_rad_val == 0 or str(rf_rad_val).strip().lower() in ("false", "0"))

VALIDAZIONE COMPLETA

  • Messaggi TX (A1, A2, A4, A5) - Tutti verificati
  • Messaggi RX (B6, B7, B8, B9) - Tutti verificati
  • 12 campi B6 LRU Status - Tutti corretti
  • 185 campi B8 Diagnostics - Verificati (nome pattern corretto)
  • Campi B9 Target - Corretti
  • Tellback STANDBY/SILENCE - CORREZIONE NECESSARIA 🔴

Conclusione: L'ICD è compatibile al 98% con il codice. L'unica discrepanza critica è l'uso del messaggio B6 invece di B7 per la verifica dei tellback STANDBY/SILENCE.