SMLC 8899

Progetto di un PLC con integrati LSI e MSI

aggiornato a Novembre 1999


freccia.gif (877 bytes)Il circuito

freccia.gif (877 bytes)Manuale di programmazione

freccia.gif (877 bytes)Download Documentazione


Cartella.gif (997 bytes) Introduzione

Il nome di questo PLC sta per Separate Monolitic Logic Controller, 8 ingressi e 8 uscite, costruito nel 1999. Spiego subito l'idea che sta alla base di questo progetto. Quando alle superiori mi hanno spiegato cosa era un PLC subito dopo mi hanno dato un'idea di quanto costava. Allora si parlavo si circa 200.000 lire, pensai allora di costruirne uno io a un prezzo modico (circa un quarto). Spiego subito, a scanso di equivoci, che per PLC io intendo un "correlatore" logico tra un insieme di uscite e uno di ingressi. Praticamente si intende un elemento in logica programmata con il quale si possa costruire (in maniera virtuale o megli non cablata) un circuito logico che metta in relazione booleana gli ingressi con le uscite. Poi, naturalmente, all'interno di un PLC si trovano anche dei temporizzatori e dei contatori che servono per rendere più flessibile l'elemento. Il lettore pignolo noterà che il circuito alla fine diviene un po' ingombrante, rispondo subito con il dire che il PLC che mi presentarono anni fa era pure lui parecchio grande.

Questo progetto è diviso in cinque sezioni. La prima, che è qui di seguito, descrive il circuito elettronico che costituisce il nucleo del PLC. Nella sezione successiva si passa alla descrizione della realizzazione pratica della scheda  con discussione degli ingombri e dei problemi che insorgon durante la descrizione nonchè l'elenco completo dei componenti e un piccolo preventivo. Il manuale serve solo per decrivere ilmodello di programmazione più qualche esempio di programmazione. Nelle note si si trovano le discussioni dei circuiti ausiliari del PLC. Nell'ultima sezione si parla dei programmi (assemblatori editor e altro) che sono stati realizzati per questo PLC.


Cartella.gif (997 bytes) Descrizione del circuito del PLC

Lo schema a blocchi, riportato qui in basso, descrive piuttosto efficacemente quale è il principi di funzionamento della macchina.

Ingrandisci questa area Ingrandisci questa area

Ingrandisci

Ingrandisci questa area Ingrandisci questa area

 (Clicca per visualizzare lo Schema Grande 160 KByte)

Sche,a a blocchi del PLC

Nel multiplexer di ingresso convergono, oltrre che agli 8 ingressi X0-X7, anche i regisdtri interni e le tre uscite meno siglificative del buffer di uscita (Y0-Y3). L'unità logica è ottenuta con un artificio; cioè non a porte logiche ma con un multiplexer cablato in maniera tale che la sua tavola di verità in uscita dia la tavola di verità riportata qui sotto.

Operazione Codice (Hex) - Gli ingressi A e B sono generici, nel PLC son il registro di operando (X) e l'ingresso seleziona to in quel momento sul multiplexer.
  A OR B
  NOT A
  A AND B
  A XOR B

Il modello di funzionamento è semplicissimo; c'è un contatore (PC) che non fa altro che andare avanti con in conteggio senza mai fermarsi e facendo così scorrere le varie locazioni di memoria contenute nella ROM. Le parole delle istruzioni sono da un Byte e si suddividono in due sezioni; la prima è il selettore, che pilota contemporaneamente la selezione sui due Mux e Dmux, la seconda parte impartisce l'operazione da eseguire con quel selettore.

D0 D1 D2 D3 D4 D5 D6 D7
SELETTORE Istruzione

Il selettore è piu' precisamente utilizzato a 4 bit se si vuole selezionare un ingresso o a 3 bit per le uscite; comunque la quando si seleziona un ingresso, inevitabilmente però si richiama anche il DMux che leggerà solo i primi tre bit (questo però non dà luogo a imprecisioni nella selezione perchè la validità del dato è data dall'istruzione).

Selettore (Hex) Ingresso Mux Uscita DMux
0 X0 Y0
1 X1 Y1
2 X2 Y2
3 X3 Y3
4 X4 Y4
5 X5 Y5
6 X6 Y6
7 X7 Y7
8 Y0 (Retroazione) -
9 Y1 (Retroazione) -
A Y2 (Retroazione) -
B True (Vcc) -
C False (GND) -
D R (Registro risultato) -
E C (Cuntatore) -
F T (Timer) -

Dal Mux il dato selezionato dal selettore va verso la LU e al registro di operando X. L'uscita della LU va verso a R il quale a sua volta va verso il DMux e agli ingressi del Mux. Sul bus dati che arriva dalla ROM vi è un decodificatore per tradurre l'istruzione in un impulso che andrà ad agire su un registro resettandolo oppure settandolo o ancora registrando al suo interno il dato in ingresso. Quando uno deve eseguire più operazioni logiche in cascata non deve far altro che riprendersi il risultato della precedente (R) e utilizzarlo come ingresso. Il registro X serve a mantenere il valore in gresso del selettore precedente. I due registri C e T hanno delle funzionalità in piu'. Entrambi possono essere selezionati con il selettore e sono veri quando il contenuto del contatore corrispondente è a zero. Facendo un piccolo passo indietro, si può dire che le istruzioni si suddividono in due parti; la prima parte è quella che serve per eleguire le correlazionilogiche, mentre l'altra riguarda operazioni speciali. Il Timer (T) non è altro che un contatore che conta all'indietro (quando è abilitato) con il PC che gli ga da divisore di frquenza (prescaler). Esso può essere caricato con una parola a quatto bit (LOADT)e fatto partire (START). Queste operazioni "speciali" non vengono eseguite incondizionatamente, ma vengono nesse in atto se il selettore che si è immesso (qundi l'uscita del Mux) sia vera o falsa. La stessa istruzione di caricamento è presente anche per il contatore (C) che però non ha un'operazione per la partenza ma due che decrementano (DECC) e incrementano (INCC) il dato contenuto nel contatore. Le utime du e operazioni speciali sono if ed end if. La prima disabilita la decodifica delle istruzioni in base al dato delezionato dal selettore, mentre la seconda resetta il flip flop che è utilizato per abilitare/disabilitare l'esecuzione delle istruzioni; in pratica quando si entra nel blocco if e l selettore è falso allora le istruzioni non vengono saltate ma igniorate come se fossero delle NOP.


Esempi di funzionamento

Quando si vuole eseguire un'operazione logica (XOR) per esempio su X0 e X2 che andrà sul Y4 si deve utilizzare la seguente procedura.

Esempio

Y4=X0 XOR X2

Selettore Istruzione
     0h Registra in X X0
     2h Esegui XOR tra il sel. e l'operando
     4h Porta il risultato sul selettore DMux

Se la funzione booleana è a più livelli si procede con un'alto ciclo di istruzioni.

Esempio

Y4=(NOT(X0 XOR X2) AND X5)

Selettore Istruzione

Esempio precedente (tranne l'ultima riga) +

     Ch Esegui NOT di R
     5h Esegui AND tra sel. e R
     4h Porta il risultato sul selettore DMux

Link della pagina

freccia.gif (877 bytes) Introduzioni

freccia.gif (877 bytes) Il circuito



Contenuti originali sono copyright 2000-2002 Alessandro Cappelloza. Tutti i diritti riservati - copyright © Porzillo Soft Inc. 2000-2002.
La riproduzione parziale o totale dei contenuti di questo sito è vietata. I marchi esposti o menzionati sono proprietà dei rispettivi intestatari.