Caricare documenti e articoli online  
INFtube.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.
Meneame
 
Non ricordi la password?  ››  Iscriviti gratis
 

Urzia Francesco

informatica


Inviare l'articolo a Facebook Inviala documento ad un amico Appunto e analisi gratis - tweeter Scheda libro l'a yahoo - corso di



ALTRI DOCUMENTI

Corso di Microsoft Access
FISICA I
GUIDA AD UN CORRETTO UTILIZZO DI DC++
IFOEDIT
SISTEMA OPERATIVO - SISTEMI UNIPROGRAMMATI
LE Bai del computer - Central Processing Unit (CPU)
JDBC è un eccellente interfaccia di programmazione
Enciclopedia Dell'HaCkEr
PROPRIETA' DELLA TRASFORMATA DI FOURIER

RELAZIONE DI SISTEMI

 

TITOLO: realizzare un software che funzioni da contapezzi

SCOPO: realizzare un software che funzioni da contapezzi

 

CIRCUITO: possiamo dire che questa prova era essenzialmente composta da due circuiti: CIRCUITO DI INIZIALIZZAZIONE e di CONTEGGIO

 

CIRCUITO DI INIZIALIZZAZIONE



Figura 1

CONTEGGIO

Figura 2

 

 

 

Il circuito di inzializzazione non fa altro che acquisire i dati che gli fornisce il nostro contatore. L'acquisizione dati(eseguita via hardware c 444f56e on diversi tipi di interfaccia), avviene tramite software, con due strumenti virtuali fornitici da Labview: write to digital line e read from digital line.

Il primo imposta una linea della porta configurata precedentemente ad un valore logico alto o basso. Questo strumento è composto da diversi ingressi:

  • Il device, è l'indirizzo della scheda DAQ;
  • Port number, specifica il numero della porta a cui appartiene la linea;
  • Line, specifica la linea digitale su cui scrivere;
  • Line state, invia i valori logici "vero" o "falso" alla linea specificata.

Figura 3

Il secondo legge lo stato logico di una linea digitale su una porta configurata dall'utente. Anche qui ci sono diversi ingressi, essi hanno le stesse funzioni dello strumento precedente, tranne che per gl'ingresso line e line state:

  • Line, specifica la linea digitale che si vuol leggere;
  • Line state restituisce lo stato logico della linea data.

Figura 4

Nel disegno si possono notare dei quadrati blu, fucsia e verdi; essi li incontreremo anche più avanti perché hanno delle funzioni fondamentali all'interno di un sistema.

In figura è rappresentato una costante numerica, essa specifica le costanti a cui si deve attenere il circuito.

La figura sottostante rappresenta una stringa costante. Le stringhe, sono un'insieme

*dei caratteri ASCII. Essa viene utilizzata per il controllo di strumenti, che, grazie a questo strumento, da i dati numerici ad esso come se fossero stringhe di caratteri, per poi essere riconvertiti in numeri.

*A lato è rappresentata una costante boleana essa ha la funzione di dare un valore vero o falso alla sua uscita.        

Spiegato il circuito di inzializzazione passiamo al contapezzi.

Questo circuito è composto da diversi componenti che ora spiegherò:

nel circuito si evidenziano tre principali strutture: la prima, è la struttura sequence, che ha una serie di riquadri sovrapposti

Figura 5         con un bordo che ricorda quello forato di una pellicola cinematografica e viene utilizzata per eseguire le operazioni secondo una sequenza preordinata. La struttura sequenze, è il mezzo utilizzato da Labview per controllare l'ordine di esecuzione dei vari nodi di programma. Per controllare l'ordine, si inserisce un codice che viene inserito all'interno del riquadro  , premendo sulla freccia destra del riquadro, verrà visualizzato un 1, qui si comporrà un altro circuito che si svolgerà dopo aver compiuto il primo. Quindi la struttura sequence viene usta per eseguire i nodi di un diagramma secondo un ordine predefinito.

La seconda struttura riconoscibile è il ciclo while o while loop, esso è riconoscibile dalla frecciettina che fa angolo sulla destra della sua cornice.

Esso svolge le operazioni al suo interno fino a che il valore Booleano passato al terminale condizione , non diventa falso. Questa struttura virtuale controlla il terminale condizione di ciascuna

iterazione; quindi il ciclo while viene sempre eseguito una volta. Dalla figura si nota un altro terminale: il terminale di iterazione , questo è un terminale di uscita numerico che contiene il numero di volte che il ciclo è stato eseguito.

La terza struttura che si nota, disposta all'interno del ciclo while, è la struttura case; questa struttura è rappresentata da una serie di schede sovrapposte, di cui se ne può

una sola alla volta. La seguente struttura può ricevere sia costanti numeriche che boleane, in base alla variabile che riceve essa assume "forme diverse":                                                                              Struttura case numerica                    Struttura case Boleana

                                                          

Quindi la struttura case viene utilizzata per eseguire diversi segmenti di codice in relazione al valore in ingresso sul terminale di selezione della struttura.

Per far fronte alle nostre esigenze, abbiamo dovuto utilizzare diverse porte logiche, che verranno descritte di seguito.

PORTA NOT

Questa porta svolge una operazione di negazione: essa si esegue con una sola variabile, di cui inverte il livello logico, fornendone l'opposto di quello ricevuto. Di seguito vengono riportati il simbolo circuitale della porta Not (per Labwiev) e la propria tabella di verità.

                       

A

B

0

1

1

0

                                              

PORTA AND

Le porte And svolgono un prodotto logico: danno sempre in uscita uno 0 tranne quando tutte le variabili in ingresso assumono livello logico 1, nel qual caso il prodotto logico da 1. Di seguito vengono riportati il simbolo circuitale della porta Not (per Labwiev) e la propria tabella di verità.          

             

A

B

Y

0

0

0

0

1

0

1

0

0

1

1

1

 

PORTA OR

 Questa operazione consiste in una somma logica: il risultato è sempre 1, tranne quando tutte le variabili assumono livello 0, nel qual caso la somma è 0. Di seguito vengono riportati il simbolo circuitale della porta Or (per Labwiev) e la propria tabella di verità.          

A



B

Y

0

0

0

0

1

1

1

0

1

1

1

1

                           

 

 

 

 

 


PORTA  NAND

questo tipo di porta esegue le operazioni inverse della porta And.

                        

A

B

Y

0

0

1

0

1

1

1

0

1

1

1

0

 

LATCH SR

Il Latch SR (set-reset) è un elemento circuitale necessario del nostro circuito,

 Questo tipo di circuito è formato da porte logiche NOR che sono considerate come delle porte OR, seguite da uno stadio di inversione (una porta NOT è come uno stadio di inversione).

 Qui di seguito è riportata la tabella di verità con il simbolo della porta NOR:

 

S

R

Y

0

0

1

0

1

0

1

0




0

1

1

0

 

Questo circuito ha due ingressi S (Set= impostare) e R (Reset= azzerare), e due uscite Q e Q. IL circuito svolge le sue funzioni in questo modo:

S=0  R=0

Con questi due valori in ingresso, l'uscita della porta A è 1, quindi gli ingressi della porta B sono 0 e 1, di conseguenza la sua uscita sarà pari a 1 e ci troviamo nella condizione di memoria (latch), cioè Qn+1 e Qn+1 saranno le uscite precedenti del Latch.

S=0   R=1

L'uscita della porta A è 1 con ciò gli ingressi della porta B saranno 0 e 1, ma con 0 e 1 la porta NOR ha uscita 0, quindi Qn+1 è 0 e Qn+1 è 1, ci troviamo nella condizione di reset.

S=1   R=0

L'uscita della porta A è 0, questo valore riportato nell'ingresso della porta B fa sì che i suoi ingressi siano 0 e 1, questo impone la sua uscita nello stato di 1 in questo modo il Latch è nella funzione di set.

S=1  R=1

Con questi valori in ingresso, la porta A ha un'uscita nello stato di 0 così come anche la porta B ha uscita 0, questa soluzione alle due uscite delle porte NOR non è  usata perché non possiamo passare tra questi due stati poiché non riusciamo a prevedere le uscite del circuito.

Tabella di funzionamento del Latch a porte NOR.

 

S         R

Qn+1        Qn+1

Funzione

0             0

Qn                Qn

LATCH

0             1

0                   1

RESET

1             0

1                   0

SET

1             1

0                   0

Non usata

 

Schema logico (con Labview)                                             Simbolo circuitale 

 

                    

 

Il Lacth SR, lo abbiamo utilizzato come subVI; una subVI non è altro che un sottoprogramma. Questo sottoprogramma deve avere un'icona e un connettore. I terminali del connettore trasferiscono i dati al codice del sottoprogramma e ricevono i risultati dallo stesso.

L'icona viene creata dall'utente, mentre il connettore viene definito scegliendo il numero dei terminali che si desiderano per lo strumento virtuale e poi assegnando questi terminali un controllo o indicatore del pannello frontale.

Nel nostro programma compaiono tre triangoli gialli, queste sono denominate funzioni.

*     Questa funzione è chiamata "Equal to 0" non è altro che una

funzione di comparazione, che alla sua uscita da un valore vero se alla sua entrata ha 0.

*     Questa funzione viene chiamata funzione "Less or equal", essa è composta da due ingressi e una uscita, ai due ingressi arriveranno i dati da mettere  a confronto, in uscita, se i due valori corrispondono ci sarà un certo valore, altrimenti un altro.

*     Questa funzione viene chiamata "Increment", il suo funzionamento consiste nell'incrementare di una unità il valore che gli arriva in ingresso.

    Questa funzione viene chiamata "Select", in base al valore assunto dall'interruttore "Restart", la funzione fornisce un valore falso o vero.

All'interno di una struttura case, si può notare un oggetto rappresentato da una

Tromba: questo è uno strumento virtuale chiamato "Beep". Nel nostro caso se l'uscita del comparatore è uguale al numero dei pezzi da contare, il Beep emette un suono.

Labview è composto da un pannello frontale e da un diagramma a blocchi. Il pannello frontale (con manopole, interruttori, grafici ecc.) definisce i dati di ingresso e quelli di uscita, esso costituisce l'interfaccia utente che consente la scambievolezza dei dati col programma.

Il diagramma a blocchi rappresenta il programma eseguibile. I componenti del diagramma a blocchi, chiamati icone, rappresentano gli strumenti di più basso livello e le strutture di controllo del programma.

Nella parte del diagramma a blocchi, troviamo figure simili a questa,, queste figure sono dei controlli boleana che prima di apparire nel diagramma a blocchi, vengono selezionate nel pannello frontale tramite un menù a tendina come quello in figura. Da questo menu possiamo scegliere diversi tipi di controlli di cui vi elenco i più usati:   CONTROLLI BOLEANI

            COTROLLI NUMERICI

 

 

 

 

 

 

 

          GRAFICI

 

 

 

 

 

 

 

Per il nostro circuito abbiamo utilizzato tre controlli

boleani e due controlli numerici, quest'ultimi utilizzati per visualizzare il numero di pezzi da contare e il numero di pezzi contati.

FUNZIONAMENTO

Lo scopo del nostro circuito, è di contare il numero di volte che l'oggetto che scegliamo passa davanti ad una fotocellula.

Questo avviene su di un nastro che, mosso da un motore passo- passo, li quale muove il nastro dove, nel nostro caso, ci sarà un bicchiere di plastica, che passerà davanti ad una fotocellula. La rilevazione poteva avvenire in altre maniere, ma noi abbiamo scelto di creare un software che rilevi il numero di volte che il bicchiere passa davanti alla fotocellula. Usando il programma Labview, fornitoci dalla scuola, abbiamo iniziato a ragionare su come poter realizzare un software che iniziasse a contare quando volevamo, ma che si doveva fermare da solo. Il diagramma di flusso, spiega come dovrebbe funzionare il programma.

Ovale: START        
Decisione: Pezzi = 100



 

 

 

 


                                            V                       F     

 

 

 

 

 

 

 

 

 


STOP

 
                                     V                       F     

 

 

 

 

 

Il primo problema postoci è stata l'acquisizione dati. Risolvere questo problema non è stata una grossa difficoltà perché Labview ci fornisce degli strumenti virtuali capaci di rilevare i dati dall'esterno (fig. 1,2); questi strumenti sono collegati fra loro avendo un device e una linea diverse, essi sono collegati virtualmente all'interfaccia con l'esterno.

Per ottenere il risultato che ci aspettiamo (rilevazione e conteggio), abbiamo dovuto dividere in due parti il problema: l'acquisizione appunto che svolge anche la funzione di inzializzazione, e la parte del conteggio. La prima parte l'abbiamo già risolta, ora esaminiamo la seconda parte.

La seconda parte deve svolgere essenzialmente la funzione di conteggio e stoppaggio del motore che fa muovere il nastro trasportatore.

Come sappiamo Labview ci fornisce diverse strutture che svolgono diverse funzioni, a noi serviva una struttura che aveva la capacità di eseguire dei cicli, perché logicamente il motore passo- passo per far si che il nastro si muova, esegue dei giri, ad ogni giro il bicchiere posizionato sul nastro passerà davanti alla fotocellula, questo procedimento si svolgerà fino a quando avremo raggiunto il numero di pezzi da contare da noi predisposto, ogni giro che il nastro compirà, o per meglio dire, ogni qual volta che il bicchiere passerà dinanzi alla fotocellula possiamo dire che si sarà compiuto un ciclo. La struttura che ha la capacità di tenere conto di un ciclo o più cicli, è il while loop (o ciclo while), precedentemente spiegato.

Da come si può notare dalla fig. 2, all'interno del while loop ci sono dei componenti, essi hanno una funzione ben specifica, e tutti insieme contribuiscono allo svolgimento del conteggio. Premendo sul pannello frontale il tasto START, si fa partire il circuito, il quale grazie al circuito di inizializzazione, controlla se il motore passo- passo è acceso, se è acceso passa l'informazione alla parte del conteggio la quale dopo aver rilevato il primo passaggio dell'oggetto, comincia a contare. Avendo rilevato il primo passaggio, il primo digline  fornisce alla porta AND un valore alto, dato che la porta AND è composta da due ingressi, al secondo ingresso gli arriva il valore fornitogli dalla porta NOT. Il funzionamento della porta AND lo ho già citato precedentemente, ma in questo caso possiamo associare il suo funzionamento  a questa tabella di verità:

A

B
Y

F

F

F

F

V

F

V

F

F

V

V

V


Questa porta
AND è collegata ad una struttura case, la quale se riceve un valore "falso" non incrementa il valore precedentemente rilevato; al contrario, se riceve un valore "vero" incrementa il valore precedentemente rilevato grazie alla funzione "increment", che appunto aumenta il valore precedente di una unità alla volta. A questo punto il segnale esce dal case ed arriva alla funzione "select", la quale solo alla prima volta porta il valore allo zero a cui è collegata, mentre le altre volte lo fa proseguire in modo che venga comparato con il numero di pezzi da contare e rilevato dal display che visualizza le contate. Quando il segnale viene comparato con il numero di pezzi da contare, se uguale o maggiore (quest'ultima cosa  non si dovrebbe verificare) al valore precedentemente impostato, il segnale entra in una struttura case dove all'interno della quale è disposta una funzione di dialogo chiamata "Beep" la quale emetterà un suono e in contemporanea con il suono si spegnerà anche il motore. Lo spegnimento del motore, è dovuta all'informazione che esce dal comparatore, che oltre ad essere collegato con il case, è collegato ad una porta NAND la quale è collegata insieme ad una porta OR ad un LATCH SR che in base agli ingressi pilota il motore.

La sopraccitata porta OR, ha gli ingressi collegati al RESTART, e alla funzione "Equal to 0"; quest'ultima è formata da un solo ingresso che è collegato al terminale di uscita numerico (della struttura case) che contiene il numero di volte che il ciclo è stato eseguito.

La struttura while, ci permette di svolgere i cicli, fino a che il valore Booleano passato al terminale condizione, non diventa falso. Questa struttura virtuale controlla il terminale condizione di ciascuna iterazione; quindi il ciclo while viene sempre eseguito una volta, e smetterà di svolgere i cicli quando premeremo sul pannello frontale il tasto STOP, che dovrebbe generare un valore vero, ma se ad esso gli colleghiamo una porta NOT, il valore vero generato dal nostro interruttore diventerà un valore falso, in modo tale da fermare il nostro circuito.

Risolte le due parti ( inizializzazione e conteggio), dobbiamo trovare una struttura che sia in grado di far svolgere prima le operazioni svolte dal circuito di inizializzazione, e successivamente quelle del circuito di conteggio. La struttura che ci permette di svolgere questo processo è struttura "sequence"(fig. 5), visto che ci permette di eseguire le operazioni secondo una sequenza preordinata.

Elaborare questo circuito non è stato facile, anche per la complessità del software (Labview) che abbiamo utilizzato per questa applicazione, visto che ci sono alcune funzioni che sono complicate da comprendere.

 







Privacy

Articolo informazione


Hits: 1167
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI

E 'stato utile?



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2019