Sunteți pe pagina 1din 15

AUTOMATE PROGRAMABILE vol.

I.8. AUTOMATE MICROPROGRAMATE


I.8.1. INTRODUCERE
Prezentarea hardware a automatelor se va încheia cu automatele microprogramate. Există două metode
de proiectare şi implementare a automatelor: cablate şi microprogramate[16].
Unitatea de control cablată este un automat secvenţial proiectat şi construit pentru generarea unui set specific
şi într-o secventa fixă de semnale de control. Odată ce UC a fost construită, algoritmul de control nu mai
poate fi modificat decât prin reproiectarea întregii structuri. La controlul cablat, scopurile principale
urmărite la proiectarea automatului se referă la minimizarea numărului de componente utilizate şi
maximizarea vitezei de operare.

Unitatea de control microprogramată sau automatul microprogramat, are semnalele de control incluse
în cuvinte binare succesive (microinstrucţiuni) stocate într-o memorie de mare viteză, inclusă în UC,
numită memorie de control. Implementarea algoritmului de control se face prin programarea conţinutului
memoriei de control. Fiecărei instrucţiuni recunoscute de automat îi corespunde o secvență de
microoperaţii generate prin citirea unei secvenţe de microinstrucţiuni din memoria de control (secventa
de microinstrucţiuni numită microprogram). Microprogramele conţinute în memoria de control formează
un interpretor al setului de instrucţiuni recunoscut de procesor.

Automatele microprogramate sau algoritmice au o structură asemănătoare unităţilor de control ale


microprocesoarelor. Funcţionarea lor se bazează pe citirea secvenţială din memorie a unor cuvinte şi
transmiterea unei părţi din biţii citiţi la ieşiri. Adresa din memorie de la care se citeşte este stabilită în
funcţie de intrările automatului şi de condiţii interne.
Conceptul de microprogramare, ca metode de proiectare a structurilor numerice a fost enunţat pentru
prima dată de către M. Wilkes de la Universitatea din Cambridge în 1951. Modelul propus de Wilkes
folosea două matrice de memorie (fig. 10.1): una pentru specificarea microoperaţiilor executate (A), iar
cealaltă pentru determinarea adresei microinstrucţiunii următoare (B).

Memorie de
Secvenţiator
microprograme
Intrări
Informaţie de B A

secvenţiere
Ieşiri

Fig. I.19. Modelul lui Wilkes


In esenţă, microprogramarea înseamnă controlul unei structuri numerice prin intermediul unor cuvinte
citite secvenţial din memorie. Un automat microprogramat are două funcţii principale:
Funcţia de control propriu-zis, care înseamnă controlul structurii exterioare.
Funcţia de secvenţiere, care înseamnă controlul adresei memoriei de microprograme. Ca urmare,
cuvântul înscris in memorie va avea două câmpuri principale:
31
AUTOMATE PROGRAMABILE vol. I

▪ Un câmp pentru definirea şi controlul tuturor acţiunilor, care trebuie realizate de automat,
corespunzător matricei A din modelul lui Wilkes.
▪ Un câmp folosit pentru determinarea adresei microinstrucţiunii următoare, corespunzător matricei
B din modelul lui Wilkes. Acest câmp constituie o intrare a unui automat finit, numit microsec-
venţiator, care determină pe baza acestei intrări şi a intrărilor automatului adresa pentru următoarea
microinstrucţiune care va fi executată.
Se observă paralelismul dintre structura unui sistem numeric şi structura automatului microprogramat,
ceea ce justifică termenul de microprogram, iar pentru cuvântul înscris în memorie, termenul de
microinstrucţiune.
I.8.2. STRUCTURI DE MICROSECVENȚIATOARE
Modul de realizare a microsecvenţiatorelor a evoluat ajungându-se la structuri complexe. Pentru
înţelegerea complexităţii unui microsecvenţiator menţionăm că acesta trebuie să permită execuţia
secvenţială a macroinstrucţiunilor, să permită execuţia salturilor condiţionate şi necondiţionate, să
permită posibilitatea apelurilor şi revenirilor din subrutine şi efectuarea de cicluri, adică să ofere
posibilitatea realizării de microprograme cu structuri asemănătoare cu programele scrise in limbaje de
programare de nivel înalt.
In fig. I.20 este prezentată structura unui microsecvenţiator, care are facilităţile enumerate mai sus.

LD FE
NB mSP
EN PUSH
TC
STIVA

D
3 2 1 0
S0 CLK
MUX mPC
S1
RESET
AND INCREMENTOR

Fig. I.20. Structură posibilă pentru un microsecvențiator


Microsecvenţiatorul generează adresa următoare (Y) selectând prin intermediul unui multiplexor (MUX)
intrările directe D, ieşirile unui numărător de bucle (NB), ieşirea (F) a unei stive LIFO sau numărătorul
de microprogram (PC). Acest multiplexor de selecţie este controlat de semnalele S1 şi S0 ca în fig.. I.20
.

32
AUTOMATE PROGRAMABILE vol. I

Numărătorul de bucle NB este un numărător sincron de tip count-down, care numără controlat de
semnalul de ceas (CLK) dacă este validat de semnalul EN, care este activ jos și poate fi încărcat cu o
adresă de pe intrările directe (D) pe frontul pozitiv al semnalului de ceas (CLK) această operaţie fiind
validată de semnalul LD, care este activ jos. Această facilitate este folosită, aşa cum vom vedea mai jos,
pentru executarea ciclurilor în programe. Pentru realizarea ciclurilor se poate testa semnalul TC=0, emis
de NB atunci când conţinutul său este 0.
Numărătorul de microprogram PC este alcătuit dintr-un registru şi un circuit de incrementare. Acest
circuit poate să transfere la intrarea PC valoarea Y+1. În acest fel se pot genera adrese consecutive.
Stiva F este folosită, în principal, pentru memorarea adresei de revenire în cazul lucrului cu proceduri.
Stiva are ataşat un pointer (SP) care indică ultima locaţie scrisă.
Pointerul de stivă funcţionează ca un numărător sincron bidirecţional cu intrări separate pentru controlul
operaţiilor PUSH şi al validării stivei FE (PUSH=1 și FE=0 se introduce în stivă; PUSH=0 și FE=0 se
extrage din stivă). După introducerea în stivă se crește cu o unitate SP, pentru a pregăti stiva să
primească o nouă adresă, iar înainte de extragerea din stivă se scade valoarea SP cu o unitate.
Ieşirea Y a microsecvenţiatorului reprezintă adresa pentru memoria de microprograme. De obicei ieşirile
Y ale microsecvenţiatorului sunt de tip trei stări, acest lucru este util dacă se doreşte controlul extern al
memoriei de microprograme.
I.8.3. STRUCTURA AUTOMATULUI MICROPROGRAMAT
Pentru realizarea unui automat microprogramat, microsecvenţiatorului descris mai sus i se adaugă
următoarele elemente hardware:
▪ Un registru pipe-line (RPL), pentru memorarea microinstrucţiunii, care are două ieşiri: o ieşire
normală şi o ieşire TSL, care este legată la magistrala internă de adrese. Structura câmpurilor
registrului este prezentată în fig. I.21. Partea AS este de lăţimea adresei memoriei de
microprograme şi se leagă la magistrala internă de adrese a automatului. Partea Sel Next ADD
conţine adresa pentru o memorie PROM şi pentru un lanţ de două multiplexoare MUX IN şi MUX
N (P=0 selectează ieşirea lui MUX N, iar P=1 selectează ieşirea negată). Partea OUT a registrului
reprezintă chiar ieşirile automatului. Încărcarea registrului se face pe frontul crescător al
semnalului CLK, iar validarea ieşirilor sale spre magistrala internă de adrese se face cu semnalul
OE, care este activ jos.
AS Sel Next ADD OUT
A_CMS A_MUX

A3 A2 A1 X P I2 I1 I0

Fig. I.21. Câmpurile din registrul pipe-line


▪ O memorie ROM-CMS, care decodifică o parte din câmpul Sel. Next ADD, care reprezintă de
fapt unitatea de comandă proprie, ea generând la ieşiri semnalele de comandă pentru automatul
microprogramat. In afara adresei A0 celelalte adrese ale acesteia provin dintr-un câmp al registrului
pipe-line. Adresa A0 provine de la un lanţ de multiplexoare MUX IN şi MUX N, şi poate fi o intrare
sau o intrare negată a automatului. Selectarea intrării, care va reprezenta adresa A0 depinde tot de
ceea ce este scris în registrul pipe-line. Astfel, la fiecare tact se poate selecta din ROM CMS unul

33
AUTOMATE PROGRAMABILE vol. I

din două cuvinte (la adresa pară sau impară), deci două comenzi diferite spre restul structurii după
cum intrarea în automat selectată este 0 sau 1.
Alegând corespunzător conţinutul memoriei ROM-CMS se poate realiza un automat microprogramat de
performanţă mare, care permite implementarea unui set complet de instrucţiuni de adresare. Setul poate
cuprinde instrucţiuni de salt condiţionat si necondiţionat, instrucţiuni cu bucle şi subrutine, oferind o
mare flexibilitate în realizarea automatizărilor secvenţiale. Automatul este prezentat în figura I.22.
Structura este o structură sincronă de tip pipe-line. O asemenea structură suprapune execuţia
microinstrucţiunii curente cu extragerea din memoria de microprograme a instrucţiunii următoare.
Elementul cheie al acestei structuri este registrul pipe-line (RPL) plasat la ieşirea memoriei de micropro-
grame.

BUS INTERN DE ADRESE

S0
TC 0 TC D
0
S1
1 1 MICROSECVENȚIATOR

2 LD
2
INTRĂRI

3 EN Y
MUX-I

3
ROM-CMS
4 CLK
PUSH
4
5
MEMORIE
FE DE
6 5
MICROPROGRAME
7 6 OE
I0I1I2 A0 A3-A1

RPL

P MUX-N

IEȘIRI

Fig. I.22. O structură posibilă de automat microprogramat


S-a folosit, pentru intrări un multiplexor cu 8 canale. Unul este folosit pentru semnalul TC, deci automatul
are 7 intrări (I1-I7). În ceea ce priveşte numărul ieşirilor el depinde de memoria utilizată. Vom presupune,
în continuare că automatul are 8 ieşiri binare (Q0-Q7).
Structura funcţionează în felul următor:
▪ La frontul pozitiv al semnalului de pe intrarea CLK, microinstrucţiunea adresată de
microsecvenţiator este citită din memoria de microprograme şi încărcată în registrul RPL.
▪ Conţinutul microinstrucţiunii este decodificat şi utilizat ca informaţie de control.

34
AUTOMATE PROGRAMABILE vol. I

▪ Informaţia de control stimulează resursele hardware corespunzătoare efectuând operaţiile


primitive în automat.
▪ Microsecvenţiatorul utilizează informaţia din câmpul de control al adresei pentru a genera adresa
microinstrucţiunii următoare.
Prin repetarea acestui proces se va executa secvenţă de microinstrucţiuni, deci microprogramul, care
asigură automatizarea propusă.
Pentru ca o astfel de structură să poată să fie activă este necesar ca producătorul să încarce conţinutul
memoriei ROM-CMS, iar apoi să pună la dispoziţia utilizatorilor lista de instrucţiuni recunoscute de
automat.
I.8.4. CONȚINUT POSIBIL AL MEMORIEI ROM_CMS
Instrucţiunile automatului se împart, din punct de vedere al memoriei ROM-CMS, în două mari categorii:
instrucţiuni necondiţionate şi instrucţiuni condiţionate. Fiecare instrucţiune este generată înscriindu-se la
două adrese consecutive din memorie (pară şi impară) un cuvânt. Dacă instrucţiunea este necondiţionată,
atunci se înscrie la ambele adrese acelaşi cuvânt, astfel că, indiferent ce semnal vine pe lanţul de
multiplexoare, să se genereze, la ieşire acelaşi cuvânt de comandă pentru microsecvenţiator. Dacă
instrucţiunea este condiţionată, atunci se înscriu cuvinte diferite la cele două adrese: la adresă pară (bitul
A0 este 0) se înscrie comanda care trebuie generată dacă condiţia nu este îndeplinită, iar la adresa impară
(bitul A0 este 1) se înscrie comanda,care trebuie generată dacă condiţia este îndeplinită.
Vom comenta modul de înscriere în memorie a unor date, astfel încât să se execute instrucţiuni
necondiţionate şi condiţionate. Ordinea de înscriere în memorie a cuvintelor de comandă pentru diferite
instrucţiuni este indiferentă, dar odată stabilită de fabricant ea este impusă utilizatorului. Ultima ieșire a
memoriei ROM-CMS nu este utilizată.
Instrucţiunea 1, CONT (CONTinue). Permite execuţia secvenţială a programului. Poate fi considerată
ca o instrucţiune neoperantă. Conţinutul celor două adrese consecutive este prezentat în fig. I.23.

ADRESĂ 3 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 X 1 1 1
1111 0 0 1 1 X 1 1 1
3 F

Fig. I.23. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CONT


Instrucţiunea 2, JP (JumP). Este o instrucţiune de salt necondiţionat în care sursa adresei următoare
este registrul RPL. Deoarece este o instrucţiune de salt necondiţionat ea trebuie să genereze aceleaşi
comenzi de secvenţiere atât la adresă pară cât şi la adresă impară: selectarea intrărilor directe pentru a
genera adresa următoare deoarece adresa de salt se găseşte în RPL, validarea ieşirii pe magistrala de date
a registrului RPL, invalidarea stivei şi invalidarea numărătorului de bucle. Ţinând seama de cele de mai
sus conţinutul celor două adrese consecutive este prezentat în fig. I.24.

35
AUTOMATE PROGRAMABILE vol. I

ADRESĂ F D
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 1 1 1 X 1 0 1
1111 1 1 1 1 X 1 0 1
F D

Fig. I.24. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii JP


Instrucţiunea 3, CALL (CALL Subroutine). Este o instrucţiune de apel necondiționat a unei subrutine a
cărei adresă se găseşte în registrul RPL. Deoarece este o instrucţiune de salt necondiţionat ea trebuie să
genereze aceleaşi comenzi de secvenţiere atât la adresă pară cât şi la adresă impară: selectarea intrărilor
directe pentru a genera adresa următoare deoarece adresa de salt se găseşte în RPL, validarea ieşirii pe
magistrala de date a registrului RPL, se salvează PC în stivă pentru pregătirea revenirii din subrutină și
invalidarea numărătorului de bucle.
Conţinutul celor două adrese este prezentat în fig. I.25.

ADRESĂ F 9
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 1 1 1 1 0 0 1
1111 1 1 1 1 1 0 0 1
F 9

Fig. I.25. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CALL


Instrucţiunea 4, RET (RETurn). Este o instrucţiune de revenire din subrutine. Reluarea programului
se face de la instrucţiunea următoare apelului. Sursa adresei de revenire este stiva.
Conţinutul celor două adrese este prezentat în fig. I.26

ADRESĂ B 3
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 0 1 1 0 0 1 1
1111 0 0 1 1 0 0 1 1
B 3
.
Fig. I.26. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii RET
Instrucţiunea 5, CJP (Conditional Jump). Este o instrucţiune de salt condiţionat a cărei adresă se găseşte
în registrul RPL, dacă condiţia testată este îndeplinită, iar în caz contrar sursa adresei următoare este dată
de PC. De asemenea, trebuie să se realizeze saltul la adresa din registrul RPL, deci se va emite semnalul
de validare al ieşirii registrului pe magistrala de adrese şi se vor selecta, pentru generarea adresei
următoare, intrările directe. La adresa pară se va selecta, ca sursă a adresei următoare, PC. Conţinutul
celor două adrese este prezentat în fig. I.27.

36
AUTOMATE PROGRAMABILE vol. I

ADRESĂ 3 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 X 1 1 1
1111 1 1 1 1 X 1 0 1
F D
Fig. I.27. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CJS
Instrucţiunea 6, LDNB (LoaD NB and Continue). Este o instrucţiune de încărcare necondiţionată a NB
cu o adresă din registrul pipe-line. Conţinutul celor două adrese este prezentat în fig. I.28. Instrucțiunea
trebuie plasată înaintea unei bucle FOR, care va fi executată de n+1 ori, daca se încarcă n în NB.

ADRESĂ 1 D
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 0 1 X 1 0 1
1111 0 0 1 1 X 1 0 1
1 D
. .
Fig. I.28. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii LDNB
Instrucţiunea 7, FOR ( Început de bucla FOR). Are ca efect introducerea în stivă a adresei următoare,
care se găseşte în PC. Este o instrucţiune necondiţionată, prima dintr-o buclă de program. Adresa
încărcată în stivă este chiar adresa primei instrucţiuni a ciclului. Dacă se înscrie în NB un număr n şi la
sfârşitul ciclului se execută un salt condiţionat, condiţia de test fiind semnalul TC emis de NB, la conţinut
0, atunci ciclul se va executa de n+1 ori.
Ultima instrucţiune a ciclului, cea care realizează testarea trebuie să realizeze şi scăderea cu o unitate a
conţinutului NB (vezi instrucţiunea LOOP şi NEXT). Conţinutul celor două adrese este prezentat în fig.
I.29.

ADRESĂ 3 B
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 1 0 1 1
1111 0 0 1 1 1 0 1 1
3 B
Fig. I.29. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii FOR

Instrucţiunea 8, NEXT (Sfârşit de buclă cu adresa de salt din stivă). Este o instrucţiune de salt
condiţionat a cărui mecanism este următorul: cât timp NB nu emite semnalul TC=1 (conţinut 0), adresa
următoare va fi luată din stivă, iar în caz contrar, din PC. Condiţia testată este deci semnalul emis de
numărătorul de bucle, iar la test nereuşit trebuie decrementat conţinutul NB. Operaţia de citire din stivă
nu este însoţită de decrementarea pointerului de stivă, ceea ce permite reluarea buclei de la aceeaşi adresă.
Pentru ca aceasta să fie corect executată trebuie ca, în prealabil, registrul NB şi stiva să fie încărcate cu
37
AUTOMATE PROGRAMABILE vol. I

numărul de buclări, respectiv, adresa de început a buclei. Conţinutul celor două adrese este prezentat în
fig. I.30.

ADRESĂ 6 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 1 1 0 1 1 1 1
1111 0 0 1 1 0 0 1 1
3 F

Fig. I.30. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii NEXT


Un rezumat al instrucțiunilor acceptate de automatul microprogramat este prezentat în fig.I.31.
Nr. Mnemonic A3-A1 Funcție Sursa salt
Continuă cu instrucțiunea
1 CONT 0 µPC
urmatoare
2 JP 1 Salt necondiționat RPL

3 CALL 2 Apel necondiționat de rutină RPL

4 RET 3 Revenire necondiționată din rutină Stiva

5 CJP 4 Salt conditionat RPL (DA) sau µPC (NU)

6 LDNB 5 Încarcă numărătorul de bucle µPC

7 FOR 6 Început de buclă FOR µPC

8 NEXT 7 Sfârșit de buclă FOR Stiva (NB≠0) sau µPC (NB=0)

Fig. I.31. Instrucțiuni recunoscute de automatul microprogramat


În fig. I.32 este prezentată diagrama de semnale pentru cazul în care automatul microprogramat execută
trei instrucţiuni CONT. Prezentarea unei astfel de diagrame este utilă pentru urmărirea întârzierilor, care
apar de la frontul pozitiv al impulsului de ceas, până la apariţia noii microinstrucţiuni la ieşirea memoriei
de microprograme. Se poate deduce, pentru valori date ale timpilor de propagare, care este durata minimă
a perioadei TCLK.

TCLK
I(k) I(k+1)

t1
Y
k k+1 k+2

MR
taMR
I(k) I(k+1) I(k+2)

Fig. I.32. Diagramă de semnale la execuţia a trei instrucţiuni CONT

38
AUTOMATE PROGRAMABILE vol. I

Diagrama începe în momentul în care registrul RPL este încărcat cu microinstrucţiunea de la adresa k.
Această încărcare se realizează, în diagramă, pe frontul crescător al impulsului de ceas. După un timp t1,
necesar propagării prin memoria ROM-CMS şi multiplexorul din microsecvenţiator, se va selecta adresa
următoare k+1, pentru memoria de microprograme, deoarece instrucţiunea este o instrucţiune CONT.
t1 = t aROM −CMS + t MUX
După timpul de acces la memoria de microprogramare (taMP), la ieşirile acesteia va apare noua
microinstrucţiune, care este I(k+1). Stabilizarea ieşirilor memoriei de microprograme trebuie să aibă loc
înainte de apariţia frontului pozitiv al impulsului de ceas. Încărcarea PC se face pe frontul crescător al
impulsului de ceas. Rezultă că perioada minimă a impulsului de
ceas trebuie să fie:
TCLK  t1 + t aMP
Ea este dependentă de calitatea componentelor utilizate şi arată cât se poate urca frecvenţa ceasului pentru
ca structura să funcţioneze determinist.
I.8.5. SIMULATORUL DE AUTOMAT MICROPROGRAMAT
Pentru înţelegerea modului de funcţionare al automatelor microprogramate, precum şi pentru
vizualizarea semnalelor, atunci când acesta rulează, s-a realizat un program de simulare numit
AUTOMAT. Acesta are o interfață asemănătoare cu cea din fig. I.22.
Programul este un proces, care permite editarea interactivă a programelor precum şi vizualizarea, în
interiorul unor controale, a semnalelor din interiorul automatului microprogramat, de la intrările şi ieşirile
sale precum şi a evoluţiei acestor semnale atunci când automatul execută un program. Acesta poate fi
rulat în regim pas cu pas sau în regim continuu. În ultimul caz, o instrucţiune se execută la fiecare tic al
timerului.
Conţinutul memoriilor este afişat în controale de tip LIST BOX (Fig. I.33 ). În acestea sunt vizibile:
▪ Conţinutul memoriei de microprograme, care este afişat într-un LIST BOX intitulat MEMORIE
AUTOMAT, o linie corespunzând codurilor numerice în format HEX ale unei instrucţiuni.
Numărul total de locaţii pentru memoria de microprograme este de 64H. In timpul rulării unui
program instrucţiunea curentă este indicată printr-un dreptunghi. Introducerea unei instrucţiuni se
face prin selectarea unei linii şi apăsarea butonului MODIFICA MMP. Aceasta este încărcată într-
un control separat, unde se pot efectua modificările dorite în câmpurile instrucţiunii conform celor
descrise mai sus. Apoi se va apăsa butonul OK şi instrucţiunea este încărcată în memorie în locaţia
aleasă. Totodată este lansat şi un dezasamblor, care va ataşa rezultatul dezasamblării sub forma
unor mnemonice sugestive, în continuarea instrucţiunii. Trebuie atenție în modul de completare al
casetei, respectându-se câmpurile respective. Altfel pot avea loc erori.

39
AUTOMATE PROGRAMABILE vol. I

Fig. I.33. Fereastra de simulare a automatului


▪ Conţinutul memoriei ROM-CMS, care este afişat într-un LIST BOX numit ROM-CMS. O linie
în format HEX este o comandă pentru restul structurii. În această fereastră nu se pot efectua
modificări ale conţinutului memoriei, considerându-se că automatul a fost înzestrat cu un set de
instrucţiuni nemodificabil.
▪ Conţinutul stivei microsecvenţiatorului, în format HEX este afişat într-un LIST BOX numit
STIVA. Stiva are patru locaţii. Se pot realiza deci, patru apeluri imbricate de proceduri.
Introducerea unei valori în stivă este realizată în mod automat la apelul unei proceduri, la locaţia
indicată de SP, după care acesta este incrementat, pentru a pregăti o nouă înscriere. Scoaterea
din stivă este făcută în mod automat la executarea unei instrucţiuni de revenire din procedură după
care SP este decrementat. Atunci când este adresată stiva locaţia adresată şi valoarea sunt puse
în evidenţă printr-un dreptunghi. Nu se pot înscrie valori în stivă de către utilizatorul programului
şi nici nu se pot aduce modificări la SP.
Fereastra de simulare a automatului are posibilitatea de a selecta funcţii ale simulatorului cu ajutorul unor
butoane COMENZI. Acestea sunt următoarele:
▪ SALVARE PROGRAM, care permite salvarea unui program scris de utilizator sub forma unui
fişier cu extensia map, numele acestuia putând fi ales de utilizator. Locul și denumirea
programului se stabilesc într-o fereastra pop-up, care se deschide la apăsarea butonului.

40
AUTOMATE PROGRAMABILE vol. I

▪ ÎNCĂRCARE PROGRAM, care permite încărcarea unui program, salvat anterior, începând de la
adresa 0 a memoriei de microprograme. Alegerea programului se face dintr-o fereastră pop-up
care se deschide la apăsarea butonului.
▪ START PROGRAM, care permite rularea programului de la adresa Y. Rularea programului se
face fie instrucțiune cu instrucțiune, fie continuu, în funcție de poziția unui comutator care poate
fi poziționat pe funcționare continuă sau pe funcționare pas cu pas. La execuția pas cu pas, după
terminarea execuţiei unei instrucțiuni se trece într-o stare de aşteptare în care se pot analiza
semnalele din automat, care sunt afișate în casete numerice poziționate în locurile
corespunzătoare. Reluarea funcționării, în acest caz se face la o nouă apăsare a butonului. La
execuția continuă intervalul între două microinstrucţiuni este stabilit prin programarea unui timer.
În cazul programului timerul este setat la 1 s.
▪ STOP PROGRAM, care permite oprirea programului.
Mai există și un buton numit RESET, care iniţializează adresa Y și SP permiţând rularea programului
de la adresa 0.
Cei interesați să lucreze cu simulatorul de automat microprogramat pot să mă contacteze prin e-mail la
adresa ioan.margineanu@yagoo.com pentru a primi programul de simulare.
Se poate imagina o extindere a programului. Această extindere ar putea pune în legătură automatul cu un
program de simulare a unui proces cu intrări și ieșiri booleene. În fereastra de simulare a automatului se
va prevedea un buton cu două poziţii, care permite funcţionarea programului independent sau în legătură
cu programul numit PROCES. Rularea independentă este recomandată atunci când se urmăreşte
înţelegerea modului de funcţionare a automatului, iar rularea în legătură cu procesul este utilă pentru
înţelegerea modului de cuplare la proces şi a interacţiunii dintre cele două sisteme.
Cele două programe comunică între ele printr-o legătură de tip client-server, cu protocol TCP/IP. ele se
pot găsi pe acelaşi calculator sau pe calculatoare diferite legate într-o reţea Ethernet. Serverul este
programul care simulează automatul, iar clientul este programul care simulează procesul.
Pentru a realiza legătura între ele trebuie mai întâi trecut butonul din fereastra principală pe poziţia Legat
la proces. Apoi se va înregistra serverul prin apăsarea unui buton. La apăsarea acestuia se va deschide o
fereastră în care utilizatorul trebuie să precizeze numărul portului pe care se vor conecta cele două
programe. Din acest moment orice modificare a ieşirilor automatului va fi transmisă de către server sub
forma unui octet. În programul PROCES va exista un buton de conectare la server și se vor preciza, la
apăsarea acestuia, numele calculatorului pe care rulează serverul și numărul portului de legătură. Acesta
va deveni verde numai după ce clientul, care este programul Proces, se va conecta la server.
I.8.6. EXEMPLE DE PROGRAME
Exemplul 1. Scrierea unei bucle
Să se scrie un program care să repete comenzile de la adresele 2, 3, 4 şi 5 de 4 ori, apoi să execute o
comandă nouă şi apoi să revină la repetarea comenzilor de la adresele 1, 2 şi 3.
Soluţie: Mediul de programare al automatului are un interpretor aşa că programul va fi dat atât în
hexazecimal cât şi cu mnemonice. Lungimea celor trei zone ale registrului RPL este de 1 octet.

0000: 03 A0 00 LDNB
0001: 00 40 00 FOR
41
AUTOMATE PROGRAMABILE vol. I

0002: 00 00 01 CONT
0003: 00 00 02 CONT
0004: 00 00 04 CONT
0005: 00 E0 08 NEXT
0006: 00 00 10 CONT
0007: 00 20 20 JP 00

Exemplul 2. Scrierea unui program cu apel imbricat de proceduri


Să se scrie un program care să apeleze, la adresa 1, o rutina de la adresa 5, care la rândul ei să apeleze o
rutină de la adresa 8. Ieșirile vor fi astfel alese încât să se aprindă pe rând intrările de la 0 la 7.
Soluţie: Se va utiliza instrucţiunile CALL și RET.
0000: 00 00 01 CONT
0001: 05 40 02 CALL 05
0002: 00 00 08 CONT
0003: 00 20 00 JP 00
0004: 00 00 00 CONT
0005: 00 00 04 CONT
0006: 08 40 08 CALL 08
0007: 00 60 40 RET
0008: 00 00 10 CONT
0009: 00 60 20 RET
Exemplul 3. Scrierea unui program cu folosirea instrucțiunilor de salt condiționat, CJP și necondiționat,
JP.
Se va vedea efectul pe care-l are schimbarea în timpul rulării programului a intrării I1.
0000: 00 00 01 CONT
0001: 05 00 02 CONT
0002: 00 00 04 CONT
0003: 05 89 08 CJP NOT I1 05
0004: 06 20 10 JP 06
0005: 00 00 20 CONT
0006: 00 00 40 CONT
0007: 00 20 80 JP 00
I.8.7. STUDIU DE CAZ
Procesul tehnologic într-o linie de acoperire galvanică (fig. I.34) cuprinde cinci posturi, trei (2, 3, 4)
pentru operaţiile de tratare propriu-zisă şi două pentru încărcarea (1), respectiv pentru descărcarea
pieselor (5). Manipularea este realizată printr-un conveier, care asigură următoarele mişcări:
▪ Deplasarea în două sensuri pe calea de rulare: mişcările O+ şi O-.
▪ Ridicarea, respectiv coborârea braţului de prindere: mişcările V+şi V-.
Sistemul de transport este astfel conceput încât prin coborârea stativului cu piese într-un post se
eliberează stativul din braţ. Aceasta impune deplasarea conveierului cu braţul ridicat, când transportă
piese şi cu braţul coborât atunci când este descărcat. Poziţiile conveierului pe calea de rulare sunt

42
AUTOMATE PROGRAMABILE vol. I

delimitate pe calea de rulare prin limitatoarele de poziţie C1, C2, C3, C4, C5, iar poziţiile braţ ridicat şi
braţ coborât sunt delimitate prin limitatoarele de cap de cursă S, pentru cap ridicat şi J, pentru cap coborât.
Ciclul de funcţionare trebuie să asigure deplasarea succesivă a pieselor în dreptul fiecărui post de tratare,
lăsarea acestora acolo un timp care va fi reglat prin reglarea vitezei de deplasare a conveierului.
Iniţial, în posturile de lucru se găsesc stative goale, iar în postul I un stativ care va fi încărcat. Poziţia
iniţială a conveierului va fi în postul I cu braţul jos (numerotat cu 1). Acesta se va deplasa spre dreapta
cu braţul coborât până în poziţia C4 (numerotată cu 2), unde, prin ridicarea braţului se va prelua stativul
aflat aici şi îl va deplasa în postul C5 (pozițiile 3, 4 și apoi 5), unde îl va depune în scopul descărcării.
Din această poziţie, cu braţul coborât se va deplasa în poziţia C3 (numerotată cu 6), va prelua stativul şi
îl va transporta în postul eliberat anterior de la C4. (pozițiile 7, 8 și apoi 9),
În fazele următoare se va asigura transferul stativelor între posturile C2 şi C3, C1 şi C2. In ultima parte a
ciclului, conveierul se va deplasa la poziţia C5, de unde va aduce stativul descărcat acolo în poziţia C1,
pentru reîncărcare, revenind în poziţia iniţială.
Să se scrie programul pentru automatul microprogramat, care realizează această automatizare.
C1 C2 C3 C4 C5

O- O+

V+

S
V-
I II III IV V
20 19
15 11 12 7 8 3
16 4

10 13 6 9
14 5
J
1 17 2 18

Fig. I.34. Instalaţia de manipulare şi ciclul de funcţionare al procesului de acoperire


Soluţie:
Din analiza sistemului de automatizat rezultă că acesta este definit de 7 variabile de intrare şi patru
variabile de ieşire, prezentate în fig. I.35. Presupunând legarea variabilelor de intrare şi ieşire ca în fig.
I.36, o variantă de program, care să realizeze automatizarea cerută este dată mai jos. Vom folosi o
instrucțiune CJP care atât timp cât condiția nu este îndeplinită va executa un salt pe ea însăși.

43
AUTOMATE PROGRAMABILE vol. I

C1 C 2 C3 C4 C 5 S J

0 1 2 3 4 5 6 7 L+

0 1 2 3 4 5 6 7 M

O+ O- V+ V-

Fig. I.35. Legarea elementelor de execuţie şi traductoarelor la automat

0000: 00 8C 01 CJP NOT C4 00 // Deplasare spre dreapta până la poz. 2


0001: 01 8E 10 CJP NOT S 01 // Ridicare până sus până la poz. 3
0002: 02 8D 01 CJP NOT C5 02 // Deplasare spre dreapta până la poz. 4
0003: 03 8F 40 CJP NOT J 03 // Coborâre până la poz. 5
0004: 04 8B 04 CJP NOT C3 04 // Deplasare spre stânga până la poz. 6
0005: 05 8E 10 CJP NOT S 05 // Ridicare până sus până la poz. 7
0006: 06 8C 01 CJP NOT C4 06 // Deplasare spre dreapta până la poz. 8
0007: 07 8F 40 CJP NOT J 07 // Coborâre până la poz. 9
0008: 08 8A 04 CJP NOT C2 08 // Deplasare spre stânga până la poz. 10
0009: 09 8E 10 CJP NOT S 09 // Ridicare până sus până la poz. 11
000A: 0A 8B 01 CJP NOT C3 0A // Deplasare spre dreapta până la poz. 12
000B: 0B 8F 40 CJP NOT J 0B // Coborâre până la poz. 13
000C: 0C 89 04 CJP NOT C1 0C // Deplasare spre stânga până la poz. 14
000D: 0D 8E 10 CJP NOT S 0D // Ridicare până sus până la poz. 15
000E: 0E 8A 01 CJP NOT C2 0E // Deplasare spre dreapta până la poz. 16
000F: 0F 8F 40 CJP NOT J 0F // Coborâre până la poz. 17
0010: 10 8D 01 CJP NOT C5 10 // Deplasare spre dreapta până la poz. 18
0011: 11 8E 10 CJP NOT S 11 // Ridicare până sus până la poz. 19
0012: 12 89 04 CJP NOT C1 12 // Deplasare spre stânga până la poz. 20
0013: 13 8F 40 CJP NOT J 13 // Coborâre până la poz. 1
0014: 00 00 00 JP 00 // Reluarea procesului

Fig. I.36. Programul automatizării

44
AUTOMATE PROGRAMABILE vol. I

Cap. II. LIMBAJE DE PROGRAMARE PENTRU AP


II.1. INTRODUCERE
Înainte de a standardiza programarea PLC, adică pe la sfârșitul anilor 70, producătorii s-au concentrat în
principal pe programarea aplicațiilor cu automate programabile. Pentru programare s-a încercat să se
folosească experiența anterioară a inginerilor, care lucrau cu scheme cu contacte și relee sau cu circuite
logice. Aceste programe au fost, de obicei, orientate spre starea de atunci a tehnologiei, luând în
considerare sistemele necuplate la rețele a automatelor, cu care se realizează în principal operații logice
pe semnale binare. Au existat extinderi ale sistemului de programare create în anii 1980, de exemplu,
interconectarea modulelor inteligente, procesarea semnalelor analogice, automate programabile în rețea,
etc.
Din 1992, există un standard internațional pentru limbajele de programare a automatelor. Inițial la
standardul (DIN 19239) numărul de blocuri era alcătuit din: OB (Organization Block), SB (Sequence
Block), PB (Program Block), FB (Function Block) și DB (Data Block).
Noul standard IEC 61131 numește blocurile din care este alcătui un program POU (Program
Organization Block) și reduce tipurile de blocuri la trei tipuri de blocuri unificate: PROGRAM
(Programul principal incluzând atribuirea de I/O și căile de acces), FUNCTION BLOCK (care au
propriile date şi deci pot memora informaţii de stare sau cum mai sunt numite de instanțiere). Funcţiile
bloc au câteva restricţii, care le fac reutilizabile într-un program: nu este permisă declararea variabilelor
cu adrese legate de hardware şi variabilele externe pot fi transmise numai prin intermediul interfeţei;
acesta este cel mai utilizat tip de POU) și FUNCTION (Funcţii, care realizează calcule programate în
oricare din limbajele de programare şi care acceptă mai multe intrări şi au o singură ieşire). POU
corespund OB, PB, SB și FB din standardul anterior.
Standard internaţional IEC 61131-3 a fost lansat în 1993 şi, de la adoptarea acesteia, a devenit larg
acceptat de către utilizatori şi de către comunitate internaţională a producătorilor. Astăzi, el este, ca atare,
standard recunoscut la nivel mondial pentru programarea şi configurarea dispozitivelor de control
industrial. Există, totuşi, mai multe motive ca standardul să fie revizuit: În primul rând, din anul 1993 o
mare parte din experienţa practică a fost dobândită și au fost detectate un număr de incoerenţe şi contra-
dicţii. Pentru a remedia această situaţie, mulţi utilizatori au propus îmbunătăţiri. Acestea pot fi găsite în
anexe ca făcând parte din standard.
În plus, cerinţele privind sistemele de control industriale şi mediile de programare ale acestora s-au
modificat considerabil de-a lungul anilor, elementul cel mai important este de migraţia de la mari sisteme
de control centralizat spre de sistemele distribuite.
Acesta este motivul pentru care standardul IEC 61131-3 este și acum în curs de revizuire. Revizuirea
constă în corectarea erorilor, structurarea coerentă a standardului şi armonizarea acestuia cu standardul
IEC 61499, care se referă la sistemele distribuite.
În cursul acestei operaţii, obiectivul major este acela de a menţine compatibilitatea în sus pentru toate
amendamentele. Aceasta înseamnă, un program de control, care este conform cu standardul anterior, este
de aşteptat să fie conform cu noul standard fără conflicte.
IEC 61131-3 specifică sintaxa și semantica unui sistem unificat de limbaje de programare pentru
controlere programabile (PC). Această suită este formată din două limbi textuale, lista de instrucțiuni (IL
sau STL), care are o structură asemănătoare cu limbajele de asamblare ale microprocesoarelor și Text
structurat (ST), care folosește instrucțiuni de atribuire, de selecție și de control având o structură
45

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