Quando la memoria serve: dal combinatorio al sequenziale
Prerequisiti: Porte logiche e tabelle di verità, Algebra di Boole e semplificazione
Fino a qui l’uscita di una rete dipendeva solo dagli ingressi presenti in quel momento: fissata la combinazione, l’uscita è decisa. È il significato stesso di tabella di verità, ed è il motivo per cui una rete combinatoria si può sempre scrivere come una tabella.
Il primo impianto vero rompe questa regola, e la rompe subito.
Il caso
Un serbatoio con due sensori di livello, una pompa che lo riempie e una valvola che lo scarica.
I dati del problema:
- i sensori e valgono 1 quando sono immersi, 0 quando sono all’asciutto;
- sta più in basso di ;
- la pompa si accende con un 1 in uscita, la valvola pure.
E la specifica di funzionamento, in due fasi:
Riempimento — la pompa parte quando il livello è sotto (serbatoio vuoto) e continua finché il liquido, salendo, raggiunge (serbatoio pieno).
Svuotamento — da pieno, il serbatoio può essere scaricato. Un nuovo riempimento è ammesso solo quando il livello torna sotto .
L’ipotesi che regge tutto il ragionamento: durante il riempimento non si preleva liquido.
Senza di essa il livello potrebbe scendere mentre la pompa è accesa, e le due fasi non sarebbero più distinguibili dal verso di marcia del livello. È scritta nel testo del problema, ma è il tipo di riga che si salta leggendo — ed è l’unica che rende la soluzione qui sotto corretta.
Prima prova: la tabella di verità
Due sensori, quindi quattro combinazioni. Proviamo a riempirla come si è sempre fatto.
| livello | |||
|---|---|---|---|
| 0 | 0 | sotto entrambi: vuoto | 1 |
| 0 | 1 | — | — |
| 1 | 0 | fra i due sensori | ? |
| 1 | 1 | sopra entrambi: pieno | 0 |
Le righe estreme non danno problemi: vuoto si riempie, pieno si ferma. Le altre due sì, e per motivi diversi fra loro.
Riga . Il sensore alto immerso mentre quello basso è all’asciutto: il liquido dovrebbe stare sopra e sotto contemporaneamente. Non può succedere, e la casella si lascia libera — è una condizione di indifferenza: qualunque valore ci si metta, la realtà non la produrrà mai.
Riga . Qui il liquido sta a metà, e questa situazione si verifica eccome: ci si passa due volte, una salendo e una scendendo.
La contraddizione
Salendo, la specifica dice continua fino a : quindi . Scendendo, dice nuovo riempimento solo sotto : quindi .
Non è un errore di compilazione della tabella: sono le due richieste della specifica, tradotte correttamente. La tabella non riesce a contenerle.
Nessuna rete combinatoria realizza questo impianto. Non è che non l’abbiamo ancora trovata: non esiste. Una rete combinatoria, per definizione, associa a ogni combinazione di ingressi una sola uscita — e qui la stessa combinazione ne pretende due.
Se leggendo una specifica trovi la stessa combinazione di ingressi con due uscite diverse, hai appena dimostrato che il problema è sequenziale.
Impossibile e ambiguo non sono la stessa cosa, anche se in tabella lasciano tutti e due la casella vuota.
La prima è un dono: la si riempie come fa comodo per semplificare. La seconda è il problema: riempirla “come fa comodo” produce un impianto che sbaglia metà delle volte, e sbaglia in modo intermittente — il caso peggiore da diagnosticare.
Che cosa manca
Manca il verso di marcia: il livello sta salendo o sta scendendo? Quell’informazione non è leggibile dai sensori adesso. Dipende da com’è andata prima.
Il pezzo mancante ha un nome: stato. Lo stato è ciò che resta della storia passata e che serve a decidere il presente — niente di più. Non serve sapere da quanti minuti la pompa gira né quante volte il serbatoio è stato riempito: basta sapere in quale delle due fasi ci si trova.
Una rete che tiene conto dello stato si chiama rete sequenziale:
Il diagramma degli stati
Quando gli stati sono pochi conviene disegnarli. Ogni stato è un cerchio, ogni transizione una freccia con sopra la condizione che la fa scattare.
Si legge così:
- nello stato riempimento la pompa è accesa; finché ci si resta;
- quando diventa 1 (pieno) si passa a svuotamento;
- nello stato svuotamento la pompa è spenta; finché ci si resta;
- quando torna a 0 (vuoto) si rientra in riempimento.
A un diagramma completo manca ancora un pezzo, e ci si accorge solo provando a usarlo: da dove si parte? Lo stato iniziale si marca con una freccia che entra nel cerchio dal nulla, e non è un dettaglio grafico: all’accensione l’impianto deve pur stare da qualche parte, e quale sia è una scelta di progetto, non qualcosa che si scopre. Qui la scelta prudente è partire in svuotamento — il perché è nella lezione sul ladder, che all’accensione dedica una sezione intera.
La stessa cosa in forma di tabella, che è ciò che si usa quando gli stati diventano troppi per stare in un disegno:
| stato attuale | stato prossimo | ||||
|---|---|---|---|---|---|
| riempimento | 0 | 0 | riempimento | 1 | 0 |
| riempimento | 1 | 0 | riempimento | 1 | 0 |
| riempimento | 1 | 1 | svuotamento | 0 | 1 |
| svuotamento | 1 | 1 | svuotamento | 0 | 1 |
| svuotamento | 1 | 0 | svuotamento | 0 | 1 |
| svuotamento | 0 | 0 | riempimento | 1 | 0 |
Le uscite in tabella sono quelle dello stato prossimo, non di quello attuale. Sulle due righe di transizione la pompa ha già cambiato valore: appena arriva a 1, va a 0 — non al giro dopo.
Non è una finezza di notazione: è come si comporta l’impianto vero — appena il sensore di pieno commuta, la pompa si spegne subito, non un giro dopo. Questo basta per leggere la tabella; la prova formale arriva nella lezione sul ladder, dove la rete che realizza questo impianto è : con dà nello stesso ciclo di scansione in cui il sensore commuta. Se la tabella dicesse su quella riga, descriverebbe un impianto diverso da quello che poi si costruisce.
Leggendo la tabella tieni quindi l’occhio sulla colonna stato prossimo: è lei che comanda le uscite. La convenzione opposta — uscite decise dal solo stato attuale — esiste ed è altrettanto legittima, ma va detta, perché cambia il comportamento di un ciclo.
La riga che prima era irrisolvibile ora compare due volte — una per stato — con uscite diverse e senza nessuna contraddizione. Aggiungere lo stato non è un trucco per aggirare la tabella: è allargarla con la colonna che le mancava.
E come si realizza, uno stato?
Con due stati basta un bit di memoria. E il bit si può ricavare da quello che già c’è: se la pompa è accesa, siamo in riempimento; se è spenta, in svuotamento. Lo stato coincide con l’uscita.
Da qui la mossa che risolve il problema: rileggere la propria uscita come se fosse un ingresso. Il come si vede nella lezione sul linguaggio ladder, dove questo schema ha un nome preciso — autoritenuta — e due righe di disegno.
Esercizio.
- Un nastro trasportatore ha un pulsante di marcia e uno di arresto . Premuti e rilasciati, il nastro deve restare com’era. Il problema è combinatorio o sequenziale? Perché?
- Nel serbatoio, quante combinazioni di sensori restano ambigue se i sensori diventano tre ( basso, centrale, alto), con la stessa specifica a due fasi?
- Scrivi la tabella delle transizioni di un semaforo a tre stati (verde → giallo → rosso → verde) comandato da un unico ingresso che vale 1 quando il tempo dello stato è scaduto.
- Perché nel diagramma del serbatoio non esiste una freccia diretta da riempimento a riempimento passando per ?
Mostra la soluzione
1. Sequenziale. Con entrambi i pulsanti rilasciati (, ) il nastro deve poter essere sia fermo sia in marcia: stessi ingressi, due uscite. È esattamente il criterio visto sopra. Lo stato qui è “il nastro sta andando”, e non è leggibile dai pulsanti.
2. Restano ambigue due combinazioni. Con tre sensori le configurazioni fisicamente possibili sono quattro, ordinate dal basso:
La prima e l’ultima sono i due estremi e decidono da sole; le due intermedie si attraversano sia salendo sia scendendo, quindi restano ambigue entrambe.
Il numero di sensori non elimina l’ambiguità: la sposta soltanto. È un buon indizio che il problema non fosse di misura ma di informazione mancante.
3.
| stato attuale | stato prossimo | |
|---|---|---|
| verde | 0 | verde |
| verde | 1 | giallo |
| giallo | 0 | giallo |
| giallo | 1 | rosso |
| rosso | 0 | rosso |
| rosso | 1 | verde |
Le uscite sono le tre lampade, ognuna accesa nel proprio stato.
4. Perché è la condizione che definisce il cambio di fase: se ci fosse anche una freccia che riporta a riempimento, con lo stesso ingresso il sistema avrebbe due destinazioni diverse e il diagramma tornerebbe ambiguo come la tabella di partenza.
Verifica. Il controllo che smaschera un diagramma sbagliato è questo: da ogni stato, le condizioni scritte sulle frecce uscenti devono essere mutuamente esclusive e coprire tutti i casi possibili. Da riempimento escono (resta) e (va a svuotamento): esclusive ✓, esaustive ✓. Da svuotamento escono e : idem ✓. Se due frecce dallo stesso stato possono essere vere insieme, il sistema è indeterminato; se una combinazione non compare su nessuna, il sistema si blocca quando quella si presenta.