Sonar attivo: calcolo della portata di scoperta
Il calcolo della portata di scoperta del sonar attivo [1] è indispensabile nelle fasi di progettazione dei sonar, al fine di indirizzare al meglio le operazioni di scelta delle componenti bagnate e della potenza di trasmissione dell'apparato.
Il calcolo della portata di scoperta[2] di un sonar attivo è fondamentale per comprendere come le variazioni di questa siano funzioni delle innumerevoli variabili che compaiono nel classico sistema trascendente da risolvere in :
Un tempo la valutazione era svolta con il Sonar Performance Calculator Submarine Signal Division, Portsmouth della Raytehon, (in bibliografia) oggi, grazie al computer e al Visual Basic, si possono ottenere risultati più precisi e veloci, sia con processi di calcolo iterativo, sia con grafici esplicativi del fenomeno.
Il pannello di controllo del sistema di valutazione
[modifica]
Il pannello virtuale di controllo del sistema di analisi è costituito da:
- Lista di otto Textbox, evidenziati con numeri distintivi a sinistra e sigle di funzione a dastra per la routine di programma, per l'inserzione delle variabili caratteristiche:
1-Frequenza di trasmissione 2-Banda di ricezione 3-Livello della pressione generata in 4-Livello della pressione dovuta al rumore del mare 5-Guadagno di direttività della base 7-Durata dell’impulso 8-Parametro probabilistico 6-Forza del bersaglio
La variabile che figura nella seconda equazione del sistema non viene inserita manualmente nel pannello di controllo, è il software che la computa con le variabili , , .
- un combo per l'impostazione del tipo di propagazione (sferica ; sferico-cilindrica)
- un pulsante Command1 per l'avvio del calcolo
- un label per la risposta numerica del dato di portata
- un reticolo cartesiano per la presentazione delle curve delegate alla soluzione grafica del processo d'esame della portata come mostrato in figura 1:
Impostazione del software
[modifica]In ambiente di sviluppo Visual Basic [3] inserimento degli oggetti nel Form come indicato in figura 1 .[4].
Azione di copia e incolla [5] del programma:
Listato
Private Sub Command1_Click() calcolo End Sub
Private Sub Form_Paint() For xi = 0 To 6440 Step 322 For yi = 0 To 4480 Step 28 PSet (500 + xi, yi) Next yi Next xi For yi = 0 To 4480 Step 224 For xi = 0 To 6440 Step 42 PSet (500 + xi, yi) Next xi Next yi Line (500, 0)-(500, 4480) Line (500, 4480)-(6440 + 500 + 160, 4480) End Sub
Private Sub text1_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub text2_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub text3_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub text4_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub text5_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub text6_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub text7_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub text8_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 _ Then KeyAscii = 0 End Sub
Private Sub calcolo() Cls For xi = 0 To 6440 Step 322 For yi = 0 To 4480 Step 28 PSet (500 + xi, yi) Next yi Next xi For yi = 0 To 4480 Step 224 For xi = 0 To 6440 Step 42 PSet (500 + xi, yi) Next xi Next yi Line (500, 0)-(500, 4480) Line (500, 4480)-(6440 + 500 + 160, 4480) If Combo1.Text = "Sferica" Then hhh = 20 If Combo1.Text = "Sfer.cil." Then hhh = 10 If hhh = 0 Then hhh = 20 k = Val(Text1.Text) 'Ftx k1 = Val(Text2.Text) 'Banda rx d = Val(Text8.Text) tc = Val(Text7.Text) 'durata impulso SL = Val(Text3.Text) 'livello di Tx NL = Val(Text4.Text) DI = Val(Text5.Text) TS = Val(Text6.Text) If k = 0 Then GoTo fine If k1 = 0 Then GoTo fine If tc = 0 Then GoTo fine 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 DT = 5 * Log(d * k1 / (tc)) / Log(10) 'SOGLIA DI RIVELAZIONE Bw = 10 * Log(k1) / Log(10) 'incremento rumore dovuto alla banda 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 For R = 0.1 To 50 Step 0.001 TLP = 2 * (60 + hhh * Log(R) / Log(10) + a * 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 End Sub
Lista per il combo
Sferica
Sfer.cil.
Esempio di valutazione
[modifica]Calcolo della portata di scoperta di un sonar attivo per le variabili:
Frequenza di emissione
Banda di ricezione.
Livello di emissione
Livello del rumore del mare )
Guadagno della base Rx/Tx
Durata impulso d’emissione
Parametro probabilistico
Forza del bersaglio
- selezione nel combo del modello di propagazione
- azione sul pulsante Command1.
Il valore numerico della portata stimata, risultante dal processo di calcolo iterativo, è: .
Tale valore si deduce anche per via grafica dall'intersezione delle due curve nel grafico di figura 2 [6].
Note
[modifica]- ↑ La valutazione è condotta su due linee diverse; la linea grafica, utilizzata fino al 1960, e la linea di calcolo iterativo resa possibile dall'impiego del computer.
- ↑ La portata di scoperta è una previsione a carattere probabilistica, non è la reale distanza fisica tra il sonar ed il bersaglio
- ↑ La routine può essere adattata a diversi sistemi di calcolo
- ↑ Il listato del programma, data la sua semplicità, non è commentato
- ↑ Prestare attenzione alle righe di programma che in base alla pagina possono essere scritte in parte a capo
- ↑ In questo caso la misura della distanza ha una precisione inferiore al calcolo iterativo
Bibliografia
[modifica]- F. Balena, Visual Basic-il linguaggio-, Mondadori Informatica, 2008
- G.Frantz, Programmare con Visual Basic, Apogeo 1996
- M.Padovani, Visual Basic flash, Apogeo, 1997
- D. Inmann B. Albrecht Programmare in Quik Basic,McGraw-Hill, Marzo 1991
- C. Del Turco, La matematica con il personal computer- Metodi matematici e grafici in QBasic, Editrice MODERNA La Spezia, 1998
- Raytehon, Sonar Performance Calculator Submarine Signal Division, Portsmouth
- G. Pazienza, Fondamenti della localizzazione marina, La Spezia, Studio grafico Restani, 1970