SONAR-INFO-p72




ALGORITMI PER I SIMULATORI DELLE VARIABILI SONAR


1)Sul contenuto della pagina

A complemento delle pagine p68 e p70 dedicate, rispettivamente, alle simulazioni delle variabili per i sonar attivi e passivi 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.exe (per sonar attivi) e Sim.p.exe (per i sonar passivi) debbano conoscere le formule in questi implementate nella pagina saranno mostrati i citati algoritmi accompagnati dalle routine di base compilate in VB.


2)Algoritmi utilizzati in p68 (sonar attivo) -è consigliata la lettura di p44-

Le due equazioni del sonar attivo che consentono il calcolo della portata di scoperta R sono:
1A) TL = LI + TS - NL - DT + 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 sotto riportato:

Equazione 1A)
LIVELLO INDICE
LI (dB) = 10 Log (Pe x rd) + 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 Command2_Click()
'calcolo LI in funzione di Pe.W rend. = 50%
j = Val(Text13.Text)
If j = 0 Then GoTo fine
LIa = 10 * Log(j / 2) / Log(10) + 171.6
LI = Format(LIa, "######.#")
Label37.Caption = LI
Text3.Text = LI
fine:
End Sub


RUMORE DEL MARE
NL(dB) = 20 x Log (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 command3_Click()
x = Val(Text1.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 Combo2.Text = "SS=0" Then livdB = 55 - Y - 10.8 'per ss=0
If Combo2.Text = "SS=1/2" Then livdB = 55 - Y - 4.7 'per ss=1/2
If Combo2.Text = "SS=1" Then livdB = 55 - Y + 0 'per ss=1
If Combo2.Text = "SS=2" Then livdB = 55 - Y + 6.8 'per ss=2
If Combo2.Text = "SS=4" Then livdB = 55 - Y + 11.6 'per ss=4
If Combo2.Text = "SS=6" Then livdB = 55 - Y + 15 'per ss=6
Text4.Text = Format(livdB, "###.#")
Label25.Caption = Format(livdB, "###.#")
fine:
End Sub


SOGLIA DI RIVELAZIONE IN CORRELAZIONE
DT(dB) = 5 x Log(d x BW / 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(Text1.Text) * 1000 'Ftx
k1 = Val(Text2.Text) 'Banda rx
d = Val(Text8.Text)
tc = Val(Text7.Text) 'durata impulso
DT = 5 * Log(d * k1 / (tc)) / Log(10)  'SOGLIA DI RIVELAZIONE IN CORRELAZ.


GUADAGNO DI DIRETTIVITA BASE CILINDRICA
DI(dB)= 10 Log [12.56 x Sup / (1530 / f)²] dove:
Sup = superficie della generatrice del cilindro
f = frequenza di lavoro

La routine in VB per il calcolo del DI è :
F = Val(Text1.Text) 'freq in KHz
latoA = Val(Text11.Text) 'entra in cm
latoB = Val(Text12.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)
Text5.Text = Format(guad, "###.#")
Label29.Caption = Format(guad, "##.#")
fine:
End Sub
 
 

Equazione 2A)
ATTENUAZIONE PER ASSORBIMENTO
α = (0.1 x f ²) / (1 + f ²) + (40 x f ²) / (4100 + f ²) + (2.75 x f ²) / 10000 dove:
f = frequenza del segnale
La routine in VB per il calcolo di α è :
k2 = k / 1000 'frequenza Tx in Khz
A = (0.1 * (k2 ^ 2)) / (1 + (k2 ^ 2)) + (40 * (k2 ^ 2)) / (4100 + (k2 ^ 2)) + (2.75 * (k2) ^ 2) / 10000


EQUAZIONI 1A) E 2A)
Soluzione grafica della portata di scoperta

-ROUTINE PER LA SELEZIONE DEL TIPO DI PROPAGAZIONE-
If Combo1.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
Label12.Caption = Format(distanza, "###.0")
fine:
Circle (500 + 2 * 64.4 * distanza, 2 * 2240 - 22.4 * perdita), 100, vbRed

FUNZIONE DI CONTROLLO
-Monitoraggio della cavitazione-
Private Sub cavitazione()
Label32.BackColor = vbGreen
latoA = Val(Text11.Text) 'entra in cm
latoB = Val(Text12.Text) 'entra in cm
sup = 3.14 * latoA * latoB
LI = Val(Text3.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
Label31.Caption = "* Pac./cmq = " + Format(wmax, "#.#") + ""
fine:
End Sub
 

3)Algoritmi utilizzati in p70 (sonar passivo) -è consigliata la lettura di p42-

Le due equazioni del sonar passivo che consentono il calcolo della portata di scoperta R sono:
1P) TL = SL - NL - DT + DI + 10 Log BW

2P) TL = 60 dB + 20 Log 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 sotto riportato:

Equazione 1P)
LIVELLO DELLA SORGENTE
La routine in VB per il calcolo di SL è :
SL = jvel - 20 Log (fm ^ 1.1004) dove:
fm = √(f1 x f2) media geometrica dei limiti di banda in KHz
jvel = variabile funzione della velocità del bersaglio
La routine in VB per il calcolo di SL è :

Sub calcoloct()
Rem calcolo del livello spettrale del rumore emesso da un CT
X1 = Val(Text1.Text)
X2 = Val(Text2.Text)
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 Combo3.Text = "10 nodi" Then livdB = 127.5 - Y 'per 10 nodi
If Combo3.Text = "15 nodi" Then livdB = 138 - Y 'per 15 nodi
If Combo3.Text = "20 nodi" Then livdB = 145.4 - Y 'per 20 nodi
If Combo3.Text = "25 nodi" Then livdB = 151.4 - Y 'per 25 nodi
Label19.Caption = Format(livdB, "###.#")
Text3.Text = Format(livdB, "###.#")
fine:
End Sub


RUMORE DEL MARE
NL(dB) = 20 x Log (fm^0.838) + jss dove:
fm = √(f1 x f2) media geometrica dei limiti di banda
jss = variabile dipendente dallo stato del mare

La routine in VB per il calcolo di NL è :
Private Sub command3_Click()
X1 = Val(Text1.Text)
X2 = Val(Text2.Text)
x = Sqr(X1 * X2) / 1000
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 Combo2.Text = "SS=0" Then livdB = 55 - Y - 10.8 'per ss=0
If Combo2.Text = "SS=1/2" Then livdB = 55 - Y - 4.7 'per ss=1/2
If Combo2.Text = "SS=1" Then livdB = 55 - Y + 0 'per ss=1
If Combo2.Text = "SS=2" Then livdB = 55 - Y + 6.8 'per ss=2
If Combo2.Text = "SS=4" Then livdB = 55 - Y + 11.6 'per ss=4
If Combo2.Text = "SS=6" Then livdB = 55 - Y + 15 'per ss=6
Text4.Text = Format(livdB, "###.#")
Label25.Caption = Format(livdB, "###.#")
fine:
End Sub


SOGLIA DI RIVELAZIONE IN CORRELAZIONE
DT = 5 Log[ d x BW / (2 RC)] dove:
d = variabile deducibile in base alle curve ROC stabilita la Priv. e Pfa.
BW = larghezza di banda del ricevitore (f2-f1)
RC = costante di tempo dell'integratore

La routine in VB per il calcolo del DT è :
 DT = 5 * Log(d * k1 / (2 * rc)) / Log(10)


GUADAGNO DI DIRETTIVITA BASE CILINDRICA
DI(dB)= 10 Log [12.56 x Sup / (1530 / fm)²] dove:
Sup = superficie della generatrice del cilindro
fm = √(f1 x f2) media geometrica dei limiti di banda

La routine in VB per il calcolo del DI è :
'freq in KHz
X1 = Val(Text1.Text)
X2 = Val(Text2.Text)
x = Sqr(X1 * X2) / 1000
If x = 0 Then GoTo fine
latoA = Val(Text11.Text) 'entra in cm
latoB = Val(Text12.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 / x
guad = 10 * Log((4 * 3.14 * (latoA / 100) * (latoB / 100)) / landa ^ 2) / Log(10)
Text5.Text = Format(guad, "###.#")
Label29.Caption = Format(guad, "##.#")
fine:
End Sub

LARGHEZZA DI BANDA
10 Log BW = 10 Log (f2-f1) dove :
f1 = frequenza inferiore della banda
f2 = frequenza superiore della banda
La routine in VB per il calcolo è :
Bw = 10 * Log(k1) / Log(10)

Equazione 2P)
ATTENUAZIONE PER ASSORBIMENTO
α = (0.1 x fm ²) / (1 + fm ²) + (40 x fm ²) / (4100 + fm ²) + (2.75 x fm ²) / 10000 dove:
fm = √(f1 x f2) media geometrica dei limiti di banda
La routine in VB per il calcolo di α è :
k2 = k / 1000 'frequenza Tx in Khz
A = (0.1 * (k2 ^ 2)) / (1 + (k2 ^ 2)) + (40 * (k2 ^ 2)) / (4100 + (k2 ^ 2)) + (2.75 * (k2) ^ 2) / 10000
EQUAZIONI 1P) E 2P)
Soluzione grafica della portata di scoperta

-ROUTINE PER LA SELEZIONE DEL TIPO DI PRPAGAZIONE
If Combo1.Text = "Sferica" Then hhh = 20
If Combo1.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
Label12.Caption = Int(distanza)
fine:
Circle (500 + 64.4 * distanza, 500 + 2 * 2240 - 22.4 * perdita), 100, vbRed








Home

Stampa immagine grafica o descrizione testuale