DAQperBBCC 060610 mod

33
060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010 1 http://www.gruppodab.it/public/press-area/libretto-musei-V04-def.pdf [1/2] [1/2] Anti intrusione Sistema di Controllo visitatori Sistema di rivelazione e spegnimento incendio Sistema di supervisione degli impianti tecnologici Controllo accessi Antifurto Videosorveglianza Sistema di Monitoraggio ambientale Protezione di Opere d’arte all’aperto ed aree archeologiche

Transcript of DAQperBBCC 060610 mod

Page 1: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

1

http://www.gruppodab.it/public/press-area/libretto-musei-V04-def.pdf [1/2][1/2]

Antiintrusione

Sistema diControllovisitatori

Sistema di rivelazione espegnimento incendio

Sistema di supervisionedegli impianti tecnologici Controllo

accessi

Antifurto

Videosorveglianza Sistema di Monitoraggioambientale

Protezione di Opere d’arteall’aperto ed aree archeologiche

Page 2: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

2

[2/2][2/2]

Page 3: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

3

PROBLEMAPROBLEMA: Monitorare una grandezza fisica.

Perchè? ...necessita’ concreta

Cosa serve? ...idea semplice

Come? ...strumenti H/W e S/W

ProblemaProblemaH/WH/W

IdeaS/WS/W

Page 4: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

4

1.1. Trasduttore da Grandezza Fisica a Grandezza Elettricaper la misura della G.F.

2.2. Dispositivo di Conversione da Grandezza Analogica a Grandezza Digitale (A.D.C.)

3.3. CalibrazioneCalibrazione tra G.D. e G.F.

4.4. Circuito Digitale per la letturadei valori misurati e convertiti in digitale da ADCADC

5.5. Trasferire in un PCPC i Valori digitali misurati

6.6. Ad ogni valore misurato va associato l’istante di misura tt

7.7. Salvare in memoriatutti i valori misurati ed il relativo istante di misura in un FileFile

Cosa serve?Cosa serve? ...idea semplice...idea semplice

Page 5: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

5

Principio base di un sistema di controlloPrincipio base di un sistema di controllo

Page 6: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

6

Page 7: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

7

Page 8: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

8

...idea semplice per monitorare la temperatura...idea semplice per monitorare la temperatura

PCPCMultimetro DigitaleMultimetro Digitale

Sensore di temperaturaSensore di temperatura

S/WS/W:1. Inviare i comandi attraverso la linea seriale2. Ricevere i dati misurati attraverso la linea seriale

H/W:H/W:

Page 9: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

9

Multimetro Digitale: FLUKE45Multimetro Digitale: FLUKE45

Sensore di temperatura: LM35 Sensore di temperatura: LM35

Page 10: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

10

Vario il dutyduty--cyclecycle del segnale pilota

Page 11: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

11

Possibile approccio per monitorare in automatico la Temp.senza richiedere l’intervento diretto dell’uomo per ogni singolo passo:

1. Inviare il comando attraverso la linea seriale

2. Ricevere il dato misurato attraverso la linea seriale

3. Registrare il dato misurato

utilizzo di un softwaresoftware (insieme di linee di comando ) residente nel PC eseguito passo dopo passo

Page 12: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

12

Il linguaggio PYTHON nasce nel 1990: il padre e’ Guido van Guido van RossumRossum che all’epoca era un fan diun gruppo di comici inglesi famosi sulla BBC per “Monty Python's Flying Circus” .Quindi, il nome non sta per PITONE...

Il sito ufficiale e’ http://http://www.python.orgwww.python.org

Si tratta di un linguaggio interpretato anche se molte implementazionilo compilano per motivi di efficienza):si puo` interagire con una macchina virtuale Python in maniera interattiva.L'esecuzione avviene attraverso l'interprete python, di cui sono disponibili pacchetti di istallazione per le varie distribuzioni di software esistenti.Una caratteristica di Python e’ la sua Portabilita’ da una piattaforma con un Sistema Operativo ad un altro diverso.

Page 13: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

13

Cosa vuol dire linguaggio “interpretato”?

Un linguaggio interpretato è un linguaggio di programmazione i cui programmivengono eseguiti da un altro programma chiamato interprete. A differenza di un interprete, un compilatore non esegue il programma chericeve in ingresso, ma lo traduce in linguaggio macchina memorizzando su file ilcodice oggetto pronto per l’esecuzione diretta da parte del processore.

L’interprete, che esegue ogni riga del nostro codice, varia a seconda del processore nel computer, per cui ciò che noi scriviamo nel nostro programmaviene interpretato in base all'architettura.In questo modo viene garantita la portabilità del codice, ovvero la possibilità di poter far funzionare su tutti i computer che abbianoinstallato l’interprete il nostro programma.In generale, un linguaggio interpretato può presentare uno svantaggio: risultarepiù lento del codice compilato, perchè viene interpretata ogni singola istruzione.

Page 14: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

14

Page 15: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

15

Prompt dell’interprete Python: >>>>>>Assegnazione: si usa l'operatore =# questo carattere rappresenta l'inizio di un commento

Esempio: Python come calcolatrice

>>> 2+24>>> 10 / 3 # divisione intera3>>> (50-5*6)/4 # a comment5>>> width = 20>>> height = 5*9>>> width * height900>>> x = y = z = 0 # Zero x, y and z>>> # Floating point>>> 3 * 3.75 / 1.57.5>>> 7.0 / 23.5

Page 16: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

16

In Python, non vengono utilizzati caratteri speciali per distinguere iltipo di variabile!

…se si utilizza lo stesso nome per una nuovavariabile, viene sovrascritto il contenuto dellavariabile precedente!

Il tipo di dato non deve essere dichiarato esplicitamente

Esempio: definizione di variabili...non serve dichiararle all’inizio

>>> pippo = 7Viene creata una variabile pippo, di tipo intero, contenente il valore 7

>>> pippo = 5.5pippo e` divenuta una variabile reale...

>>> a = b = c = 0sia a che b che c assumono il valore 0

Page 17: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

17

Esempio: stringhe e concatenazioni tra stringhe

>>> messaggio = "aiuto! "

>>> “Al fuoco! ” + messaggioAl fuoco! aiuto!

>>> messaggio * 7'aiuto! aiuto! aiuto! aiuto! aiuto! aiuto! aiuto! '

>>> messaggio * 0' ' # stringa vuota

Esempio: slice di una stringa

>>> x = "casa"

>>> x[:2]'ca'

>>> x[2:]'sa'

>>> x[:]'casa'

>>> x[-2] # anche all'indietro!'s'

>>> len(x) # lunghezza di una stringa

| c| a| s| a|| 0| 1| 2| 3| 4|-4|-3|-2|-1|

Page 18: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

18

Una particolarita’ del linguaggio Python:in generale un un bloccoblocco e` e` delimitatodelimitatoper mezzo per mezzo delladella indentazioneindentazione!

Si posso usare spazi o tab, basta che siano lo stesso numero.

Esempio: istruzione whilewhile

a, b = 0, 1 # assegnamento con tupla (detto multiplo)!

while b < 10:print b, # "," serve ad evitare \n finalea, b = b, a+b

Page 19: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

19

Esempio: istruzione ifif

if cond1:# cond1 vera

elif cond2:# cond2 vera

elif cond3:# cond3 vera

...else :

# nemmeno una vera!

Esempio: istruzione ifif

x = 25if x > 50:

y = 1elif x < 30:

y = 2else:

y = 3if x > 10: print 'OK'else: print 'NO'

Page 20: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

20

Esempio: istruzione for

>>> for x in (0,1,2):print x**2

014

>>> range(3)[0, 1, 2]

>>> for x in range(3):print x**2

014

Page 21: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

21

print "..............................................."import serialfluke45=serial.Serial('COM7',9600)fluke45.flush()fluke45.write('*IDN?\r')print fluke45.read(41)print "................................................"fluke45.close()

fluke45_IDN.py

print "..............................................."#import serialfluke45=serial.Serial('COM9', 9600)j=1#while j<3:

fluke45.flush()fluke45.write('VAL?\r')x1 = fluke45.read(6)x2 = fluke45.read(8)x3 = fluke45.read(2)print x1, x2, x3j = j + 1

#print "..............................................."fluke45.close()

fluke45_VAL_mod.py

IDLE 1.2.1 >>> import serial>>> fluke45 = serial.Serial('com5',9600)>>> fluke45.flush()>>> fluke45.write('VAL?\r')>>> print fluke45.read(9)-1E+9=>>>>

Fluke45_VAL.py

Page 22: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

22

from datetime import dateprint date.today()import timeprint time.ctime()d = time.gmtime()print dprint d.tm_min

uscita-su-finestra-da-prova_290510.txt

44

2010-05-29

Sat May 29 19:44:09 2010

time.struct_time(tm_year=2010, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=44, tm_sec=9, tm_wday=5, tm_yday=149, tm_isdst=0)

Page 23: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

23

k=0j=1secondi0=0while 1:

import serialfluke45 = serial.Serial('COM4',9600)fluke45.flush()fluke45.write('VAL?\r')x1=fluke45.read(10)

fluke45.close()

prova_010610.py

j=j+1 import time'scegliere o localtime o gmtime'd = time.localtime()

secondi = d.tm_sec

if (secondi - secondi0) == 1 :k = k+1print secondi , ";",k, ";",x1

secondi0 = secondiif j == 100 :

break

Page 24: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

24

import time'scegliere o localtime o gmtime'd = time.localtime()

ora0 = d.tm_hourminuti0 = d.tm_minminuti0 = minuti0 + ora0*60

k=0j=1secondi0=0while 1:

import serialfluke45 = serial.Serial('COM4',9600)fluke45.flush()fluke45.write('VAL?\r')x1=fluke45.read(10)

fluke45.close()

prova2_010610.py

j=j+1 import time'scegliere o localtime o gmtime'd = time.localtime()

secondi = d.tm_secminuti = d.tm_minora = d.tm_hour

if (secondi - secondi0) == 1 :k = k+1print secondi , ";",k, ";",x1

secondi0 = secondi

if ((minuti + ora*60)-minuti0) == 1 :break

Page 25: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

25

durata_daq = input("inserire durata totale acquisizione in minuti: ");print durata_daq;

import time'scegliere o localtime o gmtime'd = time.localtime()ora0 = d.tm_hourminuti0 = d.tm_minminuti0 = minuti0 + ora0*60

k=0j=1secondi0=0while 1:

import serialfluke45 = serial.Serial('COM5',9600)fluke45.flush()fluke45.write('VAL?\r')x1=fluke45.read(10)

fluke45.close()

prova_020610.py [1/2]

Page 26: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

26

j=j+1 import time'scegliere o localtime o gmtime'd = time.localtime()

secondi = d.tm_secminuti = d.tm_minora = d.tm_hour

if (secondi - secondi0) == 1 :k = k+1print k, ";",x1

secondi0 = secondi

if ((minuti + ora*60)-minuti0) == durata_daq :break

prova_020610.py [2/2]

Page 27: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

27

durata_daq = input("inserire durata totaleacquisizione in minuti: ");print durata_daq;

pluto = open('F:\misure.txt','w')

import time'scegliere o localtime o gmtime'd = time.localtime()ora0 = d.tm_hourminuti0 = d.tm_minminuti0 = minuti0 + ora0*60

k=0j=1secondi0=0while 1:

prova2_020610.py [1/2]

Page 28: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

28

prova2_020610.py [2/2]

import serialfluke45 =

serial.Serial('COM5',9600)fluke45.flush()fluke45.write('VAL?\r')x1=fluke45.read(10)

fluke45.close()

j=j+1 import time'scegliere o localtime o gmtime'd = time.localtime()

secondi = d.tm_secminuti = d.tm_minora = d.tm_hour

if (secondi - secondi0) == 1 :k = k+1print k, ";",x1

pluto.write(str(k)+';'+str(x1))

secondi0 = secondi

if ((minuti + ora*60)-minuti0) == durata_daq :

pluto.close()

break

2;123453;123454;123455;12345

misura.txt

Page 29: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

29

FFLLUUKKEE4455++RRSS223322

[1[1//4]4]

Page 30: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

30

FLUKE45 + USB/RS232FLUKE45 + USB/RS232 [2a/4][2a/4]

Page 31: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

31

FLUKE45 + USB/RS232FLUKE45 + USB/RS232 [2b/4][2b/4]

Page 32: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

32

FLUKE45 + USB/RS232FLUKE45 + USB/RS232 + Python+ Python [3/4][3/4]

Page 33: DAQperBBCC 060610 mod

060610 Lab. Mis. An. Dati (LS in BB-CC) AA209/2010

33

Python + SerialUSB/RS232Python + SerialUSB/RS232 [4/4][4/4]