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.
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]- ↑ 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