Dinamica di un correlatore

La dinamica di un correlatore [1] indica come varia il suo segnale[2] d’uscita in funzione delle variabili indipendenti che caratterizzano la scoperta sonar, queste sono:

  • Frequenze delle bande d’ascolto
  • Direzione di provenienza del suono rispetto alla posizione della base idrofonica ricevente, ovvero tempo di ritardo tra i due segnali applicati al ricevitore.
  • Rapporto tra il segnale e il disturbo
  • Tempo d’integrazione del segnale d’uscita
figura 1 schema a blocchi di un ricevitore in correlazione

Lo schema a blocchi di un ricevitore in correlazione, per segnali limitati d'ampiezza, è mostrato in figura 1:


Questa elementare struttura hardware[3] rappresenta un prototipo di laboratorio per la realizzazione di un sistema ricevente in correlazione.

Le modalità di computazione dell’andamento dell’uscita di un ricevitore

modifica

Prima dell'avvento dei computer gli sviluppi matematici necessari per la previsione delle caratteristiche d’uscita di un correlatore richiedevano lunghi tempi di lavoro con risultati non sempre soddisfacenti.

Oggi, grazie ai personal computer, questo tipo d’analisi può utilizzare particolari routine di calcolo sviluppate in linguaggio Visual Basic che, oltre ai singoli livelli numerici, consentono la costruzione grafica dell'andamento del livello d’uscita del ricevitore in ogni condizione operativa del sonar.

Il calcolo delle funzioni di correlazione, sviluppato in Visual Basic [4], consente un’analisi accurata del comportamento dei ricevitori tramite una semplice interfaccia tra operatore e software di calcolo.

Con il software si sviluppano gli algoritmi clasici, caratteristici dei ricevitori in correlazione, che prevedono il dimensionamento delle larghezze delle bande di frequenza dei segnali ricevuti e il tempo di ritardo   esistente tra i due segnali da correlare; facendo di seguito variare il tempo di analisi dell'algoritmo si traccia la funzione di correlazione in cerca del suo massimo in corrispondenza del valore   impostato.

Tramite variazioni delle larghezze di banda e il valore di   si possono studiare e ottimizzare i profili delle funzioni di correlazione che meglio possono adattarsi alle richieste di progetto del ricevitore.

Il software di cacolo

modifica
 
figura 2 Pannello di comando del sistema

Implementando sul P.C. il programma in Visual Basic, riportato in calce, si realizza il pannello virtuale di controllo del sistema di valutazione costituito da:

  • quattro Textbox, evidenziati con numeri rossi per la routine di programma, per l'inserzione delle variabili caratteristiche:
  1. -Frequenza inf. della banda di ricezione   (Hz)
  2. -Frequenza sup. della banda di ricezione   (Hz)
  3. -Ritardo   tra i due segnali da correlare
  4. -Predisposizione dell’intervallo di tempo d’analisi
  • 5 command. di selezione e avvio del computo per il tipo di funzione di correlazione, ciascun pulsante ha l'indicazione del tipo di funzione calcolata e l'indicazione della banda di lavoro del ricevitore.

I 5 pulsanti assumono colore verde una volta avviato il calcolo specifico.

  • un reticolo cartesiano per la presentazione delle curve di correlazione calcolate come mostrato in figura 2:

Il sistema, una volta copiate le routine di calcolo, può essere implementato con qualsiasi linguaggio di programmazione.

Esempi di valutazione

modifica

Una volta installato il software si possono sviluppare alcuni esempi di valutazione che riguardano il calcolo ed il tracciamento di 6 funzioni di correlazioni relative ad un generico ricevitore; ad esempio:

  • Corr. analogica in banda   (due casi)
  • Corr. analogica in banda  
  • Corr. digitale in banda  
  • Corr. digitale in banda  
  • Corr. digitale secondo Hilbert in banda  

Per ciascuna funzione sono impostabili a piacere, sia i valori delle frequenze che stabiliscono la banda di ricezione  , sia i ritardo   tra i due segnali.

 
figura 3 schermata corr. analogica in banda 0-F

Funzione di correlazione analogica del segnale in uscita da un ricevitore (segnali filtrati con passa basso)

  valore inferiore della banda del ricevitore
  valore superiore della banda del 
ricevitore
  ritardo tra i due segnali applicati al ricevitore
  valore del fondo scala di calcolo e 
grafica.

Il grafico è riportato in figura 3, il command colorato in verde indica il tipo di funzione calcolata (segnali filtrati con passa banda)

Secondo

modifica
 
figura 3a schermata corr. analogica in banda 0-F

Funzione di correlazione analogica del segnale in uscita da un ricevitore (segnali filtrati con passa basso)

  valore inferiore della banda del ricevitore
  valore superiore della banda del 
ricevitore
  ritardo tra i due segnali applicati al ricevitore
  valore del fondo scala di calcolo e 
grafica.

Il grafico è riportato in figura 3a, il command colorato in verde indica il tipo di funzione calcolata (segnali filtrati con passa banda)

 
figura 4 schermata corr. analogica in banda F1-F2

Funzione di correlazione analogica del segnale in uscita da un ricevitore (segnali filtrati con passa banda)

  valore inferiore della banda del ricevitore
  valore superiore della banda del ricevitore
  ritardo tra i due segnali 
applicati al ricevitore
  valore del fondo scala di calcolo e 
grafica.

Il grafico è riportato in figura 4 il command verde indica il tipo di funzione calcolata:

 
figura 5 schermata corr. digitale in banda 0-F2

Funzione di correlazione digitale del segnale in uscita da un ricevitore (segnali filtrati con passa basso)

  valore inferiore della banda del ricevitore
  valore superiore della banda del ricevitore
  ritardo tra i due segnali 
applicati al ricevitore
  valore del fondo scala di calcolo e 
grafica.

Il grafico è riportato in figura 5, il command verde indica il tipo di funzione calcolata:

 
figura 6 schermata corr. digitale in banda F1-F2


Funzione di correlazione digitale del segnale in uscita da un ricevitore (segnali filtrati con passa banda)

  valore inferiore della banda del ricevitore
  valore superiore della banda del ricevitore
  ritardo tra i due segnali applicati 
al ricevitore
  valore del fondo scala di calcolo e 
grafica.

Il grafico è riportato in figura 6, il command verde indica il tipo di funzione calcolata:

 
figura 7 schermata funzione di correlazione secondo trasformata di Hilbert

Funzione di correlazione digitale, con trasformata di Hilbert, del segnale in uscita da un ricevitore (segnali filtrati con passa banda)

  valore inferiore della banda del ricevitore
  valore superiore della banda del ricevitore
  ritardo tra i due segnali applicati 
al ricevitore
  valore del fondo scala di calcolo e 
grafica.

Impostazione del software

modifica
 
figura 8 Pannello di comando del sistema

In ambiente di sviluppo Visual Basic inserimento degli oggetti nel Form come indicato in figura 8 nel rispetto della numerazione indicata in rosso; i 5 command devono essere abililitati in style graphical.[5].

Azione di copia e incolla[6] del programma:

Listato

Dim F1 As Double
Dim F2 As Double
Dim rf As Double
Dim ro As Double
Private Sub Command5_Click()
Command1.BackColor = &HE0E0E0
Command2.BackColor = &HE0E0E0
Command3.BackColor = &HE0E0E0
Command4.BackColor = &HE0E0E0
Command5.BackColor = vbGreen
Cls
For xi = 0 To 4600 * 1.4 Step 230 * 1.4
For yi = 0 To 3200 * 1.4 Step 20 * 1.4
PSet (xi, yi)
Next yi
Next xi
For yi = 0 To 3200 * 1.4 Step 160 * 1.4
For xi = 0 To 4600 * 1.4 Step 30 * 1.4
PSet (xi, yi)
Next xi
Next yi
Line (0, 1600 * 1.4)-(4600 * 1.4 + 160, 1600 * 1.4)
Line (0, 0)-(0, 3200 * 1.4)
F = Val(Text2.Text)
rf = Val(Text3.Text)
ro = Val(Text4.Text)
For R = 0.0000001 To ro Step (ro / 10000)
Y1 = Sin(2 * 3.14 * F * (R - rf) / 1000000) _
/ (2 * 3.14 * F * (R - rf) / 1000000) '
c1 = (2 / 3.14) * Atn(Y1 / (Sqr(-Y1 * Y1 + 1) + 0.00000001))
PSet (4600 * 1.4 * R / ro, 1600 * 1.4 - 1600 * 1.4 * c1), colore
Next 
End Sub
Private Sub Form_Paint()
For xi = 0 To 4600 * 1.4 Step 230 * 1.4
For yi = 0 To 3200 * 1.4 Step 20 * 1.4
PSet (xi, yi)
Next yi
Next xi
For yi = 0 To 3200 * 1.4 Step 160 * 1.4
For xi = 0 To 4600 * 1.4 Step 30 * 1.4
PSet (xi, yi)
Next xi
Next yi
Line (0, 1600 * 1.4)-(4600 * 1.4 + 160, 1600 * 1.4)
Line (0, 0)-(0, 3200 * 1.4)
End Sub
Private Sub text1_KeyPress(KeyAscii As Integer)
If InStr("-+.0123456789", Chr(KeyAscii)) = 0 _
Then KeyAscii = 0
End Sub
Private Sub text2_KeyPress(KeyAscii As Integer)
If InStr("-+.0123456789", Chr(KeyAscii)) = 0 _
Then KeyAscii = 0
End Sub
Private Sub text3_KeyPress(KeyAscii As Integer)
If InStr("-+.0123456789", Chr(KeyAscii)) = 0 _
Then KeyAscii = 0
End Sub
Private Sub text4_KeyPress(KeyAscii As Integer)
If InStr("-+.0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If InStr("0123456789.-" + Chr(&H8), Chr(KeyAscii)) = 0 _
Then KeyAscii = 0
End Sub
Private Sub Command1_Click()
Cls
Command1.BackColor = vbGreen
Command2.BackColor = &HE0E0E0
Command3.BackColor = &HE0E0E0
Command4.BackColor = &HE0E0E0
Command5.BackColor = &HE0E0E0
For xi = 0 To 4600 * 1.4 Step 230 * 1.4
For yi = 0 To 3200 * 1.4 Step 20 * 1.4
PSet (xi, yi)
Next yi
Next xi
For yi = 0 To 3200 * 1.4 Step 160 * 1.4
For xi = 0 To 4600 * 1.4 Step 30 * 1.4
PSet (xi, yi)
Next xi
Next yi
Line (0, 1600 * 1.4)-(4600 * 1.4 + 160, 1600 * 1.4)
Line (0, 0)-(0, 3200 * 1.4)
F1 = Val(Text1.Text)
F2 = Val(Text2.Text)
rf = Val(Text3.Text)
ro = Val(Text4.Text)
For R = 0.0000001 To ro Step (ro / 10000)
Y1 = Sin(2 * 3.14 * ((F2 - F1) / 2) * (R - rf) / _
1000000) / (2 * 3.14 * ((F2 - F1) / 2) * (R - rf) / 1000000)
Y2 = Sin(2 * 3.14 * ((F2 + F1) / 2) * (R - rf) / 1000000)
Y3 = Y1 * Y2
c1 = (2 / 3.14) * Atn(Y3 / (Sqr(-Y3 * Y3 + 1) + 0.00000001))
PSet (460 * 14 * R / ro, 160 * 14 - 160 * 14 * c1), colore
Next R
End Sub
Private Sub Command2_Click()
Command1.BackColor = &HE0E0E0
Command2.BackColor = vbGreen
Command3.BackColor = &HE0E0E0
Command4.BackColor = &HE0E0E0
Command5.BackColor = &HE0E0E0
Cls
For xi = 0 To 4600 * 1.4 Step 230 * 1.4
For yi = 0 To 3200 * 1.4 Step 20 * 1.4
PSet (xi, yi)
Next yi
Next xi
For yi = 0 To 3200 * 1.4 Step 160 * 1.4
For xi = 0 To 4600 * 1.4 Step 30 * 1.4
PSet (xi, yi)
Next xi
Next yi
Line (0, 1600 * 1.4)-(4600 * 1.4 + 160, 1600 * 1.4)
Line (0, 0)-(0, 3200 * 1.4)
F1 = Val(Text1.Text)
F2 = Val(Text2.Text)
rf = Val(Text3.Text)
ro = Val(Text4.Text)
For R = 0.0000001 To ro Step (ro / 10000)
Y1 = Sin(2 * 3.14 * ((F2 - F1) / 2) * (R - rf) / 1000000) / _
(2 * 3.14 * ((F2 - F1) / 2) * (R - rf) / 1000000)
Y2 = Cos(2 * 3.14 * ((F2 + F1) / 2) * (R - rf) / 1000000)
Y3 = Y1 * Y2
PSet (4600 * 1.4 * R / ro, 1600 * 1.4 - 1600 * 1.4 * Y3), colore
Next R
End Sub
Private Sub Command3_Click()
Command1.BackColor = &HE0E0E0
Command2.BackColor = &HE0E0E0
Command3.BackColor = vbGreen
Command4.BackColor = &HE0E0E0
Command5.BackColor = &HE0E0E0
Cls
For xi = 0 To 4600 * 1.4 Step 230 * 1.4
For yi = 0 To 3200 * 1.4 Step 20 * 1.4
PSet (xi, yi)
Next yi
Next xi
For yi = 0 To 3200 * 1.4 Step 160 * 1.4
For xi = 0 To 4600 * 1.4 Step 30 * 1.4
PSet (xi, yi)
Next xi
Next yi
Line (0, 1600 * 1.4)-(4600 * 1.4 + 160, 1600 * 1.4)
Line (0, 0)-(0, 3200 * 1.4)
F = Val(Text2.Text)
rf = Val(Text3.Text)
ro = Val(Text4.Text)
For R = 0.0000001 To ro Step (ro / 10000)
Y1 = Sin(2 * 3.14 * F * (R - rf) / 1000000) / _
(2 * 3.14 * F * (R - rf) / 1000000) '
PSet (4600 * 1.4 * R / ro, 1600 * 1.4 - 1600 * 1.4 * Y1), colore
Next R
End Sub
Private Sub Command4_Click()
Command1.BackColor = &HE0E0E0
Command2.BackColor = &HE0E0E0
Command3.BackColor = &HE0E0E0
Command4.BackColor = vbGreen
Command5.BackColor = &HE0E0E0
Cls
For xi = 0 To 4600 * 1.4 Step 230 * 1.4
For yi = 0 To 3200 * 1.4 Step 20 * 1.4
PSet (xi, yi)
Next yi
Next xi
For yi = 0 To 3200 * 1.4 Step 160 * 1.4
For xi = 0 To 4600 * 1.4 Step 30 * 1.4
PSet (xi, yi)
Next xi
Next yi
Line (0, 1600 * 1.4)-(4600 * 1.4 + 160, 1600 * 1.4)
Line (0, 0)-(0, 3200 * 1.4)
F1 = Val(Text1.Text)
F2 = Val(Text2.Text)
rf = Val(Text3.Text)
ro = Val(Text4.Text)
For R = 0.0000001 To ro Step (ro / 10000)
Y1 = Sin(2 * 3.14 * ((F2 - F1) / 2) * (R - rf) / 1000000) / _
(2 * 3.14 * ((F2 - F1) / 2) * (R - rf) / 1000000)
Y2 = Cos(2 * 3.14 * ((F2 + F1) / 2) * (R - rf) / 1000000)
Y3 = Y1 * Y2
c1 = (2 / 3.14) * Atn(Y3 / (Sqr(-Y3 * Y3 + 1) + 0.00000001))
PSet (4600 * 1.4 * R / ro, 1600 * 1.4 - 1600 * 1.4 * c1), colore
Next R
End Sub
  1. Indicata come funzione di correlazione
  2. Il segnale all’uscita di un correlatore può essere un livello di tensione, se il sistema è costruito con componenti sparsi o un dato numerico se la funzione di correlazione è sviluppata vi a software.
  3. Con modelli riceventi simili a quello mostrato sono stati progettati e realizzati i sistemi di scoperta panoramica dei sonar IP70 installati a bordo dei sottomarini Classe Sauro; con 72 di questi ricevitori sono state impostate le strutture a fasci preformati che hanno caratterizzato, positivamente, il funzionamento di questo tipo di sonar.
  4. Gli algoritmi di calcolo possone essere copiati e trasferiti su altri linguaggi di programmazione.
  5. Il listato del programma, data la sua semplicità, non è commentato
  6. Prestare attenzione alle righe di programma che in base alla pagina possono essere scritte in parte a capo

Bibliografia

modifica
  • James j. Faran jr ; Robert Hills jr , Correlators for signal reception, Office of Navaval Research (contract n5 ori-76 project order x technical memorandum no. 27) Acoustics Research Laboratory Division of Applied Science Harvard University – Cambridge, Massachusetts , 1952
  • F. Balena, Visual Basic-il linguaggio-, Mondadori Informatica, 2008
  • C. Del Turco, La correlazione, collana scientifica ed. Moderna La Spezia, 1993