Documentazione del progetto semaforo

Appunti di TDP
Documentazione del progetto semaforo
Gestione di
un impianto
semaforico
Ing. Giovanni Cirio
1 di 21
21/12/12
Appunti di TDP
Gli alunni che hanno collaborato alla realizzazione dell’impianto semaforico
sono:
2. Aonzo Davide
3. Batenko Glib
4. Cavallo Alberto
5. Cirio Gabriele
6. Crispino Christian
7. Di Gangi Andrea
8. Di Lieto Alfonso
9. Donzellini Roberto
10. Forgione Andrea
11. Germinario Andrea
12. Leone Fabio
13. Manti Piero
14. Mavilia Manuel
15. Mazzurini Michel
16. Mel Gabriele
17. Ramasso Mauro
18. Schiavo Andrea
19. Sciutto Alex
20. Vacca Rossano
I professori che hanno partecipato alla realizzazione dell’impianto semaforico
sono:
21.Prof. Cirio Giovanni per la progettazione
22.Prof. Bianco Fernando per il laboratorio
23.Prof. Lodrini Angie per le parti in inglese
Ing. Giovanni Cirio
2 di 21
21/12/12
Appunti di TDP
Realizzazione di un impianto semaforico automatizzato.
Si è deciso all'inizio dell'anno scolastico, di realizzare, di concerto fra classe e
docenti interessati, un impianto semaforico automatizzato, un parcheggio con
contaposti automatico e un autovelox posto in una strada laterale. Ci è parso utile
capirne il funzionamento in quanto sono impianti presenti nella vita quotidiana di
ogni singolo cittadino.
L'incrocio è formato da quattro strade intersecate e regolamentate mediante lanterna
semaforica, quattro svincoli a destra privi di semaforo, un parcheggio con display
visualizzante la capienza residua e infine, in una strada secondaria, un rilevatore di
velocità la quale sarà poi visualizzata su un display.
La gestione dei vari dispositivi elettronici è affidata a un PC poiché è già pronto
all'uso ma in un ambiente industriale si userebbe una scheda dedicata a
microprocessore. Il linguaggio software di progettazione usato è il C++ poiché esso è
conosciuto e utilizzato a livello mondiale in molti campi (universitario, di ricerca
ecc.) ed è molto versatile. In ambito industriale è preferibile utilizzare l'Assembler
poiché l'hardware interessato è caratterizzato dalla presenza di un microprocessore
programmabile in linguaggio macchina.
Le fasi di lavoro sono:
1) Realizzazione del plastico in ogni sua parte;
2) Montaggio dei vari circuiti elettronici;
3) Programmazione in C++;
4) Prove e verifiche di funzionamento ;
5) Stesura della documentazione;
6) Redazione del manuale d'uso.
Ing. Giovanni Cirio
3 di 21
21/12/12
Appunti di TDP
Schema a blocchi del progetto: (Mel)
Ing. Giovanni Cirio
4 di 21
21/12/12
Appunti di TDP
Ing. Giovanni Cirio
5 di 21
21/12/12
Appunti di TDP
Schema a blocchi della gestione del parcheggio (Mel)
Alimentat
ore
12 ; 5 [V
d.c]
Monitor
-PC
Planimetria
Software di
gestione
L
P
T
1
8+4 Bit
L
A
T
C
H
Elementi
incrocio:
Lampade e
avvisatori
acustici
30 Bit
A
D
2
A
1
C
Tast
iera
C
P
C
1
A
2
D
1
B
2
D
B
1
D
P
C
2
B
(Germinario, Mel, Forgione 5^B)
Specifiche di funzionamento dell’incrocio semaforico:
L’impianto è composto principalmente da 6 stati:
Stato 1
A1= Verde
A2= Rosso
B1= Verde
B2= Rosso
C1= Rosso
C2= Rosso
Cp= Verde
D1= Rosso
D2= Rosso
Dp= Verde
Ing. Giovanni Cirio
Stato 2
Stato 3
Stato 4:
Stato 5
Stato 6
A1= Giallo
A2= Rosso
B1= Giallo
B2= Rosso
C1= Rosso
C2= Rosso
Cp= Giallo
D1= Rosso
D2= Rosso
Dp= Giallo
A1= Rosso
A2= Verde
B1= Rosso
B2= Verde
C1= Rosso
C2= Verde
Cp= Rosso
D1= Rosso
D2= Verde
Dp= Rosso
A1= Rosso
A2= Giallo
B1= Rosso
B2= Giallo
C1= Rosso
C2= Verde
Cp= Rosso
D1= Rosso
D2= Verde
Dp= Rosso
A1= Rosso
A2= Rosso
B1= Rosso
B2= Rosso
C1= Verde
C2= Verde
Cp= Rosso
D1= Verde
D2= Verde
Dp= Rosso
A1= Rosso
A2= Rosso
B1= Rosso
B2= Rosso
C1= Giallo
C2= Giallo
Cp= Rosso
D1= Giallo
D2= Giallo
Dp= Rosso
6 di 21
21/12/12
Appunti di TDP
Tempo = 50s
Tempo = 10s
Tempo = 30s
Tempo = 10s
Tempo = 40s Tempo = 10s
Progettazione del software di gestione:
Si memorizzano i 6 stati in 4 byte che vengono inviati alla porta dati e scritti nei 4 latch ls373. La
corrispondenza bit-lampada è la seguente:
byte4
d7
byte3
d0 d7
byte2
d0 d7
byte1
d0 d7
d0
V G R V G R V G R V G R V G R V G R V G R V G R V G R V G R
Dp
D2
D1
Cp
C2
C1
B2
B1
A2
La porta controllo invece abilita la scrittura nei diversi latch con la corrispondenza:
C3
C2
C1
C0
latch4 latch3 latch2 latch1
Struttura dati: memorizziamo i 4 byte dello stato 1 nella variabile stato1[4] e cosi via
stato1[]
Byte 1
12
stato2[]
Byte 1 1
1
1 1 147
Byte 2 1
Byte 3
1 1
48
Byte 3
Byte 4
1
1 33
Byte 4
1 97
stato4[]
Byte 1
24
Byte 2
38
Byte 3
12
Byte 4
1 73
stato6[]
Byte 1
1
66
Byte 2
1 1
134
Byte 3
12
Byte 4
1 1
Byte 2 1
stato3[]
Byte 1
1 1
Byte 2
1 1
Byte 3
1
Byte 4
1 1
1 1
stato5[]
Byte 1
1
Byte 2
1
Byte 3 1
Byte 4
1
1 1
1
1
1
1
138
1
146
40
1
1
1 17
1
1 81
1
20
1
1
1
1
1
1
1
38
1
10
1 73
1
1
1
1
1 69
1
1
34
1
10
La scrittura dello statoi sulla porta dati avverrà con un pseudocodice tipo
out(pcontrollo,0001); out(pdati,statoi[1]);
// abilita e scrive nel latch1
Ing. Giovanni Cirio
7 di 21
21/12/12
A1
Appunti di TDP
out(pcontrollo,0010); out(pdati,statoi[2]);
out(pcontrollo,0100); out(pdati,statoi[3]);
out(pcontrollo,1000); out(pdati,statoi[4]);
//
//
//
“
“
“
latch2
latch3
latch4
Pseudocodice:
byte stato1[4]=[12, 147, 48, 33]; stato2[4]=[138, 146, 40, 17];
stato3[4]=[97, 24, 38, 12]; stato4[4]=[81, 20, 38, 10];
stato5[4]=[73, 66, 134, 12]; stato6[4]=[73, 34, 69, 10];
int normale;
// usata come flag per terminare i vari eventi avviati dai pulsanti
GUI:
WxButtonAvvio
WxButtonSpento WxButtonLampeggiante
WxEdit7
WxEditStato1
WxEditStato1
WxEditStato1
WxEditStato1
WxEditStato1
WxEditStato1
WxButtonReset
Inizializziamo i tempi standard
50
10
30
10
40
10
->
->
->
->
->
->
WxEditStato1
WxEditStato2
WxEditStato3
WxEditStato4
WxEditStato5
WxEditStato6
Ai pulsanti associamo il pseudocodice:
void semaforoFrm::WxButtonAvvioClick(wxCommandEvent& event)
{ normale=1;
do
{ out(pcontrollo,0001); out(pdati,stato1[1]);
out(pcontrollo,0010); out(pdati,stato1[2]);
out(pcontrollo,0100); out(pdati,stato1[3]);
out(pcontrollo,1000); out(pdati,stato1[4]);
aspetta(WxEditStato1);
out(pcontrollo,0001); out(pdati,stato2[1]);
out(pcontrollo,0010); out(pdati,stato2[2]);
out(pcontrollo,0100); out(pdati,stato2[3]);
out(pcontrollo,1000); out(pdati,stato2[4]);
aspetta(WxEditStato2);
Ing. Giovanni Cirio
8 di 21
21/12/12
Appunti di TDP
out(pcontrollo,0001); out(pdati,stato3[1]);
out(pcontrollo,0010); out(pdati,stato3[2]);
out(pcontrollo,0100); out(pdati,stato3[3]);
out(pcontrollo,1000); out(pdati,stato3[4]);
aspetta(WxEditStato3);
out(pcontrollo,0001); out(pdati,stato4[1]);
out(pcontrollo,0010); out(pdati,stato4[2]);
out(pcontrollo,0100); out(pdati,stato4[3]);
out(pcontrollo,1000); out(pdati,stato4[4]);
aspetta(WxEditStato4);
out(pcontrollo,0001); out(pdati,stato5[1]);
out(pcontrollo,0010); out(pdati,stato5[2]);
out(pcontrollo,0100); out(pdati,stato5[3]);
out(pcontrollo,1000); out(pdati,stato5[4]);
aspetta(WxEditStato5);
out(pcontrollo,0001); out(pdati,stato6[1]);
out(pcontrollo,0010); out(pdati,stato6[2]);
out(pcontrollo,0100); out(pdati,stato6[3]);
out(pcontrollo,1000); out(pdati,stato6[4]);
aspetta(WxEditStato6);
}
}
while(normale=1);
void semaforoFrm::WxButtonSpentoClick(wxCommandEvent& event)
{
out(pcontrollo,0001); out(pdati,0);
out(pcontrollo,0010); out(pdati,0);
out(pcontrollo,0100); out(pdati,0);
out(pcontrollo,1000); out(pdati,0);
}
void semaforoFrm::WxButtonLampeggianteClick(wxCommandEvent& event)
{ normale=0;
do
{
out(pcontrollo,0001); out(pdati,146); // gialli accesi
out(pcontrollo,0010); out(pdati,36);
out(pcontrollo,0100); out(pdati,73);
out(pcontrollo,1000); out(pdati,18);
aspetta(3);
out(pcontrollo,0001); out(pdati,0);
// gialli spenti
out(pcontrollo,0010); out(pdati,0);
out(pcontrollo,0100); out(pdati,0);
out(pcontrollo,1000); out(pdati,0);
}
while(normale==0)
}
void semaforoFrm::WxButtonResetClick(wxCommandEvent& event)
{
50 -> WxEditStato1
10 -> WxEditStato2
30 -> WxEditStato3
10 -> WxEditStato4
40 -> WxEditStato5
10 -> WxEditStato6
}
Ing. Giovanni Cirio
9 di 21
21/12/12
Appunti di TDP
Codice realizzato per windows98:
inizio:
CLS
REM dichiadazione delle variabili
DIM m AS INTEGER 'm e' un num intero che sta per modalita': 1,2 ecc..
WRITE "Seleziona numero della modalita di funzionamento del semaforo e premi INVIO"
WRITE "1 avvio funzionamento normale"
WRITE "2 modalita' lampeggio"
WRITE "3 tutto spento"
WRITE "4 esci dal programma"
INPUT m
REM-----------------------------------------------------------------------IF m = 1 THEN
DO
CLS
REM invio stato_1
OUT 890, 10
OUT 888, 12
OUT 890, 9
OUT 888, 147
OUT 890, 15
OUT 888, 48
OUT 890, 3
OUT 888, 33
WRITE "Running stato_1"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 100000 STEP 1
NEXT
CLS
REM invio stato_2
OUT 890, 10
OUT 888, 138
OUT 890, 9
OUT 888, 146
Ing. Giovanni Cirio
10 di 21
21/12/12
Appunti di TDP
OUT 890, 15
OUT 888, 40
OUT 890, 3
OUT 888, 17
WRITE "Running stato_2"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 100000 STEP 1
NEXT
CLS
REM invio stato_3
OUT 890, 10
OUT 888, 97
OUT 890, 9
OUT 888, 24
OUT 890, 15
OUT 888, 38
OUT 890, 3
OUT 888, 12
WRITE "Running stato_3"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 100000 STEP 1
NEXT
CLS
REM invio stato_4
OUT 890, 10
OUT 888, 81
OUT 890, 9
OUT 888, 20
OUT 890, 15
OUT 888, 38
OUT 890, 3
OUT 888, 12
WRITE "Running stato_4"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 100000 STEP 1
NEXT
CLS
REM invio stato_5
Ing. Giovanni Cirio
11 di 21
21/12/12
Appunti di TDP
OUT 890, 10
OUT 888, 73
OUT 890, 9
OUT 888, 66
OUT 890, 15
OUT 888, 134
OUT 890, 3
OUT 888, 12
WRITE "Running stato_5"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 100000 STEP 1
NEXT
CLS
REM invio stato_6
OUT 890, 10
OUT 888, 73
OUT 890, 9
OUT 888, 34
OUT 890, 15
OUT 888, 69
OUT 890, 3
OUT 888, 10
WRITE "Running stato_6"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 100000 STEP 1
NEXT
LOOP WHILE INKEY$ <> "q"
ON 1 GOTO inizio:
RETURN
REM-----------------------------------------------------------------------ELSEIF m = 2 THEN
REM invio_stato_giallo_acceso
DO
CLS
OUT 890, 10
OUT 888, 146
OUT 890, 9
Ing. Giovanni Cirio
12 di 21
21/12/12
Appunti di TDP
OUT 888, 36
OUT 890, 15
OUT 888, 73
OUT 890, 3
OUT 888, 18
WRITE "GIALLO ACCESO"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 40000 STEP 1
NEXT
CLS
REM invio stato_giallo_spento
OUT 890, 10
OUT 888, 0
OUT 890, 9
OUT 888, 0
OUT 890, 15
OUT 888, 0
OUT 890, 3
OUT 888, 0
WRITE "GIALLO SPENTO"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 30000 STEP 1
NEXT
LOOP WHILE INKEY$ <> "q"
ON 1 GOTO inizio:
RETURN
REM-----------------------------------------------------------------------ELSEIF m = 3 THEN
REM modalita' SEMAFORO SPENTO
DO
CLS
OUT 890, 10
OUT 888, 0
OUT 890, 9
OUT 888, 0
OUT 890, 15
OUT 888, 0
OUT 890, 3
OUT 888, 0
Ing. Giovanni Cirio
13 di 21
21/12/12
Appunti di TDP
WRITE "E' in esecuzione modalita TUTTO SPENTO"
WRITE "Per tornare al menu' principale premere tasto q"
FOR i = 1 TO 100000 STEP 1
NEXT
FOR i = 1 TO 100000 STEP 1
NEXT
LOOP WHILE INKEY$ <> "q"
ON 1 GOTO inizio:
RETURN
REM-----------------------------------------------------------------------ELSEIF m = 4 THEN
CLS
WRITE "Premere un tasto per terminare programma"
ELSEIF (m > 4) THEN
WRITE "il numero selezionato e errato! Riprova!"
FOR i = 1 TO 100000 STEP 1
NEXT
ON 1 GOTO inizio:
RETURN
END IF
END
Ing. Giovanni Cirio
14 di 21
21/12/12
Appunti di TDP
Interfaccia latch
J1
74LS373
OE
D7
D6
D5
D4
D3
D2
D1
D0
E
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
74LS373
OE
D7
D6
D5
D4
D3
D2
D1
D0
E
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
74LS373
OE
D7
D6
D5
D4
D3
D2
D1
D0
E
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
74LS373
OE
D7
D6
D5
D4
D3
D2
D1
D0
Ing. Giovanni Cirio
15 di 21
E
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
21/12/12
Appunti di TDP
Circuito Stampato in doppia faccia:
Ing. Giovanni Cirio
16 di 21
21/12/12
Appunti di TDP
Funzionamento interfaccia latch
La porta parallela è formata dalla porta controllo e porta dati, che mandano dati in uscita, e dalla
porta stato.
La porta controllo è collegata agli enable dei latch, che a livello alto abilitano la scrittura nei relativi
flip flop, a livello basso disabilitano la scrittura nei relativi flip flop.
La porta dati è collegata agli ingressi degli 8 flip flop del 373. la scrittura nei 4 latch avviene nel
seguente modo:
attraverso la porta controllo si abilita il latch numero 1, -outp(valore, pcontrollo), e successivamente
si invia lo stato numero 1 alla porta dati, -outp(valore, pdati).
Si abilita a questo punto il latch numero 2 e si scrive il byte relativo allo stato 2, così per gli altri
stati.
Siccome la scrittura avviene con tempi dell'ordine del micro secondo, la successiva scrittura nei
quattro latch appare istantanea.
Ciò significa che abbiamo la possibilità di gestire 32 bit di uscita.
A tali bit è collegata l'interfaccia che pilota i led dell'impianto semaforico descritta più avanti.
Alimentatore:
schema elettrico
Funzionamento:
L’alimentatore è composto dai seguenti elementi collegati in cascata:
1) Trasformatore: Riduce la tensione di rete in ingresso da 220V a 18V.
2) Raddrizzatore: Costituito da un ponte di diodi che funge da raddrizzatore a doppia semionda, il
funzionamento del dispositivo è il seguente: due diodi lasciano passare le semionde positive e
due le semionde negative costituendo cosi un polo positivo e un polo negativo.
Ing. Giovanni Cirio
17 di 21
21/12/12
Appunti di TDP
3) Filtro: Costituito da condensatori collegati in parallelo nello stadio prima del regolatore di
tensione e in quello successivo. La sua funzione è quella di, nelle loro fasi di scarica, congiungere
le semionde positive nella loro parte alta, dando un primo livellamento alla tensione in ingresso
ed in uscita dal regolatore di tensione.
4) Regolatore di tensione: E’ un dispositivo integrato che livella e stabilizza la tensione alla propria
uscita. La tensione in uscita dal regolatore è determinata dal tipo di integrato che può fornire
varie tensioni e varie correnti.
Pilotaggio lampade:
Schema elettrico
Funzionamento del pilotaggio di un diodo led (Leone)
Quando l'onda quadra in ingresso al circuito raggiunge ampiezza 5V la resistenza Rb viene
attraversata da una corrente che porta in conduzione il transistor.
L'alimentazione Vcc genera una corrente che attraversa il led ,illuminandolo, il collettore e
dall'emettitore giunge a massa.
Quando l'onda quadra si presenterà, con valore zero volt sulla base del transistor, lo stesso andrà in
interdizione e per tanto la corrente di collettore si annullerà spegnendo il led.
Dimensionamento delle resistenze Rb e Rc considerando una tensione di alimentazione di 12V:
Il transistor funziona con la seguente legge:
Ic = hfe* Ib
hfe ≈ 200 per il transistor usato BC107 al silicio (Vbe=0.7)
Ing. Giovanni Cirio
18 di 21
21/12/12
Appunti di TDP
Dimensioniamo Rb e Rc.
Dall'ingresso: Vin=Rb*Ib+Vbe considerimo, per sicurezza Vin = 4
4=Rb*Ib+0,7
Sappiamo che un led si illumina con correnti di circa 20 mA, perciò Ic = 20mA, usando dei
BC107-BC108, che hanno il parametro hfe≈200, possiamo ricavare la corrente di base, facendo il
calcolo
Ib=
Ic 20 10−3
=
=0.1mA mentre per
Hfe
200
Rb=
Vin−Vbe
3.3
=
=33KOhm
Ib
0.1 10−3
Per calcolare Rc scrivo l'equazione della maglia di uscita:
Vcc=Vled+Rc*Ic+Vce
Vled vale circa 2V per tutti i diodi led, mentre Ic vale 20 mA.
Vce è la caduta di tensione tra collettore ed emettitore, possiamo scegliere noi il loro valore, di
solito in questo tipo di applicazioni si pone uguale a 0V, cioè scegliamo Vce=0.
L'equazione diventa:
12V=2V+Rc*20mA+0 dalla quale si ricava Rc = 10/20mA= 500 Ohm
Documentazione in lingua inglese
Realization of an automated traffic light system.
This project decided at the beginning of the school year together with interested classes and teachers
was to realize an automated traffic light system, a parking with automated place counter and an
speed limit controlling device placed in a lateral road. It seemed to be useful understanding the
functioning because this system is common in our daily life.
The crossing is composed by four intersected road and restricted by a spider light, four side streets
without traffic light, a parking with a screen which displays who the last free parking place, and
finally, in a secondary street, a speed detector that will be visualized on a screen.
The management of these various electronic devices is given to a PC because it is ready to be used
but in an industrial environment we should use a microprocessor dedicated card. The language used
for processing the software is C++ because it is known and used all around the world in many
fields(universitary,researching ecc.)because it is versatile. In industries it is better use the Assembler
because the interested hardware is characterized by the presence of programmable microproccesor .
The phases of work are:
1)
2)
3)
4)
5)
6)
Realization of the scale model in each part;
Assembly of the various electronic circuits;
Programming in C++;
Tests of functioning;
Drawing up of the documents;
Writing the use handbook.
Ing. Giovanni Cirio
19 di 21
21/12/12
Appunti di TDP
Pilotage Lamps: Electric diagram
Functioning of the led diode pilotage
When the input square wave in the circuit catches the amplitude of 5 V the resistance Rb will be
crossed by a current which carries the transistor to function.
The Vcc feeding generates a current that crosses the led, illuminating it, the collector and the emitter
reach the mass.
When we obtain the square wave, with a zero volt value on the base of the transistor, this want let
the current flow, and therefore the current of the collector will be cancelled turning off the led.
Let’s dimension Rb and Rc resistance considering a voltage feeding of 12 V:
The transistor works with the following law:
Ic = hfe*Ib
hfe ≈ 200 for the silicon transistor used BC107(Vbe= 0.7)
Let’s dimension Rb and Rc.
From the imput: Vin=Rb*Ib+Vbe we consider, for safety Vin = 4
4=Rb*Ib+0.7
We know that one led illuminates with currents of approximately 20 mA, so Ic = 20 mA, using
BC107 and BC108, which have the parameter hfe ≈ 200, we can gain the base current, doing this
calculation
Ib=
Ic 2010−3
=
=0.1 mA
Hfe
200
while for
Rb=
Vin−Vbe 
3.3
=
=33KOhm
Ib
0.110−3
For calculating Rc I write the equation of the output mesh:
Vcc=Vled+Rc*Ic+Vce
Vled value is approximately 2V for all the led diode, while Ic value is 20 mA.
Vce is the fall of voltage between collector and emitter, we can choose their value, usually in this
kind of applications it is equal to 0V, so we choose Vce=0V.
The equation became:
12V=2V+Rc*20mA+0 from which we gains Rc = 10/20mA= 500Ohm
Feeder supply voltage:
A feeding device is composed by these following elements linked in a cascade:
1)Transformer: It reduces the voltage of the input net from 220V to 18V.
2)Rectifier: It is composed by a diode bridge that works as a double semiwave rectifier, the
Ing. Giovanni Cirio
20 di 21
21/12/12
Appunti di TDP
function of the device is the following: two diodes let the positive semiwaves pass and the two
negative semiwaves so constituting one positive and one negative pole.
3)Filter: It is composed by condensers linked in parallel in the stage first of the voltage regulator
and in the following one. His function is to combine the positive semiwaves in their high part(in the
discharge phase), giving a first balance to the input and output voltage by the voltage regulator.
4)Voltage regulator: It is an integrated device that balances and levels off the voltage at its own
output. The output voltage from the regulator is determined by the kind of integrated device that can
supply different voltages and currents.
Ing. Giovanni Cirio
21 di 21
21/12/12