Una ditta specializzata in confezionamenti di ananas costruisce una rete
logica per ottimizzare la propria produzione.
La rete è formata da un nastro trasportatore, dove scorrono i prodotti
che devono essere sottoposti ad un controllo, e due sensori in alto posti
ad una distanza tale da individuare i prodotti che rispettano lo standard.
Se l’esito del controllo è positivo allora il prodotto è idoneo alla vendita e
viene incanalato in ceste apposite altrimenti viene scartato e destinato
all’inscatolamento del prodotto sciroppato.
L’incanalamento è effettuato da un braccio motorizzato che ostacola il
passaggio nella zona sbagliata: se il braccio è alzato (C=0) significa che il
prodotto ha passato il controllo di qualità altrimenti il braccio è
abbassato(C=1).
La rete poi provvede ad ottimizzare anche i tempi di controllo per
aumentare la produzione, infatti il nastro trasportatore è dotato di tre
velocità: fermo(N=00), normale (N=01) ed extra-speed (N=11).
La velocità normale del nastro è attiva quando si stanno controllando i
prodotti e quando si resetta la rete, mentre quella extra-speed entra in
gioco quando non ci sono prodotti in fase di analisi per far
sopraggiungere ai sensori più rapidamente gli ananas da controllare.
Le velocità vengono attivate automaticamente dalla rete e quella extraspeed viene disattivata non appena si presenta un prodotto da
controllare.
Inoltre è prevista la possibilità di fermare il nastro in caso di emergenza
o al sopraggiungere di un prodotto che non è un ananas e in qualsiasi
momento tramite un pulsante azionato da un addetto.
Tale pulsante è fatto in modo che rimane premuto e solo dopo il suo
rilascio(un’altra pressione del pulsante) il nastro riprende la sua velocità
e se si stava facendo un controllo su un prodotto corretto è necessario
rimettere il prodotto in coda per verificarlo di nuovo o l’addetto scarta
direttamente il prodotto.
Si pone la regola che l’addetto faccia ripartire il nastro mentre non ci
sono prodotti sotto i sensori per un corretto funzionamento della rete e
una valutazione corretta del prodotto stesso.
Stato emergenza
Stato emergenza
Caso conforme
Caso non
conforme
■AB
A
000
001
011
010
100
101
111
110
N C
F
-
C
A
-
-
-
I
01 1
B
F
-
C
B
-
-
-
L
01 0
C
-
D
C
-
-
-
L
-
01 0
D
E
D
-
-
-
L
-
-
01 0
E
E
-
-
B
L
-
-
-
11 0
F
F
G
-
-
I
-
-
-
01 1
G
H
G
-
-
-
I
-
-
01 1
H
H
-
-
A
I
-
-
-
11 1
I
H
-
-
-
I
I
-
I
00 1
L
E
-
-
-
L
L
L
L
00 0
B
C
D
E
F
G
H
I
L
X
X
X FE X
X
X
X
FH X X
X
X
X
X
X
X
A
B
X
X
X
X
X
X
C
X
X
X
X
X
X
D
X
X
X
X
X
E
FH X
X
X
X
F
X
X
X
G
X
X
H
X
I
Classi massime di compatibilità [AF], [BC], [CD], [E],[G], [H],[I], [L].
Esse sono necessarie per garantire la copertura e la chiusura.
Ottengo la seguente tabella delle transizioni:
■AB 000
001
011
010
100
101
111
110
NC
[AF] =>
α
α
ε
β
α
η
-
-
η
011
[BC] =>
β
α
γ
β
β
-
-
θ
θ
010
[CD] =>
γ
δ
γ
γ
-
-
θ
θ
-
010
[E] =>
δ
δ
-
-
β
θ
-
-
-
110
[G] =>
ε
ζ
ε
-
-
-
η
-
-
011
[H] =>
ζ
ζ
-
-
α
η
-
-
-
111
[I] =>
η
ζ
-
-
-
η
η
-
η
001
[L] =>
θ
δ
-
-
-
θ
θ
θ
θ
000
■AB
y1y2y3
000
001
011
010
100
101
111
110
NC
[AF] => α 000 000
100
001
000
111
-
-
111
011
[BC] => β 001 000
011
001
001
-
-
110
110
010
[CD] => γ 011 010
011
011
-
-
110
110
-
010
[E] => δ 010 010
-
-
001
110
-
-
-
110
[G] => ε 100 101
100
-
-
-
111
-
-
011
[H] => ζ 101 101
-
-
000
111
-
-
-
111
[I] => η 111 101
-
-
-
111
111
-
111
001
[L] => θ 110 010
-
-
-
110
110
110
110
000
Metto in evidenza le CORSE CRITICHE
■AB
y1y2y3
000
001
011
010
100
101
111
110
NC
[AF] => α 000 000
100
001
000
111
-
-
111
011
[BC] => β 001 000
011
001
001
-
-
110
110
010
[CD] => γ 011 010
011
011
-
-
110
110
-
010
[E] => δ 010 010
-
-
001
110
-
-
-
110
[G] => ε 100 101
100
-
-
-
111
-
-
011
[H] => ζ 101 101
-
-
000
111
-
-
-
111
[I] => η 111 101
-
-
-
111
111
-
111
001
[L] => θ 110 010
-
-
-
110
110
110
110
000
A questo punto vengono proposti due tipi di soluzione al
problema:
Con Eliminazione
delle corse critiche
Senza eliminazione
delle corse critiche
• Corretta
formalmente
• Induce un
risultato erroneo
nella simulazione
Post-Route
• Formalmente
meno corretta
• Comportamento
della rete fedele
alle aspettative
Tabella senza corse critiche
■AB
y1y2y3
000
001
011
010
100
101
111
110
NC
[AF] => α 000 000
100
001
000
100
-
-
100
011
[BC] => β 001 000
011
001
001
-
-
010
010
010
[CD] => γ 011 010
011
011
001
-
010
010
-
010
[E] => δ 010 010
-
-
011
110
110
110
110
110
[G] => ε 100 101
100
-
-
101
101
-
101
011
[H] => ζ 101 101
-
-
100
111
111
-
111
111
[I] => η 111 101
-
-
-
111
111
-
111
001
[L] => θ 110 010
-
-
-
110
110
110
110
000
■A
■A
Y1Y2
00
01
11
10
00
0
0
0
1
01
0
0
-
11
1
1
1
1
10
1
1
1
1
Y1Y2
00
01
11
10
00
1
1
y3B=00
00
01
11
10
11
1
1
-
10
1
1
1
11
0
0
-
10
0
1
1
y3B=01
■A
Y1Y2
01
0
-
■A
00
0
0
1
1
01
0
0
1
11
0
1
1
10
1
1
Y1Y2
00
01
11
10
00
0
0
-
y3B=10
Y1= ■!Y3 + Y3Y1 + Y1!Y2 + B!■!A!y3
01
0
0
-
y3B=11
■A
■A
Y1Y2
00
01
11
10
00
0
1
1
0
01
0
1
-
11
0
1
1
0
10
0
1
1
0
Y1Y2
00
01
11
10
00
0
0
y3B=00
00
01
11
10
11
1
1
-
10
1
1
0
11
1
1
-
10
1
1
1
y3B=01
■A
Y1Y2
01
0
-
■A
00
0
1
0
0
01
0
0
0
y3B=10
11
1
1
1
10
1
1
Y1Y2
00
01
11
10
00
1
1
-
01
0
1
-
y3B=11
Y2= y3■ + y2!y3 + y2B + y2!y1!A+ y3B!■!A
■A
■A
Y1Y2
00
01
11
10
00
0
0
0
1
01
0
1
-
11
0
0
0
1
10
0
0
0
1
Y1Y2
00
01
11
10
00
0
0
y3B=00
00
01
11
10
11
0
0
-
10
0
0
1
11
0
0
-
10
0
1
1
y3B=01
■A
Y1Y2
01
1
-
■A
00
0
0
1
1
01
1
1
0
y3B=10
11
0
1
1
10
1
1
Y1Y2
00
01
11
10
00
1
1
-
01
1
1
-
y3B=11
Y3= ■y1!y2 + y1y3■ + y3B!■ + !■AB+ y1!■!Ay3!B +
y1!y2!y3!B + y2!■A!B + y2!■!BA
Simulazione Behavioral con corse eliminate:
La simulazione behavioral funziona correttamente e ottengo i risultati sperati.
Infatti il reset=1 mi permette di settare la rete in uno stato iniziale in cui C=1
(ovvero suppongo che il prodotto non sia conforme) scelto in modo arbitrario e la
velocità del nastro è 01 ovvero il nastro procede a velocità normale.
Successivamente i test vanno a controllare il comportamento della rete durante il
controllo di un prodotto conforme allo standard. Si ha la configurazione dei
sensori A=1 e B=1 e ciò comporta C=0 correttamente, mentre il nastro continua a
procedere a velocità normale. Appena A=0 e B=0 la velocità del nastro passa a
speed .
Dopo di che si è voluto testare il funzionamento del pulsante stop , in grado di
fermare il nastro su cui vengono trasportati gli ananas. Esso agisce sulla velocità
del nastro solo se è premuto e se viene mantenuto il suo stato di pressione così
come richiesto. Inoltre si è rispettata la condizione richiesta che dopo il rilascio
dello stop il sistema deve trovarsi nella condizione A=0 e B=0, ovvero non
devono esserci prodotti in fase di analisi per il corretto funzionamento della
rete.
Il nastro procede dunque a velocità speed perché non ci sono prodotti.
Il test successivo denota come non appena sopraggiunge un prodotto al primo
sensore, la velocità del nastro passa da 11 a 01, ovvero rallenta riprendendo la
velocità normale.
Altro risultato efficiente ottenuto dalla rete lo notiamo nel caso in cui il prodotto
non è conforme allo standard. Le uscite funzionano correttamente ovvero C=1 e
il nastro nonostante vi sia un momento in cui A=0 e B=0 prima che B=1 non
passa alla velocità speed ma continua normalmente perché giustamente sta
analizzando un prodotto non conforme.
Simulazione Post-Route con corse eliminate :
Il comportamento è nettamente sbagliato perché eliminando le corse critiche
la rete va a trovarsi in stati in cui l’uscita N è diversa e questo genera un netto
malfunzionamento della rete risolvibile solamente con l’arresto del nastro
come si può notare.
Per ovviare a questo problema bisognerebbe utilizzare la tecnica delle
transizioni multiple andando a creare nuovi stati e nuove configurazioni con
opportune uscite. Ciò comporterebbe l’aumento delle variabili di stato a 4
aumentando la complessità della rete. Possiamo risolvere il problema come
vedremo in seguito.
■A
Y1Y2
00
01
11
10
■A
00
0
0
0
1
01
1
-
11
1
1
10
1
1
-
Y1Y2
00
01
11
10
00
1
1
y3B=00
00
01
11
10
11
1
-
10
1
1
11
1
1
-
10
1
1
-
y3B=01
■A
Y1Y2
01
0
-
■A
00
0
0
1
1
01
0
0
y3B=10
11
1
1
-
10
1
1
Y1Y2
00
01
11
10
00
0
0
-
01
0
0
-
y3B=11
Y1= ■ + y1!■!Ay3 + y1!y2!■!y3 + !■A!y3!B + !■!A!y3B
■A
■A
Y1Y2
00
01
11
10
00
0
1
1
0
01
0
0
-
11
1
1
-
10
1
1
1
-
Y1Y2
00
01
11
10
00
0
0
y3B=00
00
01
11
10
11
1
-
10
1
1
11
1
1
-
10
1
1
-
y3B=01
■A
Y1Y2
01
0
-
■A
00
0
1
0
0
01
0
0
y3B=10
11
1
1
-
10
1
1
Y1Y2
00
01
11
10
00
1
1
-
01
0
1
-
y3B=11
Y2 = ■ + !y1y2y3 + !■!A!y3y2 + y3B!■!A
■A
■A
Y1Y2
00
01
11
10
00
0
0
0
1
01
0
1
-
11
1
0
-
10
1
0
0
-
Y1Y2
00
01
11
10
00
0
0
y3B=00
00
01
11
10
11
0
-
10
0
1
11
0
0
-
10
0
1
-
y3B=01
■A
Y1Y2
01
1
-
■A
00
0
0
1
1
01
1
1
0
y3B=10
11
0
1
-
10
1
1
Y1Y2
00
01
11
10
00
1
1
-
01
1
1
-
y3B=11
Y3= y1■y3+ !y1!y2■!y3 + ■y1!y2 + y1!■Ay3!B + !y1!■y3B +A!y3!y1y2 +
y1!y2!■!y3!B + y1!■!Ay3!B +A!■!B
La sintesi delle uscite è identica sia nel caso in cui risolva le corse critiche che no
in quanto si tratta di una rete di Moore
y1y2
y3
00
1
0
0
1
01
0
0
11
0
1
10
1
1
C= y1y3 + !y2!y3
y1y2
y3
0
1
N(1)= ! Y1 + y1!y2
00
1
1
01
1
1
11
0
0
10
1
1
y1y2
y3
0
1
00
0
0
01
1
0
11
0
0
10
0
1
N(2) = y1!y2y3 + !y1y2!y3
Ricordiamo che C è il braccio meccanico per l’incanalamento del prodotto
in base all’esito del controllo, mentre N(2) è il bit più significativo della
velocità del nastro e N(1) quello meno significativo.
Si è optato di realizzare il progetto con la soluzione in cui le corse critiche non
vengono eliminate per avere una rete fedele a quanto richiesto.
Lo schematico è composto da 3 segnali di ingresso :
 Reset, permette di portare la rete in uno stato iniziale in cui C=1 e il nastro si
muove a velocità normale 01
 A e B, sono i sensori ingaggiati per effettuare i controlli di qualità sui prodotti
che passano sul nastro
E da 3 segnali di uscita:
 N0 e N1 che sono segnali distinti e non un vettore in questo caso dove N0 è il
bit meno significativo e corrisponde a N(1) mentre N1 corrisponde a N(2).
Si è scelto di non visualizzare il comportamento dei segnali interni y1, y2, y3 anche
se sono disponibili.
La simulazione Behavioral dello schematico è identica alla simulazione
Behavioral commentata in precedenza : la rete risulta essere corretta per tutte
le configurazioni in ingresso.
Come previsto la simulazione Post-Route comporta dei ritardi nelle
commutazioni di segnale a causa dei componenti scelti per realizzare la
rete e anche per i tempi fisici. I ritardi sono tutti accettabili in quanto sono
tutti inferiori ai 10 ns.
Vi sono però alcune anomalie che analizziamo nel dettaglio
1)
2)
Viene messo in evidenza che l’uscita N(1) ha un
piccolo glich che fa passare la velocità da 01 a 11
per 2 ns. L’impulso spurio però non
compromette l’uscita C che procede con il suo
valore corretto. Nella realtà non bastano 2 ns per
attivare un motore in grado di far accelerare e
decelerare un nastro in così poco tempo, quindi
è molto probabile che il nastro non acceleri ma
continui con la velocità normale
Qui la rete oltre ad avere un ritardo (essendo
a=0, N(1) dovrebbe valere 0 ma c’è un ritardo
comunque accettabile per il corretto
funzionamento ) N(1) diventa uguale a 0 per
poi rialzarsi a 1 e riabbassarsi definitivamente
a 0. Così come succede a C. Il tempo in cui
tutto ciò avviene è compreso tra 2/4 ns
dunque è molto probabile che il nastro e il
braccio non facciano in tempo a commutare il
proprio stato.
3)
Anche qui si nota la presenza di un
impulso spurio che varia il
comportamento della rete per un tempo
compreso tra 1 ns e i 2 ns.
La sua presenza è giustificata dal fatto
che non sono state risolte le corse
critiche dunque la rete può trovarsi in
stati intermedi prima di raggiungere lo
stato corrispondente
Ciò potrebbe non compromettere il
funzionamento reale della rete.
Possiamo concludere che i risultati ottenuti lasciando le corse critiche
sono più prossimi alle aspettative del testo rispetto a quelli in cui le
corse vengono eliminate e che alcuni impulsi spuri potrebbero non
incidere sul complessivo funzionamento della rete.
Si riporta il codice integrale dei test per verificare la correttezza della rete
Il seguente codice è identico sia per la versione VHDL che per la
versione con Schematico per controllare che entrambe le reti
rispondano allo stesso modo agli stimoli
Scarica

Presentazione