Algoritmi per i simulatori delle variabili sonar

A complemento di due lezioni relative alla materia al titolo: Sistemi di calcolo automatico per il sonar, dedicate alle simulazioni delle variabili per i sonar passivi (7^ Lezione) e attivi (10^ Lezione), sono illustrati nella presente gli algoritmi utilizzati per la realizzazione dei file eseguibili; dette variabili sono definite con algoritmi derivati dalla letteratura specializzata e tradotti in linguaggio Visual Basic per la realizzazione delle routine di calcolo.

lezione
lezione
Algoritmi per i simulatori delle variabili sonar
Tipo di risorsa Tipo: lezione
Materia di appartenenza Materia: Sistemi di calcolo automatico per il sonar

Ritenendo utile che gli utilizzatori dei file Sim.p.exe (per i sonar passivi) e Simatt.exe (per sonar attivi) debbano conoscere le formule in questi implementate nella pagina saranno mostrati i citati algoritmi accompagnati dalle routine di base compilate in VB.

I listati delle routine di calcolo sono utilizzabili singolarmente, a scopo d'esercitazione, una volta inseriti gli oggetti indicati [1] nei listati stessi.

Algoritmi utilizzati nella 10^ Lezione (sonar attivo) modifica

Le due equazioni del sonar attivo che consentono il calcolo della portata di scoperta   sono:

  • 1A)  
  • 2A) 

in ciascuna di esse giocano variabili quali:

  • -Per la 1A) le variabili  
  • -per la 2A) la variabile  

Le variabili indicate a loro volta sono funzioni di altre variabili così come di seguito riportato.

Equazione 1A) Livello indice modifica

  dove:

  •   = potenza elettrica destinata all'emissione
  •   rendimento elettroacustico (circa il   )

La routine in VB per il calcolo di LI è :

 Private Sub Command -- _Click()
'calcolo LI in funzione di Pe.W rend. = 50%
j = Val(Text --.Text) 'ingresso del valore di Pe
If j = 0 Then GoTo fine
LIa = 10 * Log(j / 2) / Log(10) + 171.6
LI = Format(LIa, "######.#")
Label --.Caption = LI
fine:
End Sub

Equazione 1 A) - Rumore del mare modifica

  dove:

  •   = frequenza
  •   = variabile dipendente dallo stato del mare

La routine in VB per il calcolo di   è :

Private Sub command -- _Click()
x = Val(Text --.Text)
Rem calcolo del livello spettrale del rumore del mare
db = 5
k = db / (20 * Log(2) / Log(10))
If x = 0 Then GoTo fine
Y = 20 * Log((x) ^ k) / Log(10)
If Combo --.Text = "SS=0" Then livdB = 55 - Y - 10.8 'per ss=0
If Combo --.Text = "SS=1/2" Then livdB = 55 - Y - 4.7 'per ss=1/2
If Combo --.Text = "SS=1" Then livdB = 55 - Y + 0 'per ss=1
If Combo --.Text = "SS=2" Then livdB = 55 - Y + 6.8 'per ss=2
If Combo --.Text = "SS=4" Then livdB = 55 - Y + 11.6 'per ss=4
If Combo --.Text = "SS=6" Then livdB = 55 - Y + 15 'per ss=6
Text --.Text = Format(livdB, "###.#")
Label --.Caption = Format(livdB, "###.#")
fine:
End Sub

Equazione 1 A) - Soglia di rivelazione in correlazione modifica

  dove:

  •   = variabile deducibile in base alle curve ROC stabilita la  
  •   = larghezza di banda del ricevitore
  •   = durata dell'impulso di trasmissione

La routine in VB per il calcolo del   è :

k = Val(Text --.Text) * 1000 'Frequenza di emissione
k1 = Val(Text--.Text) 'Banda del ricevitore
d = Val(Text -- .Text) 
tc = Val(Text -- .Text) 'durata impulso
DT = 5 * Log(d * k1 / (tc)) / Log(10)  'SOGLIA DI RIVELAZIONE IN CORRELAZ.

Equazione 1 A) - Guadagno di direttività della base cilindrica modifica

  dove:

  •   superficie della proiezione della base su di un piano verticale
  •   frequenza di lavoro

La routine in VB per il calcolo del   è :

F = Val(Text--.Text) 'freq in KHz
latoA = Val(Text--.Text) 'entra in cm
latoB = Val(Text--.Text) 'entra in cm
If latoA = 0 Then GoTo fine
If latoB = 0 Then GoTo fine
If F = 0 Then GoTo fine
landa = 1.53 / F
guad = 10 * Log((4 * 3.14 * (latoA / 100) * (latoB / 100)) / landa ^ 2) / Log(10)
Label--.Caption = Format(guad, "##.#")
fine:
End Sub

Equazione 2A) Attenuazione per assorbimento modifica

Secondo la formula di Thorp:

  dove:

  •   frequenza del segnale in  

La routine in VB per il calcolo di   espressa in   è :

 A = (0.1 * (f ^ 2)) / (1 + (f ^ 2)) + (40 * (f ^ 2)) / (4100 + (f ^ 2)) + (2.75 * (f) ^ 2) / 10000

Equazioni 1 A) e 2 A) Soluzione grafica della portata di scoperta modifica

-ROUTINE PER LA SELEZIONE DEL TIPO DI PROPAGAZIONE-

If Combo--.Text = "Sferica" Then hhh = 20
If Combo1--.Text = "Sfer.cil." Then hhh = 10

-ROUTINE GENERALE PER TRACCIARE LE CURVE-

TL = (SL + TS - NL + DI - DT)  'MAX ATTENUAZIONE CONSENTITA
For R = 0.1 To 50 Step 0.1
TLP = 120 + 2 * hhh * Log(R) / Log(10) + 2 * A * R 'equazione attenuazione f(R)
PSet (500 + 2 * 64.4 * R, 2 * 2240 - 11.2 * TLP), vbBlue
PSet (500 + 2 * 64.4 * R, 2 * 2240 - 11.2 * TL), vbRed
Next

Equazioni 1A) e 2A) Soluzione numerico-iterativa per il calcolo della portata di scoperta modifica

-ROUTINE PER IL CALCOLO AUTOMATICO DI  -

For R = 0.1 To 50 Step 0.001
TLP = 2 * (60 + hhh * Log(R) / Log(10) + A * R) 'equazione attenuazione f(R)
If Int(TLP) = Int(TL) Then distanza = R  'rivelazione distanza R
If Int(TLP) = Int(TL) Then perdita = TLP / 2 'rivelazione TLp per distanza R
Next
Label --.Caption = Format(distanza, "###.0")
fine:
Circle (500 + 2 * 64.4 * distanza, 2 * 2240 - 22.4 * perdita), 100, vbRed

Equazioni 1A 2A funzione di controllo -Monitoraggio della cavitazione- modifica

Private Sub cavitazione()
Label --.BackColor = vbGreen
latoA = Val(Text --.Text) 'entra in cm
latoB = Val(Text --.Text) 'entra in cm
sup = 3.14 * latoA * latoB
LI = Val(Text --.Text)
pacdB = LI - 172
Pac = 10 ^ (pacdB / 10)
If sup = 0 Or sup < 0 Then GoTo fine
If sup < 0.1 Then sup = 0.1
wmax = Pac / sup 'deve essere inferiore a 2.5 w/cmq
If wmax > 2.4 Then Label32.BackColor = vbRed
Label--.Caption = "* Pac./cmq = " + Format(wmax, "#.#") + ""
fine:
End Sub

Algoritmi utilizzati nella 7^ lezione (sonar passivo) modifica

Le due equazioni del sonar passivo che consentono il calcolo della portata di scoperta   sono:

  • 1P)  
  • 2P)  


in ciascuna di esse giocano variabili quali:

  • Per la 1P) le variabili  
  • Per la 2P) la variabile  

Le variabili indicate a loro volta sono funzioni di altre variabili così come di seguito riportato.

Equazione 1P) Livello della sorgente modifica

La routine in VB per il calcolo di   è :

  dove:

  •   media geometrica dei limiti di banda in kHz
  •   variabile funzione della velocità del bersaglio


La routine in VB per il calcolo di   è :

calcoloct()
Rem calcolo del livello spettrale del rumore emesso da un CT
X1 = Val(Text --.Text) 'freq. inferiore della banda
X2 = Val(Text --.Text) 'freq. superiore della banda
x = Sqr(X1 * X2) / 1000
If x = 0 Then GoTo fine
db = 6.67
k = db / (20 * Log(2) / Log(10))
Y = 20 * Log((x) ^ k) / Log(10)
If Combo --.Text = "10 nodi" Then livdB = 127.5 - Y 'per 10 nodi
If Combo --.Text = "15 nodi" Then livdB = 138 - Y 'per 15 nodi
If Combo --.Text = "20 nodi" Then livdB = 145.4 - Y 'per 20 nodi
If Combo --.Text = "25 nodi" Then livdB = 151.4 - Y 'per 25 nodi
Label --.Caption = Format(livdB, "###.#")
fine:
End Sub

Equazione 1P) Rumore del mare modifica

  dove:

  •   = frequenza
  •   = variabile dipendente dallo stato del mare

La routine in VB per il calcolo di   è :

Private Sub command -- _Click()
x = Val(Text --.Text)
Rem calcolo del livello spettrale del rumore del mare
db = 5
k = db / (20 * Log(2) / Log(10))
If x = 0 Then GoTo fine
Y = 20 * Log((x) ^ k) / Log(10)
If Combo --.Text = "SS=0" Then livdB = 55 - Y - 10.8 'per ss=0
If Combo --.Text = "SS=1/2" Then livdB = 55 - Y - 4.7 'per ss=1/2
If Combo --.Text = "SS=1" Then livdB = 55 - Y + 0 'per ss=1
If Combo --.Text = "SS=2" Then livdB = 55 - Y + 6.8 'per ss=2
If Combo --.Text = "SS=4" Then livdB = 55 - Y + 11.6 'per ss=4
If Combo --.Text = "SS=6" Then livdB = 55 - Y + 15 'per ss=6
Text --.Text = Format(livdB, "###.#")
Label --.Caption = Format(livdB, "###.#")
fine:
End Sub

Equazione 1P Soglia di rivelazione in correlazione modifica

  dove:

  •   variabile deducibile in base alle curve ROC stabilita la  
  •   larghezza di banda del ricevitore  
  •   costante di tempo dell'integratore

La routine in VB per il calcolo del   è :

 DT = 5 * Log  (d * BW / (2 * rc)) / Log(10)

Equazione 1P) - Guadagno di direttività della base cilindrica modifica

  dove:

  •   superficie della proiezione della base su di un piano verticale
  •   media geometrica dei limiti di banda in kHz

La routine in VB per il calcolo del   è :

F = Val(Text--.Text) 'freq in KHz
latoA = Val(Text--.Text) 'entra in cm
latoB = Val(Text--.Text) 'entra in cm
If latoA = 0 Then GoTo fine
If latoB = 0 Then GoTo fine
If F = 0 Then GoTo fine
landa = 1.53 / F
guad = 10 * Log((4 * 3.14 * (latoA / 100) * (latoB / 100)) / landa ^ 2) / Log(10)
Label--.Caption = Format(guad, "##.#")
fine:
End Sub

Equazione 1P Larghezza di banda espressa in dB modifica

  dove :

  • f1 = frequenza inferiore della banda
  • f2 = frequenza superiore della banda

La routine in VB per il calcolo è :

Bw = 10 * Log \ (f2-f1) / Log(10)

Equazione 2P) Attenuazione per assorbimento modifica

Secondo la formula di Thorp:

  dove:

  •   frequenza media geometrica della frequenze della banda del ricevitore  

La routine in VB per il calcolo di   espressa in   è :

 A = (0.1 * (f ^ 2)) / (1 + (f ^ 2)) + (40 * (f ^ 2)) / (4100 + (f ^ 2)) + (2.75 * (f) ^ 2) / 10000

Equazioni 1P) e 2P) Soluzione grafica della portata di scoperta modifica

-Routine per la selezione del tipo di propagazione-

If Combo --.Text = "Sferica" Then hhh = 20
If Combo --.Text = "Sfer.cil." Then hhh = 10

-Routine generale per tracciare le curve-

For R = 0.1 To 100 Step 0.1
TLP = (60 + hhh * Log(R) / Log(10) + a * R) 'equazione attenuazione f(R)
If TLP > 200 Then TLP = 200
PSet (500 + 64.4 * R, 500 + 2 * 2240 - 22.4 * TLP), vbBlue
PSet (500 + 64.4 * R, 500 + 2 * 2240 - 22.4 * TL), vbRed
Next

Equazioni 1P) e 2P) Soluzione numerico-iterativa per il calcolo della portata di scoperta modifica

For R = 0.1 To 500 Step 0.1
TLP = (60 + hhh * Log(R) / Log(10) + a * R) 'equazione attenuazione f(R)
If Int(TLP) = Int(TL) Then distanza = R  'rivelazione distanza R
If Int(TLP) = Int(TL) Then perdita = TLP 'rivelazione TLp per distanza R
Next
Label --.Caption = Int(distanza)
fine:
Circle (500 + 64.4 * distanza, 500 + 2 * 2240 - 22.4 * perdita), 100, vbRed

Note modifica

  1. Gli oggetti di Visual Basic nominati nelle routine sono ad esempio: j = Val(Text --.Text) dovranno pertanto essere nominati in base alla disposizione degli oggetti sostituendo i trattini -- con il numero distintivo di ciascun di questi.

Bibliografia modifica

  • Raytehon, Sonar Performance Calculator Submarine Signal Division, Portsmouth
  • Robert J. Urick, Principles of underwater sound, 3ª ed., Mc Graw – Hill, 1968.
  • Department of the Navy, Advanced Submarine Sonar Technology, Washington D.C., Napers 93084 Bureau of Naval Personnel, 1965.
  • C. Del Turco, La correlazione , Collana scientifica ed. Moderna La Spezia,1993