Algoritmi per i simulatori delle variabili sonar

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Risorsa

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.

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)

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

  • 1A)  TL=LI+TSNLDT+DI
  • 2A) TL=120 dB+20 Log R+2α;R

in ciascuna di esse giocano variabili quali:

  • -Per la 1A) le variabili LI;NL;DT;DI
  • -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

LI (dB)=10 Log (Perd)+171.6 dove:

  • Pe = potenza elettrica destinata all'emissione
  • rd= rendimento elettroacustico (circa il 50% )

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

NL (dB)=20Log f 0.838+jss   dove:

  • f = frequenza
  • jss = variabile dipendente dallo stato del mare

La routine in VB per il calcolo di NL è :

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

DT (dB)=5Log (dBW/tc  ) dove:

  • d = variabile deducibile in base alle curve ROC stabilita la Priv. e Pfa.
  • BW = larghezza di banda del ricevitore
  • tc = durata dell'impulso di trasmissione

La routine in VB per il calcolo del DT è :

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

DI (dB)=10Log [12.56Sup/(1530/f)2]   dove:

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

La routine in VB per il calcolo del DI è :

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

Secondo la formula di Thorp:

α=(0.1f2)/(1+f2)+(40f2)/(4100+f2)+(2.75f2)/10000   dove:

  • f= frequenza del segnale in kHz

La routine in VB per il calcolo di α   espressa in dB/km è :

 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

-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

-ROUTINE PER IL CALCOLO AUTOMATICO DI R-

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-

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)

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

  • 1P) TL=SLNLDT+DI+10Log BW
  • 2P) TL=60 dB+20Log R+αR


in ciascuna di esse giocano variabili quali:

  • Per la 1P) le variabili SL;NL;DT;DI;BW
  • 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

La routine in VB per il calcolo di SL è :

SL=jvel20 Log (fm1.1004) dove:

  • fm=(f1f2) media geometrica dei limiti di banda in kHz
  • jvel= variabile funzione della velocità del bersaglio


La routine in VB per il calcolo di SL è :

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

NL (dB)=20Log f 0.838+jss   dove:

  • f = frequenza
  • jss = variabile dipendente dallo stato del mare

La routine in VB per il calcolo di NL è :

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

DT=5Log [dBW/(2RC)]   dove:

  • d= variabile deducibile in base alle curve ROC stabilita la Priv. e Pfa.
  • BW= larghezza di banda del ricevitore (f2f1)
  • RC= costante di tempo dell'integratore

La routine in VB per il calcolo del DT   è :

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

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

DI (dB)=10Log [12.56Sup/(1530/f)2]   dove:

  • Sup= superficie della proiezione della base su di un piano verticale
  • f=(f1f2) media geometrica dei limiti di banda in kHz

La routine in VB per il calcolo del DI è :

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

10LogBW=10Log (f2f1)   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

Secondo la formula di Thorp:

α=(0.1f2)/(1+f2)+(40f2)/(4100+f2)+(2.75f2)/10000   dove:

  • f=(f1f2) frequenza media geometrica della frequenze della banda del ricevitore kHz

La routine in VB per il calcolo di α   espressa in dB/km è :

 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

-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

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

  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

  • 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