Sunteți pe pagina 1din 15

Curs 12: Registre de deplasare/ Stive/Secvenţiatoare

1. Registre de deplasare
În electronica digitală, registrul este privit ca o entitate capabilă să memoreze informaţii binare la
nivel de cuvânt (de 4, 8, 16 sau chiar 32 de biţi).
Există două modalităţi de încărcare a informaţiei binare întru-un registru:
- încărcare paralelă – toţi biţii sunt încărcaţi simultan;
- încărcare serială – biţii sunt încărcaţi pe rând, unul câte unul, până la terminarea acestora;
Încărcarea serială presupune deplasarea informaţiei (cu o poziţie la fiecare bit nou introdus),
motiv pentru care aceste circuite sunt denumite registre de deplasare.
În cazul automatelor programabile:
- registrul este realizat prin legarea convenabilă a unor relee interne (biţi din memoria
internă a automatului);
- registrele cu încărcare paralelă sunt folosite pentru stocarea temporară de informaţii
(operanzi, rezultate parţiale, transfer de date, etc.).
- registrele de deplasare pot fi folosite, spre exemplu, pentru urmărirea în timp a statusului
pieselor de pe o bandă rulantă. Ulterior, pe baza informaţiilor din registru, în alte puncte
de lucru de pe bandă, se pot realiza acţiuni asupra pieselor cu anumite caracteristici.
Un registrul de deplasare (Shift Register) dispune de următoarele intrări:
- o intrare seriala de date – permite introducerea de date pe prima poziţie a registrului;
- o intrare de comandă a deplasării conţinutului registrului, similară intrării de ceas de la
registrele logice. Deplasarea informaţiei din registru se face cu o poziţie la fiecare
tranziţie FalseTrue a acestei intrări;
- o intrare de ştergere a conţinutului registrului.
Modul de încărcare a unui registru de deplasare pe 4 biţi este ilustrat în figura 1

Fig. 1: Modul de încărcare a unui registru serie pe 4 biţi, cu deplasare la dreapta

AP – Curs 12 Page 1 of 15
Registrele de deplasare pot fi de trei feluri:
- registre de deplasare spre dreapta (Shift Right Register) – deplasarea informaţiei se face
de la bitul cu pondere cea mai mare spre bitul cu ponderea cea mai mică (figura 2.a);
- registre de deplasare spre stânga (Shift Left Register) – deplasarea informaţiei se face de
la bitul cu ponderea cea mai mică spre bitul cu ponderea cea mai mare (figura 2.b);
- registre de deplasare circulare (Circulating Shift Register) – deplasarea se face spre
stânga, în circuit închis. O secvenţă de biţi este repetată la nesfârşit (figura 2.c);.

Fig. 2: Deplasarea informaţiei pentru: a) registru de deplasare spre dreapta (de la MSB spre LSB);
b) registru de deplasare spre stânga (de la LSB spre MSB); c) registru circular;

2. Instrucţiuni pentru implementarea registrelor de deplasare la nivel de cuvânt


În prezent, în setul de instrucţiuni al oricărui automat găsim instrucţiuni specifice ce permit
implementarea registrelor de deplasare în interiorul AP. De regulă, reprezentarea registrelor de
deplasare se realizează sub forma blocurilor funcţionale, aşa cum se poate vedea în exemplul din
figura 3.

Fig. 3: Reprezentarea registrelor de deplasare pentru automatele Allen-Bradley

AP – Curs 12 Page 2 of 15
Pentru ambele instrucţiuni trebuie specificate următoarele elemente:
- File - adresa grupului de biţi ce urmează a fi supus deplasării.
Se foloseşte o adresă de fişier şi nu una de cuvânt deoarece instrucţiunile de shiftare pot
opera pe un număr mare de biţi, amplasaţi în mai multe cuvinte cu adrese succesive.
Biţii din ultimul cuvânt al fişierului ce nu au fost prinşi în zona de acţiune a instrucţiunii
de shiftare, nu mai pot fi utilizaţi în alte scopuri.
- Bit Address – specifică adresa sursei de informaţie binară ce urmează a fi încărcată serial
în registrul de deplasare.
- Control – specifică o adresă unică în care este depusă o structură de date necesară pentru
buna funcţionare a instrucţiuni de shiftare. Această structură de date conţine 3 locaţii de
memorie după cum urmează:
o Status Word – este un cuvânt din Control Table, în care găsim o serie de biţi de
tip flag ce indică modul în care se desfăşoară operaţia de shiftare:
 Enable Bit (EN) – are valoarea 1 pe toată durata de activare a instrucţiunii
de shiftare;
 Done (DN) – devine 1 după ce toţi biţii din registru au fost deplasaţi cu o
poziţie; Bitul este resetat automat la dezactivarea instrucţiunii de shiftare;
 Error Bit (ER) – devine 1 dacă apar erori in executarea instrucţiunii (spre
exemplu introducerea unui număr negativ în registrul Lenght);
 Unload Bit (UB) – copiază starea logică a bitului ce iese din registru ca
urmare a deplasării. Informaţia de pe acest bit se va pierde la următoarea
activare a instrucţiunii.
o Lenght – specifică lungimea registrului, exprimată în biţi.
o Position

Exemplu de utilizare pentru instrucţiunea BSL


Considerăm o aplicaţie simplă, în care instrucţiunea BSL este activată de către închiderea unui
limitator de cursă (LS) iar informaţia binară introdusă în registru este preluată de la un senzor
amplasat la intrarea I:1/1, aşa cum se prezintă în schema din figura 4.a.
Din figură se poate observa că registrul de deplasare are lungimea de 20 biţi şi este amplasat în
memorie începând cu adresa B3:10.
În figura 4.b, este prezentată starea registrului de memorie înainte de activarea instrucţiunii BSL,
iar în figura 4.b, este prezentată situaţia de după executarea acesteia.
Din figurile 4.b şi 4.c se poate vedea că registrul de deplasare ocupă două locaţii de memorie:
toţi biţii din locaţia B3:10 şi doar o parte din biţii locaţiei B3:11. Facem precizarea că biţii
neocupaţi din adresa B3:11 nu mai pot fi folosiţi în alte scopuri (spunem că sunt invalidaţi de
către instrucţiunea BSL).

AP – Curs 12 Page 3 of 15
Deoarece discutăm despre o instrucţiune de deplasare spre stânga, deplasarea trebuie să se facă
de la LSBMSB. În consecinţă, informaţia de la senzor este introdusă în registru pe poziţia LSB
a registrului, adică la adresa B3:10/0.

Fig. 4: Modul de operare pentru instrucţiunile de deplasare specifice automatelor Allen-Bradley:


instrucţiunea Bit Shift Left – figurile a), b), c); instrucţiunea Bit Shift Right – figurile d), e), f)

Exemplu de utilizare pentru instrucţiunea BSR


O aplicaţie similară celei prezentate anterior este prezentată în figura 4.d: instrucţiunea BSR este
activată de către închiderea limitatorului de cursă (LS) iar informaţia binară introdusă în registru
este preluată de la un senzor amplasat la intrarea I:3/5.
Din figură se poate observa că registrul de deplasare are lungimea de 24 biţi şi este amplasat în
memorie începând cu adresa B3:50.
În figura 4.e, este prezentată starea registrului de memorie înainte de activarea instrucţiunii BSR,
iar în figura 4.f, este prezentată situaţia de după executarea acesteia.

AP – Curs 12 Page 4 of 15
Din ultimele două figuri se poate vedea că registrul de deplasare ocupă două locaţii de memorie:
locaţia B3:50 este ocupată complet iar locaţia B3:51 este ocupată parţial. Biţii neocupaţi din
adresa B3:51 nu mai pot fi folosiţi în alte scopuri.
De această dată avem o instrucţiune de deplasare spre dreapta, deplasarea trebuie să se facă de la
MSB  LSB. În consecinţă, informaţia de la senzor este introdusă în registru pe poziţia MSB a
registrului, adică la adresa B3:51/7.

Aplicaţie: Realizarea unei lumini dinamice

Fig. 5: Realizarea unei lumini dinamice

AP – Curs 12 Page 5 of 15
2. Stive FIFO (First In Last Out)
Stivele de tip FIFO (Firt In, First Out) operează pe principiul “primul venit – ultimul plecat”.
Stivele de tip FIFO (First In, First Out) pot fi privite ce operaţii de shiftare cu execuţie la nivel
de cuvânt. Modul de operare al stivei FIFO este prezentat în figura 7.

Fig. 7: Modul de operare al stivei FIFO


Lucrul cu o stivă FIFO presupune două operaţii cu execuţie nesincronizată:
- operaţia de încărcare a stivei (FIFO Input sau FIFO Load);
- operaţia de descărcare a stivei (FIFO Output sau FIFO Unload);
Din punct de vedere al funcţionării, între registrele de deplasare şi stivele FOFO există deosebiri
semnificative:
- după nivelul de execuţie:
 registrele de deplasare acţionează asupra biţilor dintr-un cuvânt;
 stivele FIFO acţionează asupra cuvintelor dintr-un fişier;
- după modul de execuţie:
 pentru registrul de deplasare, încărcarea şi descărcarea informaţiei se face
sincronizat cu un singur semnal (semnalul de comandă a deplasării);
 pentru stiva FIFO, încărcarea şi descărcarea se execută nesincronizat
(încărcarea se face în ritmul unui semnal de comandă iar descărcarea se
poate face în ritmul altui semnal de comandă) ;

Din punct de vedere al reprezentării, pentru fiecare din cele două operaţii cu stiva, există blocuri
funcţionale distincte aşa cum se poate vedea în figura 8 pentru cazul automatelor Allen-Bradley.

AP – Curs 12 Page 6 of 15
Fig. 8: Modul reprezentare a operaţiilor de încărcare/descărcare a stivei – cazul automatelor Allen-Bradley

Instrucţiunea FFL (FIFO Load)


Principalii parametrii ce trebuie specificaţi în cazul operaţiei de încărcare a unei stive FIFO sunt
prezentaţi mai jos, pentru cazul automatelor Allen-Bradley:
- Source – adresa de la care se preia informaţie pentru încărcarea stivei (adresa sursei de
informaţie);
- FIFO – adresa de început a zonei de memorie în care se organizează stiva;
- Control – adresa registrului de control în care sunt memoraţi indicatorii de tip flag
folosiţi pentru semnalizarea statusului instrucţiunii:
o EN (Enable Bit) - este unu logic pe durata de activare a instrucţiunii;
o DN (Done)- devine unu logic în momentul în care stiva este plină şi nu mai
acceptă date noi (Position=Lenght);
o EM (Empty Bit) – semnalizează situaţia în care stiva este goală (toate datele din
stivă au fost descărcate);
- Lenght – registru folosit pentru a specifica lungimea maximă, exprimată în cuvinte, a
stivei;
- Position – este un counter ce indică următoarea poziţie liberă din stivă. Conţinutul
counterului este incrementat după fiecare înregistrare nouă, introdusă în stivă. Prima
poziţie din stivă are indexul 0, iar stiva se consideră a fi plină în momentul în care
Position=Lenght.

Instrucţiunea FFU (FIFO Unload)


Pentru operaţia de descărcare a datelor din stivă, se folosesc cam acelaşi set de parametrii ca şi
pentru operaţia de încărcate. Mare parte din parametrii au fost prezentaţi anterior.
La descărcare apar modificări, sau apar în plus, parametrii precum:
- Destination – adresa la care se depune informaţia extrasă din stivă;
- Position – indică următoarea poziţie din stivă ce urmează a fi descărcată. După fiecare
extracţie din stivă, conţinutul registrului este decrementat cu o unitate. Stiva este
consideră goală atunci când Position=0;

AP – Curs 12 Page 7 of 15
Utilizarea în pereche a instrucţiunilor FFL, FFU
Pentru implementarea unei stive FIFO complet funcţională este nevoie de utilizarea în pereche a
instrucţiunilor FFL şi FFU şi utilizarea în comun a parametrilor mai importanţi. În exemplul din
figura 9 se poate remarca că ambele instrucţiuni au aceeaşi dresă de început (FIFO=#N7:12), au
aceeaşi lungime (Lenght=10) şi au acelaşi registru de control (Control=R6:0).

Fig. 9: Utilizarea instrucţiunilor FFL, FFU pentru implementarea unei stive FIFO – cazul automatelor Allen-Bradley
Referitor la funcţionarea schemei din figura 9 se pot face următoarele observaţii:
- Stiva este organizată în memoria automatului începând cu adresa #N7:12 şi are lungimea
de 10 locaţii;
- Operaţiile de depunere a datelor în stivă (încărcarea stivei) sunt determinate de tranziţia
False True a intrării A. După fiecare depunere, conţinutul registrului Position este
crescut cu o unitate. Informaţia introdusă în stivă este preluată de la adresa N7:10.
- Operaţiile de extragere a datelor din stivă (descărcarea stivei) sunt determinate de
tranziţia False True a intrării B. După fiecare extragere, conţinutul registrului Position
este scăzut cu o unitate. Informaţia extrasă din stivă este depusă de la adresa N7:11.
După fiecare extragere din stivă, se realizează şi o deplasare în sus, cu o poziţie, a
conţinutului stivei.

Stivele FIFO sunt folosite pe liniile de fabricaţie pentru diverse scopuri:


- În scop de inventariere a componentelor. La intrarea în magazie, fiecare componentă
primeşte un cod unic şi apoi acesta este introdus intr-o stivă FIFO. Ordinea de utilizare a
pieselor este cea indicată de stivă. În acest fel ne asigurăm, în permanenţă, că piesele
vechi sunt folosite primele şi abia apoi cele noi.
- În urmărirea produselor de complexitate mare, cum ar fi autoturismele, pe liniile de
asamblare. Fiecare comandă de autoturism, împreună cu opţiunile cerute de client,
primeşte un cod unic şi apoi este introdusă într-o stivă FIFO. Ordinea de execuţie a
comenzilor şi dotarea cu opţiuni a fiecărui autoturism de pe linia de fabricaţie este cea
indicată de stivă.

AP – Curs 12 Page 8 of 15
3. Stive LIFO (Last In First Out)
Stivele de tip LIFO (Last In, First Out) operează pe principiul “primul venit – primul plecat”.
Din punct de vedere funcţional, putem spune că:
- stivele FIFO pot fi privite ca nişte containere cu depozitare a produselor pe orizontală;
- stivele LIFO pot fi privite ca nişte containere cu depozitarea produselor pe verticală.
Din punct de vedere al implementării stivelor LIFO se pot face următoarele precizări:
- se folosesc două blocuri funcţionale: unul pentru operaţia de încărcare, celălalt pentru
descărcarea stivei;
- cele două instrucţiuni trebuie folosite în pereche aşa cum se arată în exemplul din figura
10;
- parametrii specifici stivelor LIFO sunt similari celor prezentaţi la stivele FIFO;

Fig. 10: Utilizarea instrucţiunilor LFL, LFU pentru implementarea unei stive LIFO (automate Allen-Bradley)

AP – Curs 12 Page 9 of 15
4. Secvenţiatoare mecanice (Sequencer Time )
Instrucţiunile de tip Sequencers au avut ca scop implementarea unor funcţii asigurate de sisteme
mecanice capabile să genereze secvenţe de comenzi repetitive.
Din punct de vedere funcţional, aceste sisteme mecanice sunt similare celor folosite la cutiile
muzicale. Un astfel de mecanism este format din mai multe discuri ce sunt aşezate pe un singur
ax şi sunt rotite de un motor. Pe fiecare disc sunt amplasate o serie de excrescenţe care au ca rol
închiderea contactelor electrice amplasate în dreptul discurilor (vezi schema de principiu din
figura 11).

Fig. 11: Modul de lucru al unui secvenţiator mecanic

Din figura 11 se poate observa că:


- la fiecare pas al cilindrului, starea logică a celor 16 ieşiri este controlată de prezenţa sau
absenţa excrescenţelor de pe cilindrii;
- numărul comenzilor distincte (cuvinte de ieşire pe 16 biţi) este dat de numărul sectoarelor
de cerc de pe fiecare disc;
- durata activă a unei comenzi este dependentă de viteza de rotaţie a discurilor;
- mecanismul poate genera o secvenţă repetabilă cu număr finit de stări distincte.

Exemple de implementare a instrucţiunilor de tip Sequencer


Instrucţiunile de tip Sequencer pot avea formate diferite de la un producător la altul. În cele ce
urmează prezentăm instrucţiunile întâlnite la automatele Allen-Bradley.
În categoria instrucţiunilor Sequencer găsim următoarele instrucţiuni:
- SQO (Sequencer Output)- este o instrucţiune de ieşire ce foloseşte informaţia dintr-un
fişier pentru controlul simultan al mai multor ieşiri;

AP – Curs 12 Page 10 of 15
- SQI (Sequencer Input)- este o instrucţiune de intrare care citeşte starea unui registru de
intrare, în momente succesive de timp, şi compară aceste informaţii cu cele existente într-
un fişier de tip sequencer.
- SQC (Sequencer Compare)- este o instrucţiune de ieşire ce compară datele dintr-un
fişier cu cele dintr-un secvenţiator.
- SQL (Sequencer Load)- este o instrucţiune de intrare ce permite încărcarea de la un
modul de intrare a informaţiei din tabelul secvenţiatorului.

Principalii parametri ce trebuie specificaţi pentru aceste instrucţiuni sunt:


- File – adresa de început a tabelului ce conţine datele ce urmează a fi transferate la ieşire;
- Destination – este adresa registrului în care se depune informaţia extrasă din tabel, altfel
spus este ieşirea din secvenţiator;
- Lenght – registru folosit pentru a specifica numărul de paşi ai secvenţiatorului;
- Mask – este un registru ce conţine informaţie binară cu rol de mască. Informaţia binară
extrasă (din tabelul indicat de File), este trecută prin mască şi abia apoi este direcţionată
spre destinaţie.
La fel ca în cazul transferului de fişiere, valoarea de 1 din mască lasă să treacă
informaţia spre destinaţie iar valoarea de 0 o blochează.
- Control – adresa registrului de control în care găsim indicatorii de tip flag folosiţi
pentru semnalizarea statusului instrucţiunii:
o EN (Enable Bit) - este unu logic pe durata de activare a instrucţiunii;
o DN (Done)- devine unu logic în momentul în care s-a terminat secvenţa de
comandă (ultima poziţie din fişierul cu date a fost transferată spre destinaţie);
o ER (Error Bit) – se activează în situaţii de eroare precum: lungimea specificată a
secvenţei este negativa sau zero; valoare negativă a pointerului de poziţie ;
- Position – specifică numărul pasului din secvenţă - cu alte cuvinte, indică poziţia
cuvântului ce trebuie transferat spre destinaţie, în cadrul fişierului .
După terminarea secvenţei, conţinutul acestui registru este adus automat la
valoarea 1, la prima activare a instrucţiunii, în vederea reluării secvenţei.
Valoarea zero este folosită pentru punctul neutru (sau punctul de start), în care
toate ieşirile sunt în starea de zero logic.
- Source – este o adresă de început de fişier ce conţine date de comparare sau de intrare,
necesare instrucţiunilor SQC respectiv SQL;
În final, referitor la modul în care se face trecerea de la un pas la altul la instrucţiunile de tip
sequencer, facem precizarea că există două modalităţi:
- Event Driven – schimbarea pasului este determinată de un eveniment (închiderea unui
contact, semnal de un senzor de proximitate, etc);
- Time Driven – schimbarea pasului este determinată de un timer.

AP – Curs 12 Page 11 of 15
Aplicaţie 1: Semaforizarea unei intersecţii cu două căi
Pentru comanda celor 6 lămpi, necesare celor două semafoare, se folosesc 6 ieşiri dintr-un modul
de ieşire discret, amplasat la adresa O:2. Modul de conectare a lămpilor la modulul de ieşire se
poate deduce din figura de mai jos.
Având în vedere că în funcţionarea semafoarelor apar 4 etape distincte şi că aceste etape trebuie
repetate la nesfârşit, se poate imagina o schemă de control pe baza unei instrucţiuni de tip
sequencer. Pentru aceasta, în Sequencer File trebuie să trecem starea logică a lămpilor pentru
fiecare din cele 4 etape/paşi, iar apoi trebuie să mai adăugăm etapa starting point, în care toate
ieşirile sunt inactive.
Din aceste considerente tragem concluzia că Sequencer File trebuie să aibă organizarea 5 locaţii
de memorie de câte 6 biţi fiecare.

Fig. 12: Utilizarea instrucţiunii SQO pentru controlul unui semafor

Dacă ţinem cont de modul în care operează instrucţiunea SQO, constatăm că, în fiecare pas,
instrucţiunea va direcţiona spre modulul de ieşire toţi cei 16 biţi ai locaţiei de memorie, în loc
să transmită doar cei 6 biţi necesari pentru comanda lămpilor.
Acest mod de lucru este deranjant atunci când, la ieşirile modulului digital, în afara lămpilor,
mai sunt conectate şi alte elemente, deoarece acestea pot fi influenţate în funcţionare de
informaţia transmisă prin cei 10 biţi.

AP – Curs 12 Page 12 of 15
Pentru a bloca influenţa celor 10 biţi asupra ieşirilor modulului O:2, este necesar să folosim
facilitatea de mascare oferită de instrucţiunea SQO. Mai precis, în registrul Mask trebuie să
trecem valoarea 003Fh=0000 0000 0011 11112 , pentru a bloca cei 10 biţi să ajungă la ieşire.
Pe de altă parte, este evident că avem o aplicaţie de tip Time Driven deoarece trecerea
secvenţiatorului de la un pas la altul se face după expirarea unor perioade prestabilite de
timp.
Utilizarea unui singur timer pentru comanda secvenţiatorului este posibilă numai dacă durata
de activare a celor 3 culori este egală. Pentru această situaţie, schema de conectare este
prezentată în figura 13.

Fig. 13: Modul de conectare a timerului TON pentru comanda secvenţiatorului

Dacă se doreşte stabilirea unor constante de timp diferite, schema anterioară, bazată pe un
singur timer nu mai poate fi folosită. Pentru astfel de situaţii, o soluţie elegantă ar fi utilizarea
unui al doilea secvenţiator în care să trecem duratele de activare pentru fiecare pas al
secvenţiatorului iniţial. O astfel de schemă prezentată în figura 15.

AP – Curs 12 Page 13 of 15
Fig. 13: Modul de conectare a două secvenţiatoare pentru realizarea constantelor diferite de timp

AP – Curs 12 Page 14 of 15
Temă

AP – Curs 12 Page 15 of 15

S-ar putea să vă placă și