Sunteți pe pagina 1din 157

1-1

SISTEME DE CALCUL TIMP - REAL




Mircea Grosu


Facultatea de Automatic, Calculatoare i Electronic
Catedra Ingineria Calculatoarelor i Comunicaiilor
1-2

1 INTRODUCERE ......................................................................................................................................... 1-6
1.1 Definiii i clasificri ........................................................................................................................... 1-6
1.2 Elementele unui SCTR ........................................................................................................................ 1-7
1.3 Tipuri de SCTR ................................................................................................................................ 1-13
1.3.1 Sisteme bazate pe ceas ............................................................................................................... 1-14
1.3.2 Sisteme bazate pe evenimente (senzori) .................................................................................... 1-14
1.3.3 Sisteme interactive ..................................................................................................................... 1-14
1.3.4 Definirea SCTR ......................................................................................................................... 1-14
1.4 Clasificarea programelor ................................................................................................................... 1-15
1.4.1 Programele secveniale .............................................................................................................. 1-15
1.4.2 Programe multitasking ............................................................................................................... 1-15
1.4.3 Programe timp - real .................................................................................................................. 1-16
1.5 Concluzii ............................................................................................................................................ 1-16
2 SCTR PENTRU CONTROLUL PROCESELOR INDUSTRIALE .......................................................... 2-17
2.1 Tipuri de procese ............................................................................................................................... 2-17
2.2 Operaii realizate de ctre sistemele pentru controlul proceselor ...................................................... 2-17
2.2.1 Controlul secvenial al proceselor .............................................................................................. 2-17
2.2.2 Controlul n bucl (Direct Digital Control) ............................................................................... 2-18
2.2.3 Supervizarea proceselor ............................................................................................................. 2-20
2.2.4 Interfaa om-main ................................................................................................................... 2-22
2.2.5 Responsabilitile inginerului de sistem .................................................................................... 2-22
2.3 Structuri de sisteme pentru controlul proceselor industriale ............................................................. 2-23
2.3.1 Sisteme de control centralizate .................................................................................................. 2-23
2.3.2 Sisteme ierarhizate ..................................................................................................................... 2-24
2.3.3 Sisteme distribuite ..................................................................................................................... 2-26
2.3.4 Piramida automatizrii ............................................................................................................... 2-28
3 STRUCTURA ECHIPAMENTELOR UTILIZATE IN SCTR ................................................................. 3-29
3.1 Structura hardware general a calculatorului de proces ..................................................................... 3-29
3.1.1 Unitatea central ....................................................................................................................... 3-31
3.1.2 Dispozitive de comunicaie ........................................................................................................ 3-31
3.1.3 Dispozitive de proces ................................................................................................................. 3-31
3.1.4 Dispozitivele standard ale calculatorului ................................................................................... 3-31
3.1.5 Dispozitivele operatorului de proces ......................................................................................... 3-32
3.1.6 Ceasul timp - real (Real Time Clock) ........................................................................................ 3-32
3.2 Semnale preluate/transmise de SCTR din/ctre lumea real ............................................................. 3-32
3.3 Blocurile funcionale ale unui SADC ................................................................................................ 3-33
1-3
3.3.1 Conectarea dispozitivelor de I/E la calculatorul gazd .............................................................. 3-33
3.3.1.1 Dispozitive pe magistrala intern ........................................................................................... 3-34
3.3.1.2 Dispozitive pe magistrala extern .......................................................................................... 3-34
3.3.2 Semnale din proces, traductoare i condiionarea semnalelor.................................................... 3-35
3.3.2.1 Tipuri de semnale .................................................................................................................. 3-36
3.3.2.2 Traductoare i senzori ............................................................................................................ 3-37
3.3.2.2.1 Exemple de traductoare ................................................................................................... 3-37
3.3.3 Condiionarea semnalelor .......................................................................................................... 3-41
3.3.3.1 Circuit tampon de intrare ....................................................................................................... 3-41
3.3.3.2 Conversia curent tensiune ................................................................................................... 3-42
3.3.3.3 Scalarea semnalelor analogice ............................................................................................... 3-43
3.3.3.4 Filtrarea .................................................................................................................................. 3-43
3.3.3.5 Izolare analogic .................................................................................................................... 3-46
3.3.3.6 Protecie la supratensiune ...................................................................................................... 3-47
3.3.3.7 Scalarea intrrilor/ieirilor numerice ..................................................................................... 3-47
3.3.3.8 Izolarea numeric ................................................................................................................... 3-48
3.3.3.9 Detectarea contactelor............................................................................................................ 3-48
3.3.3.10 Comanda releelor ............................................................................................................... 3-49
3.3.4 Subsistemele de intrare/ieire ale SADC ................................................................................... 3-49
3.3.4.1 Subsistemul de intrri analogice ............................................................................................ 3-49
3.3.4.1.1 Convertoare analog numerice (CAN) .............................................................................. 3-50
3.3.4.1.2 Amplificarea .................................................................................................................... 3-51
3.3.4.1.3 Multiplexarea analogic .................................................................................................. 3-51
3.3.4.1.4 Circuitele de eantionare i memorare (S/H) ................................................................... 3-52
3.3.4.1.5 Multiplexarea n timp ...................................................................................................... 3-52
3.3.4.1.6 Timpul de conversie ........................................................................................................ 3-52
3.3.4.1.7 Conectarea canalelor analogice la multiplexor ................................................................ 3-53
3.3.4.1.8 Scalarea intrrilor analogice ............................................................................................ 3-55
3.3.4.2 Subsistemul de ieiri analogice .............................................................................................. 3-55
3.3.4.3 Subsistemul de intrri-ieiri numerice ................................................................................... 3-56
3.3.4.4 Subsistemul de intrri-ieiri de numrare .............................................................................. 3-56
4 PROGRAMAREA DISPOZITIVELOR I/E N APLICAII TIMP - REAL ........................................... 4-57
4.1 Tehnici de comunicare cu dispozitivele de intrare/ieire ................................................................... 4-57
4.1.1 Metoda Polling .......................................................................................................................... 4-57
4.1.2 Metoda ntreruperilor externe .................................................................................................... 4-58
4.1.3 Metoda Intrri/iEiri buffer-ate .................................................................................................. 4-58
4.1.4 Alegerea strategiei optime ......................................................................................................... 4-58
1-4
4.2 Programarea utiliznd ntreruperile ................................................................................................... 4-60
4.2.1 Prezentarea sistemului de ntreruperi la PC ............................................................................... 4-60
4.2.2 Plasarea I8259 n spaiul de I/E la PC ........................................................................................ 4-62
4.2.3 Detalii de programare utiliznd ntreruperile la PC cu SO DOS ............................................... 4-63
4.2.4 Exemple de utilizare a ntreruperilor ......................................................................................... 4-67
4.3 Dispozitive pentru generarea bazei de timp i numrarea de evenimente ......................................... 4-72
4.3.1 Dispozitivul mumrtor/periodizator I8254 .............................................................................. 4-72
4.3.2 Utilizarea I8254 pentru numrarea de evenimente .................................................................... 4-75
4.3.3 Utilizarea lui I8254 pentru generarea de ntreruperi .................................................................. 4-76
4.3.4 Exemplu de utilizare a dispozitivului I8254 pentru generarea bazei de timp ............................ 4-79
4.3.5 Reprogramarea ceasului sistem ................................................................................................. 4-82
4.4 Exemplu de sistem de achiziie de date ............................................................................................. 4-84
4.4.1 ADA 2100 - date generale i prezentarea resurselor .................................................................. 4-84
4.4.2 Generaliti ................................................................................................................................ 4-86
4.4.3 Setarea adresei de baz .............................................................................................................. 4-86
4.4.4 Harta I/E pentru ADA 2100 ....................................................................................................... 4-86
4.4.5 Modul de configurare al modulului ........................................................................................... 4-88
4.4.6 Descriere la nivel de schem bloc .............................................................................................. 4-88
4.4.6.1 Lanul de conversie analog-numeric .................................................................................... 4-88
4.4.6.2 Realizarea unei citiri A/N ...................................................................................................... 4-89
4.4.6.3 Circuitele de conversie numeric-analogic ............................................................................ 4-89
4.4.6.4 Interfaa paralel programabil (PPI - I8255) ........................................................................ 4-90
4.4.6.5 PIT numrtor/periodizator programabil (I8254) .................................................................. 4-90
4.4.7 Prezentarea comutatoarelor i a programatoarelor hardware ..................................................... 4-90
4.4.8 Proceduri de calibrare ................................................................................................................ 4-93
4.4.9 Conectarea modulului la proces ................................................................................................. 4-95
4.4.10 Programe de test ........................................................................................................................ 4-95
4.4.11 Programarea modulului ADA 2100 ........................................................................................... 4-95
5 SISTEME DE OPERARE TIMP - REAL MULTITASKING ................................................................ 5-101
5.1 Introducere ....................................................................................................................................... 5-101
5.2 Gestiunea task-urilor n aplicaii timp - real .................................................................................... 5-103
5.2.1 Tranziia strilor i descriptori de task ..................................................................................... 5-104
5.2.2 Descriptori de task ................................................................................................................... 5-105
5.2.3 Dispecerizarea i planificarea task-urilor ................................................................................. 5-106
5.2.4 Niveluri de prioritate................................................................................................................ 5-106
5.2.4.1 Nivelul ntreruperilor ........................................................................................................... 5-108
5.2.4.2 Nivelul de ceas ..................................................................................................................... 5-108
1-5
5.2.4.2.1 Task-uri periodice.......................................................................................................... 5-109
5.2.4.2.2 Task-uri ntrziate.......................................................................................................... 5-113
5.2.4.3 Nivelul de baz .................................................................................................................... 5-113
5.2.5 Apelul la dispecer .................................................................................................................... 5-114
5.2.6 Exemplu de gestiune a task-urilor: SOTRM REX ................................................................... 5-116
5.2.6.1 Strile task-urilor ................................................................................................................. 5-116
5.2.6.2 Directivele implicate n tranziia strilor ............................................................................. 5-117
5.2.6.3 Descriptori de task ............................................................................................................... 5-118
5.2.6.4 Dispecerul ............................................................................................................................ 5-119
5.2.6.5 Planificatorul ....................................................................................................................... 5-121
6 ALGORITMI DE PLANIFICARE A TASK-URILOR N SCTR CU CONSTRNGERI DE TIMP
RIGIDE ........................................................................................................................................................... 6-125
6.1 Noiuni introductive ......................................................................................................................... 6-125
6.2 Algoritmul de planificare RM ......................................................................................................... 6-128
6.2.1 Prezentarea algoritmului .......................................................................................................... 6-128
6.2.2 Extinderea algoritmului de planificare RM pentru includerea task-urilor sporadice ............... 6-134
6.2.3 Algoritmul de planificare RM n prezena suprancrcrii ocazionale..................................... 6-135
6.2.4 Generalizarea algoritmului de planificare RM......................................................................... 6-137
6.2.5 Considerarea ntreruperilor ...................................................................................................... 6-139
6.2.6 Considerarea sincronizrii task-urilor ...................................................................................... 6-141
6.3 Algoritmul de planificare EDF ........................................................................................................ 6-144
6.4 Analiza comparativ a algoritmilor RM i EDF .............................................................................. 6-146
6.4.1 Suprancrcarea execuiei ........................................................................................................ 6-146
6.4.2 Suprancrcarea de planificare ................................................................................................. 6-147
6.5 Studiu de caz: algoritm mixt de planificare RM-EDF ..................................................................... 6-148
6.5.1 Analiza performanelor algoritmului ....................................................................................... 6-148
6.5.2 Testul de planificabilitate ........................................................................................................ 6-149
6.5.3 Localizarea Tx ......................................................................................................................... 6-150
7 COMUNICAIA TIMP - REAL ............................................................................................................. 7-151
7.1 Introducere ....................................................................................................................................... 7-151
7.2 Protocoale de comunicaie timp - real ............................................................................................. 7-152
7.3 Protocoale bazate pe timpul limit ................................................................................................... 7-152
7.3.1 Constrngeri aferente nodurilor ............................................................................................... 7-153
7.3.2 Instabilitatea ntrzierii ............................................................................................................ 7-156
8 BIBLIOGRAFIE ..................................................................................................................................... 8-157

1-6
1 INTRODUCERE

1.1 Definiii i clasificri
Aplicaii ale sistemelor de calcul timp - real (SCTR) sunt ntlnite n toate domeniile de activitate. Cea mai mare
parte dintre aceste aplicaii se refer la sisteme informatice de supraveghere i control n industrie (la nivel de
utilaje, instalaii, linii tehnologice, secii, ntreprinderi i platforme industriale), n transport i telecomunicaii, n
distribuia energiei electrice, n automatizarea experimentrilor tiinifice, n activiti de management, servicii
etc.
n prezent, pot fi ntlnite pretutindeni echipamente, instalaii, produse de larg consum etc. care au nglobate
aplicaii timp - real. n [Tur99] se arat modul de mprire a pieei comerciale de microprocesoare n anul 1999:
mai puin de 1% din lumea microprocesoarelor erau utilizate n sisteme cu ntrebuinare general. Peste 99%
dintre microprocesoare erau utilizate n aplicaii timp-real. Acestea sunt omniprezente, de la telefoanele
celulare, pagere, cuptoare cu microunde pn la sisteme complexe de control trafic aerian, telecomunicaii,
utiliti publice, conducerea proceselor industriale, multimedia etc.
Structura hardware i software-ul de baz i aplicativ prezint trsturi specifice pentru SCTR, ceea ce face
ca aceste sisteme s fie o categorie distinct ntre sistemele de prelucrare a datelor.
ntr-un sistem de calcul timp - real, esenial este intervalul de timp dintre momentul introducerii datelor i
momentul obinerii i interpretrii rezultatelor. ntr-un sistem de prelucrare clasic, nu sunt impuse
constrngeri pe fluxul introducere date prelucrare date - obinere rezultate pe cnd n SCTR timpul de
rspuns este esenial. Acesta este unul dintre motivele pentru care trebuie aplicate tehnici speciale pentru
introducerea datelor, prelucrare i vizualizare, respectiv aplicare a rezultatelor.
Privind dintr-un cadru mai larg, SCTR fac parte din categoria sistemelor de calcul ON LINE n care
datele de intrare sunt introduse direct de la locul unde sunt produse iar rezultatele sunt transmise direct la
locul de utilizare. Datele fie sunt introduse de la terminale de ctre operatori umani, fie provin de la
traductoare ori senzori amplasai n mediul extern. Rezultatele sunt transmise la ieire la terminale pentru
vizualizare de ctre operatorul uman sau la elemente de execuie.
SCTR este un sistem de calcul care preia suficient de rapid datele de intrare, efectueaz prelucrrile
necesare ntr-un interval de timp suficient de scurt i transmite rezultatele la ieire suficient de rapid
pentru a mai influena desfurarea fenomenului la care se refer datele.
Timpul de rspuns al unui SCTR este timpul necesar pentru a genera o informaie de reacie la datele
introduse.
Timpul de rspuns este o valoare absolut care difer n funcie de cerinele aplicaiei timp - real:
sisteme de recunoatere a vocii [100ns 10 ms];
simulator de zbor [1us-10us];
simulare de procese i controlul reelelor - [10us-100us];
control n telemetrie i analize seismice - [100us=1ms];
controllere pentru roboi [1ms-10ms];
sisteme pentru controlul proceselor i automatizri industriale [100us-100ms];
diagnosticare medical automat i laboratoare automate [10ms 100ms];
1-7
sisteme pentru detectare i alarmare incendiu [ 100ms-1s];
sistem rezervri locuri [2s-3s];
n funcie de domeniul de utilizare exist mai multe tipuri de sisteme de calcul ON LINE, care nglobeaz
i sistemele de calcul timp - real:
Sisteme pentru controlul i supravegherea proceselor.
Sisteme conversaionale care presupun lucrul interactiv de la terminal,
introducere de comenzi (date, programe etc.) i rspuns imediat la acestea.
Sisteme tranzacionale care sunt interactive de la terminal, dar numrul i
tipul de mesaje i comenzi este limitat pentru a spori viteza de rspuns. Rezultatele se afieaz n
formate prestabilite la proiectarea aplicaiei. Comenzile i mesajele fixe se numesc tranzacii. Exemple:
sisteme bancare, rezervare de locuri, conducere de procese n regim ghid operator.
Sisteme timp - real ncorporate (Embedded Real Time Systems). Aceste sisteme fac parte integrant
dintr-un sistem tehnic ori tehnologic mai general. Exemple: un sistem pentru conducerea unui robot pe o
linie de fabricaie a unui produs, sistem de control al zborului n aviaie, sisteme de control autovehicule.
n ceea ce privete SCTR, n literatura de specialitate exist mai multe scheme de clasificare:
Din punct de vedere al timpului de rspuns: pot fi Hard Real-Time systems (HRT) sau Soft Real-Time
systems (STR)
HRT = cu constrngeri de timp dure; ieirile trebuie produse n limite de timp (deadlines)
specificate, n caz contrar va aprea defect de sistem (Exemple: Sisteme de control al zborului,
Sisteme de control trafic aerian, Roboti, Sisteme de control autovehicule...)
SRT = cu constrngeri de timp flexibile; deadline-urile pot fi pierdute ocazional fr a se
considera c sistemul este defect (Exemple: sisteme de comunicaie care utilizeaz protocoale
cu time out, Sisteme casier automat, Sisteme de rezervare a locurilor, Sisteme pentru
controlul proceselor proiectate s tolereze ntrzieri ...)
Din punct de vedere al deschiderii:
SCTR proprietar, care depind de caracteristicile sistemului de operare proprietar, arhitectura
hard i setul de instruciuni al calculatorului; costurile cu dezvoltrile soft i portarea spre alte
platforme sunt foarte mari la aceste sisteme.
SCTR deschise, care se bazeaz pe standarde industriale pentru microprocesoare, sisteme de
operare timp - real, protocoale de comunicaie, magistrale de interfaare; costul sistemelor este
mai mic, datorit disponibilitii pachetelor de programe, uurinei de integrare i utilizare,
independena de platforme hard proprietar, etc.
Din punct de vedere al arhitecturii:
SCTR centralizate, n care procesoarele sunt localizate ntr-un singur nod din sistem iar timpul
de comunicare ntre procese este neglijabil n raport cu timpul lor de execuie; un sistem
multiprocesor cu memorie partajat este un exemplu de sistem centralizat.
SCTR distribuite, n care procesoarele sunt distribuite n diverse locuri din sistem iar timpul
de comunicare ntre procesele de pe diferite procesoare nu este neglijabil comparativ cu timpul
lor de execuie; un exemplu de astfel de sistem este o reea local de calculatoare.
1.2 Elementele unui SCTR
Se va considera ca exemplu o instalaie pentru nclzirea aerului [Stu88] (figura 1.2-1).
Un ventilator sufl aer ctre un element de nclzire, dirijarea fcndu-se printr-o conduct. La ieirea din
aceasta este amplasat un termistor care formeaz un bra al unui circuit punte de msur. Ieirea amplificat a
1-8


Ventilator
motor
Control
motor
Unitate tiristorizat
A
Punte de msur


Man
flux aer
Element de nclzire
termistor
Sens rotaie
Motor on/off

Total
deschis
Total
nchis
Obturator
aspiraie aer
Poteniometru
"Poziie curent
obturator"
manual
alimentare
automat
Temperatura masurat Semnal
de la 0 la 10V
Control
manual
aspiraie aer
Control manual
nclzire
LED Auto/Man
LED-uri stare (vent.
P/O, obt.
nchis/deschis)
LED stare
elem.
nclzire
ON/OFF
Panou operator
Control intrare aer Control
element de
nclzire
Msurare ieire
Fig. 1.2-1 Monitorizarea i controlul unei instalaii de nclzire aer
acestui circuit este proporional cu temperatura i este o tensiune continu n domeniul 0..10 V care poate fi
msurat n punctul B.
Valoarea curentului electric prin elementul de nclzire poate fi modificat printr-o unitate de control
tiristorizat. Comanda acestei uniti se face cu o tensiune continu n domeniul 0..10V n punctul A. Debitul
1-9
aerului poate fi modificat prin intermediul unui obturator care este acionat de un motor reversibil. Motorul
lucreaz la o vitez constant iar pornirea sau oprirea sa poate fi comandat de un semnal numeric (0 sau 1)
aplicat la circuitul de control al motorului. Tot la acest circuit de control se aplic un semnal numeric pentru a
comanda sensul de rotaie. La obturator este ataat un poteniometru de pe care se poate culege o tensiune
proporional cu poziia obturatorului iar poziiile total nchis sau total deschis ale acestuia sunt detectate
cu dou contacte. Operatorul are la dispoziie un panou de la care controlul instalaiei poate fi comutat pe
Automat sau Manual. n modul de lucru Manual curentul de pe elementul de nclzire i poziia obturatorului
(aspiraie aer) pot fi modificate folosind dou poteniometre. Exist de asemenea comutatoare pentru a opera
asupra ventilatorului i elementului de nclzire. Led-urile de pe panou indic ventilator pornit/oprit, element de
nclzire oprit/oprit, obturator total deschis sau total nchis i stare de funcionare (Automat sau Manual). n
modul de lucru Automat prin controlul poteniometrelor poate fi ajustat temperatura elementului de nclzire i
poziia obturatorului.
Controlul acestui proces simplu cu ajutorul calculatorului necesit monitorizare (urmrirea strilor i valorilor),
calcule n conformitate cu algoritmul de control i acionare.
n figura 1.2-2 se prezint o schem a sistemului de conducere cu calculator a instalaiei de nclzire aer:
Monitorizarea presupune obinerea informaiilor despre starea curent a procesului. n exemplul prezentat
aceasta se realizeaz prin intermediul semnalelor analogice precum temperatura aerului i poziia
obturatorului, prin intrrile numerice de la poziiile extreme ale obturatorului precum i prin semnale de
stare modul de lucru, motor pornit, nclzitor pornit etc..
Calculele sunt necesare pentru reglarea permanent a temperaturii elementului de nclzire n corelaie cu
temperatura aerului la ieire. Reglarea se poate face n funcie de temperatura dorit prin intermediul
obturatorului i prin elementul de nclzire. Calculele se refer i la rezolvarea unor situaii conflictuale
(interblocri):
Direcie
Total
deschis
Total
inchis

Termistor
On/off
Spre panou
operator
CALCULATOR
Intrri numerice CAN CNA Ieiri numerice
Intrare de la
puntea de
msur
Poziie
obturator
Circuit de
nclzire
Ventilator

Panou operator
MAN / AUTO
motor
Control motor
Element de
nclzire
Fig. 1.2-2 Sistem de conducere cu calculator a instalaiei de nclzire aer
1-10
CALCULATOR Dispozitive I / O
standard
Dispozitive de
intrare din
proces
Dispozitive
de ieire spre
proces
PROCES
Fig. 1.2-3 Sistem generalizat de conducere
procese
INTERFEE CU PROCESUL
nclzirea rezistenei nu se poate face dac ventilatorul este oprit;
comanda automat nu se poate face dac operatorul a trecut n mod de
lucru manual iar comanda manual nu se poate face dac modul de lucru este automat.
Acionarea presupune:
furnizarea unei tensiuni pentru controlul elementului de nclzire n conformitate cu temperatura
necesar la ieire;
comanda ieirilor numerice pentru START/STOP motor, direcia de rotire;
aprinderea ori stingerea ledurilor de la panou.
Programele (task-urile) de acionare i monitorizare programeaz dispozitive de interfa precum convertor
analog-numeric (CAN), convertor numeric-analogic (CAN), intrri numerice i ieiri numerice.
Schema general este prezentat n figura 1.2-3:
Fiecare dintre tipurile de dispozitive necesit soft care s opereze asupra lor. Ne vom referi la acest soft n
continuare ca task-uri de intrare/ieire (I/E). n figura 1.2-4 se prezint un sistem de control cu calculatorul care
include interfee hard i soft:
1-11
Dispozitivele de intrare i softul aferent furnizeaz informaii pentru a crea o imagine intern a intrrilor din
proces. Imaginea intrrii este format din eantioane prelevate din semnalele din proces astfel nct fenomenul
de la intrare s poate fi reconstituit fr distorsiuni. Ea este un instantaneu al strii procesului care trebuie
actualizat:
periodic (ciclic), la intervale de timp stabilite pre-execuie sau
sporadic, la modificarea strii unor mrimi discrete sau la modificarea valorii unor mrimi continue n
afara unui interval admisibil.
Imaginea ieirii reprezint valori rezultate n urma aplicrii algoritmului de calcul. Aceasta este actualizat
periodic de ctre task-urile de control, intervalul de timp aferent perioadei fiind suficient de mic pentru a
actualiza corect imaginea ieirii. Task-urile de ieire transfer datele din imaginea ieirii ctre proces,
sincronizat cu task-urile de control, acionnd asupra acestuia astfel nct comportamentul su s corespund
imaginii ieirii.
Fig. 1.2-4 Sistem de control generalizat care prezint interfee hard i soft
Imaginea
intern a
procesului
CALCULATOR
Taskuri de control
Imaginea
intrrii
Imaginea ieirii
Taskuri de intrare Taskuri de ieire
Dispozitive de intrare
din proces
Dispozitive de ieire spre
proces
PROCES
1-12
Acest model simplu de sistem de control descris mparte task-urile de realizat n trei grupe:
task-uri de intrare in proces;
task-uri de ieire spre proces;
task-uri de control.
Comunicarea cu operatorul este tratat n schem ca parte a task-urilor de I/E. n multe aplicaii comunicaia
reprezint i altceva dect achiziie de date de la traductoare i senzori ori acionarea de comutatoare, valve
etc. Sistemele de control pot fi distribuite pe mai multe calculatoare nu toate situate n acelai loc i trebuie
asigurat comunicaia ntre acestea. Prin urmare, modelul prezentat anterior poate fi extins pentru a include
i task-urile de comunicaie (figura 1.2-5).

1-13

1.3 Tipuri de SCTR
Task-urile de intrare, ieire i comunicaie au o trstur comun: sunt conectate prin dispozitive hardware la
procese care sunt externe calculatorului. Acestea au o evoluie proprie n timp, iar calculatorul opereaz n timp
real dac aciunile pe care le realizeaz sunt n concordan cu timpul de desfurare al proceselor externe.
Relaia poate fi definit n termeni referitori la timpul care s-a scurs sau la momentul actual din cursul unei zile
n care caz se spune despre sisteme c sunt bazate pe ceas. De asemenea, relaia se poate defini n termeni
referitori la evenimente, cum ar fi, de exemplu, nchiderea unui contactor, n care caz se spune despre sisteme c
sunt bazate pe evenimente. Exist de asemenea o a treia categorie, cea a sistemelor interactive n care relaia
dintre aciunile din calculator i ntregul sistem este definit n termeni mult mai largi. n aceste sisteme este
esenial ca setul de aciuni din calculator s se realizeze ntr-un interval de timp predeterminat. Majoritatea task-
urilor de comunicare fac parte din aceast categorie.
Reea comunicaie DISPLAY Tastatur Imprimant
INTERFEE
Taskuri control Taskuri comunicaie
Imaginea intrrii Imaginea ieirii
Taskuri de intrare

Taskuri de ieire
Dispozitive de ieire spre
proces
Dispozitive de intrare
din proces
PROCES
Fig. 1.2-5 Sistem de control generalizat, cu taskuri de comunicaie
1-14
Task-urile de control, dei nu sunt direct conectate la evenimente externe, trebuie s opereze de asemenea n
timp real, rezultatele calculelor trebuind s respecte limite de timp impuse.
1.3.1 Sisteme bazate pe ceas
Aceste sisteme opereaz pe baza unor constante de timp ale procesului; valorile acestora pot fi de exemplu de
ordinul orelor, pentru procese chimice sau de ordinul milisecundelor pentru aparatura de bord a avioanelor.
Pentru controlul n bucl, rata de actualizare a imaginii procesului (prelevarea de eantioane din proces) este
dependent de constantele de timp ale procesului controlat; cu ct constanta de timp este mai mic, frecvena de
eantionare este mai mare. Sistemul utilizat pentru control trebuie sincronizat cu timpul real sau cu timpul
natural i trebuie s fie capabil s realizeze operaiile de msurare, control i acionare periodic, intervalul de
timp asociat cu perioada fiind dependent de constantele de timp ale procesului.
Sincronizarea se obine de obicei prin adugarea la SCTR a unui ceas denumit n mod uzual ceas timp - real
(Real-Time Clock RTC). O ieire de la RTC se utilizeaz ca i comand pentru ntreruperea operaiilor curente
ale calculatorului la intervale de timp fixate. Ca rspuns la ntreruperi, sistemul planific i lanseaz n execuie
task-uri de intrare, ieire, sau control. Task-urile pot fi grupate pentru controlarea diferitelor pri ale procesului,
pentru care constantele de timp pot fi diferite. Planificarea execuiei task-urilor se face periodic, n funcie de
aceste constante. Cea mai mic perioad de execuie care poate fi planificat este egal cu rezoluia RTC; prin
numrarea ntreruperilor de ceas trebuie s poat fi calculate cu precizie perioadele de lansare a tuturor task-
urilor.
n mod frecvent ntreruperea de la ceas este utilizat i pentru a calcula data i timpul (ceas i calendar). Multe
sisteme dau impresia c sunt bazate pe ceas deoarece afieaz data i ora. Acest lucru nu este relevant. Pentru ca
un sistem s fie un SCTR bazat pe ceas el trebuie s se sincronizeze cu procese externe calculatorului.
1.3.2 Sisteme bazate pe evenimente (senzori)
n unele sisteme aciunile sunt declanate nu la anumite intervale de timp, ci ca reacie la evenimente externe.
Exemplu: pornirea unei instalaii de nclzire ca urmare a scderii temperaturii sub o anumit valoare.
Sistemele bazate pe evenimente sunt n multe situaii utilizate pentru indicarea unor condiii de semnalizare
preventiv sau alarmare i pentru startarea aciunilor necesare de ntreprins n astfel de situaii. Exemple: oprirea
nclzirii unui cazan la depirea pragului de alarmare asociat presiunii, declanarea alarmei i a instalaiei de
stins incendiu la detectarea prezenei fumului sau la creterea temperaturii etc.
n mod uzual, pentru sistemele bazate pe evenimente n specificaii se include i cerina referitoare la timpii de
rspuns la evenimente. Astfel de sisteme utilizeaz de regul ntreruperile externe pentru a informa sistemul de
calcul de apariia evenimentului; n sistemele simple se utilizeaz de multe ori polling-ul citirea periodic a
senzorilor - pentru a detecta apariia evenimentelor.
1.3.3 Sisteme interactive
Acoper o gam larg de aplicaii precum rezervri de locuri, automate bancare etc.
Cerinele timp - real sunt n mod uzual exprimate n termeni referitori la timpul mediu de rspuns care s nu
depeasc un anumit interval (de exemplu timpul mediu de rspuns pentru un bancomat nu trebuie s
depeasc 10 secunde). Rspunsul este determinat de starea intern a elementului de prelucrare, nu de procese
externe acestuia.
1.3.4 Definirea SCTR
Termenul timp - real se poate aplica la sisteme n care:
1. Ordinea calculelor este determinat de trecerea timpului ori de evenimente externe calculatorului.
1-15
2. Rezultatele obinute depind de valoarea variabilei timp.
Cel mai frecvent sunt evocate n literatura de specialitate dou categorii de sisteme:
sistemele care pot avea un timp mediu de execuie care este mai mic dect un interval maxim specificat
- constrngerile de timp real sunt flexibile (Soft Real Time Systems sau SRT)
prelucrrile trebuie terminate ntr-un interval maxim de timp pentru fiecare situaie n parte (sistemul
trebuie s se mite rapid) - constrngerile de timp real sunt rigide (Hard Real Time Systems sau HRT )
A doua categorie impune constrngeri mult mai severe asupra performanei sistemului dect prima categorie.
Din aceast categorie fac parte aa numitele sisteme ncorporate (Embedded Systems) n care sistemul
constituie parte integrant a unei maini sau instalaii.
1.4 Clasificarea programelor
Studii experimentale arat clar c anumite tipuri de programe, n particular acelea care realizeaz operaii timp -
real, sunt mult mai dificil de realizat dect programele obinuite. Tehnicile de lucru pentru verificarea
corectitudinii programelor sunt date i de diferenele ntre diferitele tipuri de programe.
Lucrri teoretice referitoare la tehnicile pentru demonstrarea corectitudinii unui program au permis identificarea
a 3 tipuri de programe:
secveniale;
multitasking;
timp - real.
1.4.1 Programele secveniale
Aciunile sunt strict ordonate ca o secven n timp. Comportarea unui program depinde numai de efectele
instruciunilor individuale i de ordinea lor. Timpul necesar pentru o anumit prelucrare este mereu acelai.
Pentru testare se pornete de la urmtoarele premise:
1. O instruciune practic definete o aciune fix (static) n sistem;
2. Oricare dintre aciunile programului produc secvene statice de evenimente.
1.4.2 Programe multitasking
Difer de cele secveniale prin aceea c operaiile care trebuie realizate operaiile care trebuie realizate nu sunt
executate neaprat ca o secnven continu n timp.. Mai mult, operaiile se pot desfura concurent. Astfel, un
program poate fi construit dintr-un numr de pri numite procese sau task-uri care:
luate separat, sunt compuse din secvene de instruciuni;
se execut concurent cu alte task-uri;
comunic cu alte task-uri prin memorie partajat, semnale de sincronizare, mesaje, cutii potale...
Testarea presupune aceleai premise ca la programele secveniale, cu unele deosebiri:
Task-urile pot fi testate separat numai dac variabilele fiecrui task sunt distincte. Dac variabilele sunt
partajate, posibila concuren la resurse poate suspenda execuia pn la eliberarea acestora;
Cerinele de sincronizare cu alte task-uri fac ca timpul de execuie a secvenei de instruciuni pentru
fiecare task s nu poat fi determinat cu precizie de ctre procedurile de validare - timpul de execuie a
task-urilor depinde i de modul de execuie a procedurilor de sincronizare
1-16
Prioritatea de lansare n execuie: timpul de executie al task-ului este influenat i de intervalul de timp
n care execuia sa este suspendat atunci cnd procesorul execut alte task-uri cu prioritate mai mare.
1.4.3 Programe timp - real
Un program timp - real difer de tipurile anterioare de programe prin aceea c pe lng faptul c aciunile sale
nu sunt disjuncte n timp, secvena aciunilor sale nu este determinat doar de proiectant, ci i de evenimentele
din mediul exterior. Acestea sunt declanate de condiii din afara calculatorului i nu pot fi fcute s respecte, de
exemplu, regulile de sincronizare dintre task-uri!
Un program timp - real poate fi mprit n task-uri, dar comutarea dintre acestea nu ateapt neaprat dup un
semnal intern de sincronizare, deoarece ceea ce se ntmpl n mediul extern nu poate fi ntrziat. n programul
timp - real, n contrast cu celelalte tipuri de programe, timpul actual asociat cu o aciune este un factor esenial
n procesul de validare. Mijloacele de determinare a corectitudinii execuiei difer fundamental de mijloacele
asociate programelor secveniale sau multitasking.
Multe limbaje de programare folosite uzual nu posed mecanisme pentru realizarea aplicaiilor timp - real, iar
programatorul trebuie s i le creeze singur. De asemenea, instrumentele de testare utilizate n mod curent
pentru validarea programelor nu funcioneaz corect n aplicaii timp - real. Chiar dac exist limbaje de
programare pentru aplicaii timp - real, acestea sunt elaborate pentru anumite tipuri de maini/sisteme de
operare, portarea pe alte platforme hard/soft necesitnd eforturi nu tocmai neglijabile. Aceasta determin un cost
al aplicaiei mult mai ridicat, iar n multe situaii lipsa unor mijloace de dezvoltare i testare accesibile este n
contrast evident cu necesitatea unor aplicaii fiabile.
Au fost realizate sisteme de operare de TR, dar datorit efortului mare necesar pentru realizarea lor i a pieei
relativ limitate, acestea au fost completate i cu module specifice sistemelor de operare de uz general; exemple
de SOTR timp - real : QNX, LYNX, VxWorks, RT Linux, eCOS.
Uneori, se obinuiete ca pentru aplicaii timp - real s fie realizate de proiectanii de aplicaii executive de timp
real dedicate, care implementeaz algoritmi de planificare i sincronizare proiectai n funcie de aplicaie.
1.5 Concluzii
n acest capitol au fost prezentate elemente introductive referitoare la SCTR. Acestea sunt o categorie distinct
de sisteme de calcul. Pentru dezvoltarea aplicaiilor timp - real, proiectanii acestora trebuie s aib cunotine
despre:
procesul sau domeniul cruia i se adreseaz aplicaia;
senzori i elemente de execuie;
structura i performanele elementelor de prelucrare;
tehnici de interfaare cu lumea real;
sistemul de comunicaii de date;
sisteme de operare timp-real i algoritmi de planificare;
proiectare software;
limbaje de programare;
proiectarea algoritmilor de control;
algoritmi de prelucrare a semnalelor.

2-17
2 SCTR PENTRU CONTROLUL PROCESELOR
INDUSTRIALE
2.1 Tipuri de procese
n funcie de modul n care sunt efectuate prelucrrile, procesele industriale sau de laborator pot fi de tipul:
pe loturi (batch processes);
continue;
de laborator (sau de test);
Termenul de prelucrare n loturi este utilizat pentru descrierea proceselor n care o secven de operaii
determin producerea unor serii rezultate i n care secvena este apoi repetat pentru producerea unor alte serii
de rezultate. Astfel de prelucrri se ntlnesc de exemplu n sistemele de proces care controleaz laminoare.
ntre dou lansri n producie ale unui lot se modific datele despre produs dar secvena de operaii rmne
practic aceeai. Caracteristica proceselor pe loturi este timpul necesar pregtirii pentru producie. Acesta se
numete timp de setup i n multe sisteme de acest gen este important raportul dintre timpul de setup i timpul
de operare efectiv.
Termenul continuu este folosit pentru procesele n care producia este meninut pentru o lung perioad de timp
fr ntreruperi (luni sau chiar ani). Caracteristicile produselor care trebuie obinute n sistemele continue se
schimb din mers (exemplu: producia de energie electric).
Termenul de sisteme de laborator se refer la acele procese care n mod curent sunt controlate de ctre operator.
Acestea constau n utilizarea calculatorului pentru a controla experimente complexe sau echipamente complexe
supuse testrii. Exemplu: standuri pentru ncercarea traductoarelor, standuri pentru testarea motoarelor electrice,
experimente n medicin, etc.
Indiferent de tipul procesului controlat, calculatorul de proces execut una sau mai multe dintre operaiile:
controlul secvenial al proceselor;
controlul n bucl;
supervizarea proceselor;
interfaa om-main.
nregistrarea datelor;
analiza datelor.
2.2 Operaii realizate de ctre sistemele pentru controlul proceselor
2.2.1 Controlul secvenial al proceselor
Dei controlul secvenial apare n cea mai mare parte a proceselor, el este totui predominant la procesele de
producie pe loturi. Controlul secvenial este utilizat mai mult n procesele n care operaiile se refer la
amestecul unor materii prime n anumite condiii impuse. Pe lng controlul secvenial, calculatorul realizeaz
frecvent i controlul continuu n bucl nchis pentru reglarea unor parametri precum temperatura, presiunea,
nivelul, debitul etc.
2-18
2.2.2 Controlul n bucl (Direct Digital Control)
n astfel de sisteme calculatorul este interfaat cu procesul ca n figura 2.2.2-1:
n aceste sisteme calculatorul este o component critic i trebuie luate msuri pentru a garanta ca n cazul unei
proaste funcionri a acestuia procesul va rmne ntr-o stare stabil.
Algoritmii de control utilizai depind de aplicaie. Cei mai folosii sunt algoritmii care pleac de la algoritmul
analogic de control cu 3 termeni (proporional+integral+derivativ - PID). Ecuaia n domeniul timpului pentru
controller-ul PID ideal este [Stu88]:
(

+ + =

dt
t de
T dt t e
T
t e K t m
d
i
c
) (
) (
1
) ( ) ( (1)
unde e(t)=r(t)-y(t), cu y(t) variabila msurat la ieire, r(t) - variabila de referin (set-point), e(t) - eroarea. K
c

este factorul de amplificare global al controller-ului, T
i
este constanta de timp de integrare iar T
d
constanta de
timp a aciunii derivative. Acest algoritm poate fi exprimat i n alte forme. De exemplu, aciunea derivativ este
n mod frecvent neutilizat sau uneori de/dt este nlocuit prin dy/dt pentru a evita diferenierea variabilei de
referin etc.
Algoritmul poate fi implementat soft utiliznd o ecuaie echivalent pentru (1). Astfel, dac intervalul de
eantionare pentru calcule este T secunde, atunci pot fi utilizate aproximrile

m
r
Supraveghere cu calculator i/sau uman

Val.de referin Val. msurate

Calculator de proces
(controller)

Proces condus
Ieiri
y
Intrri
x
Fig. 2.2.2-1 Control n bucl nchis
2-19
T
e e
dk
de
k k
k
1
|

= si

=
=
n
k
k
T e dt t e
0
) (
Ecuaia de control devine n acest caz
(

+ +

=

=

n
k
k
i
n
n n
d c n
T e
T
e
T
e e
T K m
0
1
1
(2)
Dac se fac nlocuirile
T
T
K K
T
T
K K
K K
d
c d
i
c i
c p
=
=
=

ecuaia (2) poate fi exprimat ca un algoritm de forma
) (
1
1

+ + =
+ =
n n d n i n p n
n n n
e e K s K e K m
e s s
(3)
unde s
n
este suma erorilor.
Algoritmul PID nu este singurul algoritm pentru control n bucl, dar este cel mai utilizat, datorit simplitii i a
faptului c este adecvat pentru peste 90% dintre problemele de control.
Un controller simplu PID utiliznd algoritmul dat de ecuaiile 3 poate fi programat n C astfel:
2-20

# define KPVAL 1.0
# define KIVAL 0.8
# define KDVAL 0.3
#define FALSE 0
#define TRUE 1
float s, kp, ki, kd, en, enold, mn;
unsigned char stop;
extern float can(void);/*funcie care achizitioneaza de la convertorul
analog numeric, calculeaza si returneaza valoarea
erorii e; este dependenta de hardware utilizat.*/
extern void cna(float mn);/* funcie care primeste la intrare corectia
(valoarea de actionare) si o transmite la
convertorul numeric - analogic*/
void task_PID(void){

stop = FALSE;
s = 0.0; kp = KPVAL; ki = KIVAL; kd = KDVAL;
enold = can();
/* bucla de control*/
while (!stop){
en = can(); /* adc returnraza valoarea erorii actuale*/
s = s+en;/* suma pentru integrala*/
mn = kp*en + ki*s + kd * (en - enold);
cna(mn);
enold = en;
}


}
Poziionarea variabilei stop pentru oprirea task-ului se face din exterior, de exemplu ca urmare a aciunii
operatorului.
Acest exemplu este o abordare simplificat referitoare la implementarea algoritmului. O serie de ali factori,
precum ieirea parametrilor din limite, rata de eantionare pentru achiziia datelor, cadena n care sunt acionate
ieirile, filtrrile intrrilor etc., trebuie luai n considerare. De asemenea, n algoritm nu se ine cont de cerina
obligatorie ca variabila de control mn s fie calculat sincronizat cu timpul real. Astfel, rata de eantionare -
vezi formula (2) depinde de viteza de calcul a echipamentului pe care ruleaz programul. Pentru o operare
corect, este nevoie de mijloace de fixare a intervalului de timp pentru calcul la valoarea T. Acest lucru se face
prin metode care vor fi prezentate ulterior.
2.2.3 Supervizarea proceselor
Utilizarea calculatorului pentru controlul proceselor a dus la diversificarea tipurilor de activiti care se pot
realiza, deoarece sistemele cu calculator pot s controleze operaiile unei instalaii i n paralel s furnizeze
informaii pentru ingineri sau manageri n diverse moduri, prin intermediul interfeei om-main.
Un exemplu de instalaie care se preteaz la supervizarea cu ajutorul calculatorului este prezentat n figura
2.2.3-1.

2-21

Traductor
presiune
TP
Fig. 2.2.3-1 Supervizarea unei instalaii de vaporizare (reproducere din
[Stu88])

Furnizare
materie
prim
Abur
TP
Recirculare
solutie
Produs
concentrat
Vaporizatoare
2-22

n acest proces, dou vaporizatoare sunt interconectate i n fiecare se introduce o soluie care prin evaporarea
apei trebuie s i mreasc concentraia n substan util. nclzirea se face la primul vaporizator cu abur care
este furnizat printr-un schimbtor de cldur conectat la acesta, iar la al doilea vaporizator se utilizeaz aburul
rezultat din primul vaporizator. Pentru a realiza o evaporare maxim, presiunea n vaporizatoare trebuie s fie
ct mai mare posibil, respectnd ns msurile de siguran n exploatare. Totui, este necesar o coordonare
ntre cele dou vaporizatoare: dac primul funcioneaz la capacitatea maxim, poate furniza att de mult abur
nct s depeasc limitele de siguran pentru al doilea. O schem de supervizare pentru acest proces va fi
proiectat s opereze asupra celor dou instalaii astfel nct s obin rezultatele cele mai bune, n condiii de
siguran.
Algoritmii de supervizare vizeaz ansamblul procesului i se execut n timp real, n paralel cu operaiunile
curente din proces. Cele mai multe dintre aplicaiile de supervizare a proceselor permit inginerilor i operatorilor
s cunoasc strile instalaiilor i s intervin n timp real. n unele sisteme complexe sunt implemenati la acest
nivel i algoritmi de control destinai optimizrii. Complexitatea lor depinde de tipul procesului: este o mare
diferen de exemplu ntre procesul de evaporare prezentat mai sus i supervizarea procesului ntr-o central
electric nuclear.
2.2.4 Interfaa om-main
Foarte importante n SCTR pentru controlul proceselor sunt facilitile furnizate operatorilor de proces,
inginerilor i managerilor.
Un operator de proces trebuie s aib la dispoziie mijloace simple i clare pentru intervenia n instalaii sau
echipamente. El trebuie s poat schimba valorile variabilelor de referin, s fie informat rapid despre
condiiile de alarmare, s poat aciona asupra elementelor de execuie direct de la dispozitivul de intrare.
Operatorii utilizeaz console dedicate, care au de obicei o tastatur special, unul sau mai multe monitoare i
imprimant. Pe monitoare se prezint funcionarea instalaiilor prin intermediul schemelor sinoptice, sunt afiate
evenimentele legate de proces i de funcionarea sistemului, se prezint informaii despre modul de funcionare
al buclelor de reglare etc.
O mare parte din eforturile de proiectare i programare este dedicat dezvoltrii de aplicaii destinate operrii cu
mare uurin i prezentrii ct mai sugestive a informaiilor (prin scheme sinoptice, instrumente vizuale etc).
2.2.5 Responsabilitile inginerului de sistem
Inginerul de sistem are ca responsabilitate configurarea aplicaiei pentru a controla procesul, pentru a oferi
operatorilor informaiile necesare i pentru a crea i actualiza n timp real baze de date cu informaii necesare
analizei ulterioare, cu evenimentele care au aprut n instalaii etc.
Cu alte cuvinte, inginerul responsabil de sistem trebuie s aib posibilitatea:
s defineasc modul de achiziie de date i de aciune n proces;
s seteze constantele pentru scanare, filtrare, limite de alarmare i acionare etc.;
s defineasc buclele de reglare, eventual modul de cascadare a controller-elor destinate reglrii i de
conectare cu alte elemente din schema de control;
s poat s regleze modul de achiziie i control prin selectarea amplificrilor celor mai potrivite;
s defineasc i s programeze procedurile de control necesare pentru operarea automat;
s determine i s implementeze schemele de supraveghere.
2-23
Software-ul trebuie s pun la dispoziia inginerului mijloacele necesare pentru a face aceste lucruri. n acest
scop, au fost realizate medii de dezvoltare a aplicaiilor de proces precum: WinCC, Monitor PRO, Genesys,
InTouch, SL/GMS, PVSS II, ActivWare, MicroSCADA etc.
2.3 Structuri de sisteme pentru controlul proceselor industriale
2.3.1 Sisteme de control centralizate
Odat cu reducerea costurilor calculatoarelor s-a extins utilizarea sistemelor de control cu calculator.
Primele sisteme (anii 1960...1970) constau dintr-un singur calculator cu o capacitate suficient pentru a
ndeplini toate funciile unui proces. Acesta era conectat la un set de interfee cu procesul. Semnalele de la
traductoare n astfel de sisteme sunt aduse ntr-un singur loc (o camer) pentru a fi conectate la interfee.
Dezavantajul unei astfel de soluii, pe lng consumul mare de cabluri, este c defectarea calculatorului
afecteaz ntregul sistem. Implementarea buclelor de control n sistemele centralizate pune probleme legate
de disponibilitatea calculatorului central nefuncionarea acestuia era echivalent cu blocarea ntregului
proces. n anii '70 s-a trecut la implementarea buclelor de reglare cu regulatoare analogice, care primeau
valorile de setpoint de la calculatorul central. n cazul defectrii calculatorului, regulatoarele continuau
funcionarea n regim de lucru local.
n anii '70-80, ca urmare a scderii preului calculatoarelor, pentru creterea toleranei la defecte n
aplicaiile industriale critice erau frecvent utilizate sisteme de calculatoare duble ( figura 2.3.1-1).
Comutarea ntre cele dou calculatoare poate fi manual sau automat. Cnd este necesar comutarea
automat comutatorul devine o component critic. De asemenea, programarea i problemele de testare i
control sunt foarte complicate.


Periferice standard Management
Calculator A Calculator B
Comutator Bloc de control
Interfee
Proces
Fig. 2.3.1-1 Sistem cu calculatoar dublu
2-24
2.3.2 Sisteme ierarhizate
Au o larg rspndire n domeniile unde se iau decizii centralizat. ntr-un sistem ierarhizat o celul este
implicat n luarea deciziei n felul urmtor (Fig. 2.3.2-1):
Fiecare element de decizie presupune recepionarea unor comenzi de la nivelul superior i transmiterea
informaiilor napoi la acest nivel. Pe baza informaiei recepionate de la elementele de pe nivelul inferior
precum i pe baza coreciilor sau constrngerilor impuse de elementele de pe acelai nivel se transmit
comenzi la elementele de pe nivel inferior.
O structur ierarhic cu mai multe celule poate fi asimilat cu o piramid ca n figura 2.3.2-2:
La baza piramidei este necesar un timp de rspuns mic, de ordinul msec sau sec. Pe msur ce se avanseaz
spre vrful piramidei timpul de rspuns crete.

Luarea deciziei

Informaii Comenzi Nivel superior
Constrngeri
Informaii
Constrngeri
Informaii
Acelai
nivel
Informaii
(provenite de la
nivelul inferor)
Comenzi Nivel inferior
Fig. 2.3.2-1 Funcia de fabricare ierarhic a deciziilor

Fig. 2.3.2-2 Structura ierarhic de luare a deciziilor
2-25
Un exemplu tipic de sistem ierarhizat este sistemul de producie automat a unor loturi de produse (figura
2.3.2-3).
Acest sistem are 3 niveluri pe care le vom denumi:
manager;
supervizor;
unitate de control.
Se utilizeaz calculatoare separate pentru funciile de manageri, supervizori i pentru controlul procesului.
La nivelul de manager funciile principale sunt:
gestiunea resurselor;
programarea produciei;
Manager
Supervizor
Gestionare resurse
Planificare producie
Evaluare
Elaborare reete
Secvene de operaii
Coordonare
Magistrala de date
Unitate de control Unitate de control
PROCES
Fig. 2.3.2-3 Prelucrarea n loturi utiliznd un sistem ierarhic

2-26
evaluarea produciei.
Informaiile referitoare la programarea produciei sunt transferate la nivelul supervizor. Acest nivel are
implementate reetele de producie i secvenele de operaii pentru obinerea produselor. Informaiile despre
proces se ncarc la iniiativa supervizorului n unitile de control care execut operaiile individuale. n
timpul execuiei, supervizorul va primi informaii despre modul de derulare a fiecrui proces i va rezolva
orice conflict n disputa asupra resurselor; de asemenea informeaz managerul despre rezultat.
La nivelul inferior, unitile de control sunt responsabile de operaiile de proces (nchiderea deschiderea de
vane, comutatoare, control de temperaturi, viteze, debite, monitorizarea alarmelor) i de informarea
nivelului supervizor despre proces.
Cele mai multe sisteme ierarhizate necesit reele de calculatoare distribuite, n practic cel mai des ntlnite
sisteme de proces fiind cele distribuite (fizic i logic) i ierarhizate (n procesul de luare a deciziilor).
2.3.3 Sisteme distribuite
Caracteristicile unui sistem distribuit sunt:
fiecare unitate poate executa task-uri similare cu celelalte uniti de calcul;
n caz de defectare a unei uniti, atributele acesteia pot fi realizate de alt unitate.
n sistemele distribuite, munca e divizat i executat de mai multe calculatoare. Aceasta implic dificulti n
realizarea modulelor hard i a pachetelor soft pentru c task-urile trebuie alocate mai multor procesoare, care
partajeaz sau nu anumite resurse.
n realitate, cele mai multe sisteme moderne utilizeaz structuri distribuite i ierarhizate. n acestea, task-urile de
msur, acionare, control n bucl, comunicare cu operatorul, supervizare etc. sunt distribuite ntre mai multe
calculatoare. Acestea sunt interconectate printr-un canal de comunicare de mare vitez (FIELDBUS sau LAN),
de-a lungul cruia calculatoarele sunt interconectate ntr-o structur ierarhic de comand (figura 2.3.3-1).
Sistemele distribuite i ierarhizate au urmtoarele avantaje:
Capacitatea de calcul crete prin partajarea task-urilor ntre diferite procesoare. De exemplu, la nivelul 1
se pot face mult mai bine filtrri, scalri, msurri, acionri, nu pentru c acestea sunt operaii foarte
complicate, ci mai ales pentru c se aplic unui numr mare de mrimi. De asemenea, calculele
complicate pentru control n bucl se fac de ctre procesoare separate, crescnd viteza de lucru i
fiabilitatea. Nivelul 2 preia datele i trimite concluziile prin intermediul mediului de comunicaie.
Sistemul este mai flexibil dect cu un singur procesor; se pot face mai uor modificri prin adugarea de
noi module. De asemenea, se pot utiliza standardizrile specifice comunicaiilor de date n reea.
Defectarea unui modul nu afecteaz ntreg sistemul. Pentru izolarea defeciunii se poate trece uor n alt
mod de lucru (manual de exemplu) apoi se face nlocuirea.
Se pot face uor modificri hard i soft deoarece este mai uor s modifici un singur modul dect ntreg
sistemul.
Calea de comunicare serial permite ca echipamentele s fie distribuite pe o arie geografic mai mare,
nemaifiind astfel necesare cabluri care s aduc semnalele ntr-o singur ncpere.
2-27

Microcomputer
Microcomputer
Microcomputer
Microcomputer
Controller Controller Controller
PROCES
Nivel 1
Achiziie/acionare
Nivel 2
Control n bucl
Nivel 3
Control secvenial al
proceselor
Nivel 4
Comunicaie
operator
Nivel 5
Supervizor
Nivel 6
Management
Fig. 2.3.2-1 Sistem distribuit i ierarhizat
2-28

2.3.4 Piramida automatizrii
SCTR distribuite i ierarhizate nlocuiesc tot mai frecvent sistemele clasice de automatizare. Nivelurile
ierarhice de automatizare pot fi reprezentare prin piramida automatizrii (figura 2.3.4-1).
Parametrii luai n considerare sunt: nivelul ierarhic, cerinele timp - real, volumul de date gestionat de
elementele de prelucrare i cerinele de sincronizare.

msec
Control procese
Celula de
baz
Supervizare
Timp real
Volum de
date
Sincronizare
Lent (min sau ore)
f. mare NU
mare NU
mediu NU
mare
mediu DA/NU
mic DA
Achiziie date i
acionare
Management
Nivel ierarhic Nivel ierarhic
Fig. 2.3.4-1 Piramida automatizrii
3-29
3 STRUCTURA ECHIPAMENTELOR UTILIZATE IN SCTR
3.1 Structura hardware general a calculatorului de proces
Dei cele mai multe calculatoare pot fi utilizate pentru aplicaii timp - real, nu toate sunt adaptate pentru a
rspunde cerinelor acestora. Cerinele se refer n mod uzual la necesitatea atarii la calculator a unor
dispozitive care s permit comunicarea n timp real cu mediul exterior i cu utilizatorii.
Pentru calculatoarele dotate cu dispozitivele necesare n aplicaiile timp - real pentru controlul proceselor se
folosete n mod curent denumirea de calculatoare de proces. O caracteristic a acestora este concepia
modular: ele permit adugarea la elementul de prelucrare a unor module externe, n particular dispozitive
specializate de intrare/ieire. Dispozitivele tipice de interfaare ale unui calculator sunt prezentate n figura 3.1-
1
3-30


Memorie UC

Interfee de Intrare/iEire
HDD
Streamer
Imprimant
Display,
tastatur
Panou
operator
Display
Alarmare
Imprimant
Dispozitive
standard
Dispozitive operator
proces
Dispozitive de
comunicaii








P
R
O
C
E
S
ntreruperi, RTC
Dispozitive de
proces
Canale de
telemetrie
CAN

CNA
In

Out
Semnale n
impulsuri
In

Out
Semnale
numerice
1
6
3
2
5
4
Fig. 3.1-1 Dispozitive de interfaare tipice
3-31
3.1.1 Unitatea central
Uniti centrale similare cu ale sistemelor de uz general (de ex. PC cu 80x86), de cele mai multe ori n
construcie industrial, sunt utilizate frecvent n calculatoarele de proces. n sistemele ncorporate sau n
sistemele distribuite pentru controlul proceselor sunt disponibile echipamente numite PLC (Programable Logic
Controller) sau RTU (Remote Terminal Unit). Astfel de echipamente sunt produse de firme precum SIEMENS,
SCHNEIDER Electric, GENERAL ELECTRIC FANUC, ABB s.a. Unitile centrale ale acestor echipamente
sunt realizate cu microprocesoare de diverse tipuri: procesoare de uz general - 80x86, Motorola 68xxx (16/32
bii); controllere programabile (calculatoare ntr-un singur cip) - 8051, 8048, HC11, 80C552 (8 bii); 80C166
(16 bii) etc.
3.1.2 Dispozitive de comunicaie
Dispozitivele de comunicaie interfaeaz calculatorul de proces cu mediile de comunicaie n reele industriale
sau n reele de uz general. Exist o mare varietate de dispozitive i medii de comunicaie, selectate n funcie de
aplicaie, condiii tehnice existente, cerine de performan etc.:
dispozitive pentru comunicaie serial RS232, RS485, RS422;
dispozitive pentru comunicaie n LAN;
dispozitive de comunicaie prin microunde;
dispozitive de comunicaie n infrarou, etc.
3.1.3 Dispozitive de proces
Dispozitivele de proces sunt de diverse tipuri, n funcie de mrimile achiziionate ori comandate. Aceste
dispozitive trateaz:
I/E numerice valori binare (0 sau 1 logic) pentru fiecare semnal. Se refer la mrimi de genul
pornire/oprire, deschidere/nchidere etc.
I/E analogice interfee care primesc sau genereaz semnale analogice continue n curent sau tensiune.
Valorile de curent sau tensiune se convertesc n/din uniti inginereti prin module soft care in cont de
relaia dintre domeniul semnalului de I/E n/din calculator i domeniul mrimii fizice. Semnalele
analogice de intrare provin de la senzori sau traductoare iar cele de ieire se aplic la elemente de
acionare, instrumente de msur analogice etc.
I/E n impulsuri o serie de instrumente de msur (contoare de energie, integratoare de debit etc.) ofer
la ieire impulsuri proporionale cu mrimile msurate. De asemenea, unele elemente de execuie
(motoare pas cu pas) necesit comanda n impulsuri. Calculatorul trebuie s dispun n aceste cazuri de
interfee de numrare a impulsurilor i respectiv de comand n impulsuri.
Canale de telemetrie se utilizeaz pentru conectarea unor instrumente specializate pentru msur i
control, aflate la distan.
n funcie de locul de amplasare, dispozitivele de interfaare cu procesul pot fi pe magistrala intern (PLUG-
IN) sau pe magistrala extern (conectate la calculator prin intermediul reelelor de comunicaie serial sau
interfeelor paralele).
3.1.4 Dispozitivele standard ale calculatorului
Calculatoarele de proces n multe cazuri au n configurare i dispozitive standard uzuale precum discuri, benzi,
display, tastatur, mouse etc.
3-32
3.1.5 Dispozitivele operatorului de proces
Operatorul de proces poate utiliza chiar dispozitivele calculatorului. n unele situaii se utilizeaz ns console
speciale ale operatorului de proces care conin dispozitive de afiare (de obicei display color de mari
dimensiuni), de comand n proces (panouri de comand), de alarmare (HUPA), respectiv pentru listarea unor
jurnale de evenimente (imprimante de panou).
3.1.6 Ceasul timp - real (Real Time Clock)
RTC este un dispozitiv auxiliar, vital pentru SCTR. n funcie de tipul aplicaiei, RTC poate fi un ceas
electronic, un ceas generat soft sau un simplu generator de impulsuri cu frecvena precis controlat care d
ntreruperi la intervale de timp programabile.
Orice SCTR utilizeaz RTC pentru a genera ntreruperi la anumite intervale de timp (de exemplu la PC de
aproximativ 18,2 ori pe secund). n sistemele n care timpul este foarte important se utilizeaz ceasuri digitale
care genereaz ntreruperi la anumite frecvene, pot ntreine automat data i ora, alimentarea fcndu-se de la o
surs de alimentare auxiliar.
n SCTR, RTC este folosit pentru: ntreinere dat i or, stabilire intervale de eantioane a procesului, intervale
de comunicaii, timeout, memorare date pe disc, afiare pe display a curbelor y(t), elaborare de rapoarte la
imprimant etc..
Uzual, ntreruperea de la RTC este folosit i de ctre sistemul de operare timp - real pentru planificarea i
dispecerizarea task-urilor.
3.2 Semnale preluate/transmise de SCTR din/ctre lumea real
n mod uzual, calculatorul de proces conine dispozitive pentru 3 tipuri de semnale n tensiune: analogice,
numerice i n impulsuri.
Semnalele analogice se deosebesc de celelalte prin aceea c amplitudinea lor variaz n timp, iar cele numerice
sau n impulsuri pot lua numai valori 0 i 1.
Distincia ntre semnalele numerice i cele n impulsuri const n modul de tratare a informaiei i n tipul
interfeelor hard utilizate pentru achiziie. Unui semnal numeric ataat unui canal i se asociaz un bit la nivelul
interfeei de achiziie. Starea de 0 sau 1 a semnalelor numerice este memorat static ntr-un bit sau ntr-o grup
de bii care se schimb n funcie de evoluia semnalului din lumea real. Semnalele n impulsuri sunt memorate
sub forma unui numr de tranziii care au aprut pe semnalul de intrare sau care trebuie generate la ieire ntr-un
interval de timp dat.
Semnalele analogice sunt transformate n reprezentare numeric prin intermediul CAN (Convertor Analog
Numeric). Semnalele analogice de ieire sunt generate pornind de la valorile numerice prin intermediul CNA
(Convertor Numeric Analog).
Cele mai multe interfee de proces accept la intrare semnale n domenii unificate de curent sau tensiune:
~0 V pentru 0 logic i ~5V pentru 1 logic la semnalele numerice sau n impulsuri;
intrare n curent continuu 4-20mA (uneori i 2 10 mA, 0 10 mA ) sau n tensiune continu 0 10 V,
0-5V, +/-10V, +/-5 V pentru semnalele analogice.
Semnalele unificate n cureni sau tensiune au amplitudini suficiente pentru interfeele din calculator. Uneori
ns, traductoarele sau senzorii ofer la ieire semnale care nu sunt n curent sau tensiune sau semnale n curent
sau tensiune care nu se ncadreaz n domeniile unificate. Din acest motiv, sunt necesare module de
3-33
condiionare semnale care adapteaz semnalele la cerinele interfeei din calculator. Acest fel de module sunt
utilizate de asemenea i pentru izolarea calculatorului fa de tensiunile nalte, pentru filtrarea zgomotelor etc.
Semnalele numerice sau analogice de ieire sunt oferite de interfeele de ieire din calculator n domeniile
unificate de curent sau tensiune specificate mai sus.
n paragraful urmtor sunt prezentate detalii referitoare la blocurile funcionale care efectueaz transformarea
semnalelor din mediul extern n format recunoscut de ctre calculator i respectiv transform datele din format
calculator n semnale ctre mediul extern. Pentru sistemele care conin astfel de blocuri funcionale,
interconectate ntre ele i cu calculatorul, se va utiliza n continuare denumirea de Sistem de Achiziie de Date i
Control (SADC).
3.3 Blocurile funcionale ale unui SADC
Schema bloc i funciile generale ale unui SADC sunt sintetizate n figura 3.3-1
3.3.1 Conectarea dispozitivelor de I/E la calculatorul gazd
O parte important a oricrui SADC este calculatorul gazd (host computer). Exist multe tipuri de
dispozitive (numite uneori module) specializate pentru achiziie de date i control, care se pot conecta la
calculatorul gazd n unul dintre urmtoarele moduri:
direct pe magistralele de date/adrese/comenzi ale calculatorului - conectare pe magistrala intern sau
PLUG-IN;
prin intermediul canalelor de comunicaie seriale sau paralele - conectare pe magistrala extern.
Mediul
exterrn
Mediul
extern
Traductoare
Senzori
Condiionare
semnale
Dispozitive de
Intrare pentru
conversie semnale
n format acceptat
de calculator
Analiza
Decizii
Afiare,
nregistrare
Dispozitive de
iEire pentru
conversie date
ctre proces
Elemente de
execuie
Fig. 3.3-1 Sistem de achiziie de date i control schema bloc
3-34
n continuare, termenul sistem va fi utilizat n diverse moduri: un sistem poate include tot ceea ce este
necesar pentru achiziie de date i control, inclusiv calculatorul gazd; de asemenea, termenul sistem poate
fi utilizat i pentru descrierea unor dispozitive sau subansamble ale unui astfel de sistem, cu toate c acestea
ar putea fi denumite mai corect subsisteme.
3.3.1.1 Dispozitive pe magistrala intern
Principalele avantaje ale conectrii directe pe magistrala calculatorului gazd (de exemplu la PC) sunt:
viteza mare de achiziie i comand;
costul sczut;
dimensiuni mai mici.
La aceste sisteme costul este mai redus pentru c nu mai este nevoie de incinte i surse de alimentare separate,
alimentarea fcndu-se din sursa intern a calculatorului gazd. Vitezele mari se obin datorit eliminrii
protocolului de comunicaie i a cilor de comunicaie care fac ca transmisia datelor s fie lent.
Exemplu: Rata de achiziie a unui SADC folosind interfaa RS 232 la viteza de 9600 bauds este limitat la zeci
de eantioane / sec. n contrast, SADC ce conin dispozitive pe magistrala intern pot achiziiona sute de mii de
eantioane pe secund.
n figura 3.3.1.1-1 se prezint schema bloc simplificat a unui sistem cu dispozitive pe magistrala intern.
SADC pe magistrala intern conin dispozitive (module) de interfaare ce se conecteaz direct pe sloturile
disponibile din calculator. Mai mult, exist sisteme ce permit ca un singur modul s conecteze la calculator mai
multe tipuri de semnale de I/E, n mod selectiv. Sistemele moderne includ procesoare de semnal i ofer
funcii de achiziie, prelucrare primar a datelor, transmisii de date etc.
n unele aplicaii un calculator ce dispune de suficiente resurse poate conine module de achiziie pe magistrala
intern i n acelai timp poate fi conectat prin canale de comunicaie seriale sau paralele cu alte SADC sau
calculatoare gazd. Acelai calculator, pe care se execut software de baz i de aplicaie adecvate, poate
executa concurent funcii de achiziie, control, analiza datelor, grafic, etc.
3.3.1.2 Dispozitive pe magistrala extern
Acestea sunt de obicei echipamente inteligente, capabile s ndeplineasc sarcini de achiziie de date i control
i sarcini de comunicaie. La nivel fizic, comunicaia este realizat prin interfee standardizate cablate (RS 232,
RS 422, RS 485, IEEE 802.3, IEE 488 (GPIB)...) sau wireless (microunde, infrarou...)
Dispozitivele inteligente pe magistrala extern sunt la rndul lor SADC-uri cu module conectate pe magistrala
intern sau extern.
BUS
Dispozitive ADC + calculator gazd

Dispozitive
I/E
C
(PC)
Proces
mag. intern
Fig. 3.3.1.1-1 Sistem ADC pe magistral intern
3-35
Exemple de dispozitive conectate pe magistrala extern:
calculatoare de proces cu UC compatibil IBM PC (cunoscute sub denumirea IPC Industrial PC);
echipamente PLC sau RTU cu UC realizate cu microcontrollere (precum cele din familia I80C51,
80C166, MOTOROLA 68000, ZILOG 180) sau microprocesoare de uz general;
traductoare/senzori i elemente de execuie inteligente, realizate cu microcontrollere sau procesoare de
semnal.
n figura 3.3.1.2-1 se prezint schema bloc a sistemelor conectate pe magistrala extern:
Posibilitatea de a avea la distan SADC permite realizarea unor SCTR distribuite. Reelele care
interconecteaz mai multe dispozitive pe magistrala extern i calculatoare gazd se numesc reele industriale.
Pentru reelele industriale cablate, n literatura de specialitate se mai utilizeaz i denumirea de fieldbus
(magistrala/bus de teren).
Exemplu de reea industrial: SADC-urile din staiile de transformare ale unei companii sunt conectate prin
fieldbus-uri RS485 la un dispecerat energetic amplasat n cldirea administrativ. Aceasta permite ca prin
intermediul unor calculatoare gazd din reeaua local de la dispecerat s fie efectuate activiti de
monitorizare/calcule/acionare i supervizare a ntregului proces de gestiune energetic.
Avantaje ale conectrii pe magistrala extern:
teoretic se poate configura orice sistem, orict de mare ar fi distribuirea sa n spaiu;
SADC pot fi la mare distan fa de calculatorul gazd (sute de m, km...), permind astfel amplasarea
n apropierea zonei n care se gsesc senzorii i elementele de execuie;
SADC degreveaz calculatorul gazd de sarcinile specifice de achiziie de date i control;
SADC se poate conecta la orice tip de calculator care dispune de interfee de comunicaie
corespunztoare.
3.3.2 Semnale din proces, traductoare i condiionarea semnalelor
Deoarece semnalele din lumea real sunt de o foarte mare diversitate, sunt necesare dispozitive care s
simplifice tratarea acestora de ctre dispozitivele de conversie n/din format numeric acceptat de ctre
calculator. Acest lucru se realizeaz prin intermediul traductoarelor (senzori), elementelor de execuie si
circuitelor de condiionare semnale.
Dispozitiv I/E pe
mag. extern
Dispoziti
ve I/E pe
mag.
intern

C


Calculator
gazd
RS 232
RS 422
RS 485
IEEE 488
LAN
Proces
Fig. 3.3.1.2-1 SADC cu dispozitive pe magistrala extern
3-36
n continuare se prezint cele mai comune semnale din proces i modul n care acestea sunt prelucrate.
3.3.2.1 Tipuri de semnale
n general, un SADC accept 3 tipuri de semnale n tensiune:
analogice;
binare (numite uneori i numerice);
n impulsuri.
Unele traductoare ofer semnale n curent, care se convertesc n tensiune pentru a fi msurate de sistemul de
achiziie.
Dei toate semnalele din proces sunt variabile n timp, numai cele analogice i modific amplitudinea
proporional cu valoarea mrimii de intrare. Semnalele numerice i cele n impulsuri sunt similare din mai
mai multe puncte de vedere: ambele au amplitudine constant i sunt reprezentate prin cele 2 valori posibile,
High i Low.
H 2 -:-5V;
L 0 -:- 0,8V.
Totui, n proces pot fi semnale numerice de valori mai mari (110V, 220V) i acestea trebuie adaptate la
nivelurile TTL precizate mai sus.
Distincia ntre semnalele numerice i cele de impulsuri const n modul de tratare a informaiei i n
tipurile de interfee utilizate. Unui semnal numeric ataat unui SADC i se asociaz un bit la nivelul
calculatorului. Deoarece semnalele numerice i pot schimba starea cu mare vitez, informaia se pstreaz
static ntr-un bit sau un grup de bii, citii de pe interfa la un anumit moment de timp.
n contrast, informaia n impulsuri se memoreaz sub form de numr de tranziii ale strii sau sub forma de
rat de tranziie (Ex.: impulsuri / sec).

Semnalele analogice sunt convertite n format calculator prin intermediul convertoarelor analog-numerice
(CAN).
0
5V
Semnal
numeric
-10V
+10V
Semnal
analogic
Fig. 3.3.2.1-1 Semnale numerice vs. semnale analogice
3-37
De obicei, semnalele analogice oferite de traductoare sunt:
semnalele unificate n tensiune:
0 10 V;
0-:-5V;
5V;
10V.
semnalele unificate n curent:
4 20 mA se lucreaz cu 0 viu (de exemplu 0mA poate indica fir rupt );
2 10 mA se lucreaz cu 0 viu;
0 20 mA;
0 10 mA;
Semnalele unificate n tensiune i curent au amplitudinea suficient de mare pentru a permite o interpretare
bun a fenomenelor. Exist totui i senzori i traductoare precum:
termocuple;
celule fotoelectrice;
senzori piezoelectrici;
senzori biomedicali,
ce produc semnale mici, de ordinul mV sau mai mici. SADC trebuie s fie capabil s amplifice aceste
semnale de nivel sczut astfel nct s le trateze cu aceeai acuratee precum trateaz semnalele unificate.
3.3.2.2 Traductoare i senzori
Indiferent de fenomenele urmrite sau de dispozitivele controlate, traductoarele joac un rol vital n SADC.
Traductorul asigur conexiunea ntre lumea real i cea electric.
Semnalele de intrare din lumea real pot reprezenta temperaturi, debite, deplasri, fore, viteze etc.
Semnalele de ieire spre lumea real pot controla valve, relee, vane, lmpi, motoare etc. Semnalele produse
de traductoare sunt cel mai adesea sub form de tensiune, curent, rezisten sau capacitate.
Indiferent de tipul semnalelor produse de traductoare, prin procesul de adaptare (condiionare) a semnalelor,
ele vor fi convertite n semnale de tensiune deoarece, dup cum se va vedea ulterior, intrrile n SADC sunt
intrri n tensiune.
3.3.2.2.1 Exemple de traductoare
Termocupluri (TC)
Acestea sunt cele mai utilizate pentru msurarea temperaturii. Un TC este o jonciune ntre 2 metale diferite.
Aceasta produce o tensiune electromotoare proporional cu temperatura jonciunii efectul Seebeck sau
efectul termoelectric.
Pot fi msurate temperaturi de la 200 C la 4000 C. Tensiunea de ieire a unui TC este n mod uzual, ntre
10mV i +50mV i are o sensibilitate medie de 10 pn la 50 V / C n funcie de termocuplul utilizat.
Exist mai multe tipuri de TC ce utilizeaz o mare varietate de metale. Urmtoarele tipuri sunt cele mai
utilizate:
3-38
Tip J combinaie Fe C (Fier Constantan)
Tip K combinaie Ch A l (Crom Aluminiu)
Tip T combinaie Cu C (Cupru Constantan)
TC au pre sczut i volum mic, cu precizie limitat, n general n gama 1 3% indiferent de material sau
modul de utilizare. Timpul de rspuns este de ordinul a ctorva secunde i este necesar compensarea
fenomenelor de neliniaritate i de jonciuni multiple.
Legea jonciunii - jonciunea unui TC genereaz o tensiune electromotoare proporional cu temperatura
(efectul Seebeck):

K = coeficient Seebeck definit pe o jonciune particular metal metal
t = temperatura exprimat n C
Aceast tensiune nu se poate msura direct pentru c atunci cnd se conecteaz un TC la un dispozitiv de
msur conexiunile ce se fac ntre aparatul de msur i traductor creeaz un nou circuit termoelectric.
Ex.: - s conectm un voltmetru la un TC tip T (Cu C) (figura 3.3.2.2.1-1)
J
i
= jonciunea i, i = [1,3].
Pentru determinarea temperaturii, se dorete msurarea tensiunii V
1
n J
1
(care este amplasat n mediul a
crui temperatur trebuie msurat). Dar, prin conectarea voltmetrului s-au format nc 2 jonciuni J
2
i J
3.
Jonciunea J
3
este o jonciune Cu Cu i nu se creeaz o tensiune termoelectromotoare V
3
= 0.
J
2
este o jonciune Cu C tensiunea V
2
opus ca semn tensiunii V
1
(pentru c avem Cu-C i nu C-Cu).
Ca rezultat pe voltmetru se va citi o tensiune V
v
proporional cu diferena temperaturilor din punctele J
1
i
J
2.
Prin urmare nu putem cunoate temperatura n J
1
fr ca n prealabil s cunoatem temperatura

din J
2.
O
modalitate este aceea de a pune J
2
ntr-o baie de ghea fornd temperatura la 0C. Aceasta definete pe J
2
ca pe o jonciune de referin, putnd astfel considera t
2
ca o temperatur de referin t
ref
.
V
v
= V
1
V
ref
= K(t
1
t
ref
) (2)
De notat c V
ref
0V pentru c relaia Seebeck se bazeaz pe scara Kelvin (zero absolut). De asemenea
coeficientul K depinde i el de temperatur. Exist tabele care conin nu numai V
ref
la orice temperatur ci
chiar V
v
cnd t
ref
=0C.
TC Cu-C este un caz special pentru c unul dintre fire, cel de Cu, este din acelai metal cu bornele
voltmetrului (Cu). S considerm un caz mai general utiliznd un TC Fe-C J
3
devine jonciune Cu-Fe. Se
poate arta c dac jonciunea Cu-Fe i Cu-C sunt la aceeai temperatur, rezultanta de tensiune este
echivalent cu a unei singure jonciuni Fe-C. Aceasta ne permite s utilizm relaia (2) pentru ca ambele
V=K(t) (1)
Voltmetru
Cu
Cu
J
3
Cu
J
2
Constantan
J
1
V
1

Fig. 3.3.2.2.1-1 Msurarea temperaturii cu un termocuplu
3-39
jonciuni sunt din acelai material (Fe-C n acest caz). Este important ca ambele jonciuni parazite s fie la
aceeai temperatur de referin.
Revenind la (2) trebuie artat c t
ref
trebuie cunoscut cu precizie pentru calculul lui t
1.
Se pot utiliza n acest
scop alte dispozitive de msurare ale temperaturii precum:
termistoare;
senzori semiconductori;
termorezistente.
Aadar, sub controlul unui calculator operaiile de msurare a unui TC devin:
1. msurarea lui t
ref
i determinarea (din tabele) a tensiunii echivalente V
ref
a TC pentru jonciunea
parazit;
2. msurarea V
v
i determinarea V
1
(scznd V
ref
din V
v
);
3. conversia tensiunii V
1
n temperatura cutat t
1.

Aceast procedur este cunoscut sub numele de compensarea de jonciune. Se pune problema de ce se
utilizeaz TC ce necesit compensarea de jonciune n timp ce exist dispozitive care nu necesit
compensare?
Rspunsul este:
1. TC pot fi utilizate pentru msurarea unui interval mare de temperaturi
2. Exista avantaje constructive, TC putnd fi construit la dimensiunile dorite, fie prin sudare, fie prin
ncapsulare, pentru protecie folosindu-se diverse tipuri de nveliuri (teci, carcase, etc).
La alegerea unui TC se va ine cont de urmtorii factori:
pre;
precizie;
posibiliti de msurare.
Exemplu:
Tip J
Pre sczut
Sensibilitate mare
Precizie moderat (nu pot fi utilizate peste 760 C pentru c se decalibreaz)
Tip K
pre moderat;
sensibilitate moderat;
precizie sczut i domeniul de msur ridicat (pot s msoare max. 1370 C).
Tip T
pre moderat;
sensibilitate moderat;
precizie nalt (utilizat pentru msurarea temperaturilor sczute).
3-40
Toate TC pot fi utilizate pe baza unor curbe sau tabele standard publicate n cataloage n care exist
coresponden ntre temperatur i tensiunea electromotoare generat.
Termistoare
Termistorul este un dispozitiv din oxid metalic sau semiconductor ce i modific rezistena cu temperatura.
Are un coeficient de temperatur negativ ce ajunge la -4 :- - 8% / C. Exist i termistoare cu coeficient
pozitiv de temperatur. Coeficientul de temperatur fiind de cteva % pe C, face posibil sesizarea unor
variaii mici de temperatur (0,01 C) fa de alte dispozitive. Precizia termistoarelor este de 10 ori mai
bun ca TC, variind ntre +/-0.1C. Dimensiunile mici i R
nominal
mare constituie avantaje semnificative
pentru termistoare. Sunt confecionate din amestec de Ni, Mn, Co, Fe, Mg, Ti, etc, sintetizate la temperaturi
de 1000 C, se ncapsuleaz n plastic, metal sau sticl.
Se pot face msurtori n intervalul 100 +300 C. Pe lng intervalul limitat de msurare trebuie mare
atenie n montarea i mnuirea lor, deoarece sunt foarte fragile.
Termorezistente metalice (RTD)
Ca i termistoarele RTD se bazeaz pe variaia rezistenei cu temperatura. Pentru confecionare se utilizeaz
Pt, Ni, Wo, Cu, Rd, Ag, etc.
Exemplu: Pt100 RTD platin 100 (100 este rezistena firului n ohmi)
Intervalul util de temperatur pentru RTD cu Pt este 180 C + 680 C.
De fapt platina este cea mai utilizat. RTD au un coeficient de temperatur pozitiv i prezint o anumit
neliniaritate. Pentru acurateea msurtorii se pot aplica corecii. (ex.: polinoame de gradul 3 pornind de la
tabele de corecie).
Termorezistenele sunt construite fie cu fir metalic fie cu pelicul. Cele cu pelicul ofer un t
rspuns
mic, pre
sczut i o valoare mare a rezistenei, ns fa de cele cu fir metalic sunt mai puin stabile n timp.
Construcia RTD depinde de destinaia lor. Se utilizeaz n special n fluide conductoare (ap, ulei). Cele
mai multe termorezistene cu Pt au 100 sau 200 ohmi. RTD cu pelicul Pt 100 sunt cele mai larg rspndite.
Acestea au sensibilitate de 0,4 ohmi / C i pot fi utilizate la msurtori ntre -180C 1000C cu precizie
de 0,1 1 C, dar la unele traductoare speciale se poate ajunge pn la 0,01 C.
Sunt interschimbabile i au timp de rspuns relativ mic.
Senzori de temperatur jonciune semiconductor
Se mai numesc i senzori cu siliciu (Si). Este format dintr-un circuit electronic care exploateaz
comportamentul jonctiunii active semiconductoare la variatia temperaturii. Exist jonciuni cu ieiri n
curent sau tensiune. n ambele cazuri ieirile sunt direct proporionale cu temperatura. Ieirea liniar este de
nivel relativ nalt, ceea ce face interpretarea foarte uoar. Cele mai cunoscute tipuri genereaz 1A/K
(298A la 25C). Acesta poate fi convertit extern ntr-o tensiune utiliznd o rezisten cunoscut.
Dispozitivele semiconductoare se utilizeaz pentru msurarea temperaturii n intervalul -50C +150 C.
Precizii de 0,5 C sunt comune, dar se pot obine i precizii de 0,1 C.
Traductoare de presiune, for, deformare, poziie, deplasare, nivel
Dei fiecare din aceti senzori sunt bazai pe principii diferite, semnalele lor de ieire sunt tensiuni, cureni,
impedane. Aceste semnale se convertesc direct sau indirect n niveluri de tensiune analogice.
Traductoarele de presiune: - se mpart n 3 categorii:
3-41
pentru msurarea vacuumului (vidului);
pentru msurarea presiunii medii;
pentru msurarea presiunii mari.
Vacuummetrele traductoare cu ionizare care pot fi:
pentru presiuni medii traductoare tensometrice, inductive, capacitive sau piezoelectrice;
pentru presiuni mari traductoare de presiune cu manganin.
Traductoarele de for pot fi mrci tensometrice, traductoare piezoelectrice (bazate pe efectul
piezoelectric al cristalului de cuartz aplicarea unei fore genereaz o tensiune electric proporional cu
aceasta).
Msurarea deformaiei se face cu traductoare rezistive.
Msurarea deplasrii se face cu traductoare rezistive, capacitive sau inductive.
Msurarea nivelului se face cu traductoare rezistive, capacitive, etc.
3.3.3 Condiionarea semnalelor
Aa cum s-a artat anterior traductorul este considerat ca surs de semnal care este trecut printr-o interfa de
condiionare a semnalelor, amplasat ntre traductor i sistemul de achiziie date i control. Deoarece
condiionarea semnalelor are efect asupra calitii semnalului de intrare, performanele sistemului pot fi n mare
msur influenate de tipul condiionrii utilizate.
Condiionarea semnalelor include:
conversii curent tensiune;
scalri;
filtrri;
izolri;
amplificri.
Fizic, modulele de condiionare pot fi instalate n diverse locuri, inclusiv lng sursa de semnal, pe panouri
speciale de borne sau pe modulul de achiziie de date.
Cea mai uzual i convenabil este instalarea n panou de borne. Pentru diverse aplicaii sunt necesare fie
condiionri active, fie condiionri pasive ale semnalelor. Toate panourile de borne se conecteaz la proces prin
intermediul unor reglete de semnal. Panourile pasive conin scheme comune cu rezistene, inductane,
condensatoare, diode. Cu acestea se pot configura divizoare de tensiune, filtre, protecii la supratensiune. Exist
de asemenea, elemente active pentru filtrare, amplificri difereniale programabile, compensri, izolri, etc.
Pentru cuplarea panourilor de borne la SADC se utilizeaz cabluri ecranate, torsadate sau cabluri panglic.
Sunt prezentate n continuare tipurile de condiionri cel mai des ntlnite.

3.3.3.1 Circuit tampon de intrare
3-42
Caracteristicile de intrare (curent bias, impedan, tensiunea de offset, lrgimea de band etc.) SADC implic
anumite limitri referitoare la plaja semnalelor care pot fi msurate cu acuratee. Unele traductoare (exemplu: de
pH, piezoelectrice etc.) au o impedan de ieire foarte mare. Conectarea acestora direct la SADC (care n mod
normal are o impedan de intrare moderat) poate s duc la erori de msurare. La aceste tipuri de semnale se
intercaleaz ntre traductor i SADC un amplificator operaional cu impedan de intrare mare, cu rol de circuit
tampon ntre semnal i dispozitivul de msurare.
3.3.3.2 Conversia curent tensiune
Semnalele de ieire ale senzorilor sunt adesea n curent de 4 20 mA. nainte de a intra n SADC acestea se
convertesc n tensiune printr-un rezistor.



Se utilizeaz R=250 sau 500 ohmi pentru a se face conversia n 1 5 V sau 2 10 V. Important este nu valoarea
rezistenei ci stabilitatea acesteia (cu temperatura n special).
Tehnica ce utilizeaz numai rezistene pentru a face conversia curent tensiune are limitri. Dac de exemplu se
dorete utilizarea unui curent de 1uA, este necesar o rezisten de aproximativ 5 Mohmi. n acest caz apar ns
V
out
-
+
+
OPA 104
R
1
*
* R
1
pn la 10
9
ohmi

Fig. 3.3.3.1-1 Circuit tampon de intrare
+
V
out
250 ohmi

T
in
Fig. 3.3.3.2-1 Conversia curent-tensiune (4-20mA)
Vout=-Iin*R1

-
+
+
OPA 111
R
1

Fig. 3.3.3.2-2 Conversie curent-tensiune pentru cureni foarte mici
Iin ->
3-43
erori foarte mari datorate zgomotului i ncrcrii sistemului de msurare. Etajele de intrare n SADC conin
dispozitive electronice care creeaz cureni mici dar finii (cureni de polarizare = bias). Aceti cureni sunt
absorbii de sursa de semnal. De asemenea, ei sunt debitai prin rezistena de conversie curent tensiune
afectnd semnalul ce vine din proces. Acestea sunt motivele pentru care pentru msurare nu se mai folosete o
singur rezisten, ci o schem inversoare cu AO.
Cu astfel de scheme pot fi msurai cureni ncepnd de la 10 pA.
3.3.3.3 Scalarea semnalelor analogice
n mod obinuit intrrile CAN sunt la 0 10 V; 0-5V;+/-5 V; +/-10 V. Dac semnalul de intrare este mai mic
dect 1 V, rezoluia i precizia sunt afectate. n aceste situaii, este bine s se amplifice semnalul naintea CAN.
n funcie de caracterul semnalului, n mod uzual se utilizeaz amplificri (gain) de 2, 4, 8, 16, 100 i 1000.
Multe dintre circuitele ce nglobeaz CAN au amplificatoare ncorporate.
n alte situaii este necesar s se msoare semnale de intrare de 12, 48 sau 100 V. Pentru a aduce aceste semnale
n domeniul de intrare al SADC se utilizeaz divizoare de tensiune.
n cazul divizoarelor este important modul de selectare a rezistoarelor R1 i R2. Alegerea lui R1 mare poate
introduce limitri de limi de band a semnalului datorit filtrului trece jos produs de R1 i de o capacitate
parazit Cp n paralel cu R2. Limea benzii poate fi extins introducnd un condensator Cs n paralel cu R1.
Valoarea sa trebuie selectat astfel nct R1Cs = R2Cp. n plus ecuaia presupune ca impedana sursei de semnal
s fie mic n comparaie cu R1 + R2, iar R1 i R2 ct mai mari posibil.
3.3.3.4 Filtrarea
Are ca scop eliminarea din mrimea msurat a zgomotelor care o nsoesc i care sunt periodice sau
neperiodice.
Zgomotele provin de obicei din:
inducia semnalelor de frecven industrial (50Hz, 60Hz, 300Hz) ca urmare a unei vecinti ntre
cablul de for i cel de msur;
inducia unor impulsuri provenite din regimuri tranzitorii pe cabluri de for.
O metod de filtrare este medierea datelor achiziionate, care crete raportul dintre semnal i zgomot.
Datorit vitezei i facilitilor oferite de SADC moderne, medierea este uor de implementat. Medierea este
cea mai eficient pentru reducerea zgomotelor aleatoare periodice (50Hz, 60Hz, etc).
Toate tehnicile de filtrare, fie c sunt software, fie c sunt hardware, sunt create s filtreze unele tipuri de
zgomote specifice.
Firmele de specialitate ofer module de condiionare a semnalelor prevzute cu diverse tipuri de filtre. Cele
mai comune tipuri sunt reprezentate prin filtre pasive cu 1 i 2 poli , ca n figura 3.3.3.4-1:
R
1

+
V
out
R
2

V
out
= V
in
* R
2
/ (R
1
+ R
2
) V
in
Fig. 3.3.3.3-1 Divizor de tensiune pentru a reduce semnalale de intrare sub 10V
3-44



Figura B este un exemplu de circuit bipolar de filtrare pentru mod comun care atenueaz zgomote de 60-80
Hz.
Figura 3.3.3.4-2 sugereaz un filtru trece jos diferenial cu 2 poli.
* reprezint rezistenele de retur pentru curenii de polarizare (bias) ai amplificatoarelor din SADC.
Rezistenele i condensatoarele pentru filtrul prezentat trebuie alese cu atenie, orice neadaptare a atenurii
putnd aduce la degradarea rejeciei de mod comun a sistemului.
SADC utilizeaz tehnici de eantionare a datelor, ceea ce nseamn c, dei semnalele de intrare sunt
continue, citirea lor de ctre SADC nu este continu (exist gap-uri ntre eantioane). La refacerea
semnalelor se fac unele presupuneri asupra datelor care exist ntre punctele cunoscute. De obicei se
folosete interpolarea liniar, care traseaz linii drepte ntre punctele date (cunoscute). Dac interpolarea
liniar nu este suficient de precis, se recurge n mod logic la creterea ratei de eantionare care are ca efect
micorarea gap-urilor dintre eantioane prin adugarea de date citite. Nyquist a fundamentat foarte solid din
punct de vedere teoretic aspectele legate de eantionarea datelor. n termeni simpli, criteriul lui Nyquist
referitor la eantionare se formuleaz astfel:
C
R

C
R

*
C
R

C
R

*
Semnal
intrare
Spre SADC
Fig. 3.3.3.4-2 Filtru trece jos cu 2 poli diferenial
+
C
1

R
1
+
C
1
2,7F
R
1
C
2

2,7F
R
2
A B

Fig. 3.3.3.4-1 Filtru trece jos cu 1 (A) sau 2 (B) poli
10K
10K
3-45
Dac un semnal continuu cu banda limitat de frecven nu conine componente de frecven mai mare
dect o frecven maxim specificat, semnalul original poate fi reconstituit fr distorsiuni din eantionare
dac este eantionat la o rat mai mare de cel puin 2 ori frecvena maxim specificat.
Dac rata de eantionare este mai mic dect cea specificat n teorema lui Nyquist, pot fi trase concluzii
eronate despre semnalul de intrare.
Exemplu:
n figura 3.3.3.4-3, la A se prezint un semnal variabil n timp; dac acesta este eantionat cu o frecven
mai mic dect este necesar (momentele eantionrii sunt sugerate cu linie ntrerupt) se obine semnalul de
la B care are o variaie n timp mult mai lent dect a semnalului iniial supus eantionrii, deci reprezint
un semnal de frecven diferit fa de cea iniial. Acest al doilea semnal reprezint un aa-zis semnal
alias al semnalului iniial. n acest fel se obine prin refacere o informaie fals.
Utilizarea unei rate de eantionare care nu ine cont de frecvena cea mai mare care are semnificaie n
semnalul de intrare denatureaz datele de intrare. Dac semnalul de intrare conine zgomot de frecvene mai
mari dect ale semnalului, eantionarea sa cu o frecven determinat de frecvena sa maxim (i nu a
zgomotului), duce la crearea unui alias al zgomotului care nu mai poate fi eliminat printr-o filtrare
ulterioar.
De exemplu, eantionarea la o secund a unui semnal peste care se moduleaz zgomotul de 50 Hz face
imposibil nlturarea zgomotului - pentru nlturarea acestui zgomot prin filtrare ulterioar, eantionarea ar
trebui fcut la o frecven de cel puin 100 HZ (eantionare la max. 10 ms).
Soluia pentru nlturarea acestui fenomen este eantionarea la o rat corespunztoare. Dac nu se cunosc
componentele de frecven care pot cauza violarea criteriului lui Nyquist, trebuie amplasate filtre de intrare
anti-aliasing pentru a limita frecvenele nalte datorate zgomotelor. La alegerea filtrelor se va ine cont ca
acestea s nu atenueze semnalul util sau, n alte cazuri, s nu fac filtrare parial (s lase anumite zgomote
Fig. 3.3.3.4-3 Alias datorat unei rate mici de eantionare
A
B
3-46
s treac). Exist publicaii de specialitate care fundamenteaz matematic diverse tipuri de filtrri i prezint
algoritmii de calcul.
n aplicaii pentru controlul proceselor, filtrarea zgomotelor provenite de la frecvenele industriale
(inducerea unor semnale de 50Hz de exemplu) n timp real se poate face utiliznd filtrare soft prin algoritm
de mediere de tip fereastr glisant; numrul de eantioane din fereastra pe care se face medierea
depinde de frecvena semnalului de zgomot ce trebuie filtrat (vezi criteriul lui Nyquist) i trebuie s conin
eantioane aferente cel puin unei perioade. Algoritmul gestioneaz un buffer circular cu valorile ce intr n
medie, la fiecare eantionare eliminnd cea mai veche valoare i introducnd n buffer pe cea mai nou.
Fcnd media eantioanelor din buffer, se obine valoarea mrimii de intrare neafectat de zgomotul
industrial.
Dac se dorete o refacere ct mai fidel a semnalului util de la intrare, este bine ca eantionarea s fie la o
frecven de 5 10 ori mai mare dect cea mai mare component de frecven din semnalul achiziionat.
3.3.3.5 Izolare analogic
Este utilizat n unele aplicaii pentru a proteja oamenii i echipamentele de contactele cu tensiunea nalt.
Alte aplicaii necesit ntreruperea buclelor de mas sau ndeprtarea semnalelor mari de mod comun.
Exemplu:
Dac un termocuplu este conectat pe rotorul unui motor, el poate fi la 240V fa de mas. Totui tensiunea
de ieire a TC poate fi numai de 30 mV. Cei 30 mV reprezint un semnal diferenial, deoarece se aplic la
intrrile + i - ale canalului de achiziie. Pe de alt parte, cei 240 V apar nu ca un semnal diferenial ci ca un
semnal comun la ambele intrri + i ale SADC. Tensiunea de mod comun este referit la masa sursei de
alimentare a sistemului. Canalele standard de intrri analogice pot accepta numai pn la 10 V semnal de
mod comun pentru a rmne liniare. De asemenea, tensiuni mai mari de 30 V pot distruge componentele
etajelor de intrare. n exemplul dat cei 240 V reprezint un real pericol. De aceea, trebuie s fie utilizat un
izolator analogic care s separe semnalul diferenial util de tensiunea de mod comun nedorit.
Pentru izolare se utilizeaz 3 tipuri de module de condiionare: cuplare capacitiv, cuplare prin
transformator i cuplare optic.
Cuplare capacitiv se utilizeaz izolatorul denumit capacitate flotanta (flying capacitor"). Acesta
utilizeaz un releu mecanic, comandat de SADC, care pune un condensator succesiv n paralel cu
procesul, respectiv cu intrarea SADC. Are pre sczut dar este mai puin fiabil datorit releului mecanic
utilizat.
Cuplare prin transformator este cea mai performant. Asigur precizii ridicate i tensiuni mari de
strpungere. Are pre ridicat i se utilizeaz acolo unde se justific precizie mare. n aplicaiile medicale
aceast cuplare este cea mai folosit, deoarece asigur cea mai bun protecie.
Cuplare optic este cea mai des folosit n sistemele industriale de achiziie. Izolatorii optici ofer
performane ridicate la pre sczut. Firmele de specialitate ofer o gam larg de module pentru izolare,
K
C Spre SADC
Fig. 3.3.3.5-1 Cuplare capacitiv condensator flotant
3-47
fie individual pentru fiecare canal, fie prin panouri de borne utilizate pentru mai multe canale
simultan.
3.3.3.6 Protecie la supratensiune
Cnd un sistem poate fi obiectul unei intrri de nalt tensiune accidental, este necesar protejarea
echipamentului pentru a nu fi distrus. Intrrile de nalt tensiune pot fi produse de fulgere, cmpuri
magnetice, electricitate static, contact electric cu linii de tensiune nalt, etc.
Firmele care produc module de condiionare ofer reele de protecie dintre care n figura 3.3.3.6-1 se dau
schemele a dou tipuri.


MOV = metal oxid varistor (n loc de MOV se pot utiliza 2 diode Zenner)
Circuitul A poate tolera intrri continue pn la 45V. Cnd suprasarcina dispare, calea de semnal revine
automat la normal.
Circuitul B este utilizat pentru supratensiuni continue, pn la 280V. Dac supratensiunea se menine, se
arde sigurana pentru a proteja circuitul de protecie.
Rezistena (sau sigurana la B) i MOV formeaz un limitator de tensiune pentru a asigura ca supratensiunea
s nu ajung la intrrile SADC. MOV reacioneaz foarte rapid pentru a absorbi impulsurile rapide de
energie nalt. Condensatoarele ajut la suprimarea tranziiilor de nalt frecven. Valorile condensatoarelor
vor fi ct mai mari, deoarece zgomotele pot depi 1kV. De asemenea condensatoarele se vor poziiona ct
mai aproape posibil de punctul de intrare a semnalului n sistem.
3.3.3.7 Scalarea intrrilor/ieirilor numerice
15V MOV
1K, 1W
A
15V MOV
B

A
Fig. 3.3.3.6-1 Reele reprezentative de protecie a intrrii
3-48
Pentru semnale numerice se poate utiliza circuitul urmtor pentru a produce semnale TTL.
Condensatorul de 10pF este inclus pentru a ajuta la meninerea componentelor de nalt frecven prezente
n semnalul de intrare.
Sistemele de achiziie necesit tranziia rapid a frontului semnalului de intrare pentru a asigura o operaie
sigur (de obicei tranziii 10 microsecunde). Dac o anumit intrare nu este suficient de rapid (tranziia
sa), se utilizeaz circuite cu triggere Schmidt n etajul dinaintea SADC.
Cnd ieirile numerice comand sarcini mai mari dect TTL, acestea sunt convertite prin tranzistoare de putere
i triacuri pentru a comanda cureni sau tensiuni nalte (alternative sau continui).
3.3.3.8 Izolarea numeric
Pentru intrrile / ieirile numerice este necesar izolarea ntre SADC i proces. Uzual, modulele pentru
mrimi numerice se separ de semnalele din cmp, prin izolare optic (cu optocuploare).
Firmele de specialitate ofer panouri de condiionare pentru un numr de intrri i / sau ieiri, care asigur att
izolarea ct i conversia semnalelor n nivel TTL.
3.3.3.9 Detectarea contactelor
Cnd se face interfaa cu relee sau contactoare care au contacte mecanice, trebuie inut cont de faptul c
datorit oxidrii contactelor sau altor imperfeciuni, pot apare niveluri TTL parazite care pot fi interpretate
eronat. Pentru reducerea oxidrii contactelor este necesar trecerea unui curent prin contactele de releu. De
asemenea, pentru obinerea nivelurilor TTL la intrarea SADC atunci cnd se nchid/deschid contactele,
trebuie ca prin circuit s fie injectat un curent (numit i curent pull-up). Schema din fig. 3.3.3-11 poate fi
utilizat att pentru curentul pull-up ct i pentru reducerea efectelor oxidrii.
Pentru un curent de 20 mA, R
1
= 250 ohmi iar R
2
C
1
este un filtru pentru eliminarea oscilaiilor eronate.
4,7 V
Zenner
10K
TTL
C
10 pF
V
in
=(10-50)V
Fig. 3.3.3.7-1 Circuit de conversie semnale numerice mari n TTL
R2
+5V
Spre SADC
contacte
externe
C1
R1
Fig. 3.3.3-11 Detectarea contactelor
3-49
Cnd contactul este deschis, tensiunea la intrarea SADC este 5V iar cnd contactul este nchis tensiunea este
0V.
3.3.3.10 Comanda releelor
Se face un circuit de forma prezentat n figura 3.3.3.10-1:

D1 protejeaz circuitul intern fa de curenii inductivi de revenire de la releu, care produc vrfuri de nalt
tensiune. Dioda se alege astfel nct s rspund rapid.
3.3.4 Subsistemele de intrare/ieire ale SADC

Dup cum am vzut, majoritatea semnalelor din lumea real nu pot fi citite direct de calculator. Conversia
semnalelor ntr-un format recunoscut de acesta se realizeaz de ctre SADC prin intermediul unei varieti de
dispozitive ce include convertoare analog numerice (CAN), multiplexoare, circuite de eantionare-memorare
(Sample and Hold - S/H), amplificatoare, circuite de numrare i temporizare precum i alte funcii specializate.
Caracteristica cea mai important a SADC este aceea c integreaz funcii diferite principal ntr-un sistem
unitar. Un SADC poate s conin unul sau mai multe tipuri de subsisteme:
intrri analogice;
ieiri analogice;
intrri numerice;
ieiri numerice;
intrri de numrare;
ieiri de numrare.
3.3.4.1 Subsistemul de intrri analogice
Funcia de baz a unui astfel de subsistem este conversia analog-numeric a semnalelor. Aceasta este realizat
de CAN care transform informaiile analogice n cod binar. Pe lng CAN mai sunt necesare:
circuite de amplificare;
circuite de eantionare-memorare (S/H);
multiplexoare analogice (MUX-AN);
+5V
De la ieirea TTL a
SADC
Releu
exterior
D1
Fig. 3.3.3.10-1 Circuit de comand a unui releu
3-50
circuite de condiionare a semnalelor .
3.3.4.1.1 Convertoare analog numerice (CAN)
Cele mai utilizate sunt:
cu aproximaii succesive (SAR);
cu integrare (DUAL SLOPE);
paralele (FLASH);
conversie tensiune-frecven (V/F counting).
Convertoarele paralele sunt cele mai rapide, dar i cele mai scumpe, iar convertoarele cu integrare sunt cele
mai lente i mai ieftine.
Rezoluia CAN se exprim ca 1/2
N
, unde N este numrul de bii ai codului generat de CAN. Uneori, se
indic mai simplu pentru a exprima rezoluia, numrul de bii ai convertorului. Se poate spune astfel c
rezoluia este de 8, 10, 12, 14, 16 bii. De asemenea, rezoluia se mai poate exprima i n mV ci milivolti
din domeniul de intrare se asociaz la cea mai mic valoare dat de CAN (valoarea LSB). Astfel, pentru un
convertor de 12 bii i un domeniu de intrare de 0-10V rezoluia este de 10/2
12
= 2,44 mV acesta fiind cel
mai mic nivel detectabil de ctre un CAN pe 12 bii.
Precizia este un parametru important pentru msurarea intrrilor analogice. Acesta definete eroarea total
la o anumit citire. De exemplu, la un SADC pentru care se specific precizia 0,05% pe domeniu de 10 V va
genera o eroare n cazul cel mai defavorabil de 5 mV (10V*0.0005V). Trebuie s ne asigurm c precizia
dat se refer la domeniul de lucru care ne intereseaz. De asemenea, n prezentarea sistemelor de achiziie
precizia se poate referi la ntregul lan de msur (traductor + condiionare semnale + multiplexor + S/H +
CAN) sau la componente de pe lan. Prin urmare, n realizarea aplicaiilor trebuie avut n vedere i la ce se
refer precizia specificat de fabricant.
Cu ct rezoluia convertoarelor este mai bun, cu att ele sunt mai scumpe i mai lente. Pentru o aplicaie
dat trebuie definite ct mai precis cerinele i criteriile de performan nainte de a decide asupra rezoluiei
necesar pentru convertor, deoarece aceasta are influen asupra costului i vitezei de conversie.
Punctul de pornire pentru selectarea convertorului este dinamica traductoarelor utilizate. Dinamica
traductorului se refer la relaia dintre nivelul maxim al semnalului de intrare la capt de scal i cel mai
mic nivel detectabil de ctre traductor.
Nu exist neaprat o corelare ntre dinamica i precizia traductorului. Exemplu: pentru un traductor cu
precizie 0,5% dinamica poate fi mai mare de 80 dB. Aceast dinamic cere n schimb un sistem cu o
rezoluie de cel puin 12 bii.
Pentru corelarea cu dinamica maxim, unele aplicaii cer la CAN rezoluii mari, de 14 sau 16 bii. n astfel
de situaii, prin amplificarea semnalelor de nivel sczut poate fi mrit rezoluia. Exemplu: la o amplificare
de 10 sau 100 de ori, rezoluia crete cu mai mult de 3 respectiv 6 bii. Aceasta nseamn c dac se
utilizeaz un convertor pe 12 bii, utilizarea amplificrii (corelat cu o dinamic corespunztoare a
traductorului) echivaleaz cu o rezoluie de 15 respectiv 18 bii.
Pentru un convertor pe 12 bii o parte (rezoluia) reprezint 1/4096 sau aproximativ 0,025% din ntregul
domeniu de lucru. La un convertor pe 16 bii o parte reprezint 1/65536 sau aproximativ 0,0015% din
domeniu. Prin urmare, rezoluia ofer informaia necesar pentru a stabili care sunt dinamica i precizia utile
pentru un sistem dat. Pe de alt parte, mrind rezoluia nu putem beneficia de acest avantaj dect dac i
celelalte componente din sistem (traductorul, amplificatorul, circuitele de eantionare-memorie, condiionri
semnale etc.) nu acioneaz ca factori limitatori n sistem. Dac variaia unui semnal de intrare este mai
mic dect rezoluia sistemului, aceast variaie trece neobservat. De exemplu, la folosirea unui CAN pe 12
3-51
bii fr nici o amplificare prealabil, orice variaie de semnal care nu depete 2,44 mV n domeniul de
lucru 010 V nu va putea fi detectat. Dac semnalul este amplificat, de exemplu, de 1000 de ori nainte de
conversie, rezoluia, n absena zgomotului, poate fi crescut la 2,44 V.
La viteza mai mare de 100 eantioane/sec, cel mai indicat este convertorul cu aproximri succesive. Cu
acesta pot fi atinse viteze de achiziie de peste 100.000 eantioane/sec. La acest convertor, semnalul de
intrare se compar cu semnale generate prin ghiciri ponderate liniare, pn cnd cele 2 semnale devin
identice. Semnalul de intrare trebuie s rmn neschimbat n timpul comparrilor, n acest scop folosindu-
se circuite de eantioane/memorare (Sample and Hold - S/H).
Dac nu este nevoie de viteze mari de eantionare, se pot utiliza convertoare cu integrare, ce pot oferi
rezoluii de 12, 14, 16 bii la o vitez maxim 3-50 eantioane/sec. Acest convertor mediaz pe timpul
conversiei, filtrnd n acest fel zgomotul de intrare. De asemenea, liniaritatea i precizia sa sunt mai bune
dect la celelalte tipuri de convertoare.
3.3.4.1.2 Amplificarea
Ca s funcioneze optim, un CAN necesit la intrare un semnal cu amplitudine mare. Pentru a crete
amplitudinea semnalelor mici se utilizeaz amplificatoarele. Acestea trebuie s aib mai multe trepte de
ctig (GAIN) selectabile prin soft. Trepte uzuale sunt 2, 4, 8, 16, 100, 1000. Dispozitivul de selectare a
treptelor de ctig este cunoscut sub numele de amplificator cu ctig programabil (PROGRAMABLE
GAIN AMPLIFIER PGA). De multe ori pentru a reduce costul se utilizeaz PGA cu ctig reglabil
manual (selecia se face cu strapuri sau selectnd anumite rezistene). De reinut c amplificatorul nu este
necesar n orice aplicaie.
3.3.4.1.3 Multiplexarea analogic
Multiplexorul analogic (MUX-AN) este o structur de comutatoare electronice ce permite ca un numr mare
de canale analogice de intrare s poat fi prelucrate folosind un singur amplificator, un singur circuit de
eantionare memorare i un singur CAN.
Schema bloc a unui subsistem cu multiplexare analogic este prezentat n figura 3.3.4.1-1.
3-52
Prin soft se poate controla orice canal pentru a fi achiziionat la un anumit moment de timp. Aceast metod
reduce considerabil costul fa de utilizarea amplificatorului i CAN separat pe fiecare canal. Deoarece
amplificatorul i convertorul sunt folosite n comun, viteza de achiziie se reduce. Aproximativ, viteza de
achiziie se divizeaz la numrul de canale gestionate. Pentru astfel de sisteme, randamentul eantionrii se
definete ca produsul dintre viteza de achiziie pe un canal i numrul de canale.
3.3.4.1.4 Circuitele de eantionare i memorare (S/H)
CAN bazate pe aproximri succesive necesit ca semnalul de intrare s nu se modifice pe perioada ciclului
de conversie. Funcia circuitului S/H este de a eantiona i memora valoarea prezent la intrare nainte de
nceperea fiecrei conversii.
Nivelul eantionat i memorat este meninut constant chiar dac semnalul de la intrare se modific, pn
cnd conversia analog - numeric se termin.
Memorarea se face de regul cu un circuit capacitiv care este comutat electronic ntre circuitul de intrare i
amplificator.
3.3.4.1.5 Multiplexarea n timp
Canalele de intrri analogice folosesc n comun amplificatorul, circuitele S/H i CAN. Utilizatorul
selecteaz rata de eantionare dorit n funcie de aplicaia dat. Dac fiecare canal trebuie citit de r ori pe
secund, atunci MUX AN trebuie s fie comandat de n
*
r ori pe secund (unde n este numrul canalelor
citite).
MUX AN, circuitele S/H, CAN i amplificatorul trebuie s fie att de rapide nct s se execute un ciclu de
conversie ntr-un timp mai mic dect 1/(n
*
r) secunde.
3.3.4.1.6 Timpul de conversie
Timpul de conversie definete viteza CAN, care ns reprezint numai o parte din timpul total necesar pentru
a msura un canal dat. Ideal, toate canalele de intrare ar trebui citite n acelai moment de timp, adic la
fiecare 1/r secunde. n realitate, multiplexarea n timp genereaz o asimetrie (jitter), care se datoreaz
diferenei de timp ntre citirile canalelor multiplexate.


MUX AN
1
2
n
Condiionare semnale
Amplificator
S/H
CAN
Cod ieire (numeric)
Convertor analog numeric
Eantionare - memorare
Fig. 3.3.4.1-1 Sistem complet de intrri analogice
3-53
Dac MUX, S/H i CAN sunt suficient de rapide, putem avea impresia c citirile se fac simultan. Unele
aplicaii ns sunt foarte sensibile la asimetria fa de timp. De exemplu, msurarea puterii electrice
instantanee (P = U
*
I
*
co) sau poziiile relative ale componentelor mecanice ntr-o instalaie robot. Chiar
dac folosim cele mai rapide CAN exist multe aplicaii ce nu pot tolera diferenele de timp dintre citiri. De
exemplu, dac se eantioneaz 4 intrri analogice cu un randament de 89.000 eantioane pe secund, timpul
mort ntre 2 conversii ar fi de 11,25 sec.. Este nevoie deci de 45 sec pentru a citi cele 4 canale. La o
frecven a semnalelor de intrare de 10 kHz (o perioad dureaz 100usec), va exista o diferen de faz de
121.5 ntre primul i al patrulea canal ( 33.75us / 100us * 360).
n aplicaii critice, se utilizeaz tehnica circuitelor de eantionare-memorare simultane (figura 3.3.4.1-2) ce
poate reduce asimetria de timp de 100 pn la 1000 ori.

Pentru exemplul dat anterior, diferena de faz ntre primul i al patrulea canal dac se utilizeaz aceast
tehnic, ar fi mai mic de 0,04 (dependent de caracteristicile S/H).
3.3.4.1.7 Conectarea canalelor analogice la multiplexor
Canalele analogice pot fi configurate ca intrri asimetrice (single-ended) sau difereniale.
ntr-o configuraie single-ended, canalele se raporteaz toate la o singur mas comun. Numai firul cald
al semnalului este conectat prin intermediul MUX AN la amplificator. Returul este comun pentru toate
semnalele i se face prin intermediul cablrilor de mpmntare. Astfel, att sursa de semnal ct i intrrile
n amplificator sunt referite la o mas comun. Acest mod de configurare se poate utiliza doar n cazul n
care cderea de tensiune pe traseul de mas este mic. Problemele apar cnd aceast cdere de tensiune este
mare. Aceasta genereaz bucle de mas (cureni prin conductorul de mas), ceea ce poate genera tensiuni
eronate la intrrile CAN. Avantajul configurrii single-ended este preul sczut pe canal, att ca numr de
cabluri utilizate ct i ca numr de intrri n MUX AN (practic pe fiecare intrare a MUX AN este conectat
un canal). Modul de conexiune single-ended este dat de figura 3.3.4.1-3:


MUX
AN
S/H
1
2
n
Amplificator CAN
S/H
S/H
Fig. 3.3.4.1-2 Sistem cu circuite S/H multiple
3-54

Eroarea de msur este DV=VG1-VG2, care reprezint cderea de potenial pe traseul de mas.
Intrrile difereniale folosesc dou fire pentru conectarea la amplificator (intrarea inversoare i intrarea
neinversoare).
Ambele fire se conecteaz i la sursa de semnal. Orice semnal indus prin bucla de mas va apare ca semnal
de mod comun i va fi rejectat de proprietile difereniale ale amplificatorului. n figura 3.3.4.1-4 este
prezentat conexiunea diferenial.


Es Es - DV
Rez.firului
Tur (fir cald)
Retur (fir rece)
VG2
Masa calculatorului
VG1
Masa sursei
Amplificator de instrumentaie
Fig. 3.3.4.1-3 Conexiune single-ended

Es Es
Rez.firului
VG2
Masa calculatorului
VG1
Masa sursei
Amplificator de instrumentaie
VCM
Fig. 3.3.4.1-4 Conexiunea diferenial
3-55
Tensiune de mod comun este VCM=VG1-VG2.
Eroarea cauzat de tensiunea de mod comun (VCM) este redus prin rejecia de mod comun a
amplificatorului de instrumentaie (tipic 80 dB sau mai mare). Conexiunile difereniale reduc considerabil
efectele buclelor de mas, dar utilizeaz fiecare dou intrri la MUX-AN i dou cabluri de legatur. Astfel,
un sistem de 16 canale de multiplexare va permite conectarea a 16 semnale pe conexiune single-ended,
respectiv numai 8 canale pe conexiune diferenial. n unele aplicaii se utilizeaz aa numitele conexiuni
pseudo-difereniale. Conexiunile se fac de fapt single-ended, dar una dintre intrri este conectat pentru a
msura tensiunea indus n bucla de mas, urmnd a se face apoi corecia soft. Aceast tehnic se poate
utiliza acolo unde toate semnalele de intrare folosesc ca referin acelai potenial de mas.
3.3.4.1.8 Scalarea intrrilor analogice
Traductoarele prezint la intrarea n sistemul de intrri analogice semnale direct proporionale cu evoluia
mrimii msurate (intrri analogice liniare) sau semnale care au o coresponden cu mrimea conform
specificaiilor fabricantului (intrri analogice neliniare). La acestea din urma fie se specific o relaie
matematic de coresponden, fie sunt date tabele de coresponden (n acest caz punctele neincluse n
tabele se calculeaz prin interpolare liniar).
Conversia din valori exprimate n coduri CAN (de exemplu pentru convertoare de 12 bii acestea variaz n
domeniul 0-4095) sau valori de tensiune/curent prezente la intrarea CAN n valori inginereti se face cu
formula
Y=aX+b
unde Y este mrimea exprimat n uniti inginereti, X valoarea CAN (sau curent/tensiune
corespunztoare) iar a i b coeficieni de scalare.
a se calculeaz ca raport ntre domeniul de variaie al mrimii fizice (n uniti inginereti) care corespunde
semnalului de intrare i domeniul de variaie al semmnalului de intrare n CAN.
b este limita minim a domeniului de msur exprimat n uniti de msur inginereti
Exemplu: dac 0 CAN corespunde la 100C iar 4095 corespunde la +100C, atunci:
a = (100-(-100))/(4095-0)) = 0.04884;
b = -100.
La valoarea CAN 1024 va corespunde 0.04884*1024-100= -50C.
3.3.4.2 Subsistemul de ieiri analogice
Ieirile analogice sunt utilizate pentru a genera tensiune de excitaie, forme de und, simulri de ieire de la alte
dispozitive, etc. Specificaiile ieirilor analogice sunt similare cu ale intrrilor analogice:
rezoluia se d n bii, mV sau %;
rata de actualizare a ieirii se d n eantioane/secund;
domeniul de variaie al semnalului de ieire este 5 V, 10 V, 0 10 V, 0-5V, respectiv 4 20 mA.
n cazul n care se comand sarcini cu impedan de valori mici (motoare electrice) se utilizeaz ca tampon
ntre CNA i proces amplificatoare de putere sau generatoare de curent de valori mari.
Dac acelai CAN este utilizat pentru a comanda mai multe ieiri analogice, se utilizeaz scheme cu
demultiplexoare analogice i elemente analogice de memorare.
3-56
Semnalul reconstituit la ieirea CNA este dependent de rata cu care eantioanele sunt trimise. Rata de
actualizare a CNA trebuie s in cont de semnalul care trebuie obinut la ieire.
3.3.4.3 Subsistemul de intrri-ieiri numerice
Intrrile numerice sunt utilizate pentru a detecta starea contactelor de releu, condiii de pornit/oprit, pentru a
citi ieirile numerice paralele de la diverse dispozitive etc.
Ieirile numerice sunt utilizate pentru a porni/opri diverse dispozitive, pentru a aprinde lmpi, leduri,
declanarea releelor sau contactoarelor, scrierea de date la dispozitive care au intrri numerice paralele etc.
De asemenea, interfeele numerice sunt utilizate pentru comunicaii de mare vitez ntre diverse dispozitive.
Cele mai multe sisteme de achiziie de date i control pot accepta i genera semnale TTL 0 5 V.
3.3.4.4 Subsistemul de intrri-ieiri de numrare
Exista o varietate mare de aplicaii ce utilizeaz numrarea. Exemple: contorizarea energiei electrice,
contorizarea energiei termice. Alte aplicaii cer ca anumite dispozitive s fie pornite sau oprite la momente de
timp foarte precise. Toate aceste funcii pot fi rezolvate cu circuite de tip numrtor / periodizator
(counter/timer) care sunt destinate pentru aplicaii de numrare, msurare de frecven, generarea de baze de
timp etc. Se pot utiliza circuite counter/timer precum I8253, I8254, AMD 9513 etc. Numrtoarele din aceste
circuite se caracterizeaz prin capacitatea maxim de numrare i prin frcvena maxim a tactului la intrare.
Majoritatea sistemelor folosesc numrtoare de 16 bii ce pot nregistra impulsuri la frecvena maxim de 8
MHz. Numrtoarele sunt independente unele fa de celelalte i pot fi utilizate n diverse moduri de lucru
(numrare elementar, numrare i divizare de frecven, generare de impulsuri).
Generatoarele de impulsuri permit programarea prin soft att a duratei (factor de umplere) ct i a frecvenei
impulsurilor. Un astfel de generator se folosete de exemplu pentru a genera o baz de timp impus pentru
achiziia datelor.
Pentru msurarea frecvenei folosind numrtoarele se pot utiliza dou metode ce depind de tipul aplicaiei:
Determinarea perioadei semnalului necunoscut comparndu-l cu perioada cunoscut a semnalului unui
generator de tact. Avantajul acestei metode este c permite o msurare a semnalelor de joas frecven
cu o rezoluie mare, frecvena msurat putnd fi sub 10Hz.
Numrarea perioadelor semnalului necunoscut ntr-un interval de timp fixat. Cu aceast tehnic se pot
msura semnale de frecvene mari, de ordinul MHz.


4-57
4 PROGRAMAREA DISPOZITIVELOR I/E N APLICAII
TIMP - REAL
4.1 Tehnici de comunicare cu dispozitivele de intrare/ieire
Gestiunea comunicrii aplicaiei timp-real cu dispozitivele I/E presupune utilizarea unor tehnici de programare
specifice, destinate s sincronizeze operaiile de I/E cu prelucrrile interne. Dac de exemplu datele sunt citite
nainte ca un dispozitiv s le poat furniza, atunci rezultatul este eronat. De asemenea, dac aplicaia nu preia
datele suficient de rapid, dispozitivul periferic poate s le nlocuiasc cu altele noi fr ca acest lucru s poat fi
depistat. Prin urmare, este necesar ca n fluxul prelucrrilor s existe secvene de program care s realizeze
sincronizarea operaiilor de I/E cu programele de aplicaie (detectarea dac un periferic este gata s
furnizeze/primeasc date i s realizeze transferul acestora).
Pentru sincronizarea comunicrii ntre aplicaie i echipamentele periferice exist 2 tehnici de baz:
aplicaia interogheaz periodic dispozitivele (polling) citind registrele de stare pentru a determina cnd
se poate comunica cu acesta;
dispozitivele periferice ntrerup procesorul pentru execuia unor proceduri specifice de comunicare.
4.1.1 Metoda Polling
Procesorul interogheaz dispozitivele periodic, citind unul sau mai multe registre de stare a cror valoare
permite procesorului s decid cnd dispozitivul este pregtit pentru comunicare. Dac dispozitivul solicit
serviciile procesorului, este apelat o rutin de tratare specific, n caz contrar procesorul fie continu
interogarea fie execut alte prelucrri.
Bucla de polling poate s fie implementat n dou moduri:
1. Ateptare n bucla de test pn cnd dispozitivul este gata i apoi transfer de date.
2. Dac dispozitivul nu este gata n momentul interogrii se continu cu alte prelucrri (inclusiv
interogarea altor dispozitive), iar cnd este gata se face transferul de date.
Dei polling este cea mai simpl metod de comunicare, prezinta unele dezavantaje:
Aplicaia trebuie s fie capabil s execute ntreaga bucl suficient de rapid pentru a putea ine cont de
toate cerinele perifericelor.
n funcie de ncrcarea sistemului, o bucl polling poate fi suficient de rapid n anumite condiii de
funcionare a dispozitivelor, iar n alte condiii poate fi extrem de lent (de exemplu dac se execut
multe sarcini ntr-un anumit pas al buclei sau dac sunt interogate mai multe dispozitive i toate cer
servicii simultan).
Cnd complexitatea programului crete ca urmare a introducerii de noi prelucrri, o bucl polling, care
la origine lucra bine, poate deveni prea lung.
Dac se cere executarea unor aciuni cu o baz de timp prestabilit, o bucl polling nu permite
ntotdeauna ca aceasta s fie controlat pentru a asigura precizia adecvat. Dac baza de timp se
calculeaz innd cont de durata de execuie a instruciunilor main, schimbarea tactului procesorului
implic modificarea programului.
4-58
4.1.2 Metoda ntreruperilor externe
Prin aceast metod dispozitivul atenioneaz aplicaia genernd ntreruperi externe. Tratarea prompt a
ntreruperilor de la toate dispozitivele este posibil att timp ct cererile ctre procesor sunt rezonabile, acesta
este capabil s lanseze rapid procedurile (rutinele) de tratare iar timpul de execuie al acestora este suficient de
mic. n particular, metoda ntreruperilor externe este de preferat n aplicaii care cer precizie pentru timpul de
achiziie de date i control, n timp ce procesorul execut i alte sarcini. De asemenea, este util dac mai multe
dispozitive solicit asincron servicii, la intervale de timp nepredictibile.
Pentru programarea ntreruperilor sunt necesare cunoaterea sistemului de ntreruperi al calculatorului i modul
de programare al acestuia. De asemenea, este necesar cunoaterea limbajului de asamblare al procesorului sau
cel puin cuvintele cheie i procedurile speciale pentru ntreruperi furnizate de anumite medii de dezvoltare
pentru limbaje evoluate. (Unele limbaje precum C/C++, PASCAL, ADA furnizeaz mijloace de tratare a
ntreruperilor cu proceduri care realizeaz citirea/scrierea prin adresarea absolut a locaiilor de memorie,
operaii de intrare/ieire la nivel fizic prin programarea porturilor sau locaiilor de memorie, secvene de intrare
i de ieire din procedurile de tratare a ntreruperilor). Succesiunea execuiei instruciunilor de ctre procesor
depinde de apariia evenimentelor care declaneaz proceduri de tratare a ntreruperilor. Greelile n tratarea
sistemului de ntreruperi al calculatorului provoac erori grave n execuia programului i afecteaz negativ
funcionarea sistemului, ceea ce face ca programele care utilizeaz ntreruperile s fie greu de depanat.
4.1.3 Metoda Intrri/iEiri buffer-ate
Aceast metod mbin avantajele polling-ului cu avantajele ntreruperilor. Este utilizat n aplicaii precum
bucle de control sau n aplicaii de supraveghere, unde datele sunt prelucrate i afiate n paralel cu achiziia lor.
Implementarea uzual a intrrilor bufferate const n:
o rutin de tratare a ntreruperilor care citete (achiziioneaz de la un dispozitiv extern) datele i le
memoreaz ntr-un buffer circular;
un task scris ca o bucl polling n care aplicaia ateapt datele iar atunci cnd sunt n memorie le
prelucreaz.
Contorul de inserare n buffer este gestionat de rutina de tratare a ntreruperilor i indic mereu urmtoarea
locaie n care trebuie depuse datele achiziionate. Contorul este incrementat circular. Contorul de extragere este
gestionat de task-ul care efectueaz n polling prelucrarea datelor din buffer. Permanent, task-ul principal
compar cele doua contoare: dac acestea sunt diferite, exist date noi ntre locaiile indicate de contorul de
extragere (care indic cea mai veche dat depus n buffer i netratat) i contorul de inserare 1. dac nu exist
date noi procedura polling fie ateapt date, fie efectueaz alte prelucrri. Trebuie s existe un echilibru ntre
rata de achiziie i viteza de prelucrare astfel nct buffer-ul s nu conin mai mult dect cteva intrri noi, iar
contorul de inserare s nu depeasc pe cel de extragere (circular).
Ieirile buffer-ate pot fi tratate similar. Task-ul principal depune datele ntr-un buffer circular (container), pe
msur ce ele sunt prelucrate, iar rutinele de tratare a ntreruperilor le extrag i le trimit ctre dispozitivul de
ieire. n acest caz, contorul de inserare este meninut de task-ul principal, iar cel de extragere de rutina de
tratare a ntreruperii. Dac datele trebuie transferate ctre dispozitivul extern la intervale de timp egale (de
exemplu pentru generarea unor forme de und), task-ul trebuie s fie capabil s depun date suficient de rapid
n buffer, pentru ca acesta s nu fie vid atunci cnd se execut rutina care transfer o nou dat ctre dispozitiv.
4.1.4 Alegerea strategiei optime
Trebuie subliniat c utilizarea ntreruperilor nu este ntotdeauna mai bun dect polling-ul, acesta oferind
avantaje semnificative n cazul anumitor aplicaii.
Cea mai bun strategie pentru achiziie foarte rapid de date (fr alte prelucrri n paralel) este utilizarea
polling-ului cu bucle scurte scrise n limbaj de asamblare, care testeaz continuu un registru de stare al
4-59
perifericului. Perifericul este servit imediat ce condiia este ndeplinit i testarea ncepe din nou. Spre
deosebire de bucla general polling descris anterior, aceast bucl nu execut i alte operaii. Dac precizia
timpului de transfer este considerat de mare importan i dac bucla polling scurt nu permite controlul
acestuia, atunci acesta trebuie controlat de o baz de timp extern. Aceasta se poate realiza prin impulsuri
generate de un numrtor programabil sau un generator de frecven (realizat de exemplu cu I8254, AMD
9513 etc. - vezi 4.3).
Pe de alt parte, ntreruperile sunt o bun modalitate de a controla achiziia de date atunci cnd rata de
achiziie este suficient de sczut i exist timp disponibil suficient ntre ntreruperi. De asemenea
ntreruperile sunt mai avantajoase dect polling-ul dac programul trebuie s comunice asincron cu mai
multe dispozitive sau dac programul trebuie s execute mai multe task-uri n paralel cu sarcinile de
achiziie de date i comenzi. Multe din aplicaiile n ntreruperi sunt cel mai bine tratate dac se utilizeaz
I/E buffer-ate. Utilizarea ntreruperilor permite procesorului s execute task-uri precum nregistrarea datelor
pe disc, citirea datelor de pe disc, execuia funciilor de control, afiarea pe display i / sau la imprimant,
dialogul cu operatorul etc. concurent cu achiziia de date i comenzi.
Alegerea strategiei optime este determinat prin urmare de cerinele aplicaiei i de resursele hard/soft
disponibile. nainte de a decide dac se utilizeaz ntreruperi sau polling, trebuie s se estimeze
suprancrcarea ntreruperilor (salvarea/restaurarea registrelor alterabile) care depinde printre altele i de
procesor i de frecvena tactului folosit de calculator. Pentru un PC limitele practice n utilizarea
ntreruperilor pentru transferuri de date cu dispozitive CAN / CNA poate varia ntre cteva eantioane/sec.
pn la mii de eantioane/sec., depinznd de strategia aleas i de celelalte task-uri pe care sistemul trebuie
s le execute n paralel.
4-60
4.2 Programarea utiliznd ntreruperile
Tehnica programrii n ntreruperi presupune n primul rnd cunoaterea sistemului de ntreruperi al
calculatorului utilizat. n cele ce urmeaz se reamintesc unele noiuni referitoare la sistemul de ntreruperi al PC
i se prezint detalii privind modul de programare al acestuia n modul real al procesoarelor x86.
4.2.1 Prezentarea sistemului de ntreruperi la PC
Pentru tratarea ntreruperilor, programul trebuie s conin rutine speciale de tratare a acestora (interrupt
handlers). Adresele acestor rutine se plaseaz n locaii speciale ale memoriei, astfel nct ele s poat fi
IF=1
Nivel demascat ?
Eveniment extern
DA
NU
NU

Procesorul trateaz alt IT ?
DA

Prioritatea este mai mare ?
NU
Start rutin de tratare
ntrerupere
DA
DA
Ateapt ntrerupere
NU
Fig. 4.2.1-1Automatul de lansare IT externe la I8259A
4-61
executate la apariia ntreruperilor.
La PC, gestiunea ntreruperilor externe mascabile (vezi i 4.2.3) este realizat de ctre dou dispozitive I8259A,
cascadate. Caracteristicile de baz ale I8259A sunt:
gestioneaz 8 niveluri de ntreruperi, fiecare avnd asociat un nivel de prioritate (0 cel mai prioritar, 7
cel mai puin prioritar);
ntreruperile cu prioritate mai mare pot ntrerupe execuia rutinelor de tratare a unor ntreruperi mai
puin prioritare;
fiecare nivel de ntrerupere poate s fie mascat sau demascat;
I8259 pot fi cascadate pentru a crete numrul de ntreruperi.
ntreruperile externe mascabile pot fi dezactivate prin program executnd instruciunea disable interrupt
(cli), care reseteaz Interrupt Flag (IF) din PSW. Dac procesorul primete ntreruperi cnd acestea sunt
dezactivate, nu va rspunde pn cnd prin program nu se execut instruciunea enable interrupt (sti),
care seteaz IF. Dac o ntrerupere exista memorat n momentul execuiei sti, procesorul efectueaz
operaiile pentru lansarea rutinei de tratare a ntreruperii.
I8259A identific automat sursa de ntrerupere extern i dac nivelul pe care este conectat aceasta nu este
inhibat (nu este mascat sau nu este n curs de execuie o rutin de tratare ntrerupere mai prioritar) activeaz
semnalul Interrupt Request de la procesor. Procesorul, dac IF este setat (ntreruperile sunt autorizate)
memoreaz starea ntreruperii, termin normal instruciunea n curs de execuie la apariia ntreruperii
(procesorul rspunde la ntreruperi ntre instruciuni) i activeaz semnalul de acceptare a ntreruperii (interrupt
acknowledge). La detectarea acestui semnal, controllerul comunic procesorului numrul vectorului de
ntrerupere asociat ntreruperii (pe 8 bii), pe baza cruia procesorul identific adresa primei instruciuni
executabile din rutina de tratare i o ncarc n CS:IP. Algoritmul clasic de lansare a unei rutine de tratare,
implementat n controllerele care gestioneaz ntreruperile externe la PC, este prezentat n figura 4.2.1-1.
Adresa primei instruciuni executabile a rutinei de tratare a ntreruperii este memorat n prealabil (prin
programul utilizator sau de ctre sistemul de operare) n tabela vectorilor de ntrerupere, n locaiile rezervate
pentru intrrile de ntrerupere ale controllerelor I8259A.
Tabela vectorilor de ntrerupere este zona de memorie dintre adresele fizice [0,3ffh] i conine 256 de vectori a 4
octei fiecare. n fiecare vector se memoreaz valorile care trebuie ncrcate n registrele IP i CS pentru a adresa
prima instruciune a rutinei de tratare. Primii 2 octei din vector sunt pentru IP (n ordinea low - high) iar
urmtorii 2 pentru CS (ordinea low - high).
Pentru lansarea n execuie a rutinei de tratare a ntreruperii, procesorul efectueaz urmtoarele operaiuni:
salveaz n stiv (vrful stivei este indicat de SS:SP) coninutul registrelor care indic adresa
instruciunii urmtoare (CS i IP) i cuvntul de stare al procesorului (PSW);
activeaz semnalul de acceptare a ntreruperii (interrupt acknowledge);
ncarc n registrele de adres (CS i IP) adresa rutinei de tratare a ntreruperii din tabela vectorilor de
ntrerupere.
La lansarea rutinei de tratare a ntreruperii, procesorul reseteaz IF, ceea ce nseamn c n timpul execuiei
acesteia ntreruperile mascabile sunt dezactivate. Totui, IF poate fi setat prin program n rutina de tratare.
Ultima instruciune din rutina de tratare a ntreruperii este interrupt return (iret), care este similar cu
instruciunea ret. Adresa instruciunii urmtoare i starea originale sunt restaurate (n CS:IP i respectiv
PSW) i procesorul continu cu execuia instruciunii urmtoare celei la care a fost ntrerupt.
4-62
Ori de cte ori controllerul genereaz o ntrerupere, ntreruperile de prioritate mai mic sunt automat
inhibate pn cnd prin program este achitat ntreruperea (vezi 4.2.3) a crei rutin este n curs de
execuie. Cererile de ntreruperi pe niveluri de prioritate mai mic sunt totui memorate de controller i se
declaneaz mecanismul de cerere de ntrerupere la procesor atunci cnd sunt ndeplinite condiiile de
prioritate. ntreruperile cu prioritate mai mare pot ntrerupe rutinele de tratare a ntreruperilor cu prioritate
mai mic dac acestea din urm au executat instruciunea sti (au activat sistemul de ntreruperi externe
mascabile). Dac acestea nu au executat instruciunea sti ele nu pot fi ntrerupte deoarece, dup cum s-a
artat, la lansare n execuie a rutinei de tratare se dezactiveaz automat sistemul de ntreruperi.
La PC (sub DOS), BIOS iniializeaz la startare controllerele I8259 i completeaz o parte dintre vectorii
din tabela de ntreruperi cu adresele rutinelor de tratare; este indicat ca programele de sistem i utilizator
s in cont de aceast iniializare. Sistemul de ntreruperi externe este programat astfel nct pentru
ntreruperile de la 0 la 7 (de la controllerul 1) s fie lansate n execuie rutinele ale cror adrese de start se
gsesc n vectorii de la 08h la 0fh, iar pentru ntreruperile de la 8 la 0fh (de la controllerul 2) s fie lansate
n execuie rutinele ale cror adrese de start se gsesc n vectorii de la 70h la 77h. Adresa fizic de memorie
pentru adresa memorat n vectorul de ntrerupere n este n*4. (Ex: pentru vectorul 8 adresa de memorie
este 20h).
O rutin de tratare a unei ntreruperi externe poate fi lansat (de obicei pentru testare sau simulare) i prin
program, cu instruciunea int n..
Exemple (vezi si 4.2.2):
int 9 lanseaz n execuie rutina de tratare a ntreruperii pentru tastatur;
int 8 lanseaz n execuie rutina de tratare a ntreruperii pentru ceasul de timp real;
int 0BH - lanseaz n execuie rutina de tratare a ntreruperii pentru COM2.
4.2.2 Plasarea I8259 n spaiul de I/E la PC
La PC, porturile de I/E de la 0 la OFFH sunt rezervate pentru a fi utilizate pe placa de baz a calculatorului.
Porturile de la 100h pn la 3FFH sunt utilizate de ctre dispozitivele conectate pe magistrala I/E a
calculatorului. Porturile cu adrese mai mari de 400h nu sunt disponibile pe placa de baz n sistem.
Asignarea uzual a porturilor la dispozitive este urmtoarea:
de la 0 la 0Fh - porturile pentru controller-ul DMA1, 4 canale I8237;
de la 20h la 21h - primul controller I8259A pentru ntreruperi, la care sunt asignate urmtoarele
ntreruperi externe mascabile:
pe canalul 0 - ntreruperea de la ceasul de timp real;
pe canalul 1 - ntreruperea de la tastatur;
pe canalul 2 - la AT cascadare ctre al doilea controller I8259;
pe canalul 3 - ntrerupere de la COM2;
pe canalul 4 - ntrerupere de la COM1;
pe canalul 5 - ntrerupere de la a doua imprimant LPT2 sau placa de reea;
pe canalul 6 - ntrerupere de la controller-ul floppy discului;
pe canalul 7 - ntrerupere de la prima imprimant LPT1.
de la 40h la 43h - porturile pentru dispozitivul numrtor/periodizator I8254; un registru de control i 3
numrtoare de 16 bii sunt disponibile pe acest dispozitiv:
Numrtorul 0 - ceasul de timp real;
4-63
Numrtorul 1 - este utilizat pentru remprosptarea memoriei;
Numrtorul 2 - este utilizat pentru difuzor.
de la 60h la 64h la AT - controller-ul pentru tastatur;
de la 70h la 71h - pentru accesul la CMOS i ceasul de timp real din CMOS;
de la 80h la 8Fh - regiunea de pagin DMA;
de la A0h la A1h - adresele pentru al 2-lea controller de ntreruperi I8259 la AT; la acest controller, sunt
asignate urmtoarele ntreruperi externe mascabile:
pe canalul 0 - ntreruperea de la ceasul de timp real din CMOS (utilizat de sistemul de
operare OS/2);
pe canalul 1 - rezervat, la AT preia funcia canalului 2 de la primul controller care este utilizat
pentru cascadare;
canalele 2,3,4 - disponibile pentru ntreruperi de la alte dispozitive dect cele sistem;
canalul 5 - rezervat pentru coprocesorul matematic;
canalul 6 - rezervat pentru controller-ul de hard disc;
canalul 7 - disponibil;
C0h-CFh - al doilea controller DMA;
F0h-F1h - coprocesor matematic;
170h-177h - al 2-lea hard disc;
1F0h-1F7h - primul hard disc;
200h-207h - games;
278h-27Fh - interfa paralela pentru LPT2;
2E8h-2EFh - porturi pentru COM4;
2F8h-2FFh - porturi pentru COM2;
370h-377h - al doilea controller al floppy discului;
378h-37Fh - porturi pentru LPT1;
3E8h-3EFh - porturi pentru COM3;
3F0h-3F7h - primul controller floppy;
3F8h-3FFh -porturi pentru COM1;
4.2.3 Detalii de programare utiliznd ntreruperile la PC cu SO DOS
Se reamintete faptul c la microprocesoarele din familia 80x86 ntreruperile pot fi interne sau externe.
ntreruperile interne sunt generate fie de instruciunile software (int n), fie de procesor n anumite situaii
(depire aritmetic, TF poziionat etc).
ntreruperile externe sunt generate de hardware i pot fi:
nemascabile (pe intrarea NMI la procesor), sau
mascabile (prin intermediul controller-elor I8259);
ntreruperile nemascabile ntrerup secvena curent de instruciuni indiferent de situaie.
4-64
ntreruperile mascabile ntrerup secvena curent de instruciuni numai dac IF=1, dac bitul asociat n
registrul masc al I8259 (vezi mai jos) este pus la 0 i dac nu este n curs de tratare o alt ntrerupere extern
mai prioritar.
n continuare sunt prezentate aspecte practice de utilizare a sistemului de ntreruperi externe la PC, dup ce
BIOS a executat procedura de iniializare.
n practic, se ntlnesc dou modaliti de utilizare a ntreruperilor:
1. apelarea procedurilor pe care BIOS-ul sau alte programe/drivere/TSR-uri le pun la dispoziie;
2. capturarea vectorului de ntrerupere i depunerea n tabela vectorilor de ntrerupere a adresei unei rutine
de tratare utilizator.
Lansarea n execuie a rutinelor de tratare, n ambele cazuri, se face n funcie de tipul ntreruperii:
prin program cu instruciunile int pentru ntreruperi software;
declanat de ctre semnale externe/interne cablate pe nivelurile ntreruperilor externe;
Rutinele de tratare asociate ntreruperilor externe pot fi apelate i cu instruciuni int, de obicei pentru testare i
depanare.
Apelul prin program cu instruciunea int presupune urmtorii pai:
1. salvarea registrelor procesorului (dac este cazul);
2. ncrcarea n registrele procesorului sau n anumite locaii de memorie a unor valori solicitate de rutina
de tratare a ntreruperii;
3. executarea instruciunii int (int n);
4. tratarea ieirilor (dac exist) din rutina de tratare a ntreruperii;
5. refacerea registrelor salvate la primul pas.
n funcie de specificul rutinei de tratare a ntreruperilor anumii pai pot fi omii (de exemplu pentru rutinele
care nu afecteaz registrele sau indicatorii de condiii nu sunt neaprat necesari paii privind salvarea i
restaurarea registrelor i indicatorilor). n cazul n care programul apeleaz propria rutin de tratare a ntreruperii
este necesar s fie tratate toate aspectele referitoare la salvarea i restaurarea registrelor i indicatorilor, pentru a
nu provoca efecte colaterale dezastruoase pentru funcionarea sistemului.
Pentru capturarea unui vector de ntrerupere, n program trebuie s apar urmtoarele secvene:
salvarea n memorie (de obicei n segmentul curent de date sau cod) a adreselor rutinelor de tratare
curente, care urmeaz a fi nlocuite cu rutine utilizator ;
depunerea n tabela vectorilor de ntreruperi a adresei rutinei de tratare utilizator;
Observaii:
1. Exist situaii n care rutina de tratare a ntreruperii utilizator, nainte sau dup efectuarea unor
prelucrri specifice aplicaiei, trebuie s apeleze i rutina iniial de tratare a ntreruperii (dac de
exemplu n BIOS este prevzut o astfel de rutin) vezi i exemplul de la 4.2.4.
2. La sfritul programului scris de utilizator trebuie ca adresele originale ale rutinelor de tratare utilizate
n program s fie refcute n tabela vectorilor de ntrerupere, n caz contrar aprnd efecte imprevizibile
n funcionarea sistemului.
Atunci cnd utilizeaz ntreruperile mascabile externe, programatorul trebuie s trateze n mod adecvat
urmtoarele:
activarea/dezactivarea sistemului de ntreruperi mascabile;
mascarea/demascarea nivelurilor de ntrerupere la controllerul I8259;
4-65
registrele procesorului trebuie salvate la nceputul execuiei rutinei de tratare i restaurate la sfritul
acesteia;
achitarea ntreruperii externe n curs de execuie;
comunicarea (sincronizarea) cu programul/programele utilizator pe care rutina l/le deservete.
Sistemul de ntreruperi mascabile se activeaz dup execuia instruciunii sti sau dup execuia unei
instruciuni popf n care indicatorul IF din cuvntul extras din stiva este 1 i se dezactiveaz cu instruciunea
cli sau dac se execut instruciunea popf n care indicatorului IF n cuvntul extras din stiv este 0.
Ct timp sistemul de ntreruperi este activat, pot avea acces la procesor numai ntreruperile care nu sunt mascate
n octetul de mti din controllerul I8259. La primul controller de ntreruperi registrul de mascare este la adresa
21h, iar la cel de-al 2-lea la adresa 0A1h. n aceste registre, pentru fiecare ntrerupere exist cte un bit de
mascare.
Registrul masc de la adresa 21h:
bit: 7 6 5 4 3 2 1 0
| | | |
IRQ7 IRQ2 IRQ1 IRQ0

Registrul masc de la adresa 0A1h :
bit: 7 6 5 4 3 2 1 0
| .. | | |
IRQF IRQA IRQ9 IRQ8
Dac bitul corespunztor IRQn este egal cu 0, nivelul de ntrerupere este demascat; dac este egal cu 1, nivelul
de ntrerupere este mascat i ntreruperea asociat nu este tratat de ctre controller.
Exemplu: Mascarea/demascarea unei ntreruperi pe nivelul 1 (pentru IRQ1 )
IRQ1-demascare:
in al,21h
mov oldmask1,al
and al,0FDh
out 21h,al

IRQ1-mascare:
in al,21h
mov oldmask1,al
or al,2
out 21h,al
Refacerea mtii iniiale se face cu secvena de instruciuni:
mov al,oldmask1
out 21h,al
Exemplu: Mascarea/demascarea unei ntreruperi pe nivelul 9 (pentru IRQ9 )
IRQ9-demascare:
in al,a1h
mov oldmask2,al
and al,0FDh
out a1h,al
IRQ9-mascare:
4-66
in al,a1h
mov oldmask2,al
or al,2
out a1h,al

Refacerea mtii iniiale se face cu secvena de instruciuni:
mov al,oldmask2
out a1h,al

Atunci cnd prin hardware se lanseaz n execuie o rutin de tratare a ntreruperii, se salveaz automat n stiv
(n aceast ordine): IP, CS si PSW ; structura PSW pentru modul de lucru real al procesorului este urmtoarea:
15 . 0
| |
x x x x O D I T S Z x A x P x C
unde: x nu conteaz iar O, D, I,T,S,Z, A, P, C sunt indicatorii; I este Interrupt Flag. Prin program, trebuie salvai
(cu instruciuni push) regitrii procesor care sunt utilizai n rutin - pentru siguran, este bine s fie salvai
toi.
La terminarea rutinei de tratare, se restaureaz toi regitrii salvai la nceput (cu instruciuni pop, n ordinea
invers salvrii) apoi se execut iret. Cnd se execut instruciunea iret, se refac automat PSW,CS,IP.
n timpul execuiei rutinei de tratare, dup efectuarea prelucrrilor specifice pentru nivelul de prioritate
al ntreruperii, trebuie fcut achitarea ntreruperii externe, cu urmtoarele secvene de instruciuni:
; pentru primul I8259:
mov al,20h
out 20h,al
; pentru la 2-lea I8259:
mov al,20h
out 0a0h,al

Dac ntreruperea nu este achitat, nu vor mai putea fi lansate ulterior rutinele de tratare cu prioritate mai mic
sau egal cu a ntreruperii neachitate.
Deoarece programul n curs de execuie nu cunoate cnd apar ntreruperile, este necesar ca rutina de tratare i
acesta s comunice/s se sincronizeze; de regul comunicarea/sincronizarea se realizeaz prin intermediul unor
zone comune de memorie (memorie partajat). Accesul la aceste zone trebuie fcut cu interblocare, pentru a
evita erorile.
Exemplu: un program pe 16 bii, modul real partajeaz cu o rutin de tratare a ntreruperii un ntreg long (pe 4
octei), a crui scriere/citire se face prin dou instruciuni procesor. Atunci cnd programul utilizator citete
ntregul fr interblocare, exist pericolul ca ntre cele dou instruciuni de citire s se declaneze rutina de
tratare care modific valoarea; n aceast situaie, programul utilizator va citi partea low din vechea valoare i
partea high din noua valoare. Evitarea acestei situaii se face utiliznd mecanisme de interblocare puse la
dispoziie de ctre sistemul de operare sau implementate n program. Cea mai simpl metod, este ca accesul n
scriere/citire din programul utilizator la zonele comune s se fac cu secvena:
cli ; dezactiveaz ntreruperi

Acces la zona comun

sti ; activeaz ntreruperi
n general, n rutina de tratare nu trebuie s fie executate apeluri sistem sau subprograme comune cu programele
utilizator, dac acestea nu sunt reentrante. De asemenea, accesul la porturi, zone comune de memorie sau alte
resurse comune cu sistemul de operare sau programele utilizator trebuie s se fac cu interblocare.
4-67
4.2.4 Exemple de utilizare a ntreruperilor
Avnd ca sistem de operare MS DOS, s se elaboreze un program n limbaj de asamblare care la fiecare 10
ntreruperi de la ceasul de timp real s afieze pe monitor caracterul A. O ntrerupere de la ceasul de timp real al
PC apare de aproximativ 18.2 ori pe secund (la aprox. 55 ms) vezi i 4.3.4. Oprirea programului s se poat face
fie la acionarea tastelor CTRL+BREAK, fie dup ce s-a afiat de 1000 ori caracterul A.
Pentru a scrie acest program este necesar s fie capturai vectorii de ntrerupere de pe nivelul 8, unde este depus
adresa rutinei de tratare pentru IRQ0 i de pe nivelul 23h asociat instruciunii int 23, unde este depus adresa
rutinei de tratare pentru CTRL+BREAK. Pentru afiarea pe monitor a caracterului A se va folosi funcia DOS 09h
iar pentru oprirea normal a programului se va folosi funcia DOS 4ch a ntreruperii software int 21h.
Detalii privind funciile DOS/BIOS utilizatepot fi furnizate de programul Help disponibil la laborator.

dosseg
.model small
.stack 200h
.data
int_8_ip dw ?
int_8_cs dw ?
int_23_ip dw ?
int_23_cs dw ?
msg db 'A$'
timer dw 0 ;contor
zece dw 10
old_mask db ?
.code
save_ds dw ?
program_ceas proc near
mov ax,@data
mov ds,ax
mov cs:save_ds,ax ; salvare ds
xor ax,ax
mov es,ax
;salvare adresele BIOS pentru rutinele de tratare pentru nivelurile 8h si
;23h
mov ax,es:(8*4)
mov int_8_ip,ax
mov ax,es: (8*4+2)
mov int_8_cs,ax
mov ax,es: ( 23h*4 )
mov int_23_ip, ax
mov ax,es: ( 23h*4+2 )
mov int_23_cs , ax
;Se dezactiveaza sistemul de ntreruperi pentru a nu apare
;accidental ntreruperi in timp ce se fac modificri in tabela
;vectorilor de ntreruperi
cli
;Depune in tabela adresele rutinelor de tratare utilizator
mov word ptr es: ( 8*4 ) , offset it_ceas
mov word ptr es: ( 8*4+2 ) , cs
mov word ptr es: ( 23h*4 ) , offset ctrl_break
mov word ptr es: ( 23h*4+2 ) , cs
;demascare nivelul 0 la primul I8259
in al,21h
mov old_mask , al
4-68
and al, 0FEh
out 21h, al ; demascare nivel 0.
; activeaza sistemul de ntreruperi mascabile
sti
;aici incepe bucla de prelucrare in programul utilizator
mov si,timer
repeta:
mov dx, 0
mov ax, timer
cmp ax, si
jz repeta ;daca nu s-a modificat contorul, repeta
mov si,ax
div zece
cmp dx, 0
jnz repeta; numai la 10 tick-uri se face afisarea
mov dx,offset msg
mov ah,9 ; functia DOS de afisare sir de caractere terminat cu $
int 21h ; afiseaza A
mov ax,timer
cmp ax, 1000
jc repeta
call far ptr restore_vect ;restaureaza vectorii initiali
mov ah,4ch ;termina programul
int 21h
program_ceas endp

it_ceas proc far ; rutina de tratare I.T ceas
push ax
push ds
push bx
push cx
push dx
push si
push di
push bp
push es
mov ax,cs:save_ds
mov ds,ax ;reface ds al programului asociat rutinei
inc timer
pop es
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ds
pop ax
jmp dword ptr int_8_ip
it_ceas endp

ctrl_brk proc far ; rutina de tratare CTRL+BREAK
push ax
push ds
push bx
push cx
push dx
4-69
push si
push di
push bp
push es
mov ax,cs:save_ds
mov ds,ax
xor ax,ax
mov es,ax
call far ptr restore_vect
pop es
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ds
pop ax
jmp dword ptr int_23_ip
ctrl_brk endp

restore_vect proc far ; restaurare vectori initiali si masca la
ieirea din program
cli
mov ax,int_8_ip
mov es:(8*4),ax
mov ax,int_8_cs
mov es:(8*4+2),ax
mov ax,int_23_ip
mov es:(23h*4),ax
mov ax,int_23_cs
mov es:(23h*4+2),ax
mov al,old_mask
out 21h,al
sti
ret
restore_vect endp
end program_ceas

Observaii:
1. Rutinele de tratare pentru ntreruperea de la ceas (it_ceas) i pentru tratarea acionrii tastelor
ctrl_break (ctrl_brk) se termin cu instruciunea jmp la adresa vectorului originar de tratare a
ntreruperii, salvat n programul utilizator. Acest lucru este necesar deoarece exist n sistemul de
operare rutine care trateaz aceste ntreruperi, n cadrul tratrii efectundu-se operaii absolut necesare
pentru sistem de exemplu oprirea motorului de la floppy disc este gestionat n rutina de ceas
original. Nu toate ntreruperile au proceduri de tratare n cadrul BIOS sau sistemului de operare. n
astfel de situaii modul de terminare depinde de tipul ntreruperii: dac ntreruperile sunt externe i
mascabile, atunci nainte de terminare se face achitarea ntreruperii n curs de tratare i apoi se execut
instruciunea iret; pentru celelalte tipuri de ntreruperi terminarea se face pur i simplu cu iret; n
cazul de fa dac sistemul de operare nu ar avea rutina pentru ntreruperea de la ceas instruciunile:
pop ax
jmp dword ptr int_8_ip
ar trebui nlocuite cu:
mov al,20h;
4-70
out 20h,al
pop ax
iret
Pentru rutina de tratare acionarea CTRL+BREAK terminarea s-ar putea face nlocuind
jmp dword ptr int_23_ip
cu
iret.

2. ntreruperea unui program DOS din execuie se poate face utiliznd CTRL+C sau CTRL+BREAK.
Prin utilizarea comenzii BREAK n CONFIG.SYS sau ca o comand obinuit DOS, sistemul de
operare poate fi determinat s verifice acionarea tastelor respective n timpul oricrui apel sistem
(BREAK=ON) sau s fac verificarea numai n timpul apelurilor sistemului pentru operaiile de I/E cu
echipamente periferice standard (BREAK=OFF). n program se folosete astfel apelul sistem 09H
pentru afiarea unui ir de caractere iar n timpul execuiei acestui apel se face testul de acionare
CTRL+BREAK.
Programul de mai sus se poate scrie i n limbajul C/C++, PASCAL etc. fie prin utilizarea funciilor speciale pentru
ntreruperi, existente n bibliotecile mediilor de dezvoltare, fie prin utilizarea programrii mixte limbaj evoluat /
limbaj de asamblare. O versiune a programului scris n Borland C/C++ este urmtoarea:
#include <stdio.h>
#include <dos.h>
#include <conio.h>

#define INTR_8 0X08 /* ntreruperea de la ceas, la aprox. 55ms*/
#define INTR_23 0X23 /* ntreruperea CTRL_BREAK */

#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif

unsigned char oldmask_1=0;

void interrupt ( *oldint8)(__CPPARGS);
void interrupt ( *oldint23)(__CPPARGS);

int count=0,oldcount=0,ctrl_bk=0;

void interrupt ceas(__CPPARGS){
/* incrementeaza contorul */
count++;

/* achitarea ntreruperii */
outportb(0x20,0x20);
}

void interrupt ctrl_brk(__CPPARGS){
ctrl_bk=1;
}

void main(void){
/* salveaza vechii vectori de ntrerupere */
oldint8 = getvect(INTR_8);
oldint23 = getvect(INTR_23);
4-71

/* dezactiveaza sistemul de ntreruperi mascabile
*/
asm cli;

/* seteaza noii vectori de ntrerupere */
setvect(INTR_8, ceas);
setvect(INTR_23,ctrl_brk);

/*salveaza masca pentru primul 8259*/
oldmask_1=inportb(0x21);

/*demascheaza ntreruperea 0*/
outportb(0x21,oldmask_1 & 0x0fe);

/* activeaza sistemul de ntreruperi mascabile
*/
asm sti;

/* bucla de prelucrare a programului principal */
clrscr();
while ((count<1000)&&(!ctrl_bk)){
if(count!=oldcount)
if((count % 10)==0)
{
printf("A);
oldcount=count;
}
}

/* dezactiveaza sistemul de ntreruperi mascabile
*/
asm cli;

/* seteaza vechii vectori de ntrerupere */
setvect(INTR_8, oldint8);
setvect(INTR_23,oldint23);

/*seteaza vechea masca pentru primul 8259*/
outportb(0x21,oldmask_1);

/* activeaza sistemul de ntreruperi mascabile
*/
asm sti;

}
Se remarc:
utilizarea cuvntului cheie interrupt, care indic compilatorului s genereze automat secvene de
salvare/restaurare registre i execuie iret la ieire;
utilizare funcii getvect/setvect pentru salvare/capturare vector de ntrerupere;
utilizare funcii inportb/outportb pentru citire/scriere din/n porturi pe un octet;
pentru activarea/dezactivarea sistemului de ntreruperi s-au utilizat instruciuni n limbajul de asamblare
(asamblare in line); se pot ns folosi n acest scop i funciile enable() pentru activare i
disable() pentru dezactivare ntreruperi.
4-72
Probleme propuse
1. S se modifice programul program_ceas astfel nct oprirea s se realizeze dup 1000000 de ntreruperi de la
ceas (timer pe 4 octei).
2. S se modifice programul program_ceas i rutina it_ceas astfel nct la fiecare 10 ntreruperi de la ceasul de
timp real programul s afieze tack iar rutina de tratare a ntreruperii de la ceas s afieze la fiecare apel
tick.
Indicaie: n programul utilizator se va folosi pentru afiarea irului tack apelul sistem 9 al int21h, iar n
rutina de tratare a ntreruperii de la ceas se va folosi subfuncia 0eh de la int 10h (BIOS) pentru afiarea
caracterelor din irul tick. Aceasta, deoarece apelul la sistem prin int 21h nu este reentrant, utilizarea unor
astfel de apeluri n rutinele de tratare a ntreruperilor putnd duce la blocarea calculatorului!
3. S se rezolve problema utiliznd pentru ntreruperea de la ceas vectorul 1ch (int 1ch) detalii
despre int 1ch se gsesc n programul HELP disponibil la laborator.
4. Program care implementeaz intrri bufferate cu funciile:
Rutina de tratare a ntreruperii de la ceas genereaz ntr-un buffer de 1000 octei (coad circular) o
secven de caractere ASCII 1,2,,9 format dintr-un numr de caractere egal cu modulo 10 al
numrului de ntreruperi care au aprut de la lansarea programului.
Programul utilizator afieaz pe monitor caracterele noi, nsoite de nr. de ntreruperi memorate n
contor.
Programul utilizator i rutina de tratare a ntreruperii trebuie s detecteze eventualele umpleri de
buffer respectiv golire de buffer, n vederea sincronizrii.
5. Program pentru ieiri bufferate (buffer circular de 1000 octei). Programul utilizator pune n buffer date
citite dintr-un fiier text linie cu linie, la intervale multiplu de aproximativ 0,1 sec. specificate interactiv
de utilizator. Rutina de ntrerupere de la ceas afieaz liniile nou introduse. Programul utilizator trebuie
s detecteze umplerea de buffer i s atenioneze printr-un mesaj afiat pe ecran, iar rutina de
ntrerupere trebuie s detecteze golirea buffer-ului i s atenioneze sonor (beep).
6. Dezasamblai programul scris n limbajul C/C++; ce remarcai?
4.3 Dispozitive pentru generarea bazei de timp i numrarea de
evenimente
4.3.1 Dispozitivul mumrtor/periodizator I8254
I8254 conine (figura 4.3.1-1):
Magistrala de date bidirecional, tree-state pe 8 bii.;
Logica de citire/scriere (semnale: RD, WR, A0, A1, CS);
Registru de control (numai de ieire);
3 numrtoare pe 16 bii programabile s funcioneze independent. Numrarea se face descresctor.
Oricare numrtor poate fi programat s lucreze n unul dintre cele 6 moduri de lucru disponibile.
Transferurile de date ntre dispozitiv i magistrala calculatorului se fac pe 8 bii i depind de modul n
care se face comanda scrierilor sau citirilor prin intermediul registrelor de control.
Intrrile/ieirile asociate numrtoarelor sunt:
4-73
intrri de tact (clock) (CLK
i
, i [0,2]); pe fiecare intrare de tact pot fi impulsuri cu frecvena maxim de
8MHz;
intrri de poart GATE
i
, i [0,2], utilizate pentru triggerarea intrrilor de clock;
ieiri OUT
i
, i [0,2].
n figura 4.3.1-2 se prezint schema bloc intern a unui numrtor. Intern, dispozitivul conine pentru fiecare
numrtor 3 regitri:
registrul CR (Count Register) pe 16 bii la programare datele sunt nscrise n acest registru, iar la
startarea numrrii ele sunt ncrcate n registrul CE n care efectueaz numrarea. CRM este pentru
octetul MSB, iar CRL pentru octetul LSB;
registrul CE (Counting Element) registrul de numrare;
OL (Output Latch) "Latch" n care se memoreaz la o anumit comand valoarea curent
instantanee coninut n registrul CE. Datele memorate pot fi citite ulterior. OLM este pentru octetul
cel mai semnificativ, iar OLL pentru octetul cel mai puin semnificativ.
Fiecare numrtor se ncarc iniial, iar dup startarea numrrii se decrementeaz pe frontul descresctor al
impulsului de tact.
Triggerarea se face astfel:
GATE
i
=1 numrarea autorizat
I
N
T
E
R
N
A
L

B
U
S

CNT0
CLK0
GATE0
OUT0
CNT1
CLK1
GATE1
OUT1
CNT2
CLK2
GATE2
OUT2
DATA
BUS
BUFFER
RD
WR
A0
A1

CS

R/W
LOGIC
CONTROL
WORD
REGISTER
Fig. 4.3.1 1 Schema bloc a dispozitivului I8254 (conform catalog Intel)
4-74
GATE
i
=0 numrarea inhibat
Nivelul logic al ieirii OUT
i
depinde de modul de lucru ales.
Formatul cuvntului de control este:
Unde:
BCD = 0 numrare binar pe 16 bii (0-65535 evenimente)
= 1 numrare BCD (0 9999 evenimente)
M2 M1 M0 - selecie mod de lucru:
0 0 0 Mod 0 - oprire la sfritul numrrii
0 0 1 Mod 1 - monostabil programabil
x 1 0 Mod 2 - generator de impulsuri divizate cu N
x 1 1 Mod 3 - generator de impulsuri dreptunghiulare
1 0 0 Mod 4 - strob comandat software
1 0 1 Mod 5 - strob comandat hardware
CLK GATE OUT
CRM CRL

CE
OLM OLL
CWR

Status
Latch
Status


Control
Logic
Fig. 4.2.1-2 Schema bloc intern a unui numrtor (conform catalog Intel)
SC1 SC0 RW1 RW0 M2 M1 M0 BCD
4-75
RW1 RW0 - comand citire / scriere
0 0 buffer-are numrtoare pentru citire
0 1 R/W numai octetul LSB
1 0 R/W numai octetul MSB
1 1 R/W nti octetul LSB i apoi imediat octetul MSB
SC1 SC0 selecie numrtor
0 0 selecie numrtor 0
0 1 selecie numrtor 1
1 0 selecie numrtor 2
1 1 comand de citire napoi (readback command)
Programarea i apoi operarea se face independent pentru fiecare numrtor.
Valorile oricrui numrtor pot fi citite din mers (caz n care pot apare erori la tranziiile de stare ale
numrtorului) sau pot fi buffer-ate i apoi citite.
Operaii de scriere: - se menioneaz urmtoarele convenii:
1. Pentru oricare numrtor cuvntul de control trebuie scris naintea scrierii valorii iniiale a
numrtorului.
2. Valoarea iniial a numrtorului se nscrie n conformitate cu combinaia RW1 RW0.
n cazul n care RW1 RW0 = 11, n program nu trebuie s se mai fac alt operaie cu I8254 ntre cele dou
operaii de scriere succesive.
Dac exist acest pericol (datorit apariiei ntreruperilor de exemplu), atunci operaiile de scriere se vor face
ncadrate de cli i sti.
Operaiile de citire:
1. Numrtoarele pot fi citite fr a afecta numrarea; citirea direct poate fi eronat dac CE este n
tranziie de stare. De aceea, este de preferat ca nainte de citire s se scrie un cuvnt de control
corespunztor numrtorului care urmeaz a fi citit n care RW1 RW0=00. Dup aceast comand,
valoarea buffer-at poate fi citit n orice moment; dac se reprogrameaz numrtorul, valoarea
memorat este pierdut.
2. Citirea napoi permite s se citeasc valoarea simultan a tuturor numrtoarelor, modul de lucru
programat, starea curent a ieirii OUT
i
etc.
Alte detalii se gsesc n filele de catalog ale I8254.
4.3.2 Utilizarea I8254 pentru numrarea de evenimente
Oricare din cele 3 numrtoare pe 16 bii opereaz prin numrarea impulsurilor de la intrare. Numrtoarele
numr prin decrementare pornind de la o valoare iniial ncrcat prin software.
4-76
Utiliznd modul de lucru 0 n care valoarea iniial din numrtor este 0, oricare numrtor poate numra
65536 evenimente.
Intrarea CLK a numrtorului se conecteaz la un generator de tact extern.
Intrarea GATE a numrtorului este utilizat pentru a autoriza sau stopa numrarea. Dac nu se dorete
utilizarea acestei faciliti, atunci intrarea GATE se pune la +5V, caz n care se face permanent numrarea.
Pentru modul de lucru 0, ieirea OUT
i
nu este utilizat.
Dup ce un numrtor a fost iniializat prin software, orice impuls de pe intrarea de tact decrementeaz
numrtorul cu 1 pe front descresctor. Primul impuls totui nu decrementeaz numrtorul, el fiind utilizat
pentru a ncrca valoarea din CR in CE.
Exemplu: dac n numrtor se ncarc valoarea iniial 0, numrul evenimentelor numrate este determinat
scznd valoarea curent pe 16 bii, citit din numrtor, din 65536 i apoi adunnd 1 la rezultat pentru a
considera impulsul de ncrcare a valorii iniiale.
Urmtorul subprogram exemplific modul de utilizare a numrtorului 0 pentru numrarea de evenimente. n
acest exemplu, intrarea GATE se presupune a fi la 5V, iar CA se consider a fi adresa de baz a dispozitivului.
COUNT DW ?
.
.
MOV DX,CA+3
MOV AL,30H;pentru NUM 0 citeste/scrie LSB urmat de MSB, mod lucru 0
OUT DX,AL
NOP ;introduce o intarziere
MOV DX,CA
XOR AL,AL
OUT DX,AL ; scrie 0 in LSB (valoare initiala)
NOP
OUT DX,AL ; scrie 0 in MSB
.
.
; in orice moment se poate citi numarul curent de evenimente astfel:
MOV DX,CA+3
XOR AL,AL
OUT DX,AL ; buffer-area numaratorului pentru a putea fi citit
NOP
MOV DX,CA
IN AL,DX
MOV BYTE PTR COUNT,AL ; memoreaza LSB
IN AL,DX
MOV BYTE PTR COUNT +1, AL ;memoreaza MSB
4.3.3 Utilizarea lui I8254 pentru generarea de ntreruperi
Modurile de lucru 2 i 3 ale lui I8254A pot fi utilizate pentru generarea bazei de timp n cadrul sistemelor de
achiziie de date i control. n astfel de aplicaii, ntreruperea de la I8254 va aprea periodic, n funcie de
intrarea CLK i de programarea numrtorului, iar n cadrul rutinei de tratare a ntreruperii se va face achiziia
efectiv a datelor utiliznd tehnicile cunoscute (de obicei, tehnica intrri buffer-ate).
Astfel, se cunoate cu o bun precizie intervalul de timp dintre dou eantioane succesive din buffer-ul de
achiziie.
4-77
n modul de lucru 2, oricare numrtor opereaz ca generator de impulsuri divizate cu N. Cnd numrtorul
trece prin 0, ieirea OUT trece n starea 0, pentru o perioad a impulsului de pe intrarea CLK i apoi revine n
starea 1. Numrtorul este rencrcat automat cu valoarea programat iniial i continu decrementarea (Fig.
4.3.3-1).
Operaia se reia periodic, genernd ntreruperi la intervale de timp egale cu perioada ntreruperii. Se pot utiliza
2-3 numrtoare cascadate, n funcie de frecvena minim cerut pentru ntrerupere i de intrarea CLK a
primului numrtor (intrarea CLK
i
a numrtorului urmtor este legat la ieirea OUT
i-1
a numrtorului
anterior).
Pentru exemplificare, se presupune intrarea CLK
0
la 5MHZ (perioada pentru un impuls este de 200 ns). n
acest caz, dac iniial numrtorul se ncarc cu 0, deci se numr 65536 evenimente, atunci perioada
impulsurilor de ieire va fi 65536 x 200ns = 13,1072 ms, sau 76 Hz. Cascadnd numrtoarele, perioada
impulsurilor pentru ultimul numrtor din cascad se determin nmulind valorile din numrtoarele cascadate
i nmulind apoi numrul obinut cu perioada impulsului de la intrarea primului numrtor. Pentru 2
numrtoare cascadate, perioada maxim este 65536 x 65536 x 200 ns = 859,99 secunde iar pentru 3
numrtoare cascadate rezult perioada maxim 65536 x 65536 x 65536 x 200 ns = 1,7851 ani.
Evident, nu este nevoie ca n toate numrtoarele s se depun valoarea maxim.
Se poate utiliza GATE pentru a controla din exterior generarea ntreruperilor. Dac nu se dorete acest lucru,
GATE se pune la 5V.
n continuare se prezint exemple de programarea I8254 pentru generarea de ntreruperi pentru achiziii de date
utiliznd modulul de achiziie data existent n laborator (vezi i 4.4).
Exemplul 1: Generare de ntreruperi pentru perioade mai mici dect 13,1072 ms (76 Hz frecven 2,5
MHz).
Se poate utiliza oricare dintre cele 3 numrtoare n modul de lucru 2 sau 3. Se poate utiliza poarta GATE
pentru a inhiba generarea de ntreruperi din exterior. Ca suport hardware pentru acest exemplu se pot utiliza
modulele de achiziie ADA 2100 sau ADA 3100 de la laborator, modul n care se fac conexiunile fiind prezentat
n cartea tehnic a fiecrui modul.
5 4 3 2 1 5 4 3 2 1 5
Perioada dintre ntreruperi
Incrcare
numrtor cu 5 n
modul 2

CLKn


Gate


OUTn

Fig. 4.3.3-1 Generarea de intreruperi in modul 2 de lucru
4-78
Ca intrare CLK
i
(i=0,2) se utilizeaz semnalul XTAL de 5 MHz sau se poate utiliza o intrare de tact extern.
Dac GATE nu se utilizeaz pentru triggerare, atunci se pune la +5 V. Ieirea OUT se poate conecta prin jump-
eri la un nivel de ntrerupere (IRQ 2 IRQ 7) al calculatorului.
Programarea numrtorului i startarea generrii de ntreruperi se face astfel:
1. Se calculeaz numrul ce trebuie ncrcat n numrtor
2. Se ncarc cuvntul de control pentru numrtorul selectat (modul 2 de lucru)
3. Se ncarc numrul n numrtor
4. Numrarea evenimentelor se starteaz automat la primul impuls pe intrarea clock de dup ncrcarea
numrului n numrtor. Oprirea se poate face trecnd intrarea GATE la 0 sau reprogramnd
numrtorul sau oprind calculatorul.
Urmtoarea secven de program programeaz numrtorul 0 s genereze ntreruperi la 51 s, considernd
intrarea de clock la 5 MHz, adresa de baz CA iar GATE este pus la +5 V.
Numrul care se ncarc n contor este 51/0.2 = 255.
MOV DX,CA+3
MOV AL,14H ; numrtor 0, MOD 2, R/W numai LSB
OUT DX,AL
MOV AL,0FFH
MOV DX,CA
OUT DX,AL ; ncarc nr. 255 n numrtorul 0
Frecvena ntreruperii este 1/51s = 19,5 KHz.
Exemplul 2: Generarea de ntreruperi cu perioade mai mari ca 13,1072 ms (frecvena< 76 Hz).
Se cascadeaz 2 sau 3 numrtoare, toate programate n modul 2. Ieirea OUT
i-1
se leag la intrarea CLK
i
, i=1,2.
Se folosesc cele 3 numrtoare cascadate pentru ADA2100, unde:
CLK
0
5 MHz
OUT
0
CLK
1

OUT
1
CLK
2

OUT
2
IRQ
n
(n {2, 3, , 7})
Programarea numrtoarelor i startarea generrii de ntreruperi se face astfel:
1. Se calculeaz valoarea ce se depune n fiecare numrtor.
2. Se programeaz numrtoarele n modul 2.
3. Se ncarc succesiv numrtoarele ncepnd cu ultimul din cascad i terminnd cu primul din cascad.
n aceste condiii startarea se va face dup ncrcarea primului numrtor, ce are intrarea CLK activ. Intrrile
GATE ale fiecrui numrtor sunt puse la +5 V.
n exemplul de mai jos, se dorete generarea de ntreruperi la 1s, utiliznd cele 3 numrtoare ale I8254, intrarea
CLK
0
a primului numrtor este la 5Mhz
Mod de calcul :
1s = 10
9
ns;
4-79
o perioad a intrrii CLK este = 200 ns=0.200s
Numrul de impulsuri CLK necesare este 10
9
ns/ 200ns

= 5 x 10
6
= 5.000.000.
Se distribuie de exemplu acest numr pe cele 3 numrtoare astfel:
1000 n NUM2
1000 n NUM1
5 n NUM0
Programul este urmtorul:
MOV DX, CA+3
MOV AL, 34H ; NUM0, MOD2, R/W LSB apoi MSB
OUT DX, AL
NOP
MOV AL, 74H ; NUM1, MOD2, R/W LSB apoi MSB
OUT DX, AL
NOP
MOV AL, 0B4H ; NUM2, MOD2, R/W apoi MSB
OUT DX, AL
DEC DX ; adresa NUM2
MOV AL, 0E8h ;1000
OUT DX, AL
MOV AL, 03H
OUT DX, AL
DEC DX ; adresa NUM1
MOV AL, 0E8H ;1000
OUT DX, AL
MOV AL, 03H
OUT DX, AL
DEC DX ;adresa NUM0
MOV AL, 5H ;5
OUT DX, AL
XOR AL, AL
OUT DX, AL
.
.
.
.

4.3.4 Exemplu de utilizare a dispozitivului I8254 pentru generarea bazei de timp
Se cere implementarea controller-ului simplu PID prezentat la 2.2.2, considernd rata de eantionare pentru
calcule de 0.01 secunde (10 ms).
Pentru generarea bazei de timp se va utiliza un I8254 cu spaiul de adresare ntre 214h 217h, intrarea GATE
0

este la +5 V, intrarea de ceas de la NUM
0
este conectat la un generator de impulsuri cu frecvena 5MHz iar
ieirea OUT
0
este conectat la intrarea IRQ5 de la primul controller I8259A al PC. Modul de lucru pentru
numrtorul 0 va fi 2 iar valoarea iniial care se va ncrca n numrtor este 10 000 000ns /200ns = 50 000 =
c350h.
n programul prezentat n continuare, comunicaia ntre rutina de tratare i programul utilizator se face prin
variabila partajat contor:
4-80
rutina de tratare a ntreruperii incrementeaz variabila;
programul utilizator, ateapt ca variabila s fie diferit de 0:
dac este 1 efectueaz calculele (a trecut perioada T) i i atribuie valoarea 0;
dac este mai mare dect 1 afieaz eroare i termin programul deoarece programul principal nu se
execut suficient de rapid pentru a se sincroniza cu dispozitivul extern.

#include <stdio.h>
#include <dos.h>
#include <conio.h>

#define INTR_0d 0x0d/*ntreruperea IRQ5 de la I8254*/

#define CA 0x214

# define KPVAL 1.0
# define KIVAL 0.8
# define KDVAL 0.3

#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif

unsigned char oldmask_1=0;
int count=0,oldcount=0;
float s, kp, ki, kd, en, enold, mn;
/*functia can achizitioneaza de la convertorul analog numeric, calculeaza
si returneaza valoarea erorii e; este dependenta de hardware utilizat de
exemplu poate fi scrisa pentru ADA2100*/
extern float can(void);
/*functia cna care primeste la intrare corectia (valoarea de actionare) si
o transmite la convertorul numeric analogic; este dependenta de hardware
utilizat de exemplu poate fi scrisa pentru ADA2100 */
extern void cna(float mn);
void interrupt ( *oldint0d)(__CPPARGS);

void InitNum0 (void){
outportb (CA+3, 0x34);
outportb (CA,0x50);
outportb (CA,0xc3);
}
/* rutina de tratare a ntreruperii de la contorul 0 al I8254*/
void interrupt irq5(__CPPARGS){
/* incrementeaza contorul */
count++;
/* achitarea ntreruperii */
outportb(0x20,0x20);
}

void main(void){
s = 0.0; kp = KPVAL; ki = KIVAL; kd = KDVAL;
/* salveaza vechiul vector de ntrerupere */
oldint0d = getvect(INTR_0d);
4-81
/* dezactiveaza sistemul de ntreruperi mascabile*/
disable();
/* seteaza noul vector de ntrerupere */
setvect(INTR_0d, irq5);
/*salveaza masca pentru primul 8259*/
oldmask_1=inportb(0x21);
/*demascheaza ntreruperea 0*/
outportb(0x21,oldmask_1 & 0x0df);
/* activeaza sistemul de ntreruperi mascabile */
enable();
clrscr();
enold = can();
InitNum0();
/* bucla de prelucrare a programului principal */
while (!kbhit()){/*se opreste la apasarea oricareai taste*/
if(count){
disable();
oldcount = count;
count = 0;
enable();
if (oldcount == 1){
en = can();
s = s+en;
mn = kp*en + ki*s + kd * (en - enold);
cna(mn);
enold = en;

}
else{
printf (Eroare, lipsa sincronizare);
break;
}
}

}

/* dezactiveaza sistemul de ntreruperi mascabile
*/
disable();

/* seteaza vechii vectori de ntrerupere */
setvect(INTR_0d, oldint0d);
/*seteaza vechea masca pentru primul 8259*/
outportb(0x21,oldmask_1);

/* activeaza sistemul de ntreruperi mascabile*/
enable();

}

Probleme propuse:
1. I8254 are spaiul de adresare ntre 214h si 217h. Intrarea GATE
0
este la +5 V, iar intrarea de CLK
0

este legat la un circuit formator de impulsuri de la un comutator acionat manual. S se elaboreze un
program care s afieze pe display un mesaj la fiecare zece acionri ale comutatorului i care s se
opreasc dup 200 acionri ale acestuia. Programul se va scrie astfel nct numrarea impulsurilor s
4-82
se fac de ctre o rutin de tratare a ntreruperilor de la ceasul sistem, iar afiarea mesajului s se fac
n programul principal.
2. I8254 are spaiul de adresare ntre 214h 217h. Intrrile GATE pentru numrtoare sunt la +5 V iar
intrarea de ceas de la NUM
0
este legat la un generator de impulsuri cu frecvena 5MHz. Presupunem
c orice ieire OUT
i
poate fi conectat la oricare dintre canalele de ntreruperi ale circuitului I8259 i
de asemenea la intrarea CLK a urmtorului numrtor. ntr-o aplicaie de achiziie de date este necesar
ca o intrare analogic s fie eantionat la 10ms, a doua intrare analogic la aproximativ 200 ms iar a
treia la 1000s. S se elaboreze un program care programeaz I8254 astfel nct s genereze ntreruperi
pe nivelurile 10, 11 i 15 (al doilea circuit I8259 de la un calculator compatibil IBM PC/AT), fiecrui
numrtor corespunzndu-i una din ntreruperile de mai sus. Simularea achiziiei de date la intervalele
specificate se va face afind caracterul * la primul interval de timp, $ la al doilea interval de timp i @
la al treilea interval de timp. Programul poate fi oprit prin CTRL-BREAK. S se deseneze schema de
cascadare a numrtoarelor i de conectare la canalele de ntrerupere.
3. Elaborai o schem bloc de msur i un program pentru determinarea i afiarea vitezei de rotaie
instantanee a unui motor care are max. 3000 rot/min, utiliznd I8254. Pe axul motorului exist un disc
cu 10 fante echidistante i un dispozitiv optic care genereaz un impuls ctre calculator la trecerea unei
fante prin dreptul su.
4.3.5 Reprogramarea ceasului sistem
Placa de baz a calculatorului PC conine un dispozitiv I8254A, care ocup spaiul de adrese de I/E de la 40h la
43h. Intrarea CLK
0
este la 1,193187 MHz iar ieirea OUT
0
este conectat la intrarea IRQ
0
a primului controller
I8259A. BIOS programeaz NUM0 n modul de lucru 3 i cu valoarea 0, generndu-se astfel ntreruperi cu o
perioad de timp de aprox. 54.92517 ms (aprox. 18.206588 Hz). Aceast ntrerupere este utilizat de SO DOS
pentru ceasul sistem i alte operaii (precum oprirea motorului discului flexibil atunci cnd acesta nu mai este
utilizat). n tabela vectorilor de ntrerupere, adresa rutinei de tratare a IRQ
0
se gsete la adresa 20H (corespunde
la int 8).
Dac aplicaia necesit ntreruperi cu frecven diferit de aprox. 18,2 Hz i dac n calculator nu exist un
dispozitiv suplimentar I8254, se poate utiliza numrtorul 0 al circuitului I8254 de pe placa de baz. Urmtoarea
secven va reprograma ceasul pentru a da ntreruperi la o nou perioad de timp:
MOV AL, 36H ; MOD3, R/W MSB apoi LSB binar pentru NUM0
OUT 43H,AL
MOV AX, timer_count ; in AX noua valoare a NUM
OUT 40H, AL
MOV AL,AH
OUT 40H, AL
La sfritul programului utilizator este necesar s se restaureze ceasul sistem la rata de ntrerupere iniial astfel:
MOV AL, 36H
OUT 43H, AL
XOR AL, AL
OUT 40H, AL
OUT 40H, AL
Valoarea care se scrie n NUM0 se calculeaz astfel:
Timer_count = Ti * F0
Unde F0 este frecvena n Hz a semnalului de tact pentru numrtor (1.193.187 Hz) iar Ti este perioada
ntreruperilor (intervalul de timp dintre dou ntreruperi succesive).
Exemplu: pentru generarea de ntreruperi la 10 ms rezult timer_count = 10/1000 * 1.193.187 11932.
4-83
Dup cum se tie in numrtor se pot depune valori ntre 0 si 65535, 0 corespunznd la 65536 de impulsuri.
Dac se dorete o valoare mai mare, atunci se mparte valoarea respectiv printr-un numr astfel nct valoarea
care se introduce n numrtor s fie ntre 0 i 65535. Notm acest numr NDIV. Rutina de tratare a
ntreruperilor va gestiona un numrtor soft ntr-o locaie de memorie, ce este ncrcat iniial cu NDIV i care
se decrementeaz prin program cu 1 la fiecare ntrerupere. Cnd ajunge la 0, rutina de tratare a ntreruperii l
rencarc cu NDIV i apoi apeleaz rutina de achiziie.
Exemplu: dac se dorete achiziie la fiecare secund, atunci timer_count = 1 * 1.193.187 20 x 59659 rezult
c NDIV = 20 i timer_count = 59659.
Dac se dorete meninerea datei i orei sistem, care n mod curent sunt gestionate de rutina de tratare BIOS
pentru int 8, trebuie s se apeleze din rutina de tratare utilizator, atunci cnd este cazul (la perioade de timp
de aprox. 55ms), rutina BIOS de pe nivelul 8 din tabela vectorilor de ntreruperi.
Urmtoarea rutin poate fi considerat ca o schi pentru o rutin de tratare a ntreruperii prin reprogramarea
ceasului sistem.
PC_INT8 Label DWORD
PC_OFF8 DW ? ; IP
PC_SEG8 DW ? ; CS
DSEG DW ? ; rezervat pentru memorarea reg. DS

MY_INT8:
PUSH DS
PUSH AX
; eventual alte salvari
MOV AX, CS:DSEG ;incarca ds cu valoarea corecta
MOV DS,AX
;Urmatoarea secventa este ceruta numai dac se utilizeaza numaratoare mai
;mari dect 65536:
DEC NDIV_CT;decrementare contor soft
JNZ NOT_ZERO
MOV AX,NDIV
MOV NDIV_CT,AX

CALL achizitie ;apelare rutina ce face efectiv achizitia
:
NOT-ZERO:
;.. eventual alte restaurari
POP AX
POP DS
Se poate insera n acest loc instruciunea
JMP CS: PC _INT8
pentru apelul rutinei originale de tratare a ntreruperilor de ceas la 18,2 Hz; dac nu execut saltul prin JMP la
rutina de ceas, n acest loc trebuie s existe instruciunea iret.
Problem propus
Scriei funcia delay_ms(unsigned int t) care realizeaz o ntrziere de aproximativ t milisecunde, indiferent de
procesorul PC-ului, fr a reprograma ceasul sistem. Indicaie: se va utiliza numrtorul 0, care este
preprogramat de ctre BIOS, citind periodic valoarea din contor, fcnd diferenele ntre citiri succesive i
calculnd numrul de milisecunde.
4-84

4.4 Exemplu de sistem de achiziie de date
Not :
Paragraful 4.4 conine detalii tehnice necesare pentru instalarea, calibrarea i programarea achiziiei de
date cu modulul ADA2100.
Pentru rezolvarea problemelor la examen, se va studia 4.4.11.
Ca alternativ pentru rezolvarea problemelor la examen, informaiile din curs pot fi completate cu
documentaiile tehnice ale modulelor PCM 3718, PCM 3780 i PCM 3712 precum i ale dispozitivelor
I8254 i I8255 studiate la laborator:
"PCM-3718 Series, PC/104 12-bit DAS Module with Programmable Gain - User Manual", prezentat in
documentul PCM-3718-Ed3.pdf , .
"PCM-3780, 2-ch Counter/Timer with 24-ch TTL DIO Module - User Manual" prezentat n documentul
PCM-3780_Manual_Ed1.1.pdf
Subsistemul ieirilor analogice pentru sistemul PC104 de la laborator, prezentat n documentul PCM-
3712-ed1.pdf
8255_datasheet.pdf - capitolele "Functional description", "Operational description" i "Operating
modes".
I8254_data_sheet.pdf - capitolele "Functional description", "Operational description".
4.4.1 ADA 2100 - date generale i prezentarea resurselor
Interfaa:
compatibil IBM PC /XT/AT
adresa de baz selectabil prin jumper, mapat I/E
ntreruperi selectabile prin jumperi
Intrri analogice:
4 intrri difereniale sau 8 simple, selectabile prin switch
impedana de intrare: >10 Mohmi
ctig, selectiv soft: 1,2,4,8,16
eroare ctig.: 0,5% tipic, max. 1%
opiuni intrare:
domeniu 10V: bipolar+/-5V; liniaritate garantat -5V...+5V
domeniu 10V: unipolar 0-10V; liniaritate garantat 0...9,5V
domeniu 20V . . bipolar +/-10V; liniaritate garantat -9,5V...+9,5V
Domeniul: selectabil cu jumper
Polaritatea: selectabil cu switch
timp de stabilizare: max 3 s
tensiune de intrare mod comun : +/-10V
protecie la supratensiuni +/-35Vdc
4-85
Convertor A/N
tip: aprox. succesive
rezoluie: 12 bii (domeniul 10V -2.44mV/bit, domeniul 20 V - 4.88 mV/bit)
viteza de conversie . tipic 20 usec
liniaritate : +/-1 bit
timp total de rspuns S/H: max 6 usec
rata maxima de eantionare: 38 KHz

Convertor N/A
ieiri analogice: 2
rezoluie: 12 bii
precizie relativ: +/-1 bit max
precizie capt de scal: +/-3 bit max
neliniaritate: +/-1 bit max
izolare canal-la-canal: tipic 84 dB

Ieirea analogic
gama de ieire, chip selectabil:
opiunea 1: 0 la +5V selectabil cu jumper +/-5V
opiunea 2: 0 la 10 V selectabil cu jumper la +/-10V
timp de stabilizare la 0,01%FSR: 1.8ms tipic; 3.3 ms max
eroare de zero: +/-1/2 bit
crosstalk....................90 dB tipic
Alimentri: +/- 12V,+5V de la PC, mas de la PC
Contor/Periodizator: -3 numrtoare de 8 MHz, pe 16 bii fiecare
Linii I/E numerice:16 compatibile TTL/CMOS, porturile A i C de la I8255
Cerine de alimentare
+5V: 240 mA
+12V: 30 mA
-12V: 35 mA
Conectori I/E conector frontal de 40 pini
Condiii de mediu
temp. de lucru : 0 ... +70 grd C
temp. nmagazinare : -40 ... +85 grd C
umiditate : 0 ... 90 %
Dimensiuni:
4-86
nlime : 99 mm
lime: 165 mm
4.4.2 Generaliti
ADA 2100 reprezint un modul complex compatibil IBM PC-Bus, "Short-Size" ce poate fi introdus direct n
orice slot neutilizat dintr-un calculator compatibil PC/XT/AT.
Este compus din urmtoarele blocuri:
convertor analog-numeric (de 12 bii) de nalt rezoluie;
convertor numeric-analogic (12 bii) dublu;
circuit interfa paralel (PPI - I8255);
circuit numrtor/periodizator (PIT - I8254);
toate asigurnd flexibilitatea interfeei pentru multe aplicaii.
Se caracterizeaz printr-o construcie n 6 planuri (straturi) incluznd planuri separate pentru mas i alimentare
ceea ce conduce la caracteristici de zgomot redus.
ADA 2100 asigur o conversie pe 12 bii analog-numeric multicanal att pentru semnale difereniale ct i SE
(single - ended). Aceast facilitate confer calculatorului compatibil IBM PC/XT/AT gazd posibilitatea
achiziiei de date i controlul n timp real putnd genera i analiza semnale analogice numerice.
Viteza i rezoluia sunt caracteristicile principale luate n calcul la un convertor A/N. Pentru majoritatea
aplicaiilor o rezoluie de 12 bii este suficient. Aceasta asigur incremeni de tensiune de 1.22 mV pentru o
gam de 5 V, 2.44 mV pentru o gam de 10 V i 4.88 mV pentru o gam de 20 V.
O conversie pe 8 bii este mai puin precis dar mai rapid. Prin programare (S) i/sau setare de switch-uri (H)
de pe plac se pot:
selecta adresa I/E de baza (H);
alege 4 canale de intrare analogice difereniale sau 8 simple (SE) (H);
selecta canalul activ (S);
selecta ctigul canalului (S);
selecta gama i polaritatea tensiunii analogice de intrare (H);
selecta polaritatea tensiunilor analogice de ieire (H);
controla 16 linii I/E TTL/CMOS (S);
controla 3 circuite numrtor/periodizator pe 16 bii de 8 MHz (S);
monitoriza conversia A/N folosind semnalul EOC (End-Of-Convert) (S,H);
genera semnale de ntrerupere (H).
4.4.3 Setarea adresei de baz
Interfaa fiind introdus n canalul I/E adresa sa va fi configurat n spaiul 200H...3FFH.
Notm cu BA adresa de baz a modulului.
ADA 2100 utilizeaz 24 locaii de adres n spaiul I/E al calculatorului ncepnd cu BA.
4.4.4 Harta I/E pentru ADA 2100

4-87
Funcie A4 A3 A2 A1 A0 R/W BA+Hex

1. PPI 8255

Port A 0 0 0 0 0 R/W 0
Port B (sel.canal+ctig) 0 0 0 0 1 W 1
Port C 0 0 0 1 0 R/W 2
Cuvnt de control 0 0 0 1 1 W 3

2. Circuit conversie A/N

Start conversie 12 bii 0 0 1 x 0 W 4 sau 6
Start conversie 8 bii 0 0 1 x 1 W 5 sau 7
Citire MSB 0 0 1 x 0 R 4 sau 6
Citire LSB 0 0 1 x 1 R 5 sau 7

3. Circuit conversie N/A

Program AOUT1 LSB 0 1 0 0 0 W 8
Program AOUT1 MSB 0 1 0 0 1 W 9
Program AOUT2 LSB 0 1 0 1 0 W A
Program AOUT2 MSB 0 1 0 1 1 W B
Conversie/actualizare
AOUT1/AOUT 0 1 1 x x W C, D, E sau F
Clear AOUT1/AOUT2 1 0 0 x x W 10,11,12 sau 13

4.PIT 8254

NUM 0 1 0 1 0 0 R/W 14
NUM 1 1 0 1 0 1 R/W 15
NUM 2 1 0 1 1 0 R/W 16
Cuvnt de control 1 0 1 1 1 W 17
-----------------------------------------------------------------

cu x s-a notat un bit a crui valoare nu conteaz pentru respectiva combinaie.
Este important de subliniat c unele din locaiile de adres din spaiul I/E al calculatorului sunt deja ocupate de
porturile interne i alte periferice. Dac modulul ADA 2100 ncearc s utilizeze locaiile de adres I/E deja
folosite de un alt dispozitiv din sistem va rezulta un conflict de adresare. De aceea modulul nu va mai fi
operaional sau va opera defectuos.
Pentru a evita aceast situaie se folosete un circuit de selecie a adresei de baz cu jumper. Prin schimbarea
poziiei acestuia la conectorul notat P2, se poate selecta adresa de baz I/E (BA) la oricare din cele 8 locaii de
mai jos:
200 240 280 2C0 300 340 380 3C0
4-88
Modulele livrate de firma sunt selectate de la adresa de baz 200H.
4.4.5 Modul de configurare al modulului
n tabelul de mai jos se prezint funciile configurabile ale modulului i modul cum sunt setate de firm:
Funcie | Setare de firma
-----------------------------------------------------------------------------------------------
1.Adresa de baz I/E | 200 hex
2.Tip canal de intrare analogic | 4 canale difereniale
3.Selecia canalului analogic
de intrare | Controlabil prin software
4.Selecia ctigului intrrii
analogice | Controlabil prin software
5.Domeniul i polaritatea tensi | Este specificat de utilizator
unii analogice de intrare | la comandarea interfeei
6.Monitorizarea semnalului EOC | Conectat la bit A7 PPI
7. Polaritatea tensiunilor ana | Domeniu unipolar pozitiv
logice de ieire
8.16 linii I/E de la PPI i circu
it numrtor/periodizator pro
gramabil (PIT) | Controlabile prin software
9.Moduri de lucru | Controlabile prin software
10.Configuraie I/E PIT | Intrare ceas: 5 MHz
| Intrare GATE: +5 V
11.ntreruperi | Dezactivate
-----------------------------------------------------------------

4.4.6 Descriere la nivel de schem bloc
Modulul ADA 2100 are 4 blocuri mari funcionale:
lanul de conversie analog-numeric (A/N)
lanul de conversie numeric-analogic (N/A)
circuitul interfa paralel programabil (PPI)
circuitul numrtor/periodizator programabil (PIT)
4.4.6.1 Lanul de conversie analog-numeric
Principala funcie a modulului ADA 2100 este de a asigura faciliti de conversie analog-numeric de mare
vitez pentru achiziia de date.
Circuitele de conversie analog-numerice primesc intrri de la 4 canale analogice difereniale sau 8 canale
simple, selecteaz un canal activ i realizeaz conversia analog-numeric a valorii tensiunii citite pe acel canal.
Viteza de conversie este tipic de 38 KHz.
Multiplexoarele
Este folosit un multiplexor analogic de 8 bii pentru a conecta fie unul din cele 8 canale SE fie unul din cele 4
4-89
difereniale la circuitul de ctig. Cele 3 comutatoare S1 cele mai din stnga modulului programeaz
multiplexorul s primeasc intrri difereniale sau SE aa cum a fost descris anterior. Selecia unuia din canale
se face prin program scriind numrul de canal (0,1,2 3) n cei 4 bii LSB ai portului B al PPI (BA+1).
Cnd cele 3 switch-uri sunt sus, multiplexorul este programat SE, iar cnd sunt jos, este configurat diferenial.
Circuitele de control al ctigului (amplificarea)
Circuitele de control al ctigului programabil pot oferi un factor de ctig de 1, 2, 4, 8 sau 16. Selecia
ctigului se face prin scrierea n registrul B al PPI (adresa BA + 1), tetrada MSB (tetrada are valorile 0 ctig
1, 1 ctig 2, 2 ctig 4, 4 ctig 8, 8 ctig 16). Factorul de ctig este controlat prin setarea a 4 comutatoare
analogice. Pentru un ctig de 2, 4, 8 sau 16 aceast operaie de scriere va nchide unul din cele 4 comutatoare;
n cazul ctigului unitar toate comutatoarele sunt deschise. Nu se recomand programarea altor factori de
ctig dect cei 5 artai mai sus.
Circuitele de eantionare-memorare (S/H)
Un circuit de eantionare i memorare (S/H - sample and hold) este folosit ntre ieirea circuitelor de control al
ctigului i intrarea A/N pentru a asigura ca semnalele analogice dinamice s fie digitizate precis de ctre
convertorul A/N. Se folosete un condensator de 0.001 mF ce minimizeaz timpul de achiziie (6 microsec.
tipic). Timpul i viteza de eantionare i memorare sunt determinate de semnalul EOC generat de convertorul
A/N. Cnd EOC este 1, logic amplificatorul eantioneaz intrarea analogic; cnd EOC este 0 amplificatorul
memoreaz intrarea.
Convertorul A/N (HI 574)
Convertorul A/N este un circuit integrat ce realizeaz o conversie de mare vitez pe 12 bii cruia i corespunde
o conversie n aproximativ 20 microsec. Se pot efectua de asemenea conversii pe 8 bii n aplicaiile n care
viteza este mai critic dect rezoluia. Conversiile pe 8 bii dureaz aproximativ 13 microsec., permind
conversii rapide a intrrilor analogice dinamice. Convertorul suport semnale de intrare analogice de 10 sau 20
V; ns nu poate suporta domeniu de intrare unipolar de 20 V deoarece tensiunea de alimentare n aplicaiile cu
ADA 2100 este de numai +12 V.
O conversie pe 8 sau 12 bii este iniiat printr-o operaie de scriere la adresa I/E corespunztoare. O dat ce o
conversie a nceput, starea acesteia poate fi urmrit prin citirea semnalului de stare al convertorului A/N (STS)
care este o ieire a circuitului convertor A/N i inversat nainte de a fi folosit de alte circuite de pe interfa ca
semnal EOC (End-Of-Convert). Semnalul EOC este 0 logic n timpul unei conversii.
4.4.6.2 Realizarea unei citiri A/N
Dup ce s-a selectat o intrare analogic i s-a setat ctigul, se poate efectua o citire A/N. De notat c odat
ctigul i canalul setate, ele rmn la aceste valori pn ce utilizatorul le modific. Deci nu trebuie setate la
fiecare citire A/N.
De fiecare dat cnd se termin o conversie A/N, se genereaz un semnal EOC.
Se poate monitoriza starea conversiei A/N cu acest semnal prin configurarea bit 7 al port A sau port C ca linii de
intrare i conectarea semnalului EOC pe aceast linie. Pentru o conversie pe 12 bii, data A/N citit este aliniat
la stnga ntr-un cuvnt pe 16 bii cu cei mai puin semnificativi 4 bii egali cu 0 aa cum se observ mai jos:
MSB
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
DB12 DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 0 0 0 0
4.4.6.3 Circuitele de conversie numeric-analogic
Dou ieiri analogice obinute de ctre un convertor N/A pe 12 bii sunt disponibile n conectorul de I/E .
Tensiunea de referin (de 10 V) se obine cu ajutorul circuitului integrat REF01.
Conversia numeric-analogic (N/A) de 12 bii este realizat cu ajutorul convertorului dublu de tip AD 7537.
Tensiunile de ieire sunt disponibile prin intermediul unor amplificatoare operaionale de tip AD 712, care
4-90
realizeaz scalarea semnalelor.
4.4.6.4 Interfaa paralel programabil (PPI - I8255)
PPI ofer 16 linii numerice I/E TTL/CMOS care pot fi configurate n funcie de necesiti. Liniile disponibile
pentru intrri/ieiri numerice sunt porturile A i C. PPI 8255 are n total 24 linii I/E numerice, dintre care 8 sunt
folosite pentru a controla selecia canalului A/N i circuitul de ctig (port B). Celelalte 16 linii sunt disponibile
pentru exterior la conectorul P15. Portul C este subdivizat n 2 porturi de 4 bii port C low (CL) (PC0-PC3) i
port C high (CH) (PC4-PC7). Portul B este ntotdeauna n mod 0 ieire, fiind rezervat. Foile de catalog pentru
PPI 8255 prezint detaliile necesare pentru programare.
4.4.6.5 PIT numrtor/periodizator programabil (I8254)
Acest circuit integrat conine 3 numrtoare/periodizatoare pe 16 bii independente TC0, TC1, TC2 care
realizeaz funcia de numrare napoi. Aceste numrtoare pot lucra cu incremeni de timp pn la 125 nsec.
Cea mai uzual folosire este de a programa intervale de timp precise. Cele 3 circuite numrtor/periodizator sunt
independente, ele putnd fi cascadate pentru numrri inverse mai mari dect capacitatea de 16 bii. De exemplu
semnalul OUT al TC0 se poate conecta la CLK pentru TC1 i OUT de la TC1 la CLK de la TC2.
Oricare din ieirile OUT0 - OUT2 poate fi utilizat la ntrerupere pentru PC.
Foile de catalog pentru 8254 prezint detaliile necesare pentru programare.
4.4.7 Prezentarea comutatoarelor i a programatoarelor hardware
S1 - selecie tip semnal de intrare analogic
S1 reprezint un set de 4 comutatoare (switch-uri) ce au rolul de a configura multiplexoarele pentru intrri SE
sau difereniale i selecteaz o gam de tensiuni de intrare unipolare sau bipolare. Primele 3 comutatoare ale lui
S1 opereaz ca un grup. Cnd ele sunt n poziia superioar multiplexoarele sunt configurate pentru intrri
simple. Cnd toate sunt n poziie inferioar multiplexoarele sunt configurate pentru intrri difereniale. Pentru
ca multiplexoarele s funcioneze corect este obligatoriu ca toate comutatoarele 1...3 s fie n aceeai poziie.
Cel de-al patrulea controleaz polaritatea tensiunii de intrare. Cnd switch-ul e n poziie superioar gama
tensiunii de intrare este unipolar; poziiei sale inferioare i corespunde o gam bipolar.
Acest comutator, n conjuncie cu selecia gamei tensiunii, setat la conectorul P9, determin tensiunile de
intrare analogice suportate de convertorul A/N. De subliniat c n cazul oricrei schimbri a polaritii, trebuie
calibrat circuitul de conversie A/N.
P2 - conector pentru fixarea adresei de baz
Modul de selectare a adresei de baz a fost prezentat anterior.
P3 - conector I/E pentru circuitul numrtor/periodizator (PIT)
PIT conine 3 circuite numrtor/periodizator independente de 16 bii fiind un modul de tip I8254. Fiecare din
aceste circuite are 3 semnale I/E asociate cu: ceas (CLK), poart (GATE) i ieire (OUT). Fiecare dintre
numrtoare este setat de firm astfel:
- intrare ceas (CLK
i
) - XTAL (generator intern de 5 MHz)
- poart (GT
i
) - la +5V
- ieire (OUT
i
) - CO
i

unde i = 0, 1, 2
Conectorul P3 este poziionat n 3 grupuri funcionale TC0, TC1 i TC2 ce corespund celor 3 timere. Pentru
TC0 corespund semnalele CK0, GT0 i OUT0 n dreapta P3 cele 3 corespunznd numrtorului 0 i n stnga
XTAL, ECO, +5 V, EG0, CO0 i CO0 negat;
unde: EC0 = External Clock - ceas extern
EG0 = External Gate
4-91
CO0, CO0 negat = Clock Output - ieire numrtor
Deci ceasul poate fi conectat la XTAL sau EC0 (sursa extern), validarea numrtorului (prin intrarea GATE) la
+5V sau EG0 (validare extern) oferindu-se i ieirea negat (CO0 negat).
Analog pentru TC1 si TC2 n cazul celorlalte timere.
Se pot cascada cele 3 timere prin legarea ieirii unuia la intrarea celuilalt. EC
i
sunt legate mpreun la pinul 33
al conectorului P8 de I/E, EG
i
sunt legate la pinul 35 al conectorului P8, iar una dintre cele 3 ieiri OUT
i
se
poate lega prin jumper la pinul 36 din conectorul P8.
P5, P7 - conectori pentru ntreruperi
Conectorii P5, P7 sunt utilizai pentru a conecta diversele semnale generate de ADA2100 la canalele de
ntreruperi ale calculatorului. Canalele de ntrerupere disponibile pe modul sunt IRQ2...IRQ7. De notat c la un
moment dat n calculator o singur ntrerupere poate fi conectat la un canal de ntrerupere.
Trebuie evitate conflictele la selectarea canalelor de ntrerupere att cu semnalele ADA 2100 ct i cu alte
dispozitive din calculator.
Sursele de ntrerupere la ADA2100 sunt ieiri de tip TTL totem-pole i nu open-collector, deci nu se vor conecta
mpreun 2 astfel de surse de ntrerupere.
P5 - ntreruperile de la ieirile PIT
Conectorul P5 prezentat n figura de mai jos este folosit pentru a conecta una din ieirile OUT0, OUT1 sau
OUT2 la unul din canalele de ntrerupere IRQ2...IRQ7 ale calculatorului. Selecia se face tot cu 2 jumperi (unul
selecteaz ntreruperea, cellalt ieirea). n figura de mai jos se arat modul de plasare al jumperilor astfel nct
OUT2 s fie conectat la IRQ3.

P5 |---- |
| | IRQ7
| | IRQ6
| | IRQ5
| | IRQ4
| - - | IRQ3
| | IRQ2
| | OUT0
| | OUT1
| - - | OUT2
|---- |
P7 - ntrerupere generat de A/N End-Of-Convert (EOC)
Conectorul P7 prezentat mai jos este folosit pentru a conecta semnalul Sfrit de Conversie (EOC) al
convertorului A/N la una din liniile de ntrerupere IRQ2...IRQ7. Semnalul EOC este conectat la canalul IRQ
prin instalarea unui singur jumper orizontal peste pinii canalului IRQ selectat. n exemplul de mai jos se arat
modul de conectare al semnalului EOC la IRQ4.
P7 |----|
| | IRQ7
| | IRQ6
| | IRQ5
| -- | IRQ4
| | IRQ3
| | IRQ2
4-92
|--- |
P6 - conector pentru monitorizarea EOC
Aa cum s-a amintit mai sus, semnalul EOC poate fi utilizat pentru a genera o ntrerupere. Dac acest semnal nu
este utilizat ca o ntrerupere, el poate fi utilizat pentru urmrirea prin polling a strii procesului de conversie
A/N. Conectorul P6 ofer 2 linii prin care EOC poate fi monitorizat de la PPI, PA7 sau PC7. Una din aceste 2
linii I/E digitale este selectat pentru monitorizarea EOC prin instalarea unui jumper orizontal peste perechea de
pini corespunztoare.
Linia numeric I/E selectat, PA7 sau PC7, trebuie s fie configurat ca intrare n mod 0 la programarea PPI.
n figura de mai jos se prezint P6 cu un jumper instalat n poziia setat de firm pentru monitorizarea EOC
prin PA7:
P6 |----|
| | PC7
| -- | PA7
|----|
P9 - Conector pentru selecia domeniului tensiunii convertorului A/N
Conectorul P9 ilustrat n figura de mai jos este folosit pentru a selecta tensiuni de intrare analogice a
convertorului analog-numeric.
Un jumper este instalat vertical peste pinii marcai 10V pentru a suporta un domeniu de 10 V (0 la 10 V, fie -5
la +5 V) sau peste pinii marcai 20 V pentru a suporta un domeniu de 20 V (-10 la +10 V). Fixarea acestui
jumper n conjuncie cu fixarea comutatorului DIP S1-4 care selecteaz un domeniu unipolar sau bipolar,
determin domeniul tensiunii de intrare al convertorului A/N. P9 este configurat de firm n concordan cu
specificaiile clientului pentru domeniul tensiunii de intrare.
Combinaiile valide ale P9 i S1-4 sunt ilustrate mai jos:
Domeniu Setare P9 Setare S1-4
-5 V la +5 V 10 V (dreapta) jos (bipolar)
0 V la +10 V 10 V (dreapta) sus (unipolar)
-10 V la +10 V 20 V (stnga) jos (bipolar)
|-----|
P9 20 V| | | 10 V
|-----|
P10 - conector pentru fixarea polaritii tensiunilor de ieire
Este utilizat pentru a selecta polaritatea tensiunilor de ieire pe cele dou ieiri analogice AOUT1 i AOUT2.
Fiecare canal poate fi ieire unipolar (+) sau bipolar (-/+). Selecia se face cu jumpere instalate vertical ca n
figura de mai jos.
AOUT1 AOUT2
----- -----
----------- P10
| |
| | | |
| |
-----------
+ + + +
/ /
- -
4-93
Asignarea pinilor la conectorul P8
Nr. pin Nume semnal Nr. pin Nume semnal SE/DIFF
1 AN1/AN1+ 2 GND
3 AN5/AN1- 4 GND
5 AN2/AN2+ 6 GND
7 AN6/AN1- 8 GND
9 AN3/AN3+ 10 GND
11 AN7/AN1- 12 GND
13 AN4/AN4+ 14 GND
15 AN8/AN1- 16 GND
17 GND 18 GND
19 AOUT1 20 GND
21 AOUT2 22 GND
23 GND 24 GND
25 PC7 26 PC6
27 PC5 28 PC4
29 PC3 30 PC2
31 PC1 22 PC0
33 EXTCLK 34 GND
35 EXTGATE 36 CLKOUT
37 +12V 38 +5V
39 -12V 40 GND
4.4.8 Proceduri de calibrare
Se prezint procedurile de calibrare pentru domeniul tensiunii de intrare a convertorului A/N i ctigul acestuia.
n funcie de comanda specific a utilizatorului performanele ADA2100: offsetul i captul de scal pentru
convertor sunt calibrate de firm. Circuitul de ctig este de asemenea calibrat nainte de trimitere. Urmtoarea
procedur permite o verificare rapid a preciziei acestor circuite.
Dup calibrare se alimenteaz calculatorul i se permite ADA2100 un interval de 15 min. pentru stabilizare.
Echipament necesar pentru calibrare
- surse de tensiune de precizie: 0 - +(-)10 V
- voltmetru digital: 5 - 1/2 digii
- urubelni mic (pentru ajustare poteniometre)
Calibrarea A/N
n timpul acestei proceduri trebuie fcute conexiuni la cteva din intrrile analogice pe conectorul I/E extern P8.
Sunt necesare 2 ajustri pentru a calibra complet convertorul A/N pentru operaii unipolare sau bipolare.
Acestea afecteaz offset-ul i captul de scal. Ambii pai ai calibrrii se efectueaz folosind poteniometrele
TR5 i TR6 sau TR6 i TR7. TR5 sau TR7 se folosesc pentru a aduce la zero eroarea de offset a convertorului
A/N i TR6 se folosete pentru ajustarea captului de scal. n urmtoarea procedur se folosete canalul
analogic 1 de intrare i se alege ctigul 1 pentru el. Aceasta se realizeaz prin scrierea de zerouri la locaia de
adres I/E BA+1. Trebuie s v asigurai c seciunea 4 a comutatorului S1 este setat pentru polaritatea dorit
i jumperul de pe conectorul P9 este n poziia 10V.
Calibrarea unipolar
4-94
Sunt necesare dou ajustri pentru a calibra convertorul A/N pentru domeniul unipolar de 0...+10V, una pentru
offset i cealalt pentru captul de scal. Pentru a ajusta offset-ul, o tensiune analogic de intrare foarte mic,
artat sub rubrica Offset n tabelul de mai jos, este aplicat la canalul 1 al multiplexorului (P8-1). La P8-2
se conecteaz referina pentru mas. Afind continuu conversiile analog/digitale se ajusteaz TR7 pn cnd
datele oscileaz ntre cele dou valori specificate n tabel la rubrica Offset.
Dup aceea se folosete TR6 pentru ajustarea valorii captului de scal. Dei tensiunile de intrare pentru captul
de scal specificate n tabel nu reprezint de fapt captul de scal pentru un domeniu ideal de 0...+10V, ele
reprezint tensiunile maxime pentru care conversia analog digital este garantat a fi liniar. Orice valoare peste
aceast limit depete domeniul liniar i afecteaz calibrarea corect. Dup conectarea tensiunii de capt de
scal la canalul 1 de intrare, se ajusteaz TR6 pn cnd datele vor oscila ntre cele dou valori din rubrica
Cap de scal.
Calibrare unipolar ( domeniul 0...+10V )

| Offset ( TR7 ) | Cap de scal ( TR6 )
---------------------------------------------------------------
Tensiune de | |
intrare | +1,22070 mV | +9,49829
---------------------------------------------------------------
Date A/N | 0000 0000 0000 | 1111 0011 0010
| 0000 0000 0001 | 1111 0011 0011
Calibrare bipolar
Dac se selecteaz un domeniu de intrare pentru tensiuni de la -5V la +5V sau -10V la +10V procedura de
calibrare este aceeai. Deci jumperul pe conectorul P9 va fi instalat n poziia 10V. Dac se lucreaz cu gama de
tensiuni -10V...+10V, se va repoziiona jumperul pe poziia 20V numai dup efectuarea procedurilor de
calibrare de mai jos.
Sunt necesare dou ajustri pentru a calibra convertorul, una pentru offset iar cealalt pentru capt de scal.
Pentru a ajusta offsetul se conecteaz o tensiune ca cea afiat n rubrica Offset din tabelul de mai jos la
canalul 1 al multiplexorului. n timp ce se afieaz rezultatul conversiei pe 12 bii, se ajusteaz TR5 pn cnd
data va lua una din valorile din rubrica Offset. Dup aceea se conecteaz tensiunea de capt de scal din tabel
la canalul 1 i se ajusteaz TR6 pn cnd data ia valoare ntre cele dou limite din tabel n rubrica Capt de
scal.
Calibrare bipolara ( domeniul -5V...+5V sau -10V...+10V )

| Offset ( TR5 ) | Cap de scala ( TR6 )
---------------------------------------------------------------
Tensiune de | |
intrare | -4,99878 V | +4,99634 V
---------------------------------------------------------------
Date A/N | 0000 0000 0000 | 1111 1111 1110
| 0000 0000 0001 | 1111 1111 1111

Tabelul de mai jos ofer o referin pentru tensiunea de intrare ideal pentru convertorul A/N pentru ponderea
fiecrui bit n fiecare domeniu de tensiuni.
Tabelul arat captul ideal de scal (toate poziiile 1) n prima linie i apoi cte un zero n liniile urmtoare
corespunztor unor bii. Valorile tensiunilor sunt date n mV.
4-95
Ponderea biilor pentru convertorul A/N
Pondere bit | Tensiune de intrare ideala (mV)
A/N | -----------------------------------------------
| -5V...+5V | -10V...+10V | 0...+10V
--------------------|-----------------|-------------------|----------------
4095-Cap scal | +4997,6 | +9995,1 | +9997,6
2048 | 0000,0 | 0000,0 | +5000,0
256 | -4375,0 | -8750,0 | +625,0
32 | -4921,9 | -9843,8 | +78,125
4 | -4990,2 | -9980,5 | +9,7656
0 | -5000,0 | -10000,0 | 0,0000
----------------------------------------------------------------
Calibrarea circuitului de ctig
Pentru ajustarea circuitului de ctig se folosesc poteniometrele TR1-TR4, cte unul pentru ctigurile de 2, 4, 8
i respectiv 16. Pentru a calibra acest circuit se aplic o tensiune de 39,063 mV la intrarea canalului 1. Dup
aceea, prin scrierea cuvntului corect la locaia BA+1, se seteaz ctigul la 2 i se ajusteaz poteniometrul TR1
pentru a obine ieirea convertorului A/N pe 12 bii pentru gama tensiunilor pe modul aa cum se prezint n
tabelul de mai jos. Se repet dup aceea procedura pentru celelalte 3 ctiguri ajustnd poteniometrul
corespunztor pn se ating valorile corecte din tabelul de mai jos:
Ctig | Poteni- | Domeniul tensiunii de intrare
| ometrul | -5V...+5V | -10V...+10V | 0...+10V
----------|------------|--------------------|----------------------|-------------
2 | TR1 | 100000100000 | 100000010000 | 000000100000
4 | TR2 | 100001000000 | 100000100000 | 000001000000
8 | TR3 | 100010000000 | 100001000000 | 000010000000
16 | TR4 | 100100000000 | 100010000000 | 000100000000
-----------------------------------------------------------------
4.4.9 Conectarea modulului la proces
Legarea la proces se face prin intermediul unui conector de 40 de pini montat pe modul (P8). n conector se
introduc panglicile cu conectoare pereche ale celor de pe modul, acestea fiind livrate o dat cu modulul i
etichetate la captul dinspre proces. Panglica pentru semnale analogice este realizat ntr-un mod adecvat
semnalelor analogice, avnd fiecare intrare torsadat cu cte un fir de masa. Legarea efectiv la proces se face
prin intermediul conectoarelor originale ale panglicilor.
4.4.10 Programe de test
Exist programe de test pe disc flexibil realizate de firma "RTD" Inc vezi laborator.
4.4.11 Programarea modulului ADA 2100
n acest paragraf se prezint modul de programare a modulului ADA2100 pentru achiziia pe canalele
analogice de intrare; programarea interfeelor PPI I8255 i PIT I8254 este prezentat n foile de catalog.
Iniializarea ADA2100
nainte de a utiliza n program ADA2100, modulul trebuie iniializat. Acest lucru trebuie fcut ori de cte ori
calculatorul este pornit sau resetat. Prin iniializare se programeaz PPI astfel nct s comunice cu circuitele
de conversie analog/numeric. Dac nu se face iniializarea, modulul nu va rspunde corect la comenzi, iar
4-96
efectele sunt imprevizibile.
Aa cum s-a artat anterior, ADA2100 ocup n spaiul de I/E al calculatorului 17h locaii de adres, ncepnd
cu o locaie care constituie baza; se va utiliza pentru aceast locaie denumirea simbolic BA. Deci spaiul I/E
pentru ADA2100 este ntre BA i BA+17h.
Iniializarea modulului se face simplu, scriind cuvntul de control pentru PPI la locaia BA+3.
Cuvntul de control pentru PPI I8255 este:
4-97
D7 D6 D5 D4 D3 D2 D1 D0
| | | | | | | | __________________
| - | | | | | | GROUP B |
| | | | | | | ----------------------------
| | | | | | |->| PORT C (LOWER) |
| | | | | | |1=INPUT,0=OUTPUT|
| | | | | | ----------------------------
| | | | | |-------> | PORT B |
| | | | | |1=INPUT,0=OUTPUT|
| | | | | -----------------------------
| | | | |-------------> | MODE SELECTION |
| | | | | 0=MODE 0 |
| | | | | 1=MODE 1 |
| | | | ----------------------------
| | | | __________________
| | | | | GROUP A |
| | | | -----------------------------
| | | |-------------------> | PORT C (UPPER) |
| | | | 1=INPUT,0=OUTPUT|
| | | -----------------------------
| | |-----------------------> | PORT A |
| | | 1=INPUT,0=OUTPUT |
| | ------------------------------
| |---------------------------> | MODE SELECTION |
| | 00=MODE 0 |
| | 01=MODE 1 |
| | 1x=MODE 2 |
| ------------------------------
| __________________
|-----------------------------------> | MODE SET FLAG |
| 1=ACTIVE |
---------------------------
Cuvntul de control pentru iniializarea ADA2100 trebuie s aib forma general
1xxxx00x, unde x poate lua orice valoare 1 sau 0.
Acest cuvnt de control asigur c cele 8 linii ale portului B s fie programate ca ieiri, pentru a fi utilizate s
controleze multiplexorul analogic i circuitele de amplificare (gain). Prin biii care sunt simbolizai cu x n
cuvntul de control, se poate face programarea celorlalte 16 canale binare de I/E (porturile A i C) n orice mod
de lucru posibil.
De exemplu pentru cuvntul de control 10000000 (128 n zecimal) iniializarea se face cu instruciunile n
asamblare
mov dx,BA+3
mov al,128
out dx,al

4-98
n acest caz, i porturile C i A sunt programate ca ieiri, putnd fi disponibile pentru comenzi n proces la
conectorul P8.
Dac iniializarea se face cu 10001001 (137 zecimal), portul C este programat ca intrri numerice.
De notat c portul A bitul 7 (PA7), poate fi configurat s permit monitorizarea semnalului EOC de la
convertorul analog-numeric. n acest caz, trebuie ca portul A s fie programat ca intrri numerice, cuvntul de
control avnd forma general 1xx1x00x.
Portul B este dedicat pentru selecia canalului analogic de intrare i a amplificrii. Cei mai puin semnificativi 4
bii ai portului B (PB0-:-PB3) controleaz selecia canalului, iar cei mai semnificativi 4 bii controleaz selecia
amplificrii.
Asignarea biilor n port este:
MSBs LSBs
7 6 5 4 3 2 1 0 PPI port B (BA + 1)
\___^____/ \___^____/
gain select channel select

0000 = 1x 0000=channel 1
0001 = 2x 0001=channel 2
0010 = 4x 0010=channel 3
0100 = 8x 0011=channel 4
1000 = 16x 0100=channel 5
0101=channel 6
0110=channel 7
0111=channel 8
Imediat dup iniializare, portul B se ncarc cu valoarea 0, corespunztor canal 1, amplificare 1x. Pentru a
schimba aceast programare, de exemplu pentru canal 8 amplificare 2x, se scrie secvena de program
mov dx,BA+1
mov al,00010111b
out dx,al

Selectarea unui canal analogic de intrare
Canalul analogic de intrare se selecteaz cu cei mai puin semnificativi 4 bii din portul B al PPI, care se gsete
la adresa BA+1.
Algoritmul general de selectare a canalului este:
1. Citete starea curent a portului B
2. Reine cei mai semnificativi 4 bii, pentru a pstra amplificarea
3. Depune numrul de canal n cei mai puin semnificativi bii
4. Scrie noua valoare n portul B.
O secven de program n asamblare pentru selecia canalului 6 (de exemplu) este:
mov dx,BA+1
in al,dx
and al,0f0h
or al,6-1
out dx,al

4-99
Setarea amplificrii pe intrrile analogice
Configuraia celor mai semnificativi 4 bii ai portului B pentru setarea amplificrii a fost prezentat mai sus.
Algoritmul general pentru setarea amplificrii este:
1. Citete starea curent a portului B
2. Pstreaz cei mai puin semnificativi 4 bii, pentru a nu schimba canalul
3. Seteaz noua amplificare cu una din valorile (n zecimal):
pentru 1x ---- 0
pentru 2x ---- 16
pentru 4x ---- 32
pentru 8x ---- 64
pentru 16x ---- 128
4. Scrie noua valoare n portul B. Secvena de program n asamblare pentru setarea amplificrii 8x (de
exemplu) este:
mov dx,BA+1
in al,dx
and al,0fh
or al,64
out dx,al
Programarea i citirea convertorului analog-numeric
Dup ce s-a fcut selecia canalului i setarea amplificrii, se poate face citirea valorii convertit, ori de cte ori
este nevoie. Schimbarea canalului i/sau amplificrii se face numai atunci cnd este nevoie de alte valori pentru
ele, nu la fiecare citire din convertor.
Ori de cte ori o conversie analog-numeric este complet, se genereaz semnalul end-of-convert (EOC) pentru
a specifica sfritul conversiei. Acest semnal poate fi utilizat n mai multe feluri:
conectat la bitul 7 din portul A al PPI (PA7)
conectat la bitul 7 din portul C al PPI (PC7)
conectat la una din ntreruperile IRQ2-:-IRQ7.
Conectarea la PA7 sau PC7 se face n conectorul P6, iar la una dintre ntreruperi n conectorul P7.
Algoritmul general pentru controlul conversiei analog-numerice pe 12 bii i citirea valorii convertite este:
1. Starteaz o conversie pe 12 bii, executnd o instruciune OUT la BA+4 (sau BA+6); nu conteaz
valoarea care se scrie n port
2. Ateapt 20 microsecunde sau testeaz prin polling starea semnalului EOC pe PA7 (sau PC7)
3. Citete octetul cel mai puin semnificativ al valorii convertite, de la BA+5 (sau BA+7)
4. Citete octetul cel mai semnificativ al valorii convertite, de la BA+4 (sau BA+6)
5. Combin cei doi octei ntr-o valoare pe 12 bii, utiliznd relaia:
rezultat=(MSB*16)+(LSB div 16)
Este nevoie de ajustarea valorii citite (pasul 5), deoarece modulul ofer o valoare pe 12 bii prin intermediul a
dou porturi pe 8 bii; acestea constituie un cuvnt pe 16 bii, n care cei 12 bii ai valorii convertite sunt cadrari
la stnga, ca n figura de mai jos:
MSB LSB
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
4-100
DB12 DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 0 0 0 0
Formatul cuvntului de conversie A/N
Dup ce se citete i ajusteaz valoarea, aceasta trebuie scalat n funcie de domeniul i polaritatea tensiunii
de intrare:
Domeniu de intrare Factor de scalare Greutatea pe bit
------------------ ----------------- -----------------
+/- 5V Scade 2048 2.4414 mV
+/- 10V Scade 2048 4.8828 mV
0 la 10V NU 2.4414 mV
De exemplu, dac valoarea citit este 1024 iar domeniul de intrare este +/-5V, tensiunea analogic de intrare
este calculat astfel:
(1024-2048)*2.4414mV/bit=-2.49999 V.
Pentru +/-10V la intrare, aceast tensiune se calculeaz astfel:
(1024-2048)*4.8828mV/bit=-4.9999V.
Pentru 0 -:- 10V la intrare, nu se face scalare, i tensiunea se calculeaz astfel:
1024*2.4414mV/bit=2.49999 V.
Pentru conversia din voli n uniti inginereti corespunztoare mrimii achiziionate (atm, bari, Amperi, m/s
etc), se ine cont dac traductorul de intrare are sau nu caracteristica de intrare/ieire liniar. Dac da, se poate
face translatarea de domeniu din voli n valori inginereti, n caz contrar urmnd a se consulta cartea tehnic a
traductorului.
De notat c ADA2100 efectueaz i conversii pe 8 bii. Startul conversiei se d cu o instruciune OUT la adresa
BA+5 (sau BA+7). Dei are o rezoluie mai proast, conversia pe 8 bii este uneori preferat, datorit vitezei mai
mari a ciclului de conversie (13s n loc de 20s ct este la conversia pe 20bii).
Observaii:
1. n aplicaii, este bine ca chiar dac programarea conversiei i citirea datelor se fac n limbaj de
asamblare, conversia n voli i n uniti inginereti s se fac n limbaj evoluat (C, PASCAL, BASIC
etc.). Limbajele evoluate conin de regul i funcii de I/E care permit programarea porturilor.
2. Pentru aprofundarea modului de programare a modulului ADA2100 n diverse limbaje, se vor studia
programele sursa livrate de firma productoare. Acestea conin exemple care prezint diverse moduri
de utilizare a modulului ADA2100 pentru achiziia de date.
Problem propus
S se adapteze programul de prezentat la 4.3.4 i s se scrie funciile can()i cna()pentru cazul n care
sistemul de achiziie de date i control este realizat cu ADA2100.
5-101
5 SISTEME DE OPERARE TIMP - REAL MULTITASKING

5.1 Introducere
O metod uzual de a structura o aplicaie timp - real este aceea de a realiza un numr de task-uri cooperante
care se execut concurent (pentru task vezi i 6.1). n mod uzual, proiectarea i implementarea aplicaiei timp -
real se poate face mai uor dac sistemul de operare (SO) utilizat suport prelucrri multitasking.
Este cunoscut c SO tradiionale se bazeaz pe aceea c toate aplicaiile sau task-urile din sistem sunt executate
concurent pe o singur UC cu un singur procesor. n contrast, procesarea paralel presupune ca mai multe
procesoare s lucreze n paralel, fiecare dintre ele executnd concurent task-uri. Sistemele cu procesare paralel
au un cost ridicat i n majoritatea aplicaiilor timp - real raportul performan/cost determin utilizarea unui
sistem cu un singur procesor i cu SO adecvat pentru execuia concurent a task-urilor.
Pentru nceptori, o confuzie poate aprea ntre proprietile multiuser i multitasking ale SO.
Proprietatea multiuser a SO asigur c fiecare utilizator execut propria aplicaie ca i cnd ar avea la dispoziie
toate resursele calculatorului:





Utilizator 1 Utilizator i
Program 1
Date 1
Program i
Date i
SO

Hardware
Fig. 5.1-1 Execuia multiuser
5-102

Fiecare program (aplicaie) ruleaz n propriul mediu, protejat fa de celelalte aplicaii.
Proprietatea multitasking a SO se refer la faptul c acesta gestioneaz mai multe task-uri care coopereaz n
cadrul unei aplicaii, n vederea realizrii funciilor pentru care aceasta a fost proiectat. Cooperarea presupune
c task-urile comunic ntre ele prin mesaje i c partajeaz date comune.



n aplicaiile multitasking comunicarea ntre task-uri i partajarea datelor se face prin intermediul unor primitive
iar SO previne accesele nepermise la datele partajate. De asemenea, se asigur protecia datelor private task-
urilor. (De notat ns c interferenele voite sau care sunt recunoscute ca voite de SO nu pot fi prevenite SO
presupune c task-urile coopereaz).
Uzual, n sistemele timp - real ncorporate (Embedded Real-Time Systems), aplicaia timp - real care ruleaz
pe suportul hardware este alctuit din Sistemul de Operare Timp - Real Multitasking (SOTRM) i task-urile
care implementeaz funciile aplicaiei sau funcii de sistem. Principalele atribuii ale SOTRM se refer la:
Alocarea resurselor: O cerin important la un SO este alocarea resurselor calculatorului la diverse task-uri. n
cadrul aplicaiilor timp - real procedura de alocare este mai complicat pentru c unele dintre activiti sunt
critice n raport cu timpul. Prin urmare, trebuie s existe modaliti i discipline foarte riguroase de asignare a
prioritilor la task-uri i de alocare a timpului UC n concordan cu o anumit schem de prioritate.
Comunicare ntre task-uri: Un task poate utiliza servicii furnizate de ctre alte task-uri i de asemenea serviciile
oferite de el pot fi utilizate de alte task-uri. Prin urmare, SO trebuie s dispun de mecanisme pentru a permite
task-urilor s comunice ntre ele (zone de memorie partajat, mesaje, cutii potale etc). n plus, task-urile pot fi
activate de ctre evenimente externe, SO trebuind astfel s sesizeze evenimentele din mediul extern (de exemplu
prin utilizarea ntreruperilor) i s transfere tratarea lor ctre task-urile asociate.
Gestiunea seciunilor critice: Este frecvent ntlnit situaia n care mai multe task-uri trebuie s acceseze
resurse comune, att hardware ct i software. De aceea, SO trebuie s aib posibilitatea de a preveni ca 2 sau
mai multe task-uri s utilizeze n acelai timp aceste resurse.
Task n
Date n
Utilizatori
Task i
Date i
Date comune
SO

Hardware
Task 1
Date 1
Fig. 5.1-2 Execuia multitasking
5-103
n concluzie, SOTRM trebuie s gestioneze partajarea resurselor, comunicarea, sincronizarea i s planifice i
s dispecerizeze execuia task-urilor conform cerinelor de timp real ale acestora (vezi i capitolul 6). Funciile
SOTRM pot fi repartizate astfel:
gestiunea task-urilor (planificare, dispecerizare);
comunicarea i sincronizarea ntre task-uri;
tratarea evenimentelor externe (uzual, ntreruperi externe);
gestiunea memoriei;
partajarea codului;
partajarea dispozitivelor;
partajarea datelor.
Suplimentar, unele SOTRM au funcii de comunicaii de date, gestiune fiiere sau conin programe utilitare
pentru mentenan, depanare, etc.
Exist SOTRM care coabiteaz cu un SO gazd de uz general precum MS-DOS, Windows, Linux etc. i
utilizeaz ca suport pentru dispozitivele de I/E, gestiunea de fiiere i programe utilitare mijloacele existente n
sistemul de operare gazd. n literatura de specialitate aceste arhitecturi de SO sunt referite ca arhitecturi de tip
"kernel dual".
n continuarea capitolului 5 se prezint noiuni introductive legate de planificarea i dispecerizarea task-urilor
iar n capitolul 6 sunt prezentai algoritmii clasici de planificare a task-urilor n prezena constrngerilor de timp
rigide.
5.2 Gestiunea task-urilor n aplicaii timp - real
Gestiunea task-urilor este fcut de ctre dou module: planificatorul de task-uri, care gestioneaz strile task-
urilor i listele asociate acestora i dispecerul care este responsabil de alocarea UC la task-ul care intr n
execuie. Aceste module constituie nucleul (kernelul) SO. De asemenea, pe lng nucleu exist i task-uri sistem
care ruleaz dup regulile task-urilor utilizator i asigur servicii la nivel de sistem.

Taskuri sistem Taskuri aplicaie
Alocare i gestiune
resurse
Interpretor comenzi

Subsistem de I/E Gestiune fiiere
Nivel utilizator
Planificare i dispecerizare task-uri

Ceas de TR
Rutine de tratare a
ntreruperilor
Fig. 5.2-1 Structura general a unei aplicaii timp - real

Nivel SO
5-104
5.2.1 Tranziia strilor i descriptori de task
Pe un calculator cu un singur procesor numai un task poate rula la un moment de timp dat i din acest motiv
celelalte task-uri trebuie s fie n alt stare dect activ (n execuie). O diagram tipic de tranziie a strilor este
prezentat n figura 5.2.1-1.



1. n starea activ (sau n execuie engl. running) este un singur task care deine controlul procesorului la
un moment de timp dat. Acesta are n mod normal cea mai mare prioritate dintre task-urile care erau
gata de execuie n momentul dispecerizrii.
2. n starea gata de execuie (engl. ready) pot fi mai multe task-uri. Resursele cerute de ctre task trebuie
s fie disponibile pentru ca acesta s poat fi trecut n starea gata de execuie.
3. n starea suspendat, un task poate fi n ateptare (engl. waiting), blocat (engl. locked out) respectiv
ntrziat (engl. delayed). Execuia oricrui task aflat n aceast stare a fost suspendat anterior deoarece
task-ul respectiv solicit resurse care nu erau disponibile sau task-ul ateapt apariia unui eveniment
sau pentru ca task-ul ateapt s treac un interval de timp.
4. Starea inactiv (engl. idle). SOTRM este contient de existena acestui task, dar task-ul nu are alocat
prioritate i nu este nc gata de execuie.
5. Starea inexistent (engl. non-existing). SOTRM nu este contient de existena acestui task, dei el poate
fi rezident n memoria calculatorului.
Gata de execuie
Activ
Lansare n execuie
Suspendat
Suspendare
S
u
s
p
e
n
d
a
r
e

A
c
t
i
v
a
r
e

Inactiv
Pornire iniial
Terminare
Oprire
Oprire
Inexistent
C
e
r
a
r
e

D
i
s
t
r
u
g
e

Fig. 5.2.1-1 Tranziii de stri ale taskurilor
5-105
Strile task-ului pot fi modificate prin aciuni ale SOTRM. De exemplu, dac o resurs devine disponibil /
nedisponibil SOTRM modific starea task-ului care are nevoie de resursa respectiv. De asemenea, strile unor
task-uri pot fi modificate la iniiativa altor task-uri ale aplicaiei.
5.2.2 Descriptori de task
Din prezentarea referitoare la strile task-urilor i din cea referitoare la mecanismul ntreruperilor (capitolul 4)
este evident necesitatea ca SOTRM s pstreze informaii de stare despre fiecare task din sistem. Aceste
informaii sunt memorate n descriptori de task (DT). Un DT este o zon de memorie asociat unui task care
conine cel puin urmtoarele informaii:
identificator de task (ID);
prioritatea task-ului;
starea curent;
zona de memorare a mediului volatil.
Dac SOTRM permite ca task-ul s fie transferat ntre memoria intern i memoria extern, n DT trebuie de
asemenea pstrate informaii referitoare la localizarea imaginii task-ului n memoria extern i dimensiunea
memoriei interne necesar. De asemenea, n DT se pot memora informaii referitore la blocurile de control
pentru fiierele utilizate etc.
n mod uzual, descriptorii sunt memorai ntr-un tablou. Pentru gestiunea task-urilor bazata pe prioriti, fiecare
descriptor conine cmpuri utilizate de ctre planificator i dispecer pentru nlnuirea task-urilor, dup
prioritate, n liste asociate strilor. Acest lucru este ilustrat n figura 5.2.1 2.

Fig. 5.2.1 2 Structura listelor de task-uri conform strilor
activ Cap
Coad
DT
gata de
execuie
Cap
Coad
DT DT
suspendat Cap
Coad
DT DT
inactiv Cap
Coad
DT DT
5-106
5.2.3 Dispecerizarea i planificarea task-urilor
Funcia principal a segmentului din SO care se ocup de planificarea i dispecerizarea task-urilor este aceea de
alocare a timpului procesorului la diverse task-uri, care pot fi periodice, sporadice sau aperiodice (vezi i
capitolul 6).
Planificatorul se ocup de deciziile de alocare de nivel nalt precum cele legate de funcionarea dispozitivelor de
I/E. El recepioneaz informaia despre disponibilitatea resurselor din sistem i trece task-urile din starea
suspendat n starea gata de execuie. De asemenea, poate avea ca sarcin s urmreasc dac task-urile de
prioritate mai mic au ateptat prea mult i s le schimbe prioritatea pentru a se asigura c i ele vor fi lansate n
execuie.
Dispecerul de task-uri este numit i planificator de nivel sczut atunci cnd este apelat comut task-urile
salvnd mediul volatil de execuie al task-ului curent i lansnd n execuie taskul gata de execuie care are cea
mai mare prioritate. De asemenea dispecerul ia decizii imediate de comutare a task-urilor declanat de ctre
evenimente externe (de exemplu ca rspuns la ntreruperea de la un dispozitiv I/E, de la ceasul de timp real etc).
5.2.4 Niveluri de prioritate
Alocarea prioritilor task-urilor n aplicaiile de TR se face fie pre-execuie, n faza de proiectare, fie dinamic,
n timpul execuiei. Prioritatea alocat este n funcie de criteriile luate n considerare de ctre algoritmul de
planificare (vezi i capitolul 6): perioada de lansare n execuie, timpul limit de rspuns etc. Task-urile
periodice sunt trecute n starea gata de execuie la nceputul perioadei de timp asociat fiecrui task. Task-urile
sporadice sau aperiodice sunt trecute n starea gata de execuie la apariia unor evenimente care trebuie tratate.
Un eveniment poate fi generat:
de fenomene care se petrec n mediul extern;
de trecerea unui interval de timp;
de prelucrri interne aplicaiei.
Un criteriu de la care se pornete n gestiunea prioritilor este arhitectura aplicaiei timp - real. Cel mai
frecvent aplicaia este structurat pe mai multe niveluri: rutine de tratare ntreruperi, task-uri periodice (bazate
pe ceas) cu constrngeri de timp rigide i task-uri de baz, fr constrngeri rigide de timp. Prioritile pot fi
grupate pe 3 niveluri mai largi, ca n figura 5.2.3-1:
5-107
Nivelul ntreruperilor (cel mai prioritar): La acest nivel sunt rutinele de serviciu pentru tratarea ntreruperilor
pentru task-urile i dispozitivele care cer un timp de rspuns foarte rapid (uzual de ordinul microsecundelor sau
milisecundelor). Una dintre aceste rutine va trata ntreruperea de la ceasul de timp real i va declana
dispecerizarea task-urilor.
Nivelul de ceas: Conine task-urile periodice, bazate pe ceas. La acest nivel sunt task-urile care cer prelucrare
repetat (periodic), precum task-urile de achiziie i control procese. n unele aplicaii, task-ul cel mai puin
prioritar la acest nivel este planificatorul pentru task-urile la nivelul de baz.
Nivelul de baz task-urile de prioritate mai sczut, care nu au de respectat timpi limit de prelucrare sau care
accept anumite plaje de eroare de timp. Ele pot avea toate aceeai prioritate sau li se pot aloca prioriti
diferite.
Prin urmare, arhitectura unei aplicaii timp - real bazat pe nivelurile de prioritate prezentate mai sus poate fi
modelat pe nivelele:
Rutine de tratare a evenimentelor externe (ntreruperi externe), cu execuie foarte rapid.
Drivere de control dispozitive, control n proces, achiziie date, cu execuie preponderant periodic.
Task-uri de prelucrare, memorare pe suport magnetic, vizualizare pe display etc. pentru care
constrngerile de timp real sunt mai relaxate.
Prioriti
ntreruperi
externe
(Nivelul
ntrerupe-
rilor)
IRQ
0




IRQ
i



IRQ
n
Ceas de TR
i dispecer
Prioriti
taskuri
bazate pe ceas
(Nivelul
ceas TR)
Prioritate 1



Prioritate m


Planificator
pentru nivelul de
baz

Prioriti
taskuri de
baza
(Nivelul
de baz)
Prioritate 1



Prioritate k


Fig. 5.2.3-1 Niveluri de prioritati n SOTRM
5-108
Existena nivelului de ntreruperi i a nivelului task-urilor bazate pe ceas implic utilizarea unei strategii de
planificare preemptiv. Aceasta se refer la faptul c atunci cnd un task trece n starea gata de execuie i el
are o prioritate mai mare dect task-ul n curs de execuie, atunci task-ul curent va fi trecut n starea gata de
execuie iar task-ul cu prioritate mai mare va fi lansat n execuie. n contrast, o strategie nepreemptiv de
planificare presupune ca orice task n curs de execuie, indiferent de prioritate, nu este suspendat dect dac
ntr-o form sau alta el cedeaz controlul procesorului sau dac timpul alocat pentru execuia sa a expirat.
Exemplu: planificare preemptiv vs. planificare nepreemptiv
Fie un sistem care recepioneaz un semnal de ntrerupere de alarm de la un proces iar ca rspuns la alarm
trebuie s activeze un task care controleaz un dispozitiv de alertare (hupa). Acesta este un task de prioritate
mare la nivelul de baz. Ca rspuns la ntreruperea de alarmare, rutina de tratare a ntreruperii va face ca task-ul
de alarmare s fie plasat n lista task-urilor gata de execuie. Dup plasarea n list, rutina de tratare poate lua
una din urmtoarele decizii:
rentoarcere n task-ul ntrerupt;
salt la dispecer.
Dac controlul este dat task-ului ntrerupt, atunci task-ul de alarmare nu va fi lansat n execuie pn cnd nu se
declaneaz replanificarea n sistem la intervalul de timp stabilit pentru aceasta sau pn cnd task-ul curent nu
cedeaz controlul. Aceasta este o strategie nepreemptiv.
Dac ns din rutina de tratare se face salt la dispecer iar task-ul de alertare are prioritatea cea mai mare dintre
task-urile existente n lista gata de execuie, acesta va fi imediat lansat n execuie dup ce task-ul ntrerupt este
trecut de ctre dispecer n starea gata de execuie.
5.2.4.1 Nivelul ntreruperilor
La 4.2 s-a artat c o ntrerupere poate fora alocarea unitii centrale la o rutin de tratare, iar sistemul nu are
control asupra timpului ct dureaz execuia acesteia. Deoarece acest mod de alocare a unitii centrale este
asincron, este necesar ca timpul afectat prelucrrilor n cadrul rutinelor de tratare s fie redus la minim. Se
obinuiete ca n cadrul acestor rutine s se memoreze informaiile strict necesare asociate evenimentelor i s
se paseze aceste informaii ctre un task care le va prelucra ulterior. Task-ul respectiv va rula pe un nivel de
prioritate mai sczut (la nivel de ceas sau la nivel de baz).
Rutinele de tratare trebuie s asigure mijloacele de comutare a task-urilor n primul rnd salvnd mediul volatil
al acestora (regitrii, stiva, starea coprocesorului matematic, etc). La terminarea sa, fie restaureaz mediul
volatil salvat la nceput i d controlul task-ului ntrerupt, fie face salt la dispecer, lsnd mediul volatil salvat.
Regsirea informaiei despre mediul volatil se va face ulterior prin intermediul descriptorului de task.
n cadrul nivelului ntreruperilor pot fi mai multe prioriti n funcie de main. Uneori partea hardware
rezolv problema prioritilor, alteori SO trebuie s asigure ca ntreruperile cu prioritate mai mic s nu
ntrerup pe cele de prioritate mai mare.
5.2.4.2 Nivelul de ceas
Unul dintre nivelurile de ntrerupere este destinat pentru ntreruperea de ceas de timp real. Rutina de tratare
asociat este lansat n execuie la un anumit interval care n mod uzual este determinat de rata de activare a
task-ului care necesit cea mai mare frecven de apelare. Valorile tipice sunt ntre 20 200 msec.
Vom denumi n continuare fiecare ntrerupere de ceas tick, care este cel mai mic interval de timp cunoscut de
sistem. Funciile de baz ale rutinei de tratare a ntreruperii de la ceas sunt legate de obicei de actualizarea orei
i datei sistem i de transferul controlului ctre dispecer. Acesta din urm, va selecta care task se va lansa la un
tick particular din sistem. Task-urile la nivelul de ceas sunt de dou tipuri:
5-109
Periodice (ciclice) care cer o sincronizare precis cu mediul extern;
ntrziate (cu ateptare) care necesit ntrzieri fixe ntre lansri succesive n execuie sau ntrzierea
activitii lor pe o perioad de timp dat.
5.2.4.2.1 Task-uri periodice
Pentru aceste task-uri se specific: perioada de execuie, timpul (durata) de execuie, timpul de lansare n
execuie n raport cu nceputul perioadei i limita de timp la care trebuie s-i termine execuia. Task-urile de
prioritate mai mic n cadrul nivelului de ceas se vor executa cu o anumit instabilitate n timp, pentru c
ateapt terminarea execuiei task-urilor cu prioritate mai mare.
Exemplu
Fie 3 task-uri A, B, C. Se cere s se lanseze n execuie periodic: A are perioada la 20 msec, B la 40 msec i C
la 80 msec. Dac tick-ul este la 20 msec, task-ul A se va lansa la 1 tick, B la 2 tick-uri i C la 4 tick-uri. Dac
ordinea prioritilor este A, B, C (A cea mai mare prioritate) i suma timpilor de execuie a task-urilor e mai
mic de 20 ms, atunci procesele se vor executa ca n figura 5.2.3.2.-1, task-urile executndu-se la intervale de
Task
C

B

A
Tick
1 2 3 4 5 6
Figura 5.2.3.2.-1 Diagrama de activare a task-urilor,
ordinea prioritilor A, B, C
Task
C

B

A
Tick
1 2 3 4 5 6
Figura 5.2.3.2.-2 - Diagrama de activare a task-urilor,
ordinea prioritilor C, A, B
5-110
timp egale. Chiar dac task-urile sunt ntrziate fa de apariia ntreruperii de ceas, intervalele de timp ntre
task-uri sunt constante. Dac ns prioritatea task-urilor ar fi C, A, B (C ar fi mai prioritar) atunci la fiecare 4
tick-uri task-urile A i B vor fi ntrziate, deci nu se vor mai executa la intervale egale de timp (figura 5.2.3.2-
2).
n practic metoda de rezolvare a situaiei din exemplu este de a da task-ului cu cea mai mare frecven de
execuie prioritatea cea mai mare.
O alt problem apare atunci cnd task-urile care lucreaz la nivel de ceas au suma timpilor de execuie a task-
urilor executate la un anumit tick mai mare dect intervalul dintre 2 ntreruperi de la ceas. Presupunem ca n
exemplul anterior task-ul C are nevoie de 24 msec pentru a-i termina prelucrarea, task-ul A de 1 msec i B de 6
msec. Dac sistemul ar permite ca task-ul C s-i termine execuia atunci diagrama de timp ar arta ca n figura
5.2.3.2.-3. Deci task-ul A va fi ntrziat 11 msec la fiecare a 4-a execuie a task-ului C.
Pentru a rezolva aceast situaie se obinuiete ca task-urile periodice s fie divizate n task-uri de prioritate
mare, a cror execuie cumulat s se completeze n interiorul unui interval de ceas i n task-uri de prioritate
sczut care pot fi ntrerupte de urmtoarele ntreruperi de ceas dar a cror execuie n cazul cel mai defavorabil
s nu depeasc perioada alocat (n exemplu, execuia task-ului C s nu depeasc 80 ms).
De asemenea trebuie acordat atenie i timpului necesar dispecerului pentru a selecta task-ul ce urmeaz a se
executa (suprancrcarea execuiei ca urmare a timpului de comutare a task-urilor). Timpul de comutare este un
parametru al SOTRM care trebuie s fie este garantat de ctre furnizor.
Dac numrul de task-uri ce trebuie testate pentru a fi lansate n execuie este mare, suprancrcarea n raport
cu timpul n cadrul dispecerului poate deveni semnificativ, afectnd timpul de rspuns. Exist mai muli
algoritmi optimali de planificare a task-urilor periodice, n capitolul 6 fiind prezentai algoritmii RM i EDF.
Pentru planificarea task-urilor periodice exist diferite tehnici, o tehnic simpl de planificare pre-execuie
fiind prezentat n continuare.
Se ntocmete un tablou n care sunt memorate cuvinte care conin n poziii fixe cte un bit pentru fiecare task.
Dac n momentul dispecerizrii bitul este 1, atunci task-ul este activat. Tabela are attea intrri cte tick-uri
sunt necesare pentru invocarea tuturor task-urilor. Acest numr N corespunde celui mai mic multiplu comun
ntre numrul de tickuri solicitate de ctre fiecare task. Un numrtor modulo N este utilizat pentru a selecta
cuvntul n tabel pentru un tick dat, iar biii care sunt 1 in cuvnt indic task-urile ce trebuie activate la acel
tick. De asemenea tabelului i se asociaz o masc de activare. Aceast masc de regul are toi biii 1, dar
Task
C

B

A
Tick
1 2 3 4 5
Figura 5.2.3.2.-3 -
11ms
5-111
atunci cnd din diferite motive un task nu se poate executa (exemplu: suspendat pe o resurs critic) chiar dac
a trecut numrul de tick-uri, bitul corespunztor n masc se seteaz la 0. Se face i logic ntre cuvntul
extras din tabel i masc, iar task-urile n a cror poziie n cuvnt este 1 sunt trecute n lista task-urilor gata
de execuie. Ele vor fi apoi lansate n execuie n conformitate cu prioritatea, care poate fi asociat cu poziia
bitului asociat task-ului n cuvnt.
Pentru exemplificarea modului n care funcioneaz tehnica descris anterior, presupunem 6 task-uri la nivel de
ceas cu intervale de invocare la 1, 2, 4, 5, 10, 20 de tick-uri. Cel mai mic multiplu comun este 20 i prin urmare
este necesar o tabel cu 20 de intrri. Se presupune c s-a cerut ca toate task-urile s se poat executa la tick-ul
0 (task-urile sunt fazate, care este cel mai defavorabil caz), deci n primul cuvnt toi biii sunt setai.
Determinarea task-urilor ce urmeaz a fi trecute n starea gata de execuie precum i modul de planificare
pentru cazul n care numrtorul de tick-uri are la un moment dat valoarea 4, este prezentat n figura 5.2.3.2.-
4.
5-112

Task
Tick
A B C D E F
0 1 1 1 1 1 1
1 1 0 0 0 0 0
2 1 1 0 0 0 0
3 1 0 0 0 0 0
4 1 1 1 0 0 0
5 1 0 0 1 0 0
6 1 1 0 0 0 0
7 1 0 0 0 0 0
8 1 1 1 0 0 0
9 1 0 0 0 0 0
10 1 1 0 1 1 0
11 1 0 0 0 0 0
12 1 1 1 0 0 0
13 1 0 0 0 0 0
14 1 1 0 0 0 0
15 1 0 0 1 0 0
16 1 1 1 0 0 0
17 1 0 0 0 0 0
18 1 1 1 0 0 0
19 1 0 0 0 0 0

Numrtorul modulo 20 este incrementat la fiecare tick. Valoarea sa este utilizat ca index n tabel. De
exemplu, la tick-ul al patrulea se selecteaz cuvntul 4 care are marcate pentru execuie task-urile A, B, C;
totui pentru c task-ul C are bitul 0 n masc (este suspendat) numai task-urile A i B vor putea fi trecute n
starea gata de execuie.
1 1 0 1 1 1
Masca de activare
Cuvntul de control
al execuiei
1 1 0 0 0 0
Figura 5.2.3.2.-4 Tabela de planificare la nivel de ceas
5-113
Avantajul este acela c metoda este mai rapid deoarece numrtorul selecteaz direct task-urile ce trebuie
lansate la un anumit tick. Un dezavantaj este acela c n anumite cazuri este necesar o tabel prea mare (dac
c.m.m.m.c. este mare). De exemplu dac task-ul C trebuie executat la 3 tick-uri n loc de 4, atunci
c.m.m.m.c.=60, deci vor fi necesare 60 intrri n tabel i un numrtor modulo 60. De asemenea metoda se
complic dac numrul de task-uri la nivel de ceas depete lungimea cuvntului calculatorului.
Problem propus
S se realizeze un program de simulare a dispecerului de task-uri la nivel de ceas, avnd ca date iniiale:
8 task-uri AH ce trebuie lansate la 4, 4, 5, 5, 8, 8, 10 i 20 de tick-uri de ceas ale calculatorului PC,
sub sistemul de operare MS DOS;
toate task-urile trebuie lansate n execuie la primul tick (sunt fazate);
fiecare task va fi implementat ca o procedur care afieaz pe display numele task-ului, intervalul (n
tick-uri) la care a fost lansat, data i ora sistem.
Indicaie: Se va utiliza tehnica prezentat mai sus. Rutina de tratare a ntreruperii de ceas trebuie s comunice
cu programul utilizator (dispecer de lansare a celorlalte task-uri) printr-un cuvnt care indic ce task-uri trebuie
lansate. Programul utilizator va lansa rutinele asociate task-urilor n ordinea prioritilor.
5.2.4.2.2 Task-uri ntrziate
Aceste task-uri i ntrzie execuia pentru perioade fixe de timp, de exemplu pentru a permite completarea
unor evenimente externe (exemplu: ateapt 100 msec pentru nchiderea unui contactor apoi starteaz
prelucrrile). Aceste task-uri utilizeaz informaia de la ceasul de timp real, dar de cele mai multe ori se
execut la nivel de baz. Cnd un task cere o ntrziere el trece din starea n execuie n suspendat i rmne aa
pn cnd trece perioada de ntrziere.
O metod de implementare a funciei de ntrziere este de a realiza o list de descriptori de task-uri, ordonat
dup numrul de tick-uri pentru ntrziere. Primul task din list este cel care trebuie s atepte cel mai puin
fa de tick-ul curent. Cnd un task solicit o ntrziere, descriptorul de task este plasat n lista de task-uri n
ateptare (delay). Inserarea n lista delay se face calculnd numrul de tick-uri necesare din momentul apelului
solicitrii. Controlul listei delay se face de ctre un task care realizeaz planificarea la nivel de baz. Acesta
este activat periodic i controleaz lista task-urilor ntrziate pentru a vedea dac un task urmeaz a fi lansat.
Dac da, este trecut din lista task-urilor ntrziate n lista celor gata de execuie.
Multe sisteme de operare nu dispun de algoritmi de operare periodic iar utilizatorul trebuie s implementeze
un timer suficient de precis (utiliznd de exemplu funcii sistem sau programnd ceasul i capturnd
ntreruperile de la acesta) pe baza cruia s apeleze periodic planificatorul la nivel de baz.
Problem propus
Implementarea algoritmului de creare a listei task-urilor ntrziate i de gestiune a lansrii lor n execuie; tick-
urile vor fi gestionate prin capturarea ntreruperii de la ceasul de timp real al PC.
5.2.4.3 Nivelul de baz
Task-urile la nivelul de baz au constrngeri de timp flexibile. Felul n care task-urile la nivel de baz sunt
planificate variaz de la un sistem la altul. Un algoritm de planificare poate fi Round-Robin: fiecare task din
lista de task-uri gata de execuie (ready) este selectat i i se permite execuia pn cnd task-ul ce se execut se
autosuspend sau pn cnd se starteaz planificatorul de la nivelul de baz.
Prioritatea poate fi fix sau alocat dinamic. Alocarea dinamic a prioritilor se poate face fie de ctre un
planificator de nivel nalt, fie de ctre task-uri, ad-hoc.
5-114
Exemplu: prioritatea unui task poate crete n funcie de timpul ct st n lista ready fr a fi lansat (are
prioritate mai mic dect altele i dac nu-i crete prioritatea este posibil s nu mai fie lansat niciodat n
execuie). O alternativ de ajustare a prioritilor este rspunsul la evenimente particulare sub controlul
operatorului (exemplu: dac apare o alarm i este necesar o afiare rapid la imprimant a strii sistemului,
poate fi crescut temporar prioritatea task-ului de imprimant n cazul n care datele ce trebuie afiate sunt
stocate n memorie i este pericol s fie nlocuite cu altele nainte de afiare).
5.2.5 Apelul la dispecer
Dispecerul are dou condiii de intrare:
1. ntrerupere de la ceasul de timp real sau orice ntrerupere care semnaleaz completarea unei cereri de
I/E.
2. Suspendarea unui task datorat solicitrii unei ntrzieri sau completrii ori cererii unui transfer de I/E.
ntotdeauna se lanseaz n execuie task-ul cu cea mai mare prioritate. n primul caz (condiia 1), dac task-ul
ntrerupt nu va fi continuat la revenirea din ntrerupere (alt task este mai prioritar), este trecut n starea gata de
execuie. n al doilea caz (condiia 2) cutarea se starteaz de la task-ul urmtor cu prioritate imediat mai mic
care este n lista ready, deoarece nu poate fi n lista ready un task de prioritate mai mare ca a task-ului curent.
n figura 5.2.4.-1 este prezentat o schem logic a modulului de dispecerizare. Se presupune c fiecare task
are prioritate distinct (nu sunt mai multe task-uri cu aceeai prioritate).
Problem propus
Implementarea unui dispecer utiliznd modelul descris n figura 5.2.4-1.

5-115

Salvare stare
task activ
A
Intrarea A:
IRQ ceas TR
IRQ I/E
Salvare stare
task activ
B
Intrarea B:
Suspendare pt.
ntrziere, ateptare
transfer
Nivel prioritate
= -1
Nivel prioritate
= prioritatea curent
Incrementarea niv.de
prioritate
DA
Nivel prioritate > max
(a ieit din domeniul
prioritilor alocate)
Task n
lista ready ?
Task n
memorie ?
NU
DA
NU
Restaurare stare task
Ieire n
task
DA
Cerere de transfer n
memorie
NU
Fig. 5.2.4-1 - Apelul la dispecer

5-116
5.2.6 Exemplu de gestiune a task-urilor: SOTRM REX
Not:
Acest paragraf nu este inclus n programa pentru examen.
REX (Real time EXecutive) este un SOTRM utilizat pentru gestiunea task-urilor n aplicaiile ncorporate de
achiziie de date, control i comunicaie [Gro02]. Ruleaz pe UC cu procesor 80x86 sau microcontrollere
80C552. La lansarea n execuie, REX preia controlul i gestioneaz lansarea n execuie a task-urilor aplicaiei.
5.2.6.1 Strile task-urilor
Un task poate fi ntr-una dintre urmtoarele stri:
Nonexistent: task-ul nu are descriptor, REX nu tie de existena sa.
Idle: task-ul are descriptor, REX tie de existena sa, dar task-ul nu a fost activat explicit i nu este luat
n considerare la planificare.
Iready: este gata de lansare n execuie pentru prima oar (tranziie din starea idle).
Ready: gata de execuie.
Preempted: este gata de reluarea execuiei dup o ntrerupere a acesteia la apariia unor evenimente a
cror tratare activeaz task-uri cu prioritate mai mare.
Suspended: motivul suspendrii poate fi:
ateptare mesaj de la alt task;
ateptare rspuns de la un task n urma emiterii unui mesaj;
blocat pe resursa critic;
ateptare evenimente externe;
ateptare pe interval de timp.
Running: task-ul este n curs de execuie.
Diagrama de tranziie a strilor i directivele care concur la trecerea dintr-o stare n alta se prezint n figura
5.2.5-1:

5-117

Strile pot fi modificate de ctre planificatorul executivului la iniiativa task-urilor prin apel de directive, sau ca
urmare a unor evenimente.
Evenimentele externe sunt generate de ctre ntreruperile externe; IRQ
i
din figur se refer la rutinele de tratare
a acestor ntreruperi.
5.2.6.2 Directivele implicate n tranziia strilor
Directivele SOTRM REX implicate n tranziia strilor task-urilor sunt:
wait ateptare eveniment sau ntrziere;
activate activeaz un task aflat n starea idle;
create creeaz un descriptor de task i trece task-ul n starea idle;
destroy distruge un task;
exitt termin execuia unui task;
exits
iready
ready
suspended
d
i
s
p
e
c
e
r

I
R
Q
i

idle
exits
exits
activate
inexistent
c
r
e
a
t
e

e
x
i
t
s

running
preempted
exitt
d
i
s
p
e
c
e
r

e
x
i
t
s

IRQ
i

aqio
aqmsg
unlock
wait
sdat
rdat
qio
lock
Fif. 5.2.5 -1 Automatul de tranziie a starilor la SOTRM REX
5-118
sdat trimite un bloc de date ctre alt task, cu sau fr confirmare (comunicare sincron sau
asincron) ;
rdat recepie mesaj: ateapt recepionarea unui mesaj (comunicaie sincron) sau testeaz dac n
coada de mesaje la task exist un mesaj (comunicaie asincron);
qio lanseaz o operaie de I/E ctre un driver de dispozitiv, ateptnd sau nu terminarea operaiei;
lock intr ntr-o zon critic sau blocheaz task-ul dac resursa solicitat nu este disponibil;
aqio achit operaia de I/E;
aqmsg achit tratarea unui bloc de date recepionat de la alt task;
unlock ieire dintr-o zon critic;
exits terminare aplicaie.
5.2.6.3 Descriptori de task
Deoarece SOTRM REX poate fi utilizat i pentru aplicaii n care codul este rezident n memoria intern
nevolatil (EPROM, flash etc.), descriptorul de task utilizat n timpul execuiei se construiete pe baza unui alt
descriptor, numit descriptor static de task (STD - Static Task Descriptor). Descriptorul de task este referit ca
descriptor dinamic de task (DTD - Dinamic Task Descriptor) i are structura:
typedef unsigned int word;
typedef unsigned char byte;
struct dtd {
word ntask //identificator
struct dtd * next_ready; //pointeri inlatuire in lista ready
struct dtd * prev_ready;
struct dtd * next_delay//pointeri inlatuire in lista suspended
struct dtd * prev_delay;
.
word delay; //interval de intarziere
byte status; //starea
word * stop_stack,stack_address; //pointeri la zona de date volatile
void * msg; //pointer la lista de mesaje de la alte task-uri
:
:
GLOCK * wait_lock;
unsigned int cnt_lock;/*numara cite lock au fost apelate de task*/
unsigned char *save_8087;
}
top_stack este vrful stivei, stack_address este adresa de nceput a zonei stivei
n funcie de starea task-urilor, descriptorii de task se nlnuie n listele task-urilor ready, n ordinea prioritii,
sau n listele de task-uri suspendate.
STD are urmtoarea structur:
struct std {
char * name; //nume de identificare pentru task
void (* start_task) (void); //adresa de start a task-ului
word stack_length; //lungimea stivei in octeti
word priority; //prioritate initiala a task-ului
byte activ;//switch ce specifica dac task-ul este activ initial
5-119
}
5.2.6.4 Dispecerul
Dispecerul realizeaz comutarea contextului, prin suspendarea task-ului running la intrarea n dispecer i
respectiv prin activarea task-ului running la ieirea din acesta.
Deoarece intrarea n dispecer i ieirea din acesta se realizeaz prin secvene de program unice la nivel de
sistem, se poate realiza un controlul riguros al instruciunilor main din aceste secvene i se pot determina
performane timp - real pe o main dat.
Funcia de Suspendare
Intrarea n dispecer este precedat de salvarea contextului de execuie al task-ului n curs de execuie. Aceast
aciune se realizeaz la fiecare apel de directiv care implic suspendarea execuiei task-ului curent:
...
Mascarea ntreruperilor
[Stiva].Running <- RegistreleleProcesorului
RegistreleProcesorului <- [Stiva].Kernel
...

Un exemplu de directiv care foreaz intrarea n dispecer este directiva wait:
extern int tkrun; // ID-ul task-ului in starea running
int far wait(unsigned int n_int,unsigned int n_cuante){
register unsigned int i;
unsigned int *pntr;
register unsigned int c;
asm cli;
asm push bp
asm push bx
asm push cx
asm push dx
c=_SP;
pntr=&td_ram[tkrun].ret_wait;
if((n_int<wtqio)&&(*pntr!=0)){
/*o irq externa a aparut ntre timp*/
i=*pntr;
*pntr=0;
asm pop dx
asm pop cx
asm pop bx
asm pop bp
asm sti;
return(i);
}
.
.
.
*pntr=0;
td_ram[tkrun].top_stack=c;
push_delay(n_int,n_cuante);
_SP=rex_sp;
return(dspatch());// intrarea in dispecer
}
Funcia de Activare:
Ieirea din dispecer este precedat de refacerea contextului de execuie al task-ului care este lansat n execuie.
Aceast aciune se realizeaz la terminarea execuiei unei directive care implic lansarea n execuie a unui task.
5-120
...
RegistreleProcesor<- [Stiva].Running
Demascarea ntreruperilor
...
Prelucrrile efectuate de dispecer i ieirea din acesta sunt:
/*
d s p a t c h - dispecer pentru lansare in executie task-uri.
Cauta in lista ready pina cind gaseste cel putin o intrare.n funcie de
stare,reface pointerul virfului de stiva si lanseaza in executie task-ul.
Pentru task-urile aflate in starea ready,returneaza si continutul locatiei
ret_wait din descriptorul dinamic de task.
Depune in locatia tkrun numarul task-ului lansat in executie
*/

extern struct dtd *is_preempted; //daca un task a fost preemptat,contine
//adresa descriptorului; altfel = NULL
int far dspatch(void){
register unsigned int i,j;
struct dtd *pntr;
static unsigned char * s8087=NULL;
j=0;
tkrun=0xffff;
asm cli
/* salvare stare procesor 8087 */

if(is_preempted!=NULL){

if((s8087=is_preempted->save_8087)!=NULL){
if(_8087==0){
for(j=0;j<300;j++)
*(s8087+j)=*(zFPU+j);
}
else{
_ES=FP_SEG(s8087);
_BX=FP_OFF(s8087);
asm fsave byte ptr es:[bx]
asm fwait

asm fstenv byte ptr es:[bx+210]
asm fwait
}
}
is_preempted=NULL;
}
for(;;){
asm sti
for(;first_ready==NULL;)/*asteapta inserare task in lista ready*/
;
asm cli
/*Lanseaza in executie un task*/
pntr=pop_ready(); // extrage primul descriptor task din lista ready
tkrun=pntr->ntask;
i=pntr->status;
pntr->status=running;
switch(i){
case iready:
5-121
/*Lansare task prima data*/
_SP=pntr->top_stack;/*schimba virf stiva*/
asm sti;
(*td_rom[pntr->ntask].start_task)();//lanseaza task
case ready:
/*Continua executia unui task suspendat anterior si gata de executie*/
i=pntr->ret_wait;/*pregateste cuvintul de retur la task*/
pntr->ret_wait=0;
_SP=pntr->top_stack;/*restaureaza pointer virf stiva task*/
asm pop dx
asm pop cx
asm pop bx
asm pop bp
asm sti;
return(i);/*da controlul task-ului*/
case preempted:
/*task ntrerupt din executie de o rutina de tratare ntrerupere externa*/
if((s8087=pntr->save_8087)!=NULL){
if(_8087==0){
/*nu exista coprocesor */
for(j=0;j<300;j++)
*(zFPU+j)=*(s8087+j);
}
else{
_ES=FP_SEG(s8087);
_BX=FP_OFF(s8087);
asm frstor byte ptr es:[bx] /*byte ptr s8087*/
asm fwait
asm fldenv byte ptr es:[bx+210]
asm fwait
}

}
_SP=pntr->top_stack;/*restaureaza pointer virf stiva task*/
_SS=pntr->sseg_user;
asm sti;
resume();/*revine in task-ul ntrerupt*/
}/*end switch(i)*/
}/*end for(;;)*/
}
5.2.6.5 Planificatorul
Planificarea este o aciune declanat de ntreruperi hardware (ceasul de timp real, interfee de achiziie date,
interfee de comunicaie etc.) sau de evenimente interne (apelul explicit al unei directive, ntreruperi software,
excepii).
Planificatorul kernel-ului REX are dou funcii, legate de operaiunile interne ale executivului: selecia
urmtorului task running i organizarea listei de task-uri ready la suspendarea/deblocarea unui task.
Funcia de Selecie
Prin funcia de Selecie planificatorul extrage din lista ready noul task running. Pentru lista ready, selecia se
realizeaz cu funcia:
/* p o p _ r e a d y - extrege primul task din lista ready si il trece in
starea running;
Intrari: - nu are
Iesiri: - pointer la adresa primului descriptor de task din lista ready
5-122
sau null dac lista este vida.
Este apelata numai din dspatch()
*/
extern struct dtd *first ready; //pointer catre primul dtd din lista ready
struct dtd * pop_ready(void){
struct dtd *pntr;
if((pntr=first_ready)==NULL)
return(pntr);
if((first_ready=first_ready->next_ready)!=NULL)
first_ready->prev_ready=NULL;/*pune cap de lista urmatorul task*/
pntr->next_ready=NULL;
return(pntr);
}
Funcia de organizare
Organizarea se refer la gestiunea task-urilor existente n listele ready, i este apelat la suspendarea/
deblocarea acestora. Suspendarea se realizeaz cu funcia push_delay iar deblocarea cu funcia
pop_delay, care apeleaz push_ready:

/*p u s h _ d e l a y - insereaza un task in lista delay,in funcie de
intervalul de asteptere solicitat.
Intrari: - first_delay - pointer la primul element din lista delay
- last_delay - pointer la ultimul element din lista delay
- td_ram - tablou descriptorilor dinamici de task
- n_int - numarul evenimentului asteptat
- n_cuante - numarul de tick-uri de ceas care dau intervalul de
asteptare(0<n_cuante<0xffff) sau 0 ori 0xffff pentru
asteptere infinita.
Iesiri: - descriptorul dinamic al task-ului este inserat in lista
*/

void push_delay(unsigned int n_int,unsigned int n_cuante){
struct dtd *temp_dtd,*tkrun_dtd;
register unsigned int j,k;
tkrun_dtd=&td_ram[tkrun];/*adresa descriptorului task-ului apelant*/
if((temp_dtd=first_delay)!=NULL){
/*Sint intrari in lista delay*/
j=0;/*initializare contor cuante*/
if((n_cuante!=0)&&(n_cuante!=0xffff)){
/*Asteapta un interval finit de timp*/
loop: if((k=temp_dtd->delay)!=0xffff)
if(n_cuante>j+k)
if(temp_dtd->next_delay!=NULL){
temp_dtd=temp_dtd->next_delay;
j+=k;
goto loop;
}
else{
j+=k;
tkrun_dtd->delay=n_cuante-j;
goto endl;/*insert in coada listei*/
}
/*Inserare in interiorul listei*/
tkrun_dtd->delay=n_cuante-j;
if(k!=0xffff)
temp_dtd->delay-=(n_cuante-j);
5-123
tkrun_dtd->next_delay=temp_dtd;
tkrun_dtd->prev_delay=temp_dtd->prev_delay;
if(temp_dtd->prev_delay!=NULL)
(temp_dtd->prev_delay)->next_delay=tkrun_dtd;
else first_delay=tkrun_dtd;
temp_dtd->prev_delay=tkrun_dtd;
}/*sfirsit tratare asteptere finita*/
else{
/*Asteptare infinita*/
tkrun_dtd->delay=0xffff;
endl:
/*Inserare in coada listei*/
tkrun_dtd->next_delay=NULL;
tkrun_dtd->prev_delay=last_delay;
last_delay->next_delay=tkrun_dtd;
last_delay=tkrun_dtd;
}
}/*sfirsit tratare pentru cazul cind sint intrari in lista*/
else{
/*Prima intrare in lista*/
first_delay=(last_delay=tkrun_dtd);
tkrun_dtd->prev_delay=(tkrun_dtd->next_delay=NULL);
tkrun_dtd->delay=((n_cuante!=0)&&(n_cuante!=0xffff))?n_cuante:0xffff;
}
tkrun_dtd->status=4+n_int;
tkrun=0xffff;
}

/*p o p _ d e l a y - extrage task-uri din lista delay si le depune in
lista ready.
Intrari:
- n_int-numar eveniment pentru care se solicita serviciul;poate fi it.
hardware sau wtqio ( directiva qio),wtsdat (directiva sdat),wtrdat
(directiva rdat)
- ntask-numar de task pentru care se solicita serviciul
Iesiri: - descriptorii de task extrasi din lista delay sint trecuti in
lista ready.Daca n_int<wtqio,cimpurile ret_wait se incrememteaza
Observatii:
1.daca n_int==tick,se extrag din lista delay toti descriptorii de task
pentru care a expirat timpul de asteptare,indiferent de evenimentul
asteptat.
2.daca ntask=0xffff,se extrag din lista delay toti descriptorii de task
care asteapte evenimentul n_int.
3.daca ntask este in starea idle si n_int<wtqio(este o irq externa),task-ul
este activat
*/

void pop_delay(unsigned int ntask,unsigned int n_int){
struct dtd *pdtd,*pdtd_next;
register unsigned int i;
if(n_int==tick){
/*Activare task-uri pentru care a expirat timpul de asteptare*/
asm pushf;/*salveaza stare sist. De ntreruperi*/
asm cli;
while((first_delay!=NULL)&&(first_delay->delay)==0){
i=first_delay->ntask;
5-124
exit_delay(first_delay);
push_ready(i);
td_ram[i].delay=0xffff;
td_ram[i].status=ready;
}
asm popf;/*reface stare intreruperilor */
}
else if(ntask==0xffff){
/*Activarea tuturor tak-urilor care asteapta evenimentul n_int*/
asm pushf;
asm cli;
pdtd=first_delay;
while(pdtd!=NULL){
pdtd_next=pdtd->next_delay;
if(pdtd->status==n_int+4){
if(click_rex==NULL){
exit_delay(pdtd);
push_ready(pdtd->ntask);
pdtd->status=ready;
pdtd->delay=0xffff;
/*Pentru ntreruperi externe,incrementeaza ret_wait*/
pdtd->ret_wait=(n_int<wtqio)?++pdtd->ret_wait:pdtd->ret_wait;
}
else if(pdtd->wait_lock==click_rex){
exit_delay(pdtd);
push_ready(pdtd->ntask);
pdtd->status=ready;
pdtd->delay=0xffff;
pdtd->wait_lock=NULL;

}
}
pdtd=pdtd_next;
}
click_rex=NULL;
asm popf;
}
else if((ntask<nbtsk)&&(n_int<=wtlock)){
if((pdtd=&td_ram[ntask])->status==n_int+4){
/*Activeaza task-ul ntask dac acesta asteapta evenimentul*/
asm pushf;
asm cli;
exit_delay(pdtd);
push_ready(ntask);
pdtd->status=ready;
pdtd->delay=0xffff;
asm popf;
}
else if((pdtd->status==idle)&&(n_int<wtqio))
/*Task-ul aflat in starea idle este activat de o irq externa*/
activate_task(ntask);
}
}

6-125
6 ALGORITMI DE PLANIFICARE A TASK-URILOR N
SCTR CU CONSTRNGERI DE TIMP RIGIDE
6.1 Noiuni introductive
Problema planificrii task-urilor n prezena constrngerilor de timp rigide poate fi formulat astfel:
Fiind dat un set de task-uri precum i constrngerile de preceden, cerine de resurse i constrngerile de timp
asociate lor, trebuie gsit o soluie pentru planificarea task-urilor pe un calculator dat.
Task-uri
n mod formal, task-urile sunt entiti de programare care consum resurse (timp procesor, memorie, date de
intrare etc.) pentru a obine unul sau mai multe rezultate (ieiri).
Un task poate s fie periodic (ciclic), sporadic, sau aperiodic. Un task T
i
este periodic dac este lansat periodic,
de exemplu la intervale de P
i
secunde. P
i
este numit perioada taskului T
i.
Constrngerea de periodicitate
necesit ca task-ul s se execute n mod obligatoriu i o singur dat la fiecare perioad; nu se cere ca timpul de
execuie al task-ului s aib aceeai durat cu perioada. Un task T
i
este sporadic dac nu este periodic, dar poate
fi invocat la intervale de timp neregulate. Task-urile sporadice sunt caracterizate printr-o limit superioar a
frecvenei la care ele pot fi invocate. Acest lucru este de obicei specificat prin cerin ca invocrile succesive ale
unui task sporadic T
i
s fie separate n timp de cel puin t(i) secunde. Taskurile sporadice sunt uneori trecute n
categoria task-urilor aperiodice. Totui, task-urile aperiodice sunt acele taskuri care nu sunt periodice i care nu
au o limit superioar a frecvenei de invocare.
Constrngeri de preceden
ntre task-uri pot exista constrngeri de preceden, pentru a specifica dac unele trebuie s fie executate
naintea altora. De exemplu dac ieirea taskului T
i
trebuie folosit ca intrare de taskul T
j
, atunci taskul T
j
este
constrns s fie precedat de taskul T
i
. Constrngerile de preceden ale unui set de task-uri pot fi reprezentate
prin graful de preceden.
Un exemplu de graf de preceden este n figura 6-1 Sgeile indic precedena ntre task-uri.
Se noteaz mulimea taskurilor care preced taskul T prin (T), (T) indicnd care taskuri trebuie s-i termine
execuia naintea declanrii task-ului T.


6-126
Exemplul 6-1
n figura 6-1 avem

(1)=
(2)={1}
(3)={1}
(4)={1}
(5)={1,2,3}
(6)={1,3,4}
(7)={1,3,4,6}
(8)={1,3,4,6,7}


De asemenea se poate scrie ij pentru a indica faptul c taskul T
i
precede taskul T
j
, acest lucru fiind echivalent
cu j i (T
j
este precedat de T
i
).
Operatorul de preceden este tranzitiv, adic dac
ij si jk ik
Prin urmare, pentru comoditatea reprezentrii, se pot specifica numai strmoii imediat anteriori n mulimea
precedent; de exemplu, se poate scrie (5)={2,3} deoarece (2)={1}.
n unele cazuri, operatorii i sunt folosii pentru a nota care task are prioritate mai mare: ij poate s
nsemne c T
i
are prioritate mai mare dect T
j
.
T
3

Figura 6-1 Exemplu de graf
de preceden.
T
8

T
7

T
6

T
4

T
2

T
5

T
1

6-127
Resurse
Fiecare task are cerine de resurse: procesor, memorie, acces la magistrale de I/E etc. Resursele pot fi exclusive,
atunci cnd un singur task le poate deine, sau neexclusive. n plus, o resurs poate fi exclusiv pentru anumite
operaii i neexclusiv pentru altele. Exemplu: pentru operaii neatomice de scriere/citire a unor obiecte de
memorie, operaia de citire este neexclusiv, pe cnd operaia de scriere este exclusiv.
Constrngeri de timp
Timpul lansrii unui task (n engl. release time) este momentul de timp ncepnd de la care task-ul i poate
ncepe execuia - toat informaia necesar pentru a ncepe execuia task-ului este disponibil. Pentru task-urile
periodice, timpul lansrii task-ului T
i
este un deplasament fa de momentul de start al perioadei P
i
.
Timpul limit al unui task (n engl. deadline) este momentul de timp pn la care task-ul trebuie s-i termine
execuia. Constrngerile pentru timpul limit pot s fie rigide sau flexibile, depinznd de natura task-ului
corespunztor.
Timpul limit relativ (n engl. relative deadline) al unui task este timpul limit absolut minus timpul lansrii.
Astfel, dac task-ul T
i
are timpul limita relativ d
i
i este lansat la momentul de timp t, trebuie s fie executat
pn la momentul de timp t + d
i
.
Timpul limit absolut este timpul pn la care execuia task-ului trebuie s fie complet. n acest exemplu,
timpul limit absolut al lui T
i
este t + d
i
.
Planificare
Planificarea task-urilor se spune c este realizabil dac toate task-urile sunt startate dup timpul lansrii i se
termin nainte de timpul limit. O mulime de task-uri este A-realizabil atunci cnd dac i se aplic un
algoritm de planificare A rezult o planificare realizabil. Cel mai mare volum de munc pentru planificarea
timp - real se adreseaz obinerii de planificri realizabile.
Planificare poate fi pre-execuie (off-line), sau dinamic (on-line). Planificarea off-line se face n avans fa de
execuie, specificnd cnd se execut task-urile periodice i care sunt ferestrele de timp pentru task-urile
sporadice/aperiodice n eventualitatea c ele sunt invocate. Planificarea on-line se face n timpul execuiei, pe
msur ce task-urile ajung n sistem. Algoritmii folosii pentru planificarea on-line trebuie s fie suficient de
rapizi pentru a permite respectarea constrngerilor de timp de ctre task-uri.
Prioritile de execuie relative ale task-urilor sunt n funcie de natura lor i de starea curent a procesului
controlat. Exist astfel algoritmi care presupun c prioritatea task-urilor nu se schimb n timpul execuiei;
acetia sunt numii algoritmi de prioritate static. n contrast, algoritmii de prioritate dinamic presupun c
prioritatea se schimb n timp. Cei mai cunoscui algoritmi de prioritate static i de prioritate dinamic sunt
algoritmul de ritm monoton (n engl. Rate Monotonic algorithm - RM) i respectiv algoritmul cel mai
apropiat timp limit primul planificat (in engl. Earliest Deadline First - EDF).
Planificarea poate s fie preemptiv sau nepreemptiv. Planificare este preemptiv dac task-ul care deine
controlul procesorului poate fi ntrerupt pentru planificarea altor task-uri gata de execuie care au prioritate mai
mare (i reluat mai trziu). Planificarea este nepreemptiv dac task-ul care deine controlul procesorului nu
poate fi ntrerupt, planificarea fiind restartat atunci cnd task-ul cedeaz controlul procesorului se termin,
este blocat pe o resursa etc.
n continuare vor fi prezentai i analizai algoritmii RM i EDF. Scopul acestor algoritmi este respectarea
timpului limit pentru fiecare task. Pentru cei doi algoritmi se fac urmtoarele presupuneri:
1. Task-urile nu au seciuni nepreemptive i costul pentru preempiune este neglijabil.
2. Numai cerinele de procesare sunt semnificative; memoria, I/E i alte cerine de resurse sunt
neglijabile.
3. Toate task-urile sunt independente; nu sunt constrngeri de preceden.
Notaii
Notaiile utilizate n acest capitol vor fi:
6-128
n Numrul de task-uri din mulimea task-urilor.
e
i
Timpul de execuie al task-ului T
i
(cazul cel mai defavorabil).
P
i
Perioada task-ului

T
i, dac
el este periodic.
I
i
a k-a perioad a task-ului periodic T
i
ncepe la timpul I
i
+ (k-1) P
i
, unde I
i
este denumit fazarea task-
ului T
i
.
d
i
Timpul limit relativ al task-ului T
i
(relativ la timpul lansrii).
D
i
Timpul limit absolut al task-ului T
i
.
r
i
Timpul lansrii task-ului T
i.

h
T
(t) Suma timpilor de execuie ale iteraiilor task-urilor din mulimea task-urilor T, care au timpul limit
absolut nu mai trziu de t
6.2 Algoritmul de planificare RM
Algoritmul RM prezentat n [LL73] este unul dintre cei mai studiai i utilizai n practic. Este o schem
uniprocesor, preemptiv i cu prioritate static.
6.2.1 Prezentarea algoritmului
Fa de presupunerile 1 3 de mai sus, se mai fac presupunerile:
1. Toate task-urile din setul de task-uri sunt periodice.
2. Timpul limit relativ al unui task este egal cu perioada sa.
Presupunerea 5 simplific analiza algoritmului RM deoarece ea presupune c poate fi cel mult o iteraie a
oricrui task activ n orice moment.
Prioritatea task-ului este invers n raport cu perioada sa; dac perioada task-ului T
i
este mai mic dect perioada
T
j
atunci T
i
are prioritate mai mare dect T
j
.
Task-urile cu prioritate mai mare pot preempta task-urile cu prioritate mai mic.
Exemplul 6-2
Fie trei task-uri A, B, C cu perioadele P
A
= 2, P
B
= 6, P
C
= 10. Timpii de execuie sunt e
A
= 0.5, e
B
= 2.0,
e
C
= 1.75, iar I
A
= 0, I
B
= 1, I
C
= 3. Deoarece P
A
< P
B
< P
C
, T
A
are cea mai mare prioritate. La fiecare
relansare el preempteaz task-ul aflat n execuie. Similar, task-ul T
C
nu se poate executa att timp ct T
A

sau T
B
sunt n execuie.
Pentru a determina dac un set de task-uri periodice independente este planificabil de algoritmul RM, n [LL73]
se introduce i se demonstreaz urmtoarea teorem:
Teorema 6-1
Un set de n task-uri periodice independente planificate prin algoritmul RM i respect ntotdeauna timpii limit
pentru toi timpii de lansare a task-urilor dac
) 1 2 ( ...
/ 1
2
2
1
1
+ + +
n
n
n
n
P
e
P
e
P
e

6-129
e
i
/ P
i
este utilizarea resursei de ctre task-ul T
i
. Limita utilizrii, n(2
1/n
-1), converge rapid ctre ln2 = 0.69 cnd
n este suficient de mare.
Limitarea dat mai sus este pesimist, deoarece se presupune setul de task-uri n cazul cel mai defavorabil, puin
probabil de ntlnit n practic.
Condiia din teorem este suficient dar nu i necesar. Altfel spus, pot fi seturi de task-uri cu o utilizare mai
mare dect n(2
1/n
1) i care pot fi planificate de algoritmul RM. Timpul rmas poate fi utilizat pentru task-uri
de fond de prioritate mai mic. Limita n(2
1/n
1) este prezentat n figura 6-3.
Se ncearc n continuare s se determine condiia necesar i suficient pentru planificabilitatea RM
([LSD89]). n acest sens, pentru a determina dac un set de task-uri cu utilizare mai mare dect limita din
teorema 1 poate s-i respecte timpii limit, se poate utiliza un test de planificabilitate exact bazat pe teorema
zonei critice (reformulare a teoremei din [LL73]):
Teorema 6-2
Pentru un set de task-uri periodice independente, dac un task T
i
i respect primul su timp limit d
i
T
i
,
cnd toate task-urile de prioritate mai mare sunt startate la acelai timp, atunci T
i
i poate respecta toi timpii
limita viitori, pentru orice timpi de lansare.
Este important de notat c teorema 2 se poate aplica la orice tip de asignare a prioritilor, nu numai pentru
asignarea asociat cu algoritmul RM.
Figura 6-3 Limita de utilizare pentru algoritmul RM.

0 2 4 6 8 10 12 14 16
Numar de task-uri
1.0


0.9


0.8


0.7


0.6
L
i
m
i
t
a

0 1 2 3 4 5 6 7 8
Timp
A1 A4 B1 A2 C1 A3 B1 C1 C2
Figura 6-2 Exemplu de algoritm RM; X
j
denota a j-a iteraie a task-ului T
X
.
6-130
Pentru demonstrarea teoremei 2, relum exemplul 6-2 pentru trei task-uri. Se presupune c fazrile task-urilor
sunt toate 0 (prima iteraie a fiecrui task este la timpul 0). Se consider pentru nceput prima iteraie. T
1
care
este cel mai prioritar se starteaz primul i nu poate fi ntrziat de nici un alt task din sistem.
Deoarece la lansarea task-ului T
1
procesorul ntrerupe orice alt activitate, singura condiie pentru planificarea
fezabil a T
1
este e
1
P
1
. Este clar c aceasta este o condiie necesar i suficient.
Task-ul T
2
va fi executat cu succes dac pentru prima sa iteraie exist timp suficient pentru execuie n
intervalul [0,P
2
]. Fie t momentul la care T
2
i termin execuia. Numrul total de iteraii ale task-ului T
1
care a
fost reluat n intervalul [0,t] este t/P
1
( . Pentru ca T
2
s se termine la t fiecare dintre iteraiile lui T
1
reluat n
intervalul [0,t] trebuie s fie completat i n plus trebuie s fie un timp e
2
suficient pentru execuia T
2
. Altfel
spus trebuie s fie satisfcut condiia:
2 1
1
e e
P
t
t +
(
(
(

=
Prin urmare, este suficient s se gseasc un timp t [0,P
2
] care s satisfac condiia de mai sus.
ntrebarea practic este cum se poate verifica c acest t exist. Deoarece fiecare interval are un numr infinit de
puncte, nu se poate verifica condiia pentru fiecare posibil t. Soluia poate fi gsit dac se ine cont de faptul c
t / P
1
( reprezint de cte ori task-ul T
1
a sosit n intervalul [0,t] (la multiplii de P
1
cu salturi de e
1
). Din acest
motiv, t/ P
1
(e
1
reprezint necesarul de timp de execuie pentru T
1
n intervalul [0,t]. Prin urmare, dac se
gsete un ntreg k astfel nct kP
1
ke
1
+e
2
i kP
1
P
2
, atunci s-a gsit condiia necesar i suficient pentru ca
T
2
s fie planificabil cu algoritmul RM. Astfel, este nevoie s se verifice numai dac t t / P
1
(e
1
+ e
2
pentru
valori ale lui t multiplu de P
1
, astfel ca t P
2
. Deoarece exist un numr finit de multipli pentru P
1
care sunt mai
mici sau egali cu P
2
, verificarea este finit.
n final se consider task-ul T
3
. Din nou este suficient de artat c prima iteraie se termin nainte de P
3
. Dac
T
3
i termin execuia la t, cu aceleai argumente ca pentru T
2
avem:

3 2
2
1
1
e e
P
t
e
P
t
t +
(
(
(

+
(
(
(

=

T
3
este planificabil dac exist un timp t [0,P
3
] care s satisfac condiia de mai sus. Dar partea dreapt a
ecuaiei de mai sus are salturi numai la multiplii de P
1
i P
2
. Este aadar suficient s se verifice dac inegalitatea:

3 2
2
1
1
e e
P
t
e
P
t
t +
(
(
(

+
(
(
(




este satisfacut pentru t multiplu de P
1
i/sau P
2
, astfel ca t P
3.
Se poate prezenta acum condiia necesar i suficient pentru planificabilitatea RM. Pentru aceasta, se fac
urmtoarele notaii suplimentare:

=
(
(
(

=
i
j j
j i
P
t
e t W
1
) (

t
t W
t L
i
i
) (
) ( =

) ( min
0
t L L
i
P t
i
i
< <
=
6-131
} max{
i
L L =
W
i
(t) este cantitatea total de procesare efectuat de task-urile T
1
, T
2
.. T
i
, iniiate n intervalul [0,t]. Dac
toate task-urile sunt lansate la momentul 0, atunci task-ul T
i
va fi completat sub algoritmul RM la momentul t,
astfel nct W
i
(t) = t (dac acest t exist).
Pentru condiia necesar i suficient pentru planificabilitate, se poate enuna teorema urmtoare:
Teorema 6-3
Dat fiind un set de n task-uri periodice (cu P
1
P
2
. P
n
), task-ul T
i
poate fi fezabil planificat utiliznd
algoritmul RM dac i numai dac L
i
1.
Demonstraie: Dac L
i
1, atunci exist t [0,P
i
] a.i. W
i
(t)/t 1, altfel spus W
i
(t) t. Deoarece I
i
= 0
pentru orice i = 1,...,n W
i
(t) t implic faptul c la timpul t cerinele de calcul ale task-urilor T
1
pn la T
i
au
fost respectate. Deoarece t P
i
task-ul T
i
i respect timpul limit. Invers, dac W
i
(t) > t pentru orice t
[0,P
i
], atunci nu va fi suficient timp de execuie pentru task-ul T
i
nainte de timpul limit, P
i
.
Metoda de verificare practic a planificabilitii
La ntrebarea practic referitoare la modul cum se verific dac W
i
(t) t, se poate rspunde uor prin
examinarea ecuaiei

=
(
(
(

=
i
j j
j i
P
t
e t W
1
) (

Se vede c W
i
(t) este constant, exceptnd un numr finit de puncte cnd task-urile sunt relansate. Va fi deci
necesar numai s se calculeze W
i
(t) la momentele:

i
= { lP
j
j=1,,i; l=1,, Pi/Pj }
Atunci, sunt dou condiii de planificare RM:
RM1. Dac min
ti
W
i
(t) t, task-ul T
i
este RM-planificabil
RM2. Dac max
i{1,.,n}
{min
ti
W
i
(t)/t} 1 pentru i[1,,n], t
i
atunci n totalitate, setul T este RM
planificabil.
Exemplul 6-3
Se consider un set de patru task-uri unde:
i

e
i
P
i

1 20 100
2 30 150
3 80 210
4 100 400

Atunci:

1
= [100]

2
= [100, 150]

3
= [100, 150, 200, 210]

4
= [100, 150, 200, 210, 300, 400]
S calculm planificabilitatea RM pentru fiecare task. Figura 6-4 conine diagrame ale W
i
(t) pentru i = 1,
2, 3, 4. Task-ul T
i
este RM planificabil dac oricare parte a diagramei W
i
(t) se plaseaz sub linia W
i
(t) =
t.
6-132
n termeni algebrici se poate scrie:
Task-ul T
1
este RM planificabil dac e
1
100
Task-ul T
2
este RM planificabil dac
e
1
+ e
2
100 sau
2e
1
+ e
2
150
Task-ul T
3
este RM planificabil dac
e
1
+ e
2
+ e
3
100 sau
2e
1
+ e
2
+ e
3
150 sau
2e
1
+ 2e
2
+ e
3
200 sau
3e
1
+ 2e
2
+ e
3
210
Task-ul T
4
este RM planificabil dac
e
1
+ e
2
+ e
3
+ e
4
100 sau
2e
1
+ e
2
+ e
3
+ e
4
150 sau
2e
1
+ 2e
2
+ e
3
+ e
4
200 sau
3e
1
+ 2e
2
+ e
3
+ e
4
210 sau
3e
1
+ 2e
2
+ 2e
3
+ e
4
300 sau
4e
1
+ 3e
2
+ 2e
3
+ e
4
400

6-133
Din Figura 6-4 i ecuaiile de mai sus, se observ c task-urile T
1 ,
T
2
i T
3
sunt RM planificabile iar task-ul T
4
nu este.
Un algoritm pentru testul timpului de completare a task-ului Ti (timpul minim t pentru care W
i
(t) = t) este
urmtorul:
. . ) (
; ) (
; ...
; ) (
;
1
0 1
1
0
k k i
k i k
i
i
j
j
t t W cand Stop
t W t
t W t
e t Atribuie
=



100
Timp
W1
100



50


50 100 150
Timp
W2

70


50
50 100 150 200
Timp
W3
210

190
170
150

130
100 200 300 400
Timp
W4
430

380
330
280

230
Figura 6-4 W
i
(t) pentru Exemplul 6-3: linia punctata indica W
i
(t) = t
6-134
6.2.2 Extinderea algoritmului de planificare RM pentru includerea task-urilor
sporadice
Algoritmul RM se adreseaz sistemelor n care toate task-urile sunt periodice. n realitate se ntlnesc rar astfel
de sisteme timp - real, cel mai des fiind ntlnite cele care au att task-uri periodice ct i task-uri sporadice sau
aperiodice. Prin urmare, analiza trebuie extins pentru determinarea influenei execuiei acestora asupra
ncrcrii sistemului i respectrii limitelor de timp.
Task-urile sporadice sunt lansate neregulat, ca rspuns la evenimente care apar independent de execuie.
Deoarece task-urile sporadice nu au asociate perioade, trebuie s se determine rata maxim la care ele pot fi
lansate. Astfel spus, trebuie s existe un interval de timp minim ntre lansrile succesive ale task-urilor
sporadice. n caz contrar, nu exist o limit maxim pentru timpul de ncrcare a sistemului de ctre task-urile
sporadice i va fi imposibil de garantat c se respect timpii limit.
O modalitate de includere a task-urilor sporadice este de a le considera pur i simplu ca task-uri periodice, cu o
perioad egal cu intervalul de timp minim posibil ntre dou lansri succesive. Pentru aceasta, se pot imagina
mai multe metode.
Metoda 1
O metod simpl de a ncorpora n sistem task-uri sporadice este aceea de a defini un task periodic fictiv, de cea
mai mare prioritate, la care s se gseasc o perioad de execuie fictiv. n intervalul de timp planificat pentru
execuia acestui task, procesorul este disponibil pentru a executa orice task sporadic gata de execuie. n rest,
timpul va fi afectat task-urilor periodice. Task-urile sporadice nu vor fi lansate n afara intervalului planificat.
Exemplul 6-4:
Se prezint n figura 6-5 un task fictiv cu cea mai mare prioritate, cu perioada de 10 i timpul de execuie
de 2.5. Acest task ocup procesorul pe durata timpului marcat de poriunile haurate, care este destinat s
execute orice task-uri sporadice gata de execuie la fiecare 10 uniti de timp procesorul poate executa
2.5 uniti de task-uri sporadice. Dac pe durata acestui timp, nu exist task-uri sporadice gata de
execuie, procesorul nu execut altceva. Procesorul nu poate executa task-uri sporadice n afara
intervalelor marcate.
Aceast metod este echivalent cu tratarea evenimentelor externe prin testare i prelucrare periodic, fiind
posibile ntrzieri n tratarea evenimentelor.
Metoda 2
Planificarea task-urilor sporadice se poate realiza i prin algoritmul server suspendat (n engl. Deferred Server
- DS). Prin algoritmul DS, prezentat n [LSS87], ori de cte ori procesorul este planificat pentru task-uri
sporadice i nu gsete astfel de task-uri gata de execuie, planificatorul lanseaz n execuie task-uri periodice,
n ordinea prioritii. Totui, dac un task sporadic trece n starea gata de execuie, el preempteaz task-ul
periodic curent i poate ocupa un timp total egal cu timpul alocat pentru task-urile sporadice.
Exemplul 6-5:
0 5 10 15 20 25 30 35 40 45
Figura 6-5 ncorporarea task-urilor sporadice: metoda 1
6-135
n figura 6-6, ocuparea procesorului cu task-urile sporadice este indicat de dreptunghiurile haurate.
Pentru task-urile sporadice sunt alocate uniti de timp de 2.5 pentru fiecare perioad de 10 uniti. Un
task sporadic necesit
i
5 uniti ncepnd cu momentul 5 i preia procesorul. La momentul 7.5
planificatorul gsete c au expirat unitile de timp alocate pe perioada curent i astfel task-ul sporadic
este preemptat de un alt task. La momentul 10 ncepe perioada urmtoare n care task-urile sporadice au
alocate 2.5 uniti, deci se continu execuia task-ului sporadic suspendat pentru restul de 2.5 uniti.
Urmtorul task sporadic, cu un timp total de execuie de 7.5 uniti sosete la momentul 27.5. El primete
2.5 uniti din perioada curent [20,30] plus 2.5 uniti din perioada urmtoare [30,40]. Prin urmare, el
ocup procesorul n intervalul [27.5, 32.5]. La 32.5 cota sa de timp pe procesor (pentru perioada [30,40])
este completat i elibereaz procesorul. La momentul 40 ncepe o nou perioad de task sporadic i task-
ul sporadic primete ultimele 2.5 uniti, fiind complet la momentul 42.5.
Criteriul de planificabilitate pentru algoritmul DS se poate obine din algoritmul de baz RM. Atunci cnd
timpul limit relativ al tuturor task-urilor este egal cu perioada lor i U
s
este utilizarea procesorului alocat
pentru task-urile sporadice, se poate arta c este posibil planificarea task-urilor periodice dac utilizarea total
U (incluznd i contribuia task-urilor sporadice) satisface urmtoarea limit:

5 . 0 1
5 . 0
s s
s s
U daca U
U daca U
U
Cnd U
s
0.5 este posibil s existe seturi de task-uri cu utilizare sczut, care totui nu pot fi fezabil planificate.
Exemplul 6-6:
Presupunem c P
s
= 6 este perioada unui server sporadic i P
1
= 6 este perioada unui task periodic T
1
.
Fie e
s
= 3 timpul de execuie rezervat pentru un task sporadic, ceea ce duce la U
s
=3/6 = 0.5. Atunci
dac task-urile sporadice ocup cte 3 uniti de timp la sfritul unei perioade i respectiv la nceputul
urmtoarei perioade, o perioad total P
1
va trece fr a fi timp pentru T
1
.
Ecuaia de mai sus este o condiie necesar dar nu i suficient pentru planificabilitate. Este uor de construit un
set de task-uri periodice fezabile, chiar i dac U
s
0.5.
6.2.3 Algoritmul de planificare RM n prezena suprancrcrii ocazionale
Un inconvenient al algoritmului RM este c prioritile task-urilor sunt definite de perioadele lor. Practica
dovedete c nu ntotdeauna toate task-urile periodice sunt critice. n astfel de cazuri, pentru a garanta execuia
complet a tuturor task-urilor critice n prezena suprancrcrii ocazionale, este necesar modificarea prioritii
unor task-uri, modificnd corespunztor perioadele.
Motivarea acestei afirmaii se face n exemplul de mai jos.
Exemplul 6-7:
0 5 10 15 20 25 30 35 40 45
Figura 6-6 ncorporarea task-urilor sporadice: metoda 2 (server suspendat)
6-136
Se consider task-urile T
i
, i = 1,..,4, cu perioadele P
i
,

timpii de execuie n cel mai defavorabil caz e
i
i
timpii medii de execuie a
i
. Se consider un set de 4 task-uri cu urmtoarele caracteristici:

i

e
i
a
i
P
i

1 20 10 100
2 30 25 150
3 80 40 210
4 100 20 400

Se presupune c task-urile T
1,
T
2
si T
4
sunt critice i c T
3
nu este critic. Este uor de verificat c dac se
starteaz algoritmul RM pe acest set de task-uri, nu se poate garanta planificabilitatea tuturor celor patru
task-uri dac se consider pentru fiecare cel mai defavorabil caz pentru timpul de execuie. Totui, pentru
timpul mediu de execuie ele pot fi toate planificabile RM. Problema este cum se pot aranja de fapt task-
urile astfel nct task-urile critice s respecte timpii limit sub algoritmul RM chiar i n cel mai
defavorabil caz, n timp ce task-ul T
3
s-i respecte limita de timp de ct mai multe ori.
Soluia este de a crete prioritatea task-ului T
4
prin schimbarea perioadei. Se va nlocui task-ul T
4
cu un
task T
4
cu urmtorii parametri: P
4
= P
4
/ 2, e
4
= e
4
/ 2, a
4
= a
4
/ 2. Este uor de verificat c task-urile
T
1
, T
2
i T
4
sunt RM planificabile chiar i n cazul cel mai defavorabil. T
3
are acum o prioritate mai mic
dect T
4
. n momentul n care algoritmul l planific pe T
4
se execut cod pentru T
4
. Din cauza modului
n care s-a obinut e
4
, dac {T
1
, T
2
, T
4
} este o mulime planificabil RM, atunci va fi timp suficient
pentru a completa execuia lui T
4
.
O alternativ la reducerea perioadei task-ului T
4
este s se ncerce mrirea perioadei lui T
3
. Aceasta poate
fi fcut numai dac timpul limit relativ al lui T
3
poate fi mai mare dect perioada original. n acest caz,
putem nlocui T
3
prin dou task-uri T
3
i T
3
fiecare cu perioada 420 (210 x 2) cu timpi de execuie n
cazul cel mai defavorabil e
3
= e
3
= 80 i timpii de execuie medii a
3
= a
3
= 40. Planificatorul trebuie
s fazeze T
3
i T
3
astfel nct

perioadele de relansare P
3
= 230 uniti s nu se suprapun. Dac setul
de task-uri rezultat (T
1
, T
2
, T
3,
T
3,
T
4
) este RM planificabil, problema este rezolvat.
Se prezint n continuare un algoritm de modificare a prioritii prin modificarea perioadei.
n general, dac se mrete perioada cu un factor k, se va nlocui task-ul original prin k task-uri, fazate n mod
corespunztor. Dac se reduce perioada cu factorul k, task-ul original se nlocuiete printr-un task al crui timp
de execuie este de asemenea redus cu factorul k.
Procedura de transformare a perioadei conduce n final la dou mulimi de task-uri, C i NC, cu urmtoarele
proprieti:
1. C conine toate task-urile critice i posibil unele task-uri necritice iar NC conine numai task-urile
necritice.
2. P
c,max
P
n,min
, unde P
c,max
i P
n,min
sunt perioadele maxime i minime ale task-urilor din C i respectiv
NC.
3. C este RM planificabil n cazul timpilor de execuie cei mai defavorabili pentru task-uri.
Algoritmul de modificare a prioritii este urmatorul:
Se iniializeaz mulimea C cu task-urile critice i mulimea NC cu task-urile necritice. Dac P
c,max
P
n,min

atunci problema este rezolvat. n caz contrar, se trec n mulimea C acele task-uri necritice a cror perioad este
mai mic sau egal cu P
c,max
. Dac noua mulime C este planificabil RM pentru timpii de execuie cei mai
defavorabili, problema este rezolvat. Dac nu, se modific perioada task-urilor necritice n C att ct este
posibil, pn cnd C devine planificabil RM. Dac acest lucru nu este posibil, se micoreaz perioadele task-
urilor critice de prioritate mare i se trec napoi n NC toate task-urile necritice din C a cror perioad este mai
6-137
mare dect cea mai mare perioad a oricrui task critic din C. Se continu acest proces pn cnd sunt asigurate
proprietile de mai sus.
6.2.4 Generalizarea algoritmului de planificare RM
Not:
Acest paragraf (6.2.4) nu este inclus n programa pentru examen.
S-a presupus pn acum c timpul limit relativ al unui task este egal cu perioada sa. n situaia n care nu se
face aceast presupunere, algoritmul RM nu mai este un algoritm optim de planificare cu prioritate static.
Pentru a determina efectele relaxrii condiiei iniiale, d
i
= P
i
, n [Leh90] se consider celelalte dou cazuri: d
i

P
i
i d
i
> P
i
.
Cazul 1: d
i
P
i

Este uor de observat pentru acest caz condiia necesar i suficient pentru ca un task T
i
s fie planificabil RM:
W
i
(t) = t pentru t [0,d
i
]
Cazul 2: d
i
> P
i

Se consider din nou un set de task-uri periodice n cazul timpului de execuie cel mai defavorabil i fazate la
momentul 0. Cnd d
i
P
i
, la un moment dat poate exista numai o instan a aceluiai task n execuie. De aceea,
pentru a verifica planificabilitatea, este suficient s fie fazate toate task-urile din mulime la momentul zero i s
se verifice c prima instan a fiecrui task i respect limita de timp. Aceasta este de fapt originea condiiilor
de planificabilitate RM1 si RM2. Pentru cazul d
i
> P
i
, sunt posibile totui iniieri ale mai multor instane ale
aceluiai task, n cadrul aceleiai perioade. Apare astfel situaia n care trebuie verificate un numr de iniializri
1 pentru a obine timpul de rspuns n cel mai defavorabil caz. Pentru a clarifica aceasta se consider exemplul
urmtor:
Exemplul 6-8:
Se consider cazul cnd n=2, e
1
= 28, e
2
= 71, P
1
= 80 i P
2
= 110. Se seteaz toate limitele de timp la
infinit. Tabela de mai jos arat timpii de rspuns ai task-ului T
2
.

Iniializare Completare Timp rspuns
0 127 127
110 226 116
220 353 133
330 452 122
440 551 111
550 678 128
660 777 117
770 876 106

Dup cum se poate vedea timpul de rspuns cel mai defavorabil nu este pentru prima iniiere ci pentru a
treia. Aceasta indic faptul c nu este suficient s se ia n considerare numai prima iniializare a tuturor
task-urilor.
Se observ c pentru d
i
> P
i
(posibilitatea existenei mai multor instane ale aceluiai task n aceeai perioad)
trebuie determinat o alt condiie de planificabilitate. Se presupune i de aceast dat c T
i
are o prioritate mai
mare dect T
j
dac i numai dac P
i
< P
j
. Numerotarea task-urilor se face n ordinea cresctoare a perioadelor
(ordinea descresctoare a prioritilor).
6-138
Fie din nou S
i
= [T
1
, ,T
i
]. Se definete perioada ocupat de nivel i intervalul [a, b] astfel nct:
b > a;
numai task-urile din Si sunt lansate n [a, b];
procesorul este complet ocupat [a, b]
i
procesorul nu execut nici un task din Si imediat nainte de a sau imediat dup b.
Exemplul 6-9:
Se definete S
i
= [T
1
, ,T
i
] pentru I=1,,5. n figura de mai jos se prezint cele cinci niveluri de perioad
ocupat:




Teorema 6-4
Task-ul T
i
are timpul de rspuns cel mai mare pe durata unei perioade ocupate de nivel i, iniiat cu fazele l
1
=
= l
i
= 0.
Demonstraie: Demonstraia este imediat pentru task-ul de cea mai mare prioritate, task-ul T
1
. Prin urmare, se
consider task-urile T
i
pentru i > 1 i, fr a pierde generalitatea, se presupune c l
1
= 0. Se presupune [0, b) este
o perioad ocupat de nivel i i I
i
> 0. Din definiia perioadei ocupate de nivel i, numai task-urile de prioritate
mai mare dect T
i
se execut n intervalul [0, l
i
). Descrescnd l
i
timpii la care se termin fiecare din aceste task-
uri cu prioritate mai mare nu se vor modifica; tot ce se poate ntmpla este s creasc timpul de rspuns al lui T
i
.
Similar, dac l
k
>0 pentru k < i, reducnd l
k
de asemenea vor crete sau vor rmne neschimbate cerinele de
procesare ale lui T
k
pe intervalul [0, b). Altfel spus, reducnd l
k
va crete sau va rmne neschimbat timpul de
terminare al T
k
.
Astfel, pentru a determina planificabilitatea RM, se poate considera numai cazul n care toate fazrile sunt zero.
Totui, pentru a asigura c task-ul T
i
i respect limita de timp, trebuie verificat dac toate iniializrile sale
ntr-o perioad ocupat de nivel i nceput la momentul 0 i respect limitele de timp.
Fie t(k, i) timpul cnd a k-a iniializare (n interiorul unei perioade ocupate) a task-ului T
i
i completeaz
execuia. Se poate observa c t(k, i) este timpul t minim pentru care se verific urmtoare expresie:

T
3
T
1

T
2
T
1
T
2
T
3
T
4
T
5

Nivel 1
Nivel 2
Nivel 3
Nivel 4
Nivel 5
Figura 6-7 Perioade ocupate
6-139
i
i
j j
ke
P
t
ej t +
(
(
(

=
1
1

Aceast a k-a iniializare va respecta limita de timp dac
t(k, i) < (k - 1)P
i
+ d
i
Este suficient a se verifica respectarea limitelor de timp pentru iteraiile de la 1 la l
i
, unde l
i
= min{ m | mP
i

> t(m,i)}.
Task-ul T
i
este astfel RM planificabil dac i numai dac:

t(k, i) < (k - 1) P
i
+ d
i
,

pentru oricare k l
i

iar setul de task-uri este n totalitate planificabil RM dac toate task-urile din el sunt planificabile RM.
n literatura de specialitate sunt cunoscute puine rezultate care s afirme planificabilitatea RM generalizat.
Este de reinut totui urmtoarea teorem ([KS97]):
Teorema 6-5
Orice set de n task-uri periodice care utilizeaz complet procesorul sub RM trebuie s aib o utilizare a
procesorului de cel puin:

( )

+

=
(
(

|
|

\
| +

=
=

1 5 . 0 1 ) 2 ( log
5 . 0 0
... 3 , 2 1
1
) 1 (
1 ) 1 2 (
1
1
1

daca
daca
daca n
daca n
U
e
n
n

6.2.5 Considerarea ntreruperilor
Latena ntreruperii este intervalul de timp dintre apariia unei ntreruperi hardware i execuia primei
instruciuni din rutina de tratare a acesteia. Pentru anumite poriuni critice de cod se impune ca ntreruperile s fie
temporar dezactivate. Timpul maxim de dezactivare definete cel mai nefavorabil caz de laten a ntreruperii.
n Figura 6-8 se arat timpii implicai n calculul duratei unei prelucrri a ntreruperii care se termin simplu
(eveniment nesemnificativ) ([QNX93]):
6-140
Figura 6-8: Tratarea ntreruperii care se termin simplu
e
l
latena ntreruperii
e
t
timpul de tratare a ntreruperii
e
iret
timpul de terminare a ntreruperii
Rutina de tratare se poate termina simplu sau poate declana planificarea, pentru a activa task-uri care de regul sunt
asociate cu ntreruperea.
e
l
in diagrama de mai sus reprezint latena minim dintre momentul apariiei ntreruperii i declanarea tratrii, dat
pentru cazul n care ntreruperile sunt deja activate n momentul apariiei ntreruperii. Cel mai nefavorabil caz de
laten a ntreruperii este acest timp plus timpul maxim ct planificatorul sau alt task ine ntreruperile dezactivate.
n unele cazuri rutina de tratare ntrerupere de nivel sczut trebuie s planifice execuia unui task care efectueaz
prelucrri suplimentare. Pentru aceasta, rutina de tratare se termin declannd planificarea. Aceasta introduce a
doua form de laten latena de planificare - care trebuie luat n calcul - Figura 6-9.
Latena de planificare reprezint timpul dintre terminarea unei rutine de tratare de ntrerupere i execuia primei
instruciuni din task-ul care continua execuia. Aceasta presupune de obicei timpul necesar pentru a salva contextul
procesului care se execut curent i refacerea contextului procesului cel mai prioritar.
Figura 6-9: Timpii pentru o rutin care se termin cu declanare planificare
e
l
latena ntreruperii
e
t
timpul de tratare a ntreruperii
e
p
latena de planificare
Este foarte important faptul c cele mai multe ntreruperi se termin simplu, fr declanare planificare. De cele mai
multe ori, prelucrarea evenimentului se face n interiorul rutinei de tratare a ntreruperii, declanarea planificrii
fcndu-se numai cnd apar evenimente care trebuie anunate n exterior. De exemplu, umplerea unui tampon cu


e
l

e
t

e
iret

Apariie Tratare Terminare Revenire
e
l

e
t

e
p

Apariie
IRQ
Tratare
IRQ
Terminare IRQ
i planificare
Execuie
task
selectat
6-141
1000 valori achiziionate din proces este un eveniment semnificativ, care declaneaz planificarea, raportat la 999
evenimente nesemnificative anterioare.
Deoarece arhitecturile microcalculatoarelor permit ca ntreruperile hardware s aib prioriti prestabilite,
ntreruperile de prioritate mai mare pot fi programate s aib drept de preempiune asupra ntreruperilor de prioritate
mai mic. Cazurile prezentate anterior arat cea mai simpl situaie - cnd fiecare ntrerupere apare singur.
Determinarea performanelor de timp se poate face n situaiile prezentate mai sus numai pentru ntreruperea cu
prioritate maxim. Cel mai defavorabil caz referitor la performanele de timp se ntlnete ns la ntreruperile cu
prioritatea cea mai mic, deoarece la calculul timpului lor de execuie trebuie luai n considerare toi timpii
asociai ntreruperilor de prioritate mai mare care apar n timpul execuiei lor (Figura 6-10).

Figura 6-10: ntreruperi suprapuse: A n execuie. IRQ
x
lanseaz rutina de tratare asociata Int
x
, care este
preemptat de IRQ
y
i rutina asociat Int
y
. Int
y
declaneaz planificarea task-ului B iar Int
x
planificarea task-
ului C
Pentru a lua n considerare ntreruperile, ele sunt modelate ca task-uri de prioritate mai mare dect task-ul curent
analizat pentru planificabilitate, considernd perioada fiecreia ca timpul minim posibil ntre dou ntreruperi
succesive. Astfel, timpul de completare al unui task i n cel mai defavorabil caz, n prezenta ntreruperilor este



=
(
(
(

+
(
(
(
(

+ =
reruperi k k
i
k
i
j j
i
j i i
P
t
e
P
t
e e t
int
1
1

e
k
este timpul de execuie al ntreruperii k, n cazul cel mai defavorabil, calculat pe baza e
l,
e
t
, e
p
asociate
fiecrei ntreruperi iar P
k
intervalul minim dintre dou declanri succesive ale ntreruperii k.
6.2.6 Considerarea sincronizrii task-urilor
S-a presupus n seciunile anterioare toate task-urile planificate sunt independente i pot fi preemptate la orice
punct al execuiei lor. Totui, task-urile interacioneaz. Primitivele uzuale de sincronizare includ semafoare,
monitoare, rendezvous ADA etc, care protejeaz accesul la seciunile critice din program. Dei aceste metode
sunt necesare pentru a proteja consistena datelor partajate sau pentru a garanta utilizarea corect a resurselor
critice, pot afecta capacitatea sistemului de a respecta cerinele de timp.
Se presupune c seciunile critice sunt imbricate corect. Aceasta nseamn c dac exist seciunile S
1
, S
2
pe un
singur procesor, urmtoarea secven este permis:
Lock S
1
, Lock S
2
... Unlock S
2
, Unlock S
1
n timp ce urmtoarea secven nu este permis:
Lock S
1
, Lock S
2
, Unlock S
1
, Unlock S
2.
Pe un sistem uniprocesor, un task o dat startat continu pn cnd:
A
C
B
Int
x
Int
y
IRQ
x
Abur
6-142
se termin;
se autosuspend pentru ateptarea unui eveniment (operaie I/E, expirare interval de timp etc.);
este preemptat de un alt task cu prioritate mai mare;
este blocat de un task cu prioritate mai mic care a intrat ntr-o seciune critic de care task-ul are
nevoie.
Este deci posibil ca un task de prioritate mic T
L
s blocheze un task de prioritate mai mare T
H
. Aceasta se poate
ntmpla cnd T
H
are nevoie s acceseze o seciune critic ce a fost accesat anterior de ctre T
L
i nu a fost
eliberat. Dei T
H
are o prioritate mai mare dect T
L
, pentru a asigura o funcionare corect, T
L
trebuie lsat s-i
termine seciunea critic nainte ca T
H
s o poat accesa. Blocarea unui task cu o prioritate mai mare de ctre un
task cu o prioritate mai mic are ca efect colateral inversarea prioritii. Acest fapt este ilustrat n exemplul 6-9:
Exemplul 6-9:
Se consider task-urile T
1
, T
2
,

T
3
n ordine descresctoare a prioritii, care i partajeaz un procesor.
Exist o seciune critic S pe care att T
1
, ct i T
3
o folosesc (figura 6-11). T
3
ncepe execuia la
momentul t
o
. La momentul t
1
el intr n seciunea critic S. T
1
este relansat la momentul t
2
i l
preempteaz pe T
3 .
El ruleaz pn la momentul t
3
cnd ncearc s intre n seciunea critic S care este
nc blocat prin suspendarea task-ului T
3
. Astfel T
1
este suspendat i T
3
i reia execuia. La momentul
t
4
,

task-ul T
2
este relansat. Acesta

are o prioritate mai mare dect T
3
i l preempteaz.

T
2
nu are nevoie de
S i ruleaz pn la terminare. Dup ce T
2
i completeaz execuia la t
5
, T
3
se reia i iese din seciunea
critic S la t
6
. T
1


poate acum s-l preempteze pe T
3
i intr n seciunea critic S.
De notat c dei T
2
are o prioritate mai mic dect T
1
, el este n msur s-l ntrzie pe T
1
indirect (prin
preemptarea lui T
3
care l-a blocat pe T
1
). Acest fenomen este cunoscut ca inversarea de prioritate.
O soluie pentru evitarea inversrii de prioritate este utilizarea unui protocol de motenire a prioritii.
Protocolul se bazeaz pe convenia urmtoare: dac un task de prioritate mai mare T
H
este blocat de un task de o
prioritate mai mic T
L
(deoarece T
L
execut o seciune critic de care are nevoie T
H
) task-ul de prioritate mai
mic motenete temporar prioritatea lui T
H
. Cnd resursa critic este deblocat, T
L
i reia prioritatea iniial.
Protocolul de motenire a prioritii este descris mai jos:
1. Task-ul de prioritate cea mai mare T are procesorul alocat. Ori de cte ori T ncearc s intre ntr-o
seciune critic blocat de ctre un alt task, elibereaz procesorul.
2. Dac un task T
1
este blocat de T
2
(datorit disputei pentru seciunea critic) i T
1
T
2
, task-ul T
2

motenete prioritatea lui T
1
atta vreme ct l blocheaz pe acesta. Cnd T
2
iese din seciunea critic, el
S S S
S
t
0
t
1
t
2
t
3
t
4
t
5
t
6
t
7
t
8
Figura 6-11 Inversarea prioritii

T
1


T
2




T
3
6-143
i reia prioritatea pe care a avut-o cnd a intrat n acea seciune. Operaiile de motenirea prioritii i
reluarea prioritii anterioare sunt indivizibile.
3. Motenirea de prioritate este tranzitiv. Dac T
3
blocheaz pe T
2
, care l blocheaz pe T
1
(cu T
1
T
2

T
3
), atunci T
3
motenete prioritatea lui T
1
prin T
2.

4. Un task T
1
poate preempta un alt task T
2
dac T
1
nu este blocat i dac prioritatea curent a lui T
1
este
mai mare dect prioritatea curent a lui T
2
.
Exemplul 6-10 arat cum se poate preveni inversarea prioritii.
Exemplul 6-10
Se reia Exemplul 6-9, pentru a arta cum motenirea prioritii previne inversarea prioritii. La
momentul t
3
cnd T
3
l blocheaz pe T
1
, T
3
motenete prioritatea mai mare a lui T
1
. Astfel, cnd T
2
este
reluat la momentul t
4
el nu-l poate ntrerupe pe T
3
. Rezultatul este c T
1
nu este indirect blocat de T
2
.
Din pcate, motenirea prioritii poate conduce la blocarea reciproc (deadlock). Acest fapt este ilustrat n
exemplul 6-11.
Exemplul 6-11
Se consider dou task-uri T
1
i T
2
, care utilizeaz dou seciuni critice S
1
i S
2
. Aceste task-uri solicit
seciunile critice n urmtoarea secven:
T
1
: Lock S
1
, Lock S
2
, Unlock S
2
, Unlock S
1

T
2
: Lock S
2
, Lock S
1
, Unlock S
1
, Unlock S
2

Fie T
1
T
2
i presupunem c T
2
ncepe execuia la momentul t
o
. La momentul t
1
el blocheaz seciunea
critic S
2
. La momentul t
2
, T
1
este startat i l preempteaz pe T
2
. La momentul t
3,
T
1
ncearc s blocheze
seciunea critic S
1
. La momentul t
4
,

task-ul T
1
ncearc s blocheze S
2
, dar este blocat deoarece T
2
nu a
terminat cu ea. T
2
care acum motenete prioritatea lui T
1
i restarteaz execuia. Oricum, cnd la
momentul t
5
ncearc s blocheze S
1
nu o poate face atta vreme ct T
1
o blocheaz. Att T
1
ct i T
2
sunt
acum n deadlock.
Mai este i un alt inconvenient al motenirii de prioritate. Este posibil ca task-ul de cea mai mare prioritate s fie
blocat o dat de oricare alt task executat pe acelai procesor.
Pentru a rezolva problemele legate de motenirea prioritii, n [SRL90] este prezentat un protocol care
determin prioritatea de nivel maxim (PNM). Prioritatea de nivel maxim a unui semafor este prioritatea cea mai
mare a oricrui task care l poate bloca.
Fie P(T) prioritatea unui task T i P(S) prioritatea de nivel maxim a semaforului asociat seciunii critice S
Exemplul 6-12
Se consider task-urile T
1
, T
2
,

T
3
cu T
1
T
2
T
3
Exist patru seciuni critice i urmtoarea tabel arat
cum blocheaz task-urile seciunile critice i cum rezult prioritatea de nivel maxim.

Seciune critic Accesat de Prioritatea de nivel maxim
S
1
T
1
, T
2
P(T
1
)
S
2
T
1
, T
2
, T
3
P(T
1
)
S
3
T
3
P(T
3
)
S
4
T
2
, T
3
P(T
2
)

Protocolul PNM este similar cu protocolul de motenire a prioritii, cu modificarea c un task poate de
asemenea s fie blocat la intrarea ntr-o seciune critic dac exist cel puin un semafor blocat anterior, de orice
alt task, a crui prioritate de nivel maxim este mai mare sau egal cu prioritatea lui T.
6-144
Exemplul 6-13
Se consider task-urile i seciunile critice de la exemplul 6-12. Se presupune c T
2
ine blocat S
2
, i T
1

este iniiat. T
1
va fi blocat la intrarea n S
1
deoarece prioritatea sa nu este mai mare dect prioritatea de
nivel maxim a lui S
2
.
Teorema 6-6
Protocolul PNM previne blocrile mutuale ntre task-uri. n plus, sub protocolul PNM un task poate fi blocat de
ctre task-urile de prioritate mai mic cel mult o dat.
Protocolul PNM poate fi specificat astfel:
1. Task-ul de cea mai mare prioritate T este alocat procesorului. T elibereaz procesorul ori de cte ori
acceseaz un semafor care protejeaz o seciune critic, dac:
semaforul este deja blocat de un alt task Q (n care caz se spune c este blocat de task-ul Q);
exist un alt semafor S, blocat de un alt task, a crui prioritate de nivel maxim este mai mare sau egal
dect prioritatea lui T. n acest caz, fie S* semaforul cu cea mai mare prioritate dintre cele blocate de alte
task-uri. Se poate spune c T este blocat pe S* i de ctre task-ul care ine blocat pe S*.
2. Dac un task T blocheaz unul sau mai multe task-uri, atunci el motenete prioritatea task-ului cu cea
mai mare prioritate dintre task-urile blocate. Operaiile de motenire a prioritii i reluarea prioritii
anterioare sunt indivizibile.
3. Motenirea prioritii este tranzitiv.
4. Un task T
1
poate preempta un alt task T
2
dac T
2
nu blocheaz o seciune critic de care T
1
are nevoie i
dac prioritatea curent a lui T
1
este mai mare dect prioritatea curent a lui T
2
.
Proprietile de baz ale protocolului PNM sunt:
1. Protocolul PNM previne blocarea reciproc.
2. Fie B
i
mulimea tuturor seciunilor critice care pot cauza blocarea task-ului T
i
i fie t(x) timpul de
execuie pentru seciunea x. Atunci, T
i
va fi blocat pentru cel mult max
xBi
t(x).
Proprietatea 1. permite o analiz a planificabilitii sistemelor care utilizeaz protocolul PNM. De exemplu,
teorema de planificabilitate RM se poate revizui astfel:
Teorema 6-7
Orice set de n procese periodice care utilizeaz integral procesorul sub RM trebuie s aib, pentru fiecare i
[1,,n]

) 1 2 ( ...
1 / 1
2
2
1
1
+ + + + i
P
b
P
e
P
e
P
e
i
i
i
i


unde b
i
= max
xBi
t(x).
6.3 Algoritmul de planificare EDF
Conform algoritmului EDF ([LL73]), procesorul execut ntotdeauna task-ul cu cel mai apropiat timp limit
absolut. EDF este un algoritm de planificare cu prioritate dinamic; prioritile task-urilor nu sunt fixate pre-
execuie, fiind stabilite n timpul execuiei, n funcie de apropierea timpilor limit absolui fa de momentul
planificrii.
Exemplul 6-13
Se consider urmtorul set de task-uri (aperiodice):
6-145

Task Timp de
sosire
Timp de
execuie
Timp limit
absolut
T
1
0 10 30
T
2
4 3 10
T
3
5 10 25

Cnd T
1
sosete, este singurul task care ateapt s se lanseze i i ncepe execuia imediat. T
2
sosete la
timpul 4; din D
2
< D
1
, el are o prioritate mai mare dect T
1
i l preempteaz. T
3
sosete la momentul 5;
deoarece D
3
< D
2
, el are o prioritate mai mic dect T
2
i trebuie s atepte ca T
2
s se termine. Cnd T
2

se termin (la timpul 7), T
3
se starteaz (deoarece el are o prioritate mai mare dect T
1
), T
3
se execut
pn n momentul 17, dup care T
1
se poate relua i executa complet.
Pentru tratarea algoritmului EDF se fac toate presupunerile care s-au fcut pentru algoritmul RM, exceptnd
faptul c task-urile nu trebuie s fie periodice.
EDF este un algoritm optimal de planificare uniprocesor. Altfel spus, dac EDF nu poate planifica fezabil o
mulime de task-uri pe un procesor, nu exist nici un alt algoritm de planificare care ar putea face aceasta.
Dac toate task-urile sunt periodice i au timpii limit relativi egali cu perioada lor, testul pentru
planificabilitatea mulimii de task-uri este simplu:
Dac utilizarea total a unei mulimi de task-uri nu este mai mare dect 1, mulimea de task-uri poate fi
planificat fezabil pe un singur procesor, cu algoritmul EDF.
Dup cum s-a artat anterior, testul de planificabilitate nu este simplu pentru cazul cnd timpii limit relativi nu
sunt egali cu perioada; n astfel de cazuri, trebuie dezvoltat o planificare utiliznd algoritmul EDF, pentru a
vedea dac se respect toi timpii limit pentru un interval de timp dat. Se prezint n continuare un test de
planificabilitate EDF n acest caz.
Se definesc

=
=
n
i i
i
P
e
u
1
, d
max
= max
1 i n
{d
i
} i P = cmmc(P
1
,,P
n
),
unde cmmc este cel mai mic multiplu comun.
Fie h
T
(t) suma timpilor de execuie ai tuturor task-urilor din mulimea T, a cror limit de timp absolut este mai
mic dect t.
Teorema 6-8
O mulime de n task-uri nu este fezabil EDF dac i numai dac:
u > 1
sau
exist
)
`

+ <

) ( max
1
, min
1
max i i
n i
d P
u
u
d P t
astfel nct h
T
(t) > t.
Demonstraia este prezentat n [KS97].
6-146
6.4 Analiza comparativ a algoritmilor RM i EDF
Planificarea task-urilor de timp real astfel nct s se garanteze c toate task-urile i respect timpul limit este
o parte important a oricrui SOTR. Cele mai utilizate tehnici de planificare n timp real sunt cele periodice, n
care planificarea este stabilit pre-execuie, fiind exprimat printr-o tabel de planificare care are numrul de
intrri egal cu cmmmc al perioadelor task-urilor (vezi i 5.2.4.2.1). Aceasta elimin deciziile de planificare n
timpul execuiei i minimizeaz suprancrcarea (planificatorul este declanat la fiecare tick i planific task-
urile conform tabelei), dar introduce cteva probleme precum:
tabela de planificare trebuie calculat off-line, adesea manual i este dificil de modificat atunci cnd
caracteristicile task-urilor se modific n timpul proiectrii;
task-urilor aperiodice de prioritate mare este foarte posibil s li se aloce timp n mod necorespunztor,
deoarece apariia lor nu poate fi anticipat pre-execuie;
plaja mare de perioade (n aceeai aplicaie sunt task-uri cu perioade de 1 x ms, 10 x ms, 100 x ms etc.),
des ntlnit n aplicaiile MCP duce la tabele de dimensiuni foarte mari, inacceptabile uneori pentru
memoria sistemelor utilizate pentru aplicaii ncorporate.
Alternativa la aceste tipuri de planificatoare este folosirea de planificatoare bazate pe prioritate precum RM i
EDF. Utilizarea lor implic ns ncrcarea suplimentar a procesorului, prin dou componente:
suprancrcarea execuiei (datorit execuiei codului planificatorului) i suprancrcarea de planificare
(limitele teoretice ale numrului de task-uri planificabile cu un anumit algoritm). mpreun, aceste
suprancrcri limiteaz timpul procesor utilizat efectiv pentru calculele n timp real.
n continuare sunt analizate aceste suprancrcri pentru RM - care asigneaz prioritile n mod static, n funcie
de perioad - i EDF - care asigneaz prioritile dinamic, n funcie de cel mai apropiat timp limit [Gro02].
Apoi, se discut o propunere de planificator care utilizeaz un algoritm mixt RM - EDF, a crui analiz relev
performane mai bune dect ale RM sau EDF considerate separat.
6.4.1 Suprancrcarea execuiei
Suprancrcarea execuiei (t) se datoreaz analizei listelor de task-uri i adugrii/tergerii task-urilor din
aceste liste.
Cnd task-ul n execuie se blocheaz, SO trebuie s inspecteze/actualizeze anumite structuri de date pentru
identificarea task-ului care se blocheaz i selecia unui nou task pentru execuie. Se asociaz acestor doi pai
suprancrcarea de blocare t
b
i respectiv suprancrcarea de selecie t
s.
Similar, cnd un task blocat este deblocat, SO trebuie s inspecteze/actualizeze din nou structurile de date, ceea
ce implica o suprancrcare de deblocare t
d
. La acest pas, este posibil ca SO s selecteze un nou task pentru
execuie (de exemplu atunci cnd task-ul deblocat are prioritate mai mare dect cel n curs de execuie),
adugndu-se din nou suprancrcarea de selecie.
Fiecare task este blocat i deblocat cel puin o dat n fiecare perioad (deblocarea la nceputul perioadei i
blocarea dup timpul de execuie e
i
), de unde rezult pe fiecare perioad suprancrcarea minima: t
b
+ t
d
+
2t
s
.
Suprancrcarea este i mai mare dac task-urile utilizeaz n timpul execuiei apeluri sistem blocante; dei
utilizarea apelurilor este dependent de fiecare task n parte, pentru simplificare se presupune c jumtate din
task-uri utilizeaz cte un apel blocant n fiecare perioad. Aceasta duce la o suprancrcare medie a execuiei pe
perioada de
t = 1.5(t
b+
t
d
+2t
s
).
n aceste condiii, formula de utilizare a procesorului poate fi rescris astfel:

=
+
=
n
i i
i
P
t e
U
1

6-147
n continuare se calculeaz t pentru politicile de planificare EDF i RM, bazate pe liste nlnuite, care sunt
eficiente n sistemele ncorporate care au un numr relativ mic de task-uri (tipic ntre 15 i 40).
Implementarea EDF
Pentru implementarea algoritmului EDF, toate task-urile blocate i deblocate sunt plasate ntr-o list unic,
nesortat. Acest lucru are sens, deoarece cnd se utilizeaz EDF prioritile task-urilor se modific continuu.
dac s-ar utiliza o list sortat, cum operaiile de inserare/tergere sunt O(n) schimbarea dinamic a prioritilor
ar implica parcurgerea frecvent a acestei liste. Un task este blocat i deblocat modificnd corespunztor
descriptorul de task, iar t
b
i t
d
sunt O(1). Pentru selectarea urmtorului task de executat, este parcurs lista i
este selectat task-ul gata de execuie care are cel mai apropiat timp limit, astfel c t
s
este O(n). Deoarece
selecia este executat de dou ori pe perioad (la blocare i deblocare), creterea numrului de task-uri duce la
creterea rapid a t.
Implementarea RM
n implementarea tipic a algoritmului RM se folosete o list de task-uri gata de execuie, sortat dup
prioritile fixe, cu cel mai prioritar task primul. Blocarea/deblocarea implic tergerea/inserarea de nregistrri
n aceast list sortat.
Task-urile blocate i cele gata de execuie sunt ntr-o singur list, sortat dup prioritate. Pointerul first_ready
indic primul task gata de execuie, astfel nct t
s
este O(1). Blocarea unui task necesit modificarea
descriptorului de task (ca n EDF) i actualizarea first_ready pentru urmtorul task gata de execuie. Aceast
operaie implic parcurgerea listei, astfel ca n cel mai defavorabil caz, t
b
este O(n). Pe de alt parte, deblocarea
necesit numai actualizarea descriptorului de task i compararea prioritii task-ului cu aceea a task-ului indicat
first_ready, modificnd acest pointer dac este necesar. Astfel, t
d
este O(1).
Comparaie implementare RM-EDF
Pentru RM, t
b
= O(n) n timp ce pentru EDF t
s
= O(n). t
b
este luat n calcul numai o singur dat pentru
fiecare operaie de blocare/deblocare task n timp ce t
s
trebuie considerat de dou ori. Din acest motiv, t =
1.5(t
b+
t
d
+2t
s
) este mai mic pentru RM dect pentru EDF, n special atunci cnd numrul de task-uri este
mare.
6.4.2 Suprancrcarea de planificare
Suprancrcarea de planificabilitate este definit ca 1-u
*
, unde u
*
este utilizarea ideal planificabil. Pentru o
ncrcare i un planificator date, u
*
este cea mai mare ncrcare care poate fi planificat fezabil n condiii ideale,
cnd suprancrcarea execuiei este ignorat. S-a artat anterior c, pentru o ncrcare de n task-uri

=
=
n
i i
i
P
e
u
1
.
Conform Teorema 6-8, cu EDF se pot planifica toate ncrcrile cu u 1 (ignornd suprancrcarea de execuie),
astfel nct u
*
= 1. n aceste condiii, suprancrcarea de planificabilitate este 0 pentru EDF.
Pe de alt parte, RM poate avea u
*
1. n [LSD89] se arat c n medie u
*
=0.88 pentru RM..
Prin urmare, RM induce suprancrcare de planificare, pe cnd EDF nu.
Exemplul 6-14
Se consider 5 task-uri, cu perioadele i timpii de execuie de mai jos:

i 1 2 3 4 5 6 7
P
i
4 5 6 7 8 20 30
e
i
1.0 1.0 1.0 1.0 0.5 0.5 0.5

6-148
Fiecare task T
i
are limita de timp d
i
= P
i.
. Utiliznd planificare RM, n intervalul de timp [0,4], task-
urile T
1
- T
4
se execut, dar nainte ca T
5
s

se poat lansa, T
1
este redeclanat din nou. T
1
T
4
au
prioriti mai mari dect T
5
, astfel nct acesta nu se poate lansa pn cnd T
1
T
4
nu se execut
pentru a doua oar. n aceast situaie, T
5
nu i respect limita de timp i prin urmare setul de task-uri
nu este planificabil RM.
Dac este utilizat EDF pentru a planifica mulimea task-urilor, T
5
va fi declanat nainte de a doua
lansare a T
1
- T
4
, deoarece d5=8 este o limit de timp mai apropiat dect limitele de timp ale celei
de-a doua lansri a T
1 -
T
4
. Prin urmare, mulimea de task-uri este planificabil EDF.
6.5 Studiu de caz: algoritm mixt de planificare RM-EDF
Se prezint n continuare o variant de planificare ([ZPS99]) care speculeaz ct mai bine calitile politicilor de
planificare RM i EDF: suprancrcarea de execuie mai mic a RM i lipsa suprancrcrii de planificabilitate a
EDF.
Relund Exemplul 6-14, se observ c existena T
5
face ca ncrcarea de planificabilitate a RM s nu permit
planificarea fezabil. Task-urile T
6
- T
7
au perioadele mai lungi i pot fi planificate fr probleme de orice
planificator, fie el RM sau EDF.
Se folosete aceast observaie ca baz de pornire pentru planificatorul mixt RM / EDF. Sub acesta, T
1
- T
5


vor
fi planificate cu EDF astfel nct T
5


nu-i va pierde limita de timp. Pentru task-urile rmase se va utiliza
planificarea RM.
Aceast soluie are ca avantaje:
micorarea suprancrcrii de execuie, deoarece lista de task-uri EDF se micoreaz;
mbuntirea suprancrcrii de planificare, prin micorarea listei RM.
Planificatorul mixt gestioneaz dou liste de task-uri: lista task-urilor cu prioriti dinamice (PD), care conine
task-urile planificate cu EDF i lista task-urilor cu prioriti fixe (PF) care conine task-urile planificate cu RM.
mprirea task-urilor se face prin analiza de planificabilitate pre-execuie. Se detecteaz task-ul cu cea mai mare
perioad care nu poate fi planificat RM, fie acesta T
x.
Task-urile T
1
-

T
x
se trec n lista PD iar T
x+1
- T
n
n lista
PF.
n timpul execuiei, deoarece n lista PD sunt task-urile cu cele mai mari prioriti RM (au perioadele mai mici
dect cele din lista PF), aceasta este tratat prioritar.
Planificatorul gestioneaz un contor C
e
care conine permanent numrul de task-uri gata de execuie din lista
PD. C
e
se incrementeaz cnd un task din PD devine gata de execuie i se decrementeaz cnd un task din
aceast list se blocheaz.
La selecie pentru execuie, dac C
e
este diferit de 0, se selecteaz primul task gata de execuie din lista PD. n
caz contrar, lista PD este ignorat i se selecteaz cel mai prioritar task gata de execuie din lista PF, indicat de
ctre first_ready_RM.
6.5.1 Analiza performanelor algoritmului
Utiliznd planificarea mixt, se elimin suprancrcarea de planificare, dar suprancrcarea execuiei rmne.
Aceasta depinde de lista n care este task-ul care urmeaz a fi blocat/deblocat (pentru lista PD suprancrcarea
este mai mare dect pentru lista PF). Se pot considera urmtoarele cazuri:
1) Blocarea unui task din PD: t
b
este O(1) (acelai ca pentru EDF). n cazul cel mai defavorabil, t
s
apare
cnd exist cel puin un task gata de execuie n lista PD, necesitnd parcurgerea acesteia pentru a
selecta urmtorul task. Astfel, t
s
este O(x). Parcurgerea se efectueaz numai dac C
e
este diferit de 0.
6-149
2) Deblocarea unui task din PD: t
d
este O(1). Deoarece la sfritul acestei operaii exist cel puin un task
gata de execuie n lista PD, aceasta va fi parcurs pentru selectarea urmtorului task pentru execuie.
Astfel, t
s
este O(x).
3) Blocarea unui task din PF: t
b
este acelai ca pentru RM, dar pentru un numr mai mic de task-uri n
list, astfel t
b
este O(n-x). Deoarece n execuie este task-ul din lista PF care se blocheaz, nseamn c
nu exist task-uri gata de execuie n lista PD (acestea au prioritatea mai mare dect a oricrui task din
PF), i aceasta nu va fi parcurs pentru selecie. Planificatorul selecteaz pentru execuie task-ul indicat
de first_ready, astfel c t
s
este O(1) (acelai ca pentru RM).
4) Deblocarea unui task din PF: t
d
este O(1) (acelai ca pentru RM). Este posibil ca n lista PD s existe
task-uri gata de execuie, dac C
e
este diferit de 0, prin urmare pentru cel mai defavorabil caz t
s
poate
fi O(x).
Din aceast analiz, rezult pentru operaiile de blocare/deblocare o suprancrcare total a execuiei
planificatorului de t
b
+ 2t
s
+ t
d
.

Pentru task-urile din lista PD, suprancrcarea este O(1) + 2O(x) + O(1) =
2O(x), ceea ce este echivalent cu parcurgerea de dou ori a unei liste de lungime x. Pentru task-urile din lista PF,
suprancrcarea este O(n-x) + O(1) + O(1) + O(x) = O(n)+O(2), ceea ce este echivalent practic cu parcurgerea
unei liste de lungime n, o singur dat. Prin urmare, suprancrcarea este mai mic dect pentru EDF (deoarece
se parcurge de dou ori o list de lungime x comparativ cu parcurgerea de dou ori a uneia de lungime n, iar x <
n) i cu puin mai mare dect RM (o list de lungime n parcurs o singur dat).
6.5.2 Testul de planificabilitate
O mulime de n task-uri sortate dup prioritatea RM poate fi planificat fezabil sub EDF dac
1
1

+
=

=
n
i
i
EDF
i
P
t e
u
unde t
EDF
, corecteaz ecuaia prezentat la 6.3 pentru a include i suprancrcarea execuiei pentru EDF.
Pentru RM, se rescriu ecuaiile de la 6.2, pentru a conine i suprancrcarea execuiei:

=
(
(
(

+ =
i
j j
RM j i
P
t
t e t Q
1
) ( ) (
t
t Q
t O
i
i
) (
) ( =

) ( min
0
t O O
i
d t
i
i
< <
=
unde t
RM
este suprancrcarea execuiei pentru RM.
Mulimea de task-uri poate fi planificat fezabil RM dac
1 , 1 ,
i
O n i i
n practic, aceast ecuaie necesit evaluare numai ntr-un numr finit de puncte, aa cum s-a artat la 6.2.
Planificabilitatea utiliznd algoritmul mixt RM-EDF se testeaz dup cum urmeaz:
1) se verific dac task-urile din PD, T
1
- T
x
sunt planificate fezabil sub EDF:
1
1

+
=

=
x
i i
PD
i
PD
P
t e
u
6-150
2) se verific fezabilitatea task-urilor FP:
1 min , ,
1
0

|
|

\
|
(
(
(
(

+
<

=
<
j
i
j
L j
d t
P
t
t
t e
n i x i
i

unde L poate fi PD sau PF dup cum j este task n lista PD sau PF. Aceast verificare este fcut numai pentru
task-urile din PF (i ia valori ntre x+1 i n), dar n calcul intr i toate task-urile din PD, deoarece au prioritate
mai mare dect cele din PF (j ia valori ntre 1 i i).
6.5.3 Localizarea Tx
Pentru a beneficia de performanele sporite ale algoritmului, este important s se determine corect T
x
, dup care
task-urile T
1
T
x
se trec n lista PD iar T
x+1
T
n
n lista PF.
Mulimea task-urilor T
1
T
x
se gsete aplicnd testul de planificabilitate de mai sus. Se ncepe cu x=0 i se
aplic testul. n caz de succes, cutarea se oprete, altfel se incrementeaz x. Operaia se continu pn cnd
testul de planificabilitate trece (n care caz s-au identificat cele dou liste) sau pn cnd x > n, caz n care
planificarea nu e fezabil (poate fi ns fezabil EDF).


7-151
7 COMUNICAIA TIMP - REAL
Not :
Acest capitol (7) nu este inclus n programa pentru examen.
7.1 Introducere
Comunicarea eficient ntre diferitele dispozitive ale unui sistem timp - real este vital pentru funcionarea
corect a acestuia. n sisteme ncorporate, exist un flux continuu de date de la senzori i panourile de control
ctre clusterul central de procesoare, ntre procesoarele din clusterul central i de la acestea ctre elementele de
execuie i dispozitivele de afiare. Timpul necesar pentru comunicare se adaug la timpul de rspuns al
calculatorului. Sistemele HRT trebuie s utilizeze uneori protocoale de comunicaie care s permit limitarea
timpului necesar pentru comunicaie.
n sistemele SRT, precum multimedia sau videoconferinele, unde sunt transmise date pentru imagine i voce,
cerina de transmitere a mesajelor ntr-o manier temporal este evident: ntrzierile excesive n transmiterea
mesajelor pot degrada n mod semnificativ serviciul furnizat. Totui, n astfel de aplicaii, nerespectarea
ocazional a limitelor de timp pentru livrarea mesajelor nu este fatal.
Analiza comunicrii n SCTRD presupune considerarea urmtoarelor aspecte:
mediul fizic de comunicaie;
topologia reelei;
protocoalele de comunicaie;
planificarea mesajelor;
Scopurile protocoalelor de comunicaie timp - real sunt oarecum diferite de cele ale sistemelor tradiionale de
comunicaii de date, care nu sunt timp - real. n sistemele tradiionale, cheia msurrii performanei este puterea
de transfer a sistemului, adic ct de multe date pot fi transferate n reea ntr-o unitate de timp, de la surs la
destinaie. n sistemele timp - real, cheia msurrii performanei este probabilitatea livrrii unui mesaj ntr-un
anumit timp limit. De notat c un mesaj pierdut are un timp de livrare infinit, ceea ce nseamn c msura
trebuie s se refere att la viteza cu care mesajele sunt transmise ct i la probabilitatea pierderii mesajelor.
ntrzierea unui mesaj este cauzat de timpii necesari pentru:
formatarea i / sau mpachetarea mesajului;
staionarea n cozile de ateptare, pentru accesul la mediul de comunicaie;
transmiterea mesajului de la surs la destinaie;
deformatarea i / sau despachetarea mesajului.
Traficul timp - real va fi clasificat n clase de mesaje, fiecare clas fiind caracterizat prin timpul limit,
structura cadrului i prioritate.
Timpul limit este interpretat n funcie de tipul sistemului:
n sistemele HRT, n special cele ncorporate, timpul limit al traficului se refer la timpul limit al task-
ului cruia i aparine comunicaia;
n aplicaiile de tip multimedia, timpul limit se refer direct la aplicaie.
Prioritatea este bazat pe importana pe care o are clasa de mesaje pentru aplicaie. Dac traficul este
suprancrcat, prioritatea mesajului poate fi folosit pentru a determina care mesaje sunt ntrziate pentru a
asigura ca traficul de importan mai mare s se desfoare astfel nct s respecte constrngerile temporale.
7-152
Din punct de vedere al structurii datelor, cele mai multe surse de date timp - real genereaz trafic care se
ncadreaz n una din urmtoarele dou categorii:
Rat constant: la intervale periodice sunt generate pachete de mrime fix. Exemplu: senzori care transmit
valorile msurate cu o frecven prestabilit. Traficul cu rat constant este mai uor de gestionat, deoarece este
fluent i fr suprancrcri brute. Fluena traficului duce la micorarea numrului de buffer-e care trebuie
asigurate n fiecare nod.
Rat variabil: fie pachete de mrime fix sunt generate la intervale neregulate de timp, fie pachete cu mrime
variabil sunt generate la intervale regulate. Exemplu: traficul de voce i imagini. Suprancrcrile brute n
trafic pot duce la creterea semnificativ a numrului de buffer-e.
7.2 Protocoale de comunicaie timp - real
n tabelul de mai jos se reprezint protocoale de comunicaie utilizate n sistemele de calcul timp - real. Unele
din acestea ofer garanii privind respectarea timpul limit. Altele nu ofer aceste garanii dar sunt algoritmi de
efort optim, convenabili pentru sistemele SRT. Cu titlu informativ, se prezint n continuare protocolul bazat pe
timpul limit, prezentat n [FV90] sub denumirea Earliest-Due-Data-Deadline (EDD-D)

Protocol Bazat pe Garantarea
timpului limit
Tip reea
VTCSMA Detecie
coliziuni
Nu Difuzare
Fereastr Detecie
coliziuni
Nu Difuzare
Jeton sincronizat Jeton Da Inel
IEEE 802.5 Jeton Da Inel
Stop-and-go Cadre de timp /
legtur
Da Punct la punct
Magistrala apelata selectiv Linie ocupare
magistral i
cadre de timp
Nu Magistral
Round-robin ierarhic Cadre de timp /
legtur
Da Punct la punct
Bazat pe timpul limit Timpul limit Nu Punct la punct

7.3 Protocoale bazate pe timpul limit
Protocolul bazat pe timpul limit, n reele punct la punct, const n aceea c fiecare nod transmite pachetul care
are cel mai apropiat timp limit. Exist dou variante: preemptiv i nepreemptiv. n protocoalele preemptive,
dac un nod recepioneaz un pachet cu un timp limit mai apropiat dect al pachetului care este n curs de
transmisie, transmisia curent este oprit i se starteaz imediat transmiterea noului pachet. n protocoalele
nepreemptive, nu este permis ntreruperea transmisiei n curs. Se poate defini un protocol n care transmisia
pachetului curent este terminat sau nu, n funcie de limitele de timp ale pachetelor nou sosite i fraciunea
transmis deja din pachetul curent.
Cea mai simpl versiune a acestui protocol se execut pe reele locale, organizate ca inel unidirecional, care au
o cale unic ntre surs i destinaie. Cnd emitorul s dorete s stabileasc o comunicaie timp - real cu
7-153
destinaia d, algoritmul EDD-D stabilete un canal s d care are suficient capacitate pentru satisfacerea
cerinelor de timp real. Protocolul EDD-D recunoate trei clase de trafic:
Trafic garantat: Sistemul trebuie s garanteze c fiecare pachet n astfel de trafic sosete n timpul su
limit.
Trafic statistic timp - real: Numai un procent prestabilit din pachetele din fluxul de date asociate
acestui trafic i pot depi timpul limit.
Trafic care nu este timp - real: Pachetele asociate acestui trafic nu sunt constrnse s fie livrate ntr-un
anumit timp limit. Aceste pachete pot fi trimise numai cnd nu sunt cereri din celelalte dou clase de trafic.
La aceste trei categorii de trafic se asociaz canale de tip timp limit, statistice i respectiv care nu sunt de timp
real.
Exist diferite modaliti n care pot fi specificate ncrcarea i limitele de performan pe un canal. Pentru
scopul propus n curs au fost alei urmtorii parametri, pentru caracterizarea traficului ntre orice pereche i
surs-destinaie:
Parametrii de ncrcare:
x
min,i
intervalul minim de timp ntre apariia pachetelor pe canalul i; n acest caz, rata maxim de
transport a pachetelor pe canalul i este 1/x
min,i

x
med
valoarea minim a intervalului mediu de timp dintre apariia pachetelor, pe un interval de durata I,
considerat cel mai ocupat ntre intervalele de durata I;
l
max
lungimea maxim a pachetului;
t
max,i
timpul maxim de servire n nod a pachetelor de pe canalul i.
Limitarea performanei:
limitarea ntrzierii pentru pachetele de pe canalul i,
i
;
rata maxim de pierdere a pachetelor.
Pentru traficul garantat, se precizeaz timpul limit de livrare, pentru traficul statistic att timpul limit de
livrare ct i procentajul acceptabil de pachete pentru care se admite nerespectarea timpului limit.
Pentru trafic garantat, protocolul rezerv succesiv lrgime de band pentru fiecare pereche surs-destinaie.
Dac pentru sursa s este necesar un timp limit pn la destinaia d, sistemul trebuie s determine calea de la s la
d care respect acest timp. Pentru o cale de lungime n, timpul consumat n procesul de stocare i expediere
pentru fiecare pachet este nt
max,i
. Dac timpul limit pentru un pachet este D
i,
timpul de ntrziere disponibil pe
canalele de comunicaie este
i
= D
i
nt
max,i
. Acest timp este repartizat n mod egal de-a lungul tuturor
nodurilor; altfel spus, fiecare nod din cale are propriul timp limit local i trebuie s trimit mai departe pachetul
la
i
= t
max,i
+
i
/ n timp dup recepionarea lui.
Pentru trafic statistic, dac de la nodul s trebuie stabilit un canal ctre nodul d, probabilitatea de acceptare a
pierderii timpului limit,
pierdut,i
este mprit ntre cele n noduri pe calea sd. Timpul de ntrziere disponibil
este de asemenea divizat ntre nodurile din cale, n aceeai manier ca i pentru traficul garantat. Fiecare nod m
care aparine cii sd trebuie s nu piard limita sa de timp peste probabilitatea
pierdut,i,m
unde
m

pierdut,i,m


pierdut,i

pierdut,i,m
depinde de constrngeri aferente fiecrui nod i de instabilitatea ntrzierii. n continuare se prezint
metoda prin care se determin dac
pierdut,i,m
este respectat.
7.3.1 Constrngeri aferente nodurilor
Toate nodurile pe canalul i sunt alese astfel nct s satisfac anumite constrngeri. Se prezint n continuare
constrngerile pe care trebuie s le respecte un nod m. Se noteaz cu G
m
i S
m
mulimea canalelor cu trafic
garantat i respectiv statistic ce trec prin nodul m. Se definete de asemenea mulimea canalelor C
m
,
C
m
= G
m
U S
m

7-154
1) Constrngerea pentru trafic garantat. Nodul trebuie s aib o capacitate de procesare suficient
pentru a satisface toate tipurile de trafic care l traverseaz. Dac C
m
este mulimea de canale care
trec prin nodul m, atunci
1
min,
max,

m
G j j
j
x
t

Dac aceast condiie nu este satisfcut, nodul nu va fi capabil s fac fa la toate pachetele garantate
pe care le are de distribuit. Desigur, aceast constrngere nu are sens dac G
m
= .
2) Constrngerea pentru trafic statistic se aplic la nodurile traversate de canale cu trafic statistic.
Aceasta asigur c procentul de pachete care i respect timpul limit este sub limita specificat.
Pentru a calcula aceasta trebuie determinat probabilitatea de depire a timpului limit.
Probabilitatea ca un canal i s fie activ (s transporte pachete) la anumite momente de timp ntr-un
interval de durata l este dat de:
i med
i
i
x
x
p
,
min,
=
Probabilitatea ca n orice moment canalele independente dintr-o submulime oarecare M C
m
s fie
simultan active este


=
M i M C i
i i
m
p p M prob ) 1 ( ) (
Se definete o combinaie de depire ca o mulime de canale
m
C
m
astfel nct

Dac canalele in
m
sunt active suficient de mult, ele vor suprancrca nodul m, fcndu-l incapabil s
respecte timpii limit. Probabilitatea ca aceasta s se ntmple este prob(
m
).
Dac
m
este mulimea tuturor combinaiilor de depire pentru nodul m atunci probabilitatea ca nodul
m sa depeasc timpul limit este:


=
m
X
j dtl
X prob P ) (
,

n concluzie, constrngerea pentru traficul statistic este
P
dtl,m

pierdut,i,m

Constrngerea statistic nu este suficient s asigure c traficul statistic va fi ndeplinit aa cum s-a
specificat, fiind necesare constrngeri suplimentare
3) Constrngerea de saturare a planificatorului apare ori de cte ori este matematic imposibil s fie
ndeplinite constrngerile de timp limit.
Exemplul 7-1.
Fie un nod n care dou canale au timpii de servire 3 i respectiv 4 uniti, iar limitele de ntrziere
n nod de 5 i respectiv 6 uniti; dac de pe cele dou canale sosesc simultan dou pachete n nod,
nu exist nici o posibilitate de a le planifica astfel nct ambele s-i respecte timpii limit.
Testul de limitare a ntrzierii determin limita minim a ntrzierii care trebuie asignat canalului i
astfel nct saturarea planificatorului s fie evitat n nod.
1
min,
max,
>


m
j j
j
x
t
7-155
Pentru a determina dac saturarea planificatorului este posibil n nod, se mpart canalele cu trafic
garantat i statistic care trec prin nodul m n dou mulimi dup cum urmeaz:
mulimea canalelor pentru care limita ntrzierii n nodul m este mai mic dect suma timpilor
de servire a canalelor cere trec prin nod, } | {
1
max,
=
< =
m
C
j
j i
t i A
mulimea canalelor pentru care limita ntrzierii n nodul m este mai mare sau egal dect
suma timpilor de servire a canalelor care trec prin nod,
A C B
m
= .
Fr a pierde din generalitate, se numeroteaz canalele care traverseaz nodul m astfel:
mulimea A cu 1, ,llAll, n ordinea n care pachetele se livreaz dac ele ar sosi n acelai
timp n nodul m (canalul 1 este primul servit, canalul llAll ultimul)
mulimea B cu llAll+1, ,llC
m
ll.
n testul de constrngere pentru traficul statistic, dac apare saturarea nodului pachetele nu i mai
respect limita de timp indiferent dac exist sau nu saturarea planificatorului. Totui, saturarea
planificatorului poate aprea i dac nodul nu este saturat, constrngerea de planificare fiind asociat
cu acest caz.
n [FV90] se demonstreaz teorema de mai jos, care afirm constrngerea de saturare a
planificatorului.
Teorema 7-1
Saturarea planificatorului este imposibil ntr-un nod nesaturat, n care

=
=
m
C
j
m j i
C i t x
1
max, min,
,..., 1 ,
dac i numai dac
A i t t
k
i
j
C k i
j i
m
,..., 1 , max
max,
1
max,
= +

=
<

Testul pentru limitarea ntrzierii const deci n verificarea ecuaiei de mai sus pentru toate valorile
lui i (toate canalele din mulimea A).
4) Constrngerea de spaiu pentru buffer-e este impus asupra dimensiunii spaiului pentru buffer-ele
dintr-un nod, n care se memoreaz pachetele asociate cu traficul garantat i traficul statistic, astfel
nct aceste pachete s nu fie distruse.
Dac se stabilete ca un pachet s fie distrus n momentul n care depete timpul su limit, atunci
trebuie ca fiecare pachet al conexiunii i s nu staioneze n nodul m mai mult dect
i
. Spaiul maxim
necesar pentru pachetele canalului i n nodul m va fi:
(
(
(

=
i
i
i
x
l m i
min,
max,
) , (


Se presupune c pachetele care nu sunt timp - real sunt distruse n cazul n care trebuie asigurat spaiu
pentru traficul garantat sau statistic. Spaiul total necesar pentru buffer-e n nodul m este:

=
m
C i
m i m B ) , ( ) (
7-156
5) Constrngerea impus de aplicaie Toate nodurile trebuie s satisfac constrngerea de spaiu
pentru buffer-e dac pentru traficul timp - real nu se tolereaz nici o depire de buffer-e. Un nod
care suport trafic garantat trebuie s satisfac constrngerile pentru trafic garantat i de saturare a
planificatorului, iar un nod care suport trafic statistic trebuie s satisfac constrngerile de trafic
statistic i de saturare a planificatorului.
Aa cum s-a artat, cnd s ncearc s stabileasc un canal cu d, sistemul alege o cale de la s la d astfel
nct fiecare nod pe acea cale s satisfac constrngerile corespunztoare. Dac canalul care a fost
stabilit este statistic, nodurile trebuie s fie alese astfel nct

pierdut,i,m

pierdut,I
(sau
pierdut,i,m

pierdut,i
/n

)
Deoarece sunt posibile mai multe ci ntre s i d, procesul stabilirii canalului const n principal n
ncercri succesive, pn cnd se gsete o cale care satisface toate constrngerile.
Fiecare nod are trei cozi de ateptare, pentru fiecare tip de trafic garantat (CTG), statistic (CTS), non-
timp real (CTN). Pachetele din primele dou cozi sunt ordonate cresctor dup timpul limit. Dac la
pachetele din lista traficului garantat apar suprapuneri ca urmare a parametrului LTTT (Latest Time To
Transmite), se modific timpul limit napoi, astfel nct s nu fie suprapuneri.
Exemplul 7-2.
Sosesc dou pachete cu LTTT de 30 respectiv 34, iar transmiterea fiecruia se face n cinci uniti
de timp. Pentru a evita suprapunerea, se ajusteaz LTTT al primului pachet de la 30 la 34-5=29.
7.3.2 Instabilitatea ntrzierii
Instabilitatea ntrzierii poate afecta funcionarea aplicaiei. De exemplu, n aplicaii precum controlul
proceselor sau multimedia, sosirea mai devreme a pachetelor poate fi la fel de duntoare ca i sosirea cu
ntrziere. Prin urmare, pe lng timpul limit (care specific ntrzierea maxim), trebuie specificat nc un
parametru, i anume limitarea instabilitii ntrzierii pentru fiecare canal (ntrzierea minim). Astfel, se poate
solicita ca pachetele transmise pe canal s aib o ntrziere surs-destinaie n intervalul [D
i
-I
i
, D
i
]. Canalele cu
trafic garantat trebuie s asigure c fiecare pachet satisface aceast condiie iar canalele cu trafic statistic asigur
ca probabilitatea ca timpii de transmitere ai pachetului s nu fie n acest interval s fie mai mic dect
pierdut,i
.
Algoritmul EDD-D poate fi uor modificat pentru a limita instabilitatea ntrzierii. Astfel, pe lng
parametrul LTTT, fiecare nod poate avea i parametrul ETTT (earliest-time-to-transmit).
8-157
8 BIBLIOGRAFIE


[FV90]
Ferrari, D. si D. C. Verma: A scheme for Real-Time Channel Establishment in Wide Area Networks, IEEE
Journal on Selected Areas in Communications Vol. 8, pp. 368-379, 1990.
[Gro02]
Grosu, M.: Sisteme de calcul n timp real distribuite,

Teza de doctorat, Universitatea din Craiova, 20 decembrie
2002.
[KS97]
Krishna, C.M. si K.G. Shin: Real Time Systems, McGraw-Hill Book CO. Singapore, 1997.
[Leh90]
Lehoczky, J.P.: Fixed Priority Scheduling of Periodic Task Sets with Arbitrary Deadlines, Proc. IEEE Real-
Time Sistems Symp., pp. 201-210, IEEE, Los Alamitos, CA, 1990.
[LL73]
Liu, C.L. si J.W. Layland: Scheduling Algorithms for Multiprogramming in Hard-Real-Time Environment,
Journal of the ACM, 20(1), pp. 46-61, 1973.
[LSD89]
Lehoczky, J.P., L. Sha si Y. Ding: The Rate Monotonic Algorithm: Exact Caracterisation and Average Case
Behavior, Proc. of IEEE Real-Time Sistems Symp., pag. 166-171, Los Alamitos, CA, 1989.
[QNX93]
QNX Software Systems LTD: QNX Operating System, System architecture, 1995.
[Stu88]
Stuart, B.: Real Time Computer Control, 1988
[Tur99]
Turley, J.: Embedded Processors by the Numbers, Embedded Systems Programming, pag. 13-14, May 1999.
[ZPS99]
Zuberi, K. M., P. Pillai si K. G. Shin: EMERALDS - a small-memory real-time microkernel, 17
th
ACM
Symposium on Operating Systems Principles (SOSP '99), Published as Operating Systems Review, 34(5):277
291,Dec. 1999.