Documente Academic
Documente Profesional
Documente Cultură
Curs Apd PDF
Curs Apd PDF
Curs Apd PDF
ACHIZIŢIA ŞI
PRELUCRAREA
DATELOR
1 de achiziție și prelucrare
a datelor
Capitolul 1 1
Achiziția și prelucrarea datelor
Perturbaţii
Capitolul 1 2
Achiziția și prelucrarea datelor
Feedforward Perturbaţii
Capitolul 1 3
Achiziția și prelucrarea datelor
Capitolul 1 4
Achiziția și prelucrarea datelor
Capitolul 1 5
Achiziția și prelucrarea datelor
i
u r
EE Proces T
C
Perturbaţii
T b
I
u y
C EE Proces
Capitolul 1 6
Achiziția și prelucrarea datelor
Γ
SCS vn
z1
z2
v1 v2 zn
SCI1 SCI2 SCIn
p1 p2 pn
r1 m1 r2 m2 rn mn
Capitolul 1 7
Achiziția și prelucrarea datelor
P1 Pk Pn
Capitolul 1 8
Achiziția și prelucrarea datelor
Capitolul 1 9
Achiziția și prelucrarea datelor
COP
MEC
BGR
CTR
BDP ABDP
TA EEA
EEN PROCES
Fig. 1.9. Structura unui sistem de conducere în timp real: BDP-baza de date de proces;
BGR-bloc generare rapoarte; ABDP-modul actualizare BDP; MEC – modul elaborare
copmenzi ;COP-consola operator; CTR – ceas de timp real; SIA – subsistem intrări
analogice; SEA – subsistem ieşiri analogice; TA- traductoare analogice; EEA - Elemente
de execuţie analogice; EEN – Elemente de execuţie numerice.
Capitolul 1 10
Achiziția și prelucrarea datelor
MACU
T2
MATn BDST
Tn
Capitolul 1 11
Achiziția și prelucrarea datelor
Capitolul 1 12
Achiziția și prelucrarea datelor
1
Engl. -scheduler
2
Engl. – time driven
3
Engl. – event driven
Capitolul 1 13
Achiziția și prelucrarea datelor
Capitolul 1 14
Achiziția și prelucrarea datelor
Capitolul 1 15
Achiziția și prelucrarea datelor
Capitolul 1 16
Achiziția și prelucrarea datelor
8
Această obiectiv mai este cunoscut şi sub denumirea de claritate.
Capitolul 1 17
Achiziția și prelucrarea datelor
Capitolul 1 18
Achiziția și prelucrarea datelor
Analiză
Codificare
Nu Da
Validare Nu Da
Validare
Specificaţii
Da
Nu Da
Validare Instalare -
testare
Proiectare Nu Da
Validare
Nu Da
Validare
Întreţinere
Nu
Nu
Da
Expirare contract Validare
intreţinere
Da
Fig. 1.11. Procesul iterativ asociat etapelor din existenţa unui produs
informatic.
Capitolul 1 19
Achiziția și prelucrarea datelor
Capitolul 1 20
Achiziția și prelucrarea datelor
2 sistemelor de achiziție
21
Achiziția și prelucrarea datelor
ITF
CP EP
MS
MD
BSF
RTI RTE
MA
Periferic
MC
22
Achiziția și prelucrarea datelor
23
Achiziția și prelucrarea datelor
Start Stop
U b0 b1 b2 b3 b4 b5 b6 b7 Aşteptare
1
t
Impulsuri de
U la generatorul
1 local
t
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
24
Achiziția și prelucrarea datelor
25
Achiziția și prelucrarea datelor
P1 P2
Fig. 2.5. Sistem puternic cuplat cu mai multe
magistrale:
M1 M2
26
Achiziția și prelucrarea datelor
P1 P2
Fig. 2.6. Sistem puternic cuplat cu o singură
magistrală.
M1 M2
P1 P2
K11 K12
M1
K21 K22
M2
27
Achiziția și prelucrarea datelor
AMS_8
AMS_32
P1 S1 P2
AMS_16 AMS_16
P3 P4 S2 P5 S8 S9
AMS_8 AMS_8
S5 S6 S7 S10 S11
28
Achiziția și prelucrarea datelor
VMS
VME
P M I/E M P
VMX
29
Achiziția și prelucrarea datelor
a) b)
c) d)
Fig. 2.10. Tipuri de reţele de comunicaţie:
a - stea; b - multipunct; c - în buclă; d - de tip plasă cu conectare completă.
30
Achiziția și prelucrarea datelor
CALCULATOR
SAD SDC
P R O C E S
31
Achiziția și prelucrarea datelor
32
Achiziția și prelucrarea datelor
a)
BC
b)
Fig. 2.12. Structuri de SADA:
a - cu un singur CAN şi multiplexare analogică; b - cu mai multe CAN şi
multiplexare numerică.
33
Achiziția și prelucrarea datelor
34
Achiziția și prelucrarea datelor
Exemplul 2.1
Să se calculeze rezistenţa R pentru un traductor cu i [4...20 mA] care se
conectează la un CAN care admite la intrare u [...1V ] , domeniul util fiind
u [0,2...1V ] .
Rezolvare
În figura 4.16 se prezintă conectarea traductorului la CAN şi caracteristica
statică a convertorului curent - tensiune realizat cu rezistorul R.
u [V ]
i
1
Traductor R u CAN
0.2
i [mA ]
4 20
a) b)
Fig. 2.13. Conversia curent - tensiune:
a - schema de conectare; b - caracteristica statică.
35
Achiziția și prelucrarea datelor
EN A2 A1 A0 Y
I0
1 0 0 0 I0
I1 1 0 0 1 I1
Y 1 0 1 0 I2
1 0 1 1 I3
1 1 0 0 I4
I7 1 1 0 1 I5
1 1 1 0 I6
1 1 1 1 I7
EN A2 A1 A0 0 * * * -
a) b)
Fig. 2.14. MUXA cu opt intrări:
a - schema principială; b - selecţia intrărilor.
După cum se observă din figura 2.14.b, cuvântul de adresă este format din
4 biţi, din care 3 sunt pentru selecţia canalului (A2,A1,A0) iar bitul EN (enable)
este utilizat pentru selecţia MUX. Orice combinaţie A2A1A0 va conduce la
selecţia unui canal, numai dacă MUX este activat, respectiv dacă EN=1.
În general pentru un MUXA cu n canale de intrare cuvântul de selecţie a
unui canal va fi format din log2n+1 biţi, unde n este o putere întreagă a lui 2.
Elementul principal al MUXA îl constituie reţeaua de comutatoare care
poate fi realizată în următoarele variante constructive:
- cu relee obişnuite;
- cu relee cu mercur;
- cu relee reed;
- cu elemente semiconductoare.
Primele trei variante, care utilizează elemente electromecanice sunt
caracterizate de investiţii iniţiale reduse, compensate însă de un efort
considerabil în timpul exploatării, datorită fiabilităţii şi duratei de viaţă reduse.
Dintre variantele cu elemente electromecanice s-au impus atenţiei,
datorită unui raport performanţă/cost acceptabil, MUX realizate cu relee reed
Un releu reed a cărui structură este prezentată în figura 2.15, poate oferi
următoarele performanţe:
- rezistenţa contactului închis mai mică de 50 mΩ ;
36
Achiziția și prelucrarea datelor
4 3
2
1
U
Fig. 2.15. Schema principialăa unui releu reed:
1 - lamelăfixă; 2 - capsulădin sticlă; 3 - bobină;
4 - lamelămobilă.
D S
RC
G
UC U0 RS
Ui
Rs
U0 Ui (2.2)
Rs Rc rDS (ON )
37
Achiziția și prelucrarea datelor
1 1
2 MUX 2 MUX
1 1
n n
1 1 1
2 MUX 2 MUX 2
2 Y 2 Y
n n MUX
m 0
n
1 1
2 MUX 2 MUX
m m
n n
a) b)
Fig. 2.17. Configuraţii de multiplexoare: a - paralel; b - serie.
38
Achiziția și prelucrarea datelor
Y EN ( A0 A1 D0 A0 A1 D1 A0 A1 D2 A0 A1 D3 ) (4.3)
A1 A0 D0 D1 D2 D3 EN
Y W
Fig. 2.18. MUXN pe un bit cu patru intrări:
A1, A0 - biţi selecţie canal; EN - bit selecţie MUXN;
D0…D3 - intrări numerice; Y - ieşire directă; W - ieşire negată.
39
Achiziția și prelucrarea datelor
C1
R/8 R2
C2
R1 R/4
C3
R/2
C4
-
U1 R
+ U2
Circuit de comandă
De la
calculator
Fig. 2.19. AFAP cu rezistenţă variabilă pe intrare.
C1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
C2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
C3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
C4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
A 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1
1
Din combinaţiile prezentate se eclude combinaţia 0000 care ar corespunde tuturor comutatoarelor deschise.
40
Achiziția și prelucrarea datelor
Circuit de
comandă
De la C1 C2 C3 C4
calculator
R 2R 4R 8R
R
-
U1 +
U2
De la BC
calculator
K U2
U1
CM
41
Achiziția și prelucrarea datelor
42
Achiziția și prelucrarea datelor
n 1
N ai 2i , ai {0,1} , (2.10)
i 0
110
½ Bsmin
101
100
011
010
001
000 Ui
0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.0 * UR
C
½ Bsmin
- ½ Bsmin Ui
0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.0 * UR
43
Achiziția și prelucrarea datelor
3Uref /4 Uin
Codificator
R
- Y3
Uref
R
2Uref /4 - Y2
R
Uref /4 - Y1
R
44
Achiziția și prelucrarea datelor
..
… .
Ieşire
BSMax BSMin paralel
UCNA
Umax
CNA
Fig. 2.24. Schema de principiu a unui CAN cu aproximaţii succesive.
45
Achiziția și prelucrarea datelor
Uin
Da 4U max Nu
u in
8
100 000
Da 6U max Nu Da 6U max Nu
u in u in
8 8
Da Nu Da Nu Da Nu Da Nu
111 110 101 100 011 010 001 000
Tehnica de selecţie a biţilor reiese din figura 2.25, unde s-a considerat un
CAN cu rezoluţia de 3 biţi. După cum reiese din figura 2.25 stabilirea unei
combinaţii la ieşire se realizează prin 3 treceri, alocarea canalelor fiind
prezentată în figura 2.26.
000 001 010 011 100 101 110 111
0 1 2 3 4 5 6 7 8 * Umax/8
Fig. 2.26. Alocarea canalelor pentru un CAN cu n = 3 biţi.
46
Achiziția și prelucrarea datelor
I11 EPP1
M RT
I1m EPP1
U
MD
X
In1 EPPn
BC
N
Inm EPPn
47
Achiziția și prelucrarea datelor
Ui U
Ui Ue
Formator
t t
Ue
Uimin Uimax Ui
R
Vcc
Ue
Ue
t
Ue
Vcc t
R
Fig. 2.29. Schemă pentru filtrarea oscilaţiilor mecanice.
48
Achiziția și prelucrarea datelor
Performanţele unui SADA sunt nemijlocit legate de maniera în care acesta este
conectat la proces. Dupăcum s-a văzut, în structura SADA intrăelementele de
joncţiune care trebuie săprezinte o rezistenţăde contact cât mai mică.
Legat de conectarea sistemului de interfaţăla proces se pun următoarele
probleme:
- rejecţia erorilor de mod comun;
- reducerea zgomotului indus în circuitele de intrare;
- realizarea unei împământări corespunzătoare .
Erorile de mod comun apar datorită faptului că potenţialul masei
traductorului diferă de potenţialul masei SADA, în situaţia în care traductorul
este conectat printr-un singur fir (figura 2.30)
GndT Vg GndS
49
Achiziția și prelucrarea datelor
GndT GndS
R2
VS Rg2 RS Vin
R1
SADA
Vcm Rg1
50
Achiziția și prelucrarea datelor
Rg
CMMR (2.38)
R1 R 2
Conductoare torsadate
Filtru
Ecran
51
Achiziția și prelucrarea datelor
Subsistem Subsistem
analogic numeric
Masăanalogică
Masănumerică
Masăsursă Masă
alimentare construcţie
metalică
Masa generală
a sistemului
Fig. 2.33 Împământarea sistemului de conducere cu o singură priză.
52
Achiziția și prelucrarea datelor
Intrare A AO
Ieşire
Convertor
CC / CC
SA
53
Achiziția și prelucrarea datelor
E1 E2
R3
R2 R4
--
AI --
I2 AO
Ue
R1
I1 OC2
Ui
OC1
Ue E 2
I2 . (2.41)
R4 R3
54
Achiziția și prelucrarea datelor
Tehnici de implementare
CAPITOLUL
a operațiilor multitasking
3 de achiziție și prelucrare
a datelor
1
Atributul de paralel are în vedere execuţia paralelă sau pseudoparalelă a mai multor acţiuni.
Atributul concurent se referă la faptul că taskurile se află în competiţie pentru deţinerea de resurse.
Capitolul 3 55
Achiziția și prelucrarea datelor
A: A1 a1 A2 a2 A3 t [ut]
0 30 50 80 120 130
B: B1 b1 B2 t [ut]
0 20 40 60
C: C1 c1 C2 c2 C3 c3 C4 c4 C5 t[ut]
0 10 20 60 80 100 110 120 140 150
UCP: A1 A2 A3 B1 B2 C1 C2 C3 C4 C5 t[ut]
0 30 50 80 120 130 150 170 190 200 210 250 270 290 300 310 330 340
I/E: a1 a2 b1 c1 c2 c3 c4 t[ut]
0 30 50 80 120 150 170 200 210 250 270 290 300 310 330
UCP: A1 B1 C1 A2 B2 C2 A3 C3 C4 C5 t[ut]
0 30 50 60 90 110 150 160 170 190 200 210 230 240
I/E: a1 b1 c1 a2 c2 c3 c4 t[ut]
0 30 50 70 80 90 130 150 170 190 200 210 230
Capitolul 3 56
Achiziția și prelucrarea datelor
….. …..
a A A A B A C t
Cerere de
întrerupere
Execuţie task
Cerere întrerupere
Execuţie
rutină tratare
b Execuţie task
2
Se consideră procesare pseudoparalelă în regim de timp divizat – time sharing.
Capitolul 3 57
Achiziția și prelucrarea datelor
Taskuri utilizator
Taskuri sistem
Nucleu SOTRM
Hardware
Capitolul 3 58
Achiziția și prelucrarea datelor
3
Această reprezentare în care stările sunt considerate noduri iar directivele arce, mai este cunoscută şi
ca graf al tranziţiilor.
Capitolul 3 59
Achiziția și prelucrarea datelor
Dispecerizare
Deblocare EXECUŢIE LOGICĂ
BLOCAT Blocare
EXECUŢIE
FIZICĂ
Dezactivare
Dezactivare Dispecerizare
Dispecerizare
Dezactivare
CREAT GATA DE
Activare EXECUŢIE
NECREAT
Creare
Capitolul 3 60
Achiziția și prelucrarea datelor
EXECUŢIE
LOGICĂ
GATA DE
EXECUŢIE
După cum apare evidenţiat în figura 3.8, în starea creat se poate ajunge
prin directivele de creare (din starea necreat ) şi dezactivare din celelalte stări.
Din starea creat, se poate ajunge în starea gata de execuţie, prin directiva
activare sau necreat prin directiva de suprimare.
NECREAT
Creare
Suprimare NECREAT
EXECUŢIE
LOGICĂ
CREAT
BLOCAT
Dezactivare GATA DE
Activare
EXECUŢIE
GATA DE
EXECUŢIE
Capitolul 3 61
Achiziția și prelucrarea datelor
EXECUŢIE
LOGICĂ
Dispecerizare
Activare
CREAT GATA DE Dezactivare
EXECUŢIE CREAT
Suprimare
NECREAT
După cum reiese din figura 3.9, în care se prezintă tranziţiile stării
execuţie, în această stare se poate ajunge din starea gata de execuţie prin
directiva de dispecerizare sau blocat prin directiva de deblocare. Se observă de
asemenea că tot prin directiva dispecerizare se au loc tranziţiile execuţie fizică –
execuţie logică şi invers.
Dispecerizare
Blocare BLOCAT
Deblocare
BLOCAT EXECUŢIE LOGICĂ
Dezactivare
CREAT
Dispecerizare Suprimare
EXECUŢIE
GATA DE FIZICĂ NECREAT
EXECUŢIE
Dispecerizare
Fig. 3.10. Tranziţiile asociate stării execuţie.
Capitolul 3 62
Achiziția și prelucrarea datelor
După cum reiese din figura 3.11, în starea blocat se poate ajunge numai
din starea execuţie prin directiva blocare. În ceea ce priveşte tranziţiile din
starea blocat, acestea pot fi în una din stările execuţie (directiva deblocare),
creat (directiva dezactivare) sau necreat (directiva suprimare).
EXECUŢIE
Deblocare
Blocare
EXECUŢIE Dezactivare
BLOCAT CREAT
Suprimare
NECREAT
Aşa după cum s-a mai spus se poate considera că stările analizate mai sus
formează un spaţiu de evoluţie taskurilor. Tranziţiile între stări sunt determinate
de directive sau primitive care pot fi lansate de către taskul aflat în execuţie sau
de către executivul de timp real. În cele ce urmează vor fi prezentate unele
elemente aferente directivelor (primitivelor) aferente stărilor primei abordări.
Directiva Creare asigură tranziţia NECREAT – CREAT care
presupune:
- atribuirea unui indicator;
- alocarea de memorie pentru cod şi stivă (dacă taskul era rezident
înainte de creare zona de cod ar putea fi deja alocată).
Stiva este în mod curent utilizată pentru:
- stocarea variabilelor locale ale taskurilor;
- transmiterea parametrilor şi memorarea adresei de retur la apelarea
unei funcţii;
- salvarea contextelor la ieşirea taskului din execuţie fizică.
Crearea unui task se poate face din alt task în timpul rulării sau în faza
de compilare. Pentru a lansa un task în execuţie executivul trebuie să cunoască
adresa de start, mărimea sivei şi prioritatea, elemente care se comunică la creare.
Directiva Activare presupune tranziţia CREAT – GATA DE
EXECUŢIE. Această directivă realizează activarea unui task şi presupune
alocarea de memorie pentru date. Prin activare, care este interpretată ca o cerere
Capitolul 3 63
Achiziția și prelucrarea datelor
Capitolul 3 64
Achiziția și prelucrarea datelor
Capitolul 3 65
Achiziția și prelucrarea datelor
ACTIV
Aşteptare
Aşteptare Preluare
GATA DE EXECUŢIE
BLOCAT
EXECUŢIE
Continuare Eliberare
INACTIV
Instalare Ştergere
NEINSTALAT
Capitolul 3 66
Achiziția și prelucrarea datelor
Capitolul 3 67
Achiziția și prelucrarea datelor
4
Taskurile aflate într-una dintre stările Gata de execuţie şi Execuţie.
Capitolul 3 68
Achiziția și prelucrarea datelor
Ieşire taskuri
05
07 01 06 02 04 09
blocate
Când un task aflat în rulare este supus unui proces de comutare fără ca
acest lucru să fie provocat de dezactivare sau suprimare în faţa sa stau două
alternative:
- dacă îndeplineşte în continuare condiţiile de rulare, i se asigură
rămânerea normală în LAP şi înscrierea indexului său în penultima poziţie din
listă;
- dacă nu mai îndeplineşte condiţiile de rulare , acesta se blochează şi
este eliminat din LAP şi înscris într-o listă a taskurilor blocate.
Este de menţionat faptul că trecerea în ultima poziţie a taskului aflat în
rulare va determina avansul celorlalte taskuri în LAP.
Dacă taskul aflat în rulare este supus unui proces de comutare datorat
dezactivării sau suprimării, atunci taskul este scos din LAP şi trecut după caz În
starea creat, respectiv necreat.
În modelul din figura 3.13 este surprinsă următoarea situaţie:
- taskul 07 este în rulare şi ocupă ultima poziţie din LAP;
- taskul 01 ocupă prima poziţie din LAP şi este la iminenţa rulării;
- taskurile 06, 02, 04, 09 aşteaptă în această ordine intrarea în rulare
după taskul 01;
- taskul 05, după ce s-a aflat pentru un timp în rulare a fost exclus din
LAP blocându-se;
Capitolul 3 69
Achiziția și prelucrarea datelor
Figura 3.14 prezintă situaţia în care taskul 07 se mai află în rulare, iar
taskul 03 a fost înscris în prima poziţie din LAP.
Ieşire taskuri
07 03 01 06 02 04 09
blocate
Fig. 3.14. Modelul dispecerizării prin rotaţie după inserarea în LAP a taskului 03.
Ieşire taskuri
03 01 06 02 04 09 07
blocate
Fig. 3.15. Modelul dispecerizării prin rotaţie după un proces de comutare în care taskul 07
a rămas rulabil.
Capitolul 3 70
Achiziția și prelucrarea datelor
Ultima poziţie o
(coadă de listă)
p
Prima poziţie
(cap de listă)
Punct inserare
nod nou
Capitolul 3 71
Achiziția și prelucrarea datelor
Capitolul 3 72
Achiziția și prelucrarea datelor
m
a
m
Prima poziţie
(cap de listă) a
m
a
m
a b c d a
Sensul de scădere a priorităţii
Ultima poziţie
(coadă de listă)
Capitolul 3 73
Achiziția și prelucrarea datelor
Ieşire taskuri
suprimate
Intrare taskuri de prioritate 1
Listă circulară - prioritate 2
Ieşire taskuri
blocate
07 08 03
Task
în Intrare taskuri de prioritate 2
rulare
Listă circulară - prioritate 3
Ieşire taskuri
14 10 05
dezactivate
12
Capitolul 3 74
Achiziția și prelucrarea datelor
5
În mod obişnuit acestea sunt cunoscute ca Operaţii Fundamentale Multitasking.
Capitolul 3 75
Achiziția și prelucrarea datelor
Capitolul 3 76
Achiziția și prelucrarea datelor
7
Indivizibilitatea are în vedere faptul că cele două funcţii nu pot fi întrerupte.
8
First Input First Output
Capitolul 3 77
Achiziția și prelucrarea datelor
I←I-1
NU DA
I<0
Se apelează dispecerul
9
În figura 3.21 este surprinsă situaţia în care continuă execuţia taskului apelant, deci taskul deblocat
este adus în execuţie logică.
Capitolul 3 78
Achiziția și prelucrarea datelor
I←I+1
NU DA
I ≤0
10
Pentru ca soluţia să fie funcţională, semaforul SEMEX nu trebuie aservit altor scopuri în afara
excluderii mutuale.
Capitolul 3 79
Achiziția și prelucrarea datelor
Task T1 Task T2
Iniţializare T1 Iniţializare T2
…SEMEX=1… …SEMEX=1…
NU NU
Δt_ex_T2 ?
Δt
DA DA
P1_T1 P1_T2
P(SEMEX) P(SEMEX)
SCr T1 SCr T2
V(SEMEX) V(SEMEX)
P2_T1 P2_T2
Capitolul 3 80
Achiziția și prelucrarea datelor
11
Ca şi în cazul semafoarelor, variabila de tip eveniment EVEX va trebui utilizată numai la
implementarea excluderii mutuale.
Capitolul 3 81
Achiziția și prelucrarea datelor
Iniţializare T1 Iniţializare T2
…EVEX=ADEV… …EVEX=ADEV…
NU NU
Δt_ex_T1 ? Δt_ex_T2 ?
DA DA
P1_T1 P1_T2
NU ? NU ?
EVEX=ADEV EVEX=ADEV
ŞTERGE(EVEX) ŞTERGE(EVEX)
SCr T1 SCr T2
ÎNSCRIE(EVEX) ÎNSCRIE(EVEX)
P2_T1 P2_T2
Capitolul 3 82
Achiziția și prelucrarea datelor
12
Utilizarea căsuţei poştală CPEX şi a mesajului MESEX trebuie să fie numai în excludere mutuală.
utilizată numai la implementarea excluderii mutuale.
Capitolul 3 83
Achiziția și prelucrarea datelor
Iniţializare T1 Iniţializare T2
DA DA
P1_T1 P1_T2
NU ? ? NU
MESEX în CPEX MESEX în CPEX
DA DA
PREIA MESEX din CPEX PREIA MESEX din CPEX
GET GET
SCr T1 CPEX SCr T2
PUT PUT
DEPUNE MESEX în CPEX DEPUNE MESEX în CPEX
P2_T1 P2_T2
Capitolul 3 84
Achiziția și prelucrarea datelor
- EM prin monitoare.
Capitolul 3 85
Achiziția și prelucrarea datelor
Capitolul 3 86
Achiziția și prelucrarea datelor
Capitolul 3 87
Achiziția și prelucrarea datelor
τ τ τ τ τ
a b
Fig. 3.25. Sincronizarea cu timpul:
a – intervalul de execuţie τ în afara intervalului de sincronizare Δt;
b – intervalul de execuţie τ în interiorul intervalului de sincronizare Δt.
Capitolul 3 88
Achiziția și prelucrarea datelor
Task T1 Task T2
Iniţializare T1 Iniţializare T2
…SEMSYNC1=1 …SEMSYNC2=0
NU NU
Δt_ex_T1 ? Δt_ex_T2 ?
DA DA
P1_T1 P1_T2
P(SEMSYNC1) P(SEMSYNC2)
PS1 PS2
V(SEMSYNC2) V(SEMSYNC1)
P2_T1 P2_T2
Iniţializare T0 Iniţializare T1
…SEMSYNC=0… …SEMSYNC=0…
NU
P1_T1
EVEXT?
DA
P(SEMSYNC)
V(SEMSYNC)
P2_T1
Task T0 Task T1
Iniţializare T0 Iniţializare T1
…SEMSYNC=0… …SEMSYNC=0…
NU
Δt_ex_T1 ? P(SEMSYNC)
DA
P_T1
V(SEMSYNC)
13
Timpul de execuţie al taskului T1 este inclus în acest interval.
Capitolul 3 90
Achiziția și prelucrarea datelor
AŞTEAPTĂ (F)
NU NU F VTE1 VTE2
EVEX1? EVEX2?
NU
DA DA F=ADEV ?
ÎNSCRIE(VTE1) ÎNSCRIE(VTE2)
DA
P_T3
P_T1 P_T2
ŞTERGE(VTE1)
ŞTERGE(VTE2)
Capitolul 3 91
Achiziția și prelucrarea datelor
Task T1
Task T2
Iniţializare T1
Iniţializare T2
DA
Mes în C0 ?
NU NU
PREIA Mes din C0 MES_SYNC în C1?
GET DA
GET
C0 PREIA MES_SYNC din C1
t=Δt ?
NU C1
DA TRIMITE MES_CONF în C2
TRIMITE MES_SYNC în C1
PUT
P_T2
NU
MES_CONF în C2? C2
DA GET
PREIA MES_CONF din C2
Capitolul 3 92
Achiziția și prelucrarea datelor
Δt Δt Δt Δt
t
Capitolul 3 93
Achiziția și prelucrarea datelor
Task T2
Iniţializare T2
DA
Mes în C0 ?
P_T2
Iniţializare T1 Iniţializare T2
Iniţializare T0
NU
NU MES_EV NU
EV_EXT ? MES_SYNC
în C0? în C1?
DA PUT DA DA
TRIMITE GET GET
MES_EV PREIA PREIA
în C0 MES_EV MES_SYNC
din C0 din C1
C0
C1
NU P_T2
MES_CONF
în C2? C2
DA
PREIA GET
MES_CONF
din C2
Task T2
Task T0
Iniţializare T2
Iniţializare T0
NU
MES_EV
NU în C0?
EV_EXT ?
DA
DA
TRIMITE PUT PREIA
MES_EV GET MES_EV
în C0 din C0
C0
P_T2
Capitolul 3 95
Achiziția și prelucrarea datelor
Punct de întâlnire
rendez - vous
Capitolul 3 96
Achiziția și prelucrarea datelor
Capitolul 3 97
Achiziția și prelucrarea datelor
Conducta 2
Taskul j
Fig. 3.37. Ilustrarea comunicării prin conducte între două taskuri.
După cum se observă Conducta 1 este deschisă la scriere pentru taskul i şi la
citire pentru taskul j, cu alte cuvinte cele două taskuri îndeplinesc rolurile de
producător respectiv consumator. În ceea ce priveşte Conducta 2, aceasta este
deschisă la scriere pentru taskul j şi la citire pentru taskul i, rolurile celor două
taskuri fiind inversate respectiv taskul i – consumator, taskul j – producător.
3.5.1. Utilizarea semafoarelor în comunicare
În mod uzual semafoarele sunt utilizate pentru gestionarea operaţiilor de
înscriere respectiv de citire a mesajelor din conducte. În cele ce urmează va fi
prezentat un exemplu de comunicare, ilustrat principial în figura 3.38, prin
intermediul unui buffer BUF.
BUF
NPROD V(SGO
N-1 N-1
.
pdata . cdata
TPROD . TCONS
2 2
1 1
0 0
Capitolul 3 98
Achiziția și prelucrarea datelor
NU NU
Δt_ex_TPROD ? Δt_ex_TCONS ?
DA DA
P1_TPROD(pdata) Fig. 2.43.
P(SGOL) P(SPLIN)
P(SEMEX) P(SEMEX)
NPROD=NPROD+1 NCONS=NCONS+1
DA DA
NPROD=N ? NCONS=N ?
NPROD=0 NCONS=0
NU NU
V(SEMEX) V(SEMEX)
V(SPLIN) V(SGOL)
P2_TPROD P2_TCONS(cdata)
Capitolul 3 99
Achiziția și prelucrarea datelor
14
Buffer-ul BUF plin sau gol.
Capitolul 3 100
Achiziția și prelucrarea datelor
Task T1 Task T2
Iniţializare T1 Iniţializare T2
P1_T1 P1_T2
NU NU
T2 gata recepţie ? T1 gata transmisie ?
DA DA
RECEIVE
TRIMITE MES_ INF la T2 PREIA MES_ INF de la T1
SEND
P1_T1 P2_T2
Capitolul 3 101
Achiziția și prelucrarea datelor
Capitolul 3 102
Achiziția și prelucrarea datelor
Capitolul 3 103
Achiziția și prelucrarea datelor
Capitolul 3 104
Achiziția și prelucrarea datelor
Din felul în care a fost construit sistemul STʹ rezultă că acesta este închis.
Dacă taskurile T0 şi Tn+1 nu au alte funcţii în afara celor precizate, atunci
sistemele ST şi STʹ sunt echivalente din punctul de vedere al funcţiilor pe care
acestea le execută. În acest fel s-a realizat închiderea sistemului iniţial de
taskuri ST .
În figura 3.41 se prezintă un exemplu de graf de precedenţă, pentru care
vor fi evidenţiate unele dintre noţiunile prezentate mai sus.
T1
T2
T4 T5 T6
T7
Capitolul 3 105
Achiziția și prelucrarea datelor
2 T 1 T 1 T 2T 3T 2T 3 T 4T 4 T 5 T 6T 5T 6T 7 T 7 ;
3 T 1 T 1T 3 T 3 T 4 T 4 T 2 T 5 T 6 T 5 T 6 T 2 T 7 T 7 .
Coordonarea unui sistem de taskuri presupune definirea şi soluţionarea
următoarelor probleme generale :
A - determinarea taskurilor;
B - blocarea taskurilor;
C - excluderea mutuală a taskurilor;
D - sincronizarea taskurilor.
A - determinarea taskurilor
Un sistem de taskuri este determinat , dacă prin evoluţia sa conduce la
un rezultat unic, indiferent de ordinea de execuţie a taskurilor sau de vitezele
acestora, în condiţiile respectării unor relaţii de precedenţă definite.
Un sistem nedeterminat 15 poate fi transformat în unul determinat prin
adăugarea unor relaţii de precedenţă.
Pentru formalizarea determinării vom considera V tuturor resurselor
sistemului pe care rulează taskurile. Fie o mulţime M M1 ,M 2 , ,M n de
submulţimi ale lui V numite generic locaţii de memorie. Numărul de locaţii
15
Un sistem de taskuri care nu este determinat se numeşte nedeterminat.
Capitolul 3 106
Achiziția și prelucrarea datelor
Capitolul 3 107
Achiziția și prelucrarea datelor
Fig.
T1 R1
Tn T2
Rn-1 R2
Tn-1 T3
Rn-2 R3
T4
Tn-2
Rn-1 R4
Capitolul 3 108
Achiziția și prelucrarea datelor
Q( 0 ) q1
…………………………..
Q(k) 0 dacă ak T i
sau (3.16)
Q(k) qi 1 dacă ak T i
……………………………
A( 0 ) 0
…………………………..
A(k) A( k 1) Q( k 1) dacă ak T i
sau (3.17)
A(k) A( k 1) ei dacă ak T i
……………………………
Capitolul 3 109
Achiziția și prelucrarea datelor
unde
T l T1( l ) ,T2( l ) , ,Tn(ll ) cu l 1, 2 , ,N . (3.19)
Subsistemele Tl se execută în paralel, situaţie în care secvenţele
corespunzătoare fiecărui subsistem se pot întrepătrunde.
Pentru un asemenea subsistem notăm cu
- qi( l ) - vectorul cererilor suplimentare de resurse;
A( 1 ) ( k ) Q( 1 ) ( k )
(2) ( 2)
A ( k ) Q ( k )
A( k ) Q( k ) cu l 1, 2 , ,N (3.22)
(l) (l)
A ( k ) Q ( k )
Referitor la elementele matricelor A(k) şi Q(k) sunt utile următoarele
precizări:
a) dacă Q( l ) ( k ) 0 subsistemul T l aşteaptă alocarea de resurse;
Capitolul 3 110
Achiziția și prelucrarea datelor
16
Se spune de asemenea că fiecare sistem Tl cu l I este interblocat.
Capitolul 3 111
Achiziția și prelucrarea datelor
Capitolul 3 112
Achiziția și prelucrarea datelor
Si Ti Ui
Capitolul 3 113
Achiziția și prelucrarea datelor
D – sincronizarea taskurilor
După cum s-a menţionat la prezentarea acestei operaţii multitasking,
două taskuri se consideră sincronizate, dacă se pot stabili relaţii reciproce între
anumite momente ale execuţiei lor.
În cadrul cooperării a două sau mai multe taskuri, trebuie semnalate
diverse evenimente, acţiuni, etc., astfel încât funcţionalitatea sistemului să fie
cea proiectată.
Sincronizarea unui task poate avea loc fie pe un eveniment exterior
taskului, fie pe o condiţie de timp.
Pentru realizarea sincronizării executivele de timp real pun la dispoziţie
instrumente şi tehnici care au fost prezentate în subcapitolul 3.4.
Capitolul 3 114
Achiziția și prelucrarea datelor
Capitolul 4 115
Achiziția și prelucrarea datelor
0 1 2 ... 8 9
-
Fig. 4.2. Graf sintactic pentru noţiunea număr algebric.
Capitolul 4 116
Achiziția și prelucrarea datelor
literă
literă
cifră
Fig. 4.3. Graf sintactic pentru noţiunea nume.
Capitolul 4 117
Achiziția și prelucrarea datelor
- fiabilitate ;
- eficienţă ;
- flexibilitate ;
- claritate ;
- simplitate;
- portabilitate.
Fiabilitatea LPTR se referă la facilităţile pe care trebuie să le ofere
limbajul respectiv pentru evitarea erorilor de programare şi detectarea automată
în situaţia în care acestea nu au putut fi evitate. Pe cât posibil detectarea erorilor
trebuie să se facă în faza de compilare pe maşina gazdă.
Eficienţa LPTR are în vedere aspecte legate de efortul de dezvoltare
şi de gradul de utilizare a resurselor maşinii ţintă pe care rulează aplicaţia.
Cerinţa de eficienţă impune evident un efort cât mai redus dezvoltare şi un grad
de utilizare cât mai ridicat al resurselor maşinii ţintă.
Flexibilitatea LPTR impune ca toate operaţiile aferente unei aplicaţii
de timp real să fie exprimate exclusiv prin mijloace ale limbajului.
Claritatea LPTR se referă la necesitatea existenţei de resurse
(începând cu cuvinte cheie şi terminând cu facilităţi pentru modularizare şi
structurare) care să permită elaborarea, descrierea şi modificarea programelor
numai prin mijloace ale limbajului , fără a se face apel la mijloace auxiliare cum
ar fi schemele logice, pseudocodul, etc. Este de menţionat faptul că în ceea ce
priveşte claritatea produsului program rezultat aceasta este influenţată de stilul
programatorului care trebuie să se încadreze în obiectivele ingineriei
programării în timp real.
Simplitatea LPTR reprezintă o cerinţă care are în vedere următoarele
aspecte:
- reducerea posibilităţilor de erori în programare datorită unor
construcţii sintactice complexe;
- volume mici şi complexitate redusă pentru compilare;
- obţinerea unor programe obiect eficiente.
Portabilitatea LPTR presupune independenţa codului executabil de
tipul maşinii ţintă. În general portabilitatea contribuie la distribuire costurilor de
elaborare la mai multe aplicaţii. Este de menţionat faptul că portabilitatea este
mai greu de respectat la aplicaţiile de timp real, deoarece pentru ridicarea
performanţelor acestora se caută valorificarea la maximum a disponibilităţilor
hardware ale maşinii ţintă.
Capitolul 4 118
Achiziția și prelucrarea datelor
Structurarea
Când se vorbeşte de structurare se au în vedere aspecte legate de tipizare,
abstractizare şi vizibilitate care se referă atât la date cât şi la cod.
Tipizarea există practic în orice limbaj evoluat şi presupune descrierea
datelor şi a operaţiilor în care sunt implicate, într-o terminologie orientată în
primul rând spre aplicaţie şi mai puţin către maşină.
Un tip de date este caracterizat prin mulţimea valorilor pe care le pot lua
obiectele aferente şi prin mulţimea operaţiilor care le sunt aplicabile.
Abstractizarea presupune conferirea caracterului de generalitate pentru
operaţiile şi funcţiile limbajului (în sensul apropierii de aplicaţie şi de
îndepărtare de maşină). Tipizarea reprezintă alături de ascundere o latură a
abstractizării. Ascunderea presupune transparenţa în ceea ce priveşte folosirea
registrelor şi a locaţiilor de memorie precum şi a transferurilor interne.
Vizibilitatea precizează zonele din program în care o entitate
identificabilă printr-un nume este vizibilă, respectiv poate fi modificată.
Structurile de date (SD) pot fi simple, compuse sau dinamice.
SD simple sunt tipurile de date care nu au componente, valorile lor fiind
unităţi elementare fără structură internă analizabilă (exemple: real, întreg, logic,
caracter).
Un rol important îl deţin tipurile de enumerare definite de operator prin
indicarea tuturor valorilor tipului. Pornind de la tipul enumerat de bază se pot
genera:
- tipuri derivate care pot moşteni numai o parte dintre atributele tipului
de bază;
- subtipuri care limitează gama valorilor posibile.
SD compuse sunt tipurile de date cu mai multe componente cu mai
multe componente (exemple: şiruri, matrice, etc.). Acestea pot fi referite atât
Capitolul 4 119
Achiziția și prelucrarea datelor
Capitolul 4 120
Achiziția și prelucrarea datelor
Concurenţa
Programarea concurentă este acel stil de programare care permite
implementarea prelucrării paralele sau pseudoparalele a datelor.
Având în vedere cele două laturi ale concurenţei (paralelismul şi
interacţiunea) LPTR trebuie să ofere instrumente care să ofere posibilitatea
tranziţiei taskurilor între stări şi substări precum şi implementarea operaţiilor
multitasking (excludere mutuală, sincronizare, comunicare).
În programarea concurentă entitatea de bază este taskul care după cum se
ştie se bucură de proprietăţile de indivizibilitate, secvenţialitate, asincronism,
dinamism.
Excluderea mutuală prezentată pe larg în capitolul precedent presupune
interzicerea execuţiei paralele a secţiunilor critice referitoare la o aceiaşi resursă.
LPTR trebuie să asigure implementarea acestei operaţii prin semafoare, cutii
poştale, mesaje de trecere, monitoare , etc.
Sincronizarea taskurilor presupune în primul rând o coordonare a
execuţiei acestora în raport cu timpul sau cu evenimente externe. LPTR trebuie
să ofere mijloace care să implementeze nu numai corelarea cu timpul sau cu
evenimente cât şi stabilitatea acestei relaţii.
De asemenea trebuie create posibilităţi pentru realizarea sincronizării
implicite sau explicite sau cu timpul după cum urmează:
- sincronizarea implicită specifică realizării disciplinei de acces la o
resursă comună care se partajează;
- sincronizarea explicită conform căreia un program trebuie să aştepte
(durată impredictibilă) până când altul va finaliza o anumită
activitate;
- sincronizarea cu timpul presupune că evenimentele cu care se
realizează sincronizarea sunt impulsurile ceasului de timp real.
Comunicarea între taskuri se poate realiza în două moduri şi anume:
- prin transfer efectiv, caz în care datele se copiază dintr-o zonă de
memorie a unui task, într-o zonă de memorie a celuilalt şi care se
realizează prin canale de comunicaţie;
- prin partajare, caz în care datele se depozitează într-o zonă
accesibilă ambelor taskuri, şi care se realizează printr-o zonă
comună de memorie.
Capitolul 4 121
Achiziția și prelucrarea datelor
Tratarea excepţiilor
Excepţiile reprezintă situaţiile anormale apărute în evoluţia unui
program. Mecanismele de tratare a excepţiilor trebuie să prezinte următoarele
caracteristici:
- simplitate în utilizare;
- să nu încarce procedura de tratare decât la apariţia excepţiei;
- să trateze unitar toate tipurile de excepţii.
Compilarea separată
Pornind de la modularizarea programelor acest procedeu are în vedere
compilarea separată a fiecărui modul. Unităţile de program (de exemplu
taskurile) se compilează individual, dar cu considerarea pentru verificare a
rezultatelor compilării celorlalte module.
Compilarea separată este justificată , printre altele, de următoarele
aspecte:
- se permite dezvoltarea de aplicaţii complexe pe sisteme cu
disponibilităţi reduse;
- la modificări se vor compila numai modulele în care s-a intervenit.
Capitolul 4 122
Achiziția și prelucrarea datelor
1
Se are în vedere dezvoltarea de facilităţi destinate implementării execuţiei pseudoparalele a taskurilor.
2
Embedded systems
3
P1< P2<….< P64
Capitolul 4 123
Achiziția și prelucrarea datelor
Capitolul 4 124
Achiziția și prelucrarea datelor
După cum se observă din figura 4.2, în starea Current se poate ajunge
numai din starea Ready, în timp ce din starea Current pot fi efectuate tranziţii în
toate celelalte stări.
În ceea ce priveşte planificarea pentru execuţie a taskurilor, aceasta se
poate face în mod preemptiv sau cooperativ, modul implicit fiind cel cooperativ.
Modul preemptiv (preemptive scheduling) corespunde întreruperii periodice a
taskului aflat în execuţie şi transferul controlului către un task aflat în starea
Ready. Acest mod elimină posibilitatea acaparării procesorului de către un
singur task. Procedeul mai este cunoscut şi ca time-slice multitasking
(multitasking cu tranşe de timp)7. Modul cooperativ (cooperative multitasking)
presupune cedarea controlului procesorului de către taskul current către un alt
task aflat în starea Ready.
Starea Suspended corespunde stării Creat din prima abordare,
respectiv stării inactive din a doua abordare. Un task suspendat nu poate fi rulat
7
Pentru stabilirea tranşei de timp se apelează funcţia RTKTimeSlice din repertoriul de
instruc iuni al RTKernel.
Capitolul 4 125
Achiziția și prelucrarea datelor
întrucât a fost stopat prin funcţia RTKSuspend. Taskul poate redeveni rulabil
dacă asupra sa se execută funcţia RTKResume8
Un task aflat în starea Blocked nu poate fi executat întrucât aşteaptă
producerea unui eveniment extern cum ar fi: un semnal de la un semafor,
sosirea unui mesaj într-o cutie poştală, etc. Un asemenea task devine Ready
după ce evenimentul aşteptat s-a produs.
Starea Delaying corespunde unui task care a cedat voluntar
controlul procesorului pentru un anumit timp, prin execuţia unei funcţii
RTKDelay9. Tranziţia Delaying – Ready se realizează după trecerea intervalului
de timp specificat prin funcţie.
Un task se găseşte în starea Timed dacă aşteaptă un anumit timp
specificat producerea unui eveniment (din clasa celor specifice stării Blocked).
Ieşirea din această stare se realizează la producerea evenimentului sau la
expirarea timpului.
Este de remarcat faptul că stările Blocked, Delaying, Timed pot fi
încadrate în starea Blocat din prima abordare, respectiv substarea Blocat
specifică celei de-a doua abordări. Examinând figura 4.2 se observă că tranziţia
în fiecare dintre cele trei stări se poate face din starea Current, ieşirea fiind
numai către starea Ready.
Toate taskurile care nu sunt în starea Current sunt menţinute în cozi10
cum ar fi: coada taskurilor Ready, coada taskurilor care aşteaptă la un semafor,
la o cutie poştală, etc.
8
Cele două funcţii din repertoriul RTKernel vor fi prezentate în secţiunea funcţiilor RTK de
administrare a taskurilor.
9
Funcţia RTKDelay din repertoriul RTKernel va fi prezentate în secţiunea funcţiilor RTK de
gestionare a timpului.
10
Coada (queue) reprezintă o structură de date din care elementele sunt extrase în ordinea introducerii
(administrare FIFO – First Input First Output).
11
În acest context prin driver se înţelege o componentă software care permite sistemului de calcul să
comunice cu un anumit dispozitiv. Dacă în program mai sunt utilizate şi alte dispozitive, în afara
consolei, vor trebui iniţializate şi driverele acestora
Capitolul 4 126
Achiziția și prelucrarea datelor
12
TaskHandle este un tip de variabilă predefinit în RTKernel
13
Dacă taskul main nu este referit TaskHandle poate lipsi.
14
Taskul Idle se execută atunci când nici un task utilizator nu se află în starea Current.
Capitolul 4 127
Achiziția și prelucrarea datelor
Capitolul 4 128
Achiziția și prelucrarea datelor
15
Acest tip din RTKernel corespunde tipului enumerat din limbajul C.
Capitolul 4 129
Achiziția și prelucrarea datelor
Stare Explicaţie
Ready Task pregătit (aflat în starea Ready)
Current Task în execuţie (aflat în starea Current )
Suspended Task suspendat prin execuţia funcţiei RTKSuspend
Delaying Task în aşteptare după apelarea funcţiei RTKdelay
BlockedWait Task blocat la un semafor după execuţia unei funcţii RTKWait
TimedWait Task în aşteptare temporizată la un semafor după execuţia
unei funcţii RTKWaitTimed
BlockedPut Task blocat la depunerea unui mesaj într-o cutie poştală plină
după execuţia unei funcţii RTKPut
BlockedGet Task blocat la extragerea unui mesaj dintr-o cutie poştală
goală după execuţia unei funcţii RTKGet
TimedPut Task în aşteptare temporizată pentru depunerea unui mesaj
într-o cutie poştală plină după execuţia unei funcţii
RTKPutTimed
TimedGet Task în aşteptare temporizată pentru extragerea unui mesaj
dintr-o cutie poştală goală după execuţia unei funcţii
RTKGetTimed
BlockedSend Task blocat în trimiterea unui mesaj pe care destinatarul nu îl
poate recepţiona, după execuţia unei funcţii RTKSend
BlockedReceive Task blocat în aşteptarea unui mesaj pe care expeditorul încă
nu l-a trimis, după execuţia unei funcţii RTKReceive
TimedSend Task în aşteptare temporizată pentru transmiterea unui mesaj,
după execuţia unei funcţii RTKSendTimed
TimedReceive Task în aşteptare temporizată pentru recepţia unui mesaj,
după execuţia unei funcţii RTKReceiveTimed
Deadlocked Task blocat în transmiterea unui mesaj către un task
dezactivat (interblocare)
Illegal Argumentul Handle se referă la un task inexistent
Terminated Task terminat ca urmare a execuţiei unei funcţii
RTKTerminate
Capitolul 4 130
Achiziția și prelucrarea datelor
Capitolul 4 131
Achiziția și prelucrarea datelor
16
La iniţializarea RTK în cadrul funcţiei RTKernelInit se execută funcţia RTKSetTime(0);
Capitolul 4 132
Achiziția și prelucrarea datelor
Exemplul 3.3
În acest exemplu se prezintă un caz de utilizare a funcţiei
RTKDelay într-un sistem multitasking destinat afişării cu periodicitate de o
secundă a datei şi orei. Sistemul este constituit din taskurile TaskA şi main.
Taskul TaskA se execută în buclă infinită şi apelează cu
periodicitate de o secundă funcţia afordata care achiziţionează şi tipăreşte
elemente ale timpului sistem şi anume zi, lună, an, oră, minut, secundă.
Aceste elemente se preiau în variabilele d şi t care sunt de tipul struct date,
respectiv struct time din DOS. Afişarea se realizează la nivel de caracter în
regim alfanumeric în care ecranul este văzut ca o matrice cu 80 de coloane
şi 25 de linii, potrivit figurii 3.3.
x
1 2 80
1
25
Capitolul 4 133
Achiziția și prelucrarea datelor
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
//
struct date d;
struct time t;
//
afordata() //functie preluare si tiparire data si ora
{
getdate(&d); // preia data in variabila d
gettime(&T); // preia timpul in variabila t
gotoxy(55,3); //pozitioneaza cursorul
//se tiparesc: ziua, luna anul
cprintf("%02d-%02d-%4d",d.da_day,d.da_mon,d.da_year);
// se tiparesc: ora, minutul, secunda
cprintf(" 02d-%02d-%02d",t.ti_hour,t.ti_min,t.ti_sec);
}
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
main() //task main
{
char c;
RTKernelInit(3); //initializare RTK
clrscr(); //stergere ecran
gotoxy(5,8); //pozitionare cursor
cprintf("E - Iesire");
RTKeybrdInit(); //initializare driver consola
RTKCreateTask(TaskA,5,1024,"Task A"); //creare Task A
//
for(;;) //bucla for infinita
{
c=RTGetCh(); //supraveghere tastatura
if(c==’E’) //testare fata de E
exit(0); //iesire
} //sfarsit for
} //sfarsit main
Capitolul 4 134
Achiziția și prelucrarea datelor
Capitolul 4 135
Achiziția și prelucrarea datelor
Observaţie
Pentru funcţia de iniţializare este acceptată şi forma RTKCreateSema.
Capitolul 4 136
Achiziția și prelucrarea datelor
Exemplul 3.4
În acest exemplu se prezintă un caz de utilizare a semafoarelor
pentru realizarea sincronizării taskurilor. Sistemul este constituit din
taskurile TaskA, TaskB şi main.
Taskul TaskA are aceleaşi caracteristici şi funcţionalitate ca în
exemplul 3.3.
Taskul TaskB este blocat la semaforul binar SB iniţializat cu
zero în taskul main. În momentul când din acest task se execută o funcţie
RTKSignal(SB); se deblochează TaskB pentru 10 secunde. Pe durata
deblocării pe ecran se afişează numărul de secunde trecute. După trecerea
celor 10 secunde în TaskB se execută funcţia RTKWait(SB), ceea ce va
determina revenirea TaskB în starea Blocked. De asemenea pe ecran se
afişează starea în care se găseşte TaskB, adică BLOCAT respectiv
EXECU IE.
Taskul main conţine o primă secţiune de declaraţii şi iniţializări
şi o a doua secţiune în buclă infinită destinată supravegherii tastaturii. La
apăsarea tastei B se execută funcţia RTKSignal(SB), iar la apăsarea
tastei E se iese din program. Ca şi în exemplul precedent, acţionarea altei
taste rămâne fără efect.
Capitolul 4 137
Achiziția și prelucrarea datelor
//
// Program demonstrativ utilizare semafoare
//
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
//
Semaphore SB;
struct date d;
struct time t;
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
TaskB() //task sincronizat
{
int i;
for(;;) //bucla for infinita
{
gotoxy(5,10);
cprintf("BLOCAT ");
RTKWait(SB), //decrementare semafor SB
gotoxy(5,10);
cprintf("EXECUTIE");
for(i=0;i<=9;i++) //bucla for in 10 pasi
{
RTKdelay(18); //temporizare o secunda
gotoxy(15,10);
cprintf("%d",i);//tiparire secunde trecute
} //sfarsit for finit
} //sfarsit for infinit
} //sfarsit TaskB
//
//
main() //task main
{
char c;
RTKernelInit(3); //initializare RTK
clrscr(); //stergere ecran
Capitolul 4 138
Achiziția și prelucrarea datelor
17
FIFO – First Input First Output - strategie potrivit căreia extragerea din coadă se face în ordinea
introducerii.
Capitolul 4 139
Achiziția și prelucrarea datelor
Capitolul 4 140
Achiziția și prelucrarea datelor
Observaţie
Funcţiile (4.24) şi (4.25) sunt de tipul necondiţionat, întrucât acestea
blochează taskul în care sunt apelate până la eliminarea situaţiei de excepţie
(CP plină, în cazul funcţiei RTKPut, respectiv cutie poştală goală în cazul
instrucţiunii RTKGet. Blocarea presupune tranziţia într-una dintre stările
BlockedPut sau după caz, BlockedGet.
Funcţia RTKPutCond asigură depunerea unui mesaj într-o cutie
poştală, numai dacă există spaţiu disponibil. Forma generală a
funcţiei este cea de mai jos,
bool RTKPutCond(Mailbox Box, void *Data); (4.26)
în care Box reprezintă cutia poştală referită, iar *Data este un pointer la data
care se depune.
Execuţia acestei funcţii nu determină blocarea taskului apelant în situaţia
în care cutia poştală referită este plină. În acest caz, în variabila logică de tip
bool se înscrie valoarea False care atestă faptul că funcţia nu s-a executat. În caz
contrar, respectiv la execuţia cu succes a funcţiei, în aceiaşi variabilă se va
înscrie valoarea True.
Funcţia RTKGetCond permite preluarea unui mesaj dintr-o cutie
poştală, numai dacă un asemenea mesaj este disponibil. Forma
generală a funcţiei este cea de mai jos,
bool RTKGetCond(Mailbox Box, void *Data); (4.27)
în care Box reprezintă cutia poştală referită, iar *Data este un pointer la data
care se depune.
Execuţia acestei funcţii nu determină blocarea taskului apelant în situaţia
în care în cutia poştală referită nu există mesaje disponibile. În acest caz, în
variabila logică de tip bool se înscrie valoarea False care atestă faptul că funcţia
nu s-a executat, respectiv nu a fost preluat un mesaj. În caz contrar, respectiv la
execuţia cu succes a funcţiei (preluarea unui mesaj), în aceiaşi variabilă se va
înscrie valoarea True.
Capitolul 4 141
Achiziția și prelucrarea datelor
Exemplul 3.5
În acest exemplu se prezintă utilizarea unei cutii pentru realizarea
sincronizării taskurilor. Sistemul este constituit din taskurile TaskA, TaskB
şi main.
Taskul TaskA are aceleaşi caracteristici şi funcţionalitate ca în
exemplele 3.3 şi 3.4.
Taskul TaskB este blocat pentru aşteptarea sosirii unui mesaj în
cutia poştală CP, iniţializată în taskul main. În momentul când din acest
task se execută asupra cutiei poştale CP o funcţie RTKPut referitoare la
codul unei taste apăsate, TaskB se deblochează. După deblocare se execută
o funcţie RTKGet prin care se preia mesajul (care constă din codul unui
caracter) din CP. Pentru vizualizarea caracterului recepţionat, acesta se
tipăreşte. După această operaţie TaskB trece din nou în starea BlokedPut.
Capitolul 4 142
Achiziția și prelucrarea datelor
//
// Program demonstrativ utilizare cutii postale
//
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
#define slots 1
//
Mailbox CP;
struct date d;
struct time t;
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
TaskB() //task sincronizat
{
char i;
for(;;) //bucla for infinita
{
gotoxy(5,10);
cprintf("B asteapta la CP ");
RTKGet(CP,&i); //preia din CP si depune in i
RTKdelay(18); //temporizare o secunda
gotoxy(5,10);
//tipareste caracterul din i
Capitolul 4 143
Achiziția și prelucrarea datelor
Capitolul 4 144
Achiziția și prelucrarea datelor
18
Respectiv se găse te în una din stările BlockedReceive sau TimedReceive
19
Respectiv se găse te în una din stările BlockedSend sau TimedSend
Capitolul 4 145
Achiziția și prelucrarea datelor
Capitolul 4 146
Achiziția și prelucrarea datelor
Exemplul 3.6
În acest exemplu se prezintă utilizarea mesajelor de trecere pentru
comunicarea între două taskuri. Sistemul multitasking este constituit din
taskurile TaskA, TaskB şi main.
Taskul TaskA are aceleaşi caracteristici şi funcţionalitate ca în
exemplele 3.3, 3.4 şi 3.5.
Taskul TaskB are rolul de task receptor executând în buclă
infinită o secvenţă RTKReceive, cprintf. Rezultă că acest task se găseşte
cvasipermanent în starea BlockedReceive, deblocarea producându-se în
momentul când TaskB a fost referit prin handlerul asociat HandleB în taskul
emiţător. După recepţia mesajului sub forma unui caracter, acesta este
tipărit în coordonate prestabilite, însoţit de mesajul B a recepţionat.
Ca şi în exemplele precedente taskul main conţine o primă
secţiune de declaraţii şi iniţializări şi o a doua secţiune în buclă infinită
destinată supravegherii tastaturii. La apăsarea oricărei taste, se intră într-o
buclă for pe 25 de paşi , în care se transmit, către TaskB în ordine numerele
1, 2, …, 25. Fiecare număr transmis este tipărit, iar intervalul dintre două
transmisii este de o secundă. Dacă tasta apăsată a fost E, această acţiune
va determina ieşirea din program.
Capitolul 4 147
Achiziția și prelucrarea datelor
//
// Program demonstrativ utilizare mesaje de trecere
//
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
//
TaskHandle HandleB;
struct date d;
struct time t;
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
TaskB() //task receptor
{
char j2;
for(;;) //bucla for infinita
{
RTKReceive(&j2,2);// preia mesaj si depune in j2
Goto(5,8);
cprintf("B a receptionat %c ",j2);//tipareste j2
} //sfarsit for infinit
} //sfarsit TaskB
//
//
main() //task main
{
char c, j1=’0’;
int i;
RTKernelInit(3); //initializare RTK
clrscr(); //stergere ecran
gotoxy(5,8); //pozitionare cursor
cprintf("Orice tasta – main transmite E - Iesire");
RTKeybrdInit(); //initializare driver consola
// creare TaskA si TaskB
Capitolul 4 148
Achiziția și prelucrarea datelor
RTKCreateTask(TaskA,5,1024,"Task A");
HandleB=RTKCreateTask(TaskB,5,1024,"Task B");
//
for(;;) //bucla for infinita
{
c=RTGetCh(); //supraveghere tastatura
//
for(i=1;i<=25;i++)//bucla for finita
{
j1++;
gotoxy(5,10);
cprintf("main transmite %c ",j1);
RTKSend(HandleB,&j1); //transmite catre TaskB
RTKDelay(18);
} //sfarsit for finit
//
if(c==’E’) //testare c fata de E
exit(0); //iesire
j1=’0’; //altfel initializeaza j1
} //sfarsit for infinit
} //sfarsit main
Capitolul 4 149
Ingineria aplicaţiilor de timp real
CAPITOLUL
Aplicații bazate pe
5 achiziția datelor
x[n] y[n]
FILTRU
NUMERIC
· , 5.1
151
Ingineria aplicaţiilor de timp real
Relaţiei (5.1) i se poate ataşa o schemă de calcul de tipul celei din figura
5.2 care pune în evidenţă circulaţia fluxului de date. Din analiza acestei figuri se
observă că valorile succesive x[n-k] se obţin prin întârzieri succesive cu
perioada de achiziţie Te a mărimii de intrare x. După efectuarea produselor
· valorile rezultate se însumează într-un bloc sumator şi în final
rezultă mărimea filtrată y[n].
x[n-2]
x[n-1]
x[n-(N-2)] x[n-(N-1)]
x[n]
Te Te Te
+
y[n]
· · , 5.2
152
Ingineria aplicaţiilor de timp real
x[n-1]
x[n-(N-2)] x[n-(N-1)]
x[n]
Te Te Te
y[n]
+
…
y[n-M] Te Te Te
y[n-(M-1)] y[n-2] y[n-1]
Fig. 5.3. Schemă de calcul al unui filtru recursiv.
1
, 5.3
1
1 1 . 5.4
153
Ingineria aplicaţiilor de timp real
1 1
1 1 , 5.5
x[n+1-(N)]
x[n+1-(N-1)]
x[n+1-(2)]
x[n+1-(1)]
x[n+1]
M,w_in
AVANS_C
w_out
w_out=z(M)
j=M
z(j)=z(j-1)
j=j-1
Nu
Da
j=1
?
z(1)=w_in
EXIT
155
Ingineria aplicaţiilor de timp real
Initializare task
FILTER_MED
SEMEX=1, determină valori
iniţiale pentru N,
YFC, YFA, XAC, XAI
Nu
∆t=Te ?
Da
P(SEMEX)
V(SEMEX)
YFA=YFC
N, XAC
AVANS_C
XAI
YFC=YFA+(XAC-XAI)/N
P(SEMEX)
Transfera in BDP
YFC
V(SEMEX)
F1 F2
Fig. 5.7. Frontiere asociate circuitului informaţional într-o aplicaţie de
conducere.
157
Ingineria aplicaţiilor de timp real
F2 F1
iP1 P2_1 P2_k P2_n
uP1
P* NP uP CIU1 TP1
V mA
BC1 CAN
uPk iPk
uCAN TPk
REG uING CIUk
V mA
PERT
REG AB P2
y1* P1 y2
N1 u1
i1
SP1 y1 SP2
BC2 CNA CUI BFA EE
uING
u
uING uCNA
V mA TA
r1
y2i
Fig. 5.8. Circuitul informaţional într-un SRA ierarhizat.
1
CAN i CNA sunt abrevieri pentru Convertor Analog Numeric, respectiv Convertor Numeric
Analog.
2
În raport cu referin a y2i
158
Ingineria aplicaţiilor de timp real
Δx Δi Δu ΔN Δx* Δx Δx*
T CIU CAN BC1 SNMD
uING mA V uCAN uING uING uING
Δx*
Δx*max
Δxmax Δx
159
Ingineria aplicaţiilor de timp real
Δimax Δi Δumax Δu
a b
Δxmax Δx
160
Ingineria aplicaţiilor de timp real
SNMD: ∆ 5.9
∆ ·∆ ,
∆
T: ∆ (5.10
∆ ·∆ ,
∆
CIU: ∆ 5.11
∆ ·∆ ,
∆
CAN: ∆ 5.12
∆ ·∆ .
∆
Δx*
Δxmax
ΔNmax ΔN
161
Ingineria aplicaţiilor de timp real
· . 5.15
· · 5.16
·
sau
· 5.17
unde
· · 5.18
(5.19)
sau
· 5.21
unde
· 5.22
. (5.23)
162
Ingineria aplicaţiilor de timp real
Δi
Δimax
Δxmax Δx
SNMD: ∆ 5.24
∆ ·∆ ,
∆
T: ∆ (5.25
∆ · ∆ ,
∆
CIU: ∆ 5.26
∆ ·∆ ,
∆
CAN: ∆ 5.27
∆ ·∆ .
∆
Rezolvând sistemul format din ecuaţiile (5.24)…(5.27) , în raport cu
mărimea Δx* , rezultă pentru BC1 ecuaţia
∆ 5.28
∆ · √∆ ,
∆
sau impunând pentru mărimea x* reprezentată în memorie acelaşi domeniu de
variaţie ca pentru mărimea fizică
∆ 5.29
∆ · √∆ .
∆
Examinând relaţia (5.29) se observă că elementul BC1 este un element
neliniar, a cărui caracteristică statică este reprezentată în figura 5.15. Este de
remarcat faptul că neliniaritatea introdusă de BC1 compensează neliniaritatea
163
Ingineria aplicaţiilor de timp real
Δx*
Δxmax
ΔNmax ΔN
· . 5.30
5.31
· .
sau
5.32
·
·
respectiv
· , 5.33
unde
· 5.34
,
164
Ingineria aplicaţiilor de timp real
(5.35)
.
165
Ingineria aplicaţiilor de timp real
∆ 5.40
∆ ·∆ .
∆
respectiv
∆ 5.42
∆ ·∆ .
∆
∆ ·∆ , 5.44
care reprezintă ecuaţia modulului BC1, în următoarele condiţii:
- SNMV este caracterizat de funcţia continuă g – relaţia (5.36);
- T este caracterizat de funcţia inversabilă cu inversă continuă f –
relaţia (5.37);
- convertoarele CIU şi CAN au comportare liniară, amplificarea
grupării fiind K1.
În continuare vor fi prezentate două exemple care tratează aspecte
referitoare la conversia în unităţi inginereşti.
Exemplul 5.1.
Să se determine:
a – domeniul de valori al tensiunii la intrarea CAN;
b – rezoluţiile n1 şi n2 ale CAN pentru cele două valori Nmax1
şi Nmax2 ;
c – valorile numerelor de cuante N1 şi N2 în cazul unui nivel
din memorie H* =650mm .
Qi i
H N H*
LT R u CAN BC1
Qe
Rezolvare
a – conform legii lui Ohm, pentru rezistorul R se poate scrie
· 250 · 4 · 10 1 ;
· 250 · 20 · 10 5 ;
U
Umin Umax
167
Ingineria aplicaţiilor de timp real
de unde rezultă
respectiv
1023
· ·1 204,6
5
4095
· ·1 819
5
800 200
0,733138 /
1023 204,6
800 200
0,183150 /
4095 819
168
Ingineria aplicaţiilor de timp real
650 50 0,733138 ·
Din ultima relaţie rezultă
700
954,8
0,733138
Exemplul 5.2.
169
Ingineria aplicaţiilor de timp real
N Q*
u
CAN BC1
i R
FT
Q
Rezolvare
a – conform legii lui Ohm, pentru rezistorul R se poate scrie
· 250 · 4 · 10 1 ;
de unde rezultă Umax
∆ 1 4 5 ;
170
Ingineria aplicaţiilor de timp real
∆ 5.48
∆ · √∆ ,
∆
respectiv,
∆ ∆
·∆ · · √∆ .
∆ ∆
5.49
∆ ∆
∆ ·∆ · · √∆ .
∆ ∆
5.50
sau
∆
∆ · √∆ .
∆
5.51
171
Ingineria aplicaţiilor de timp real
· 409,4 · 3600
, 900 /
2047 409,4
3600
, 2,197 .
2047 409,4
· respectiv
√ 900 2,197 ·
Δy* ΔN Δu Δi Δy Δy* Δy
BC2 CNA CUI SRA SNTD
uING uCNA V mA uING uING uING
172
Ingineria aplicaţiilor de timp real
Δy
Δymax
Δy*max Δy*
Atât pentru convertorul tensiune curent CUI, cât şi pentru cel analog
numeric CNA se presupun caracteristici statice liniare ilustrate în figura 5.21.
Δi Δu
Δimax
Δumax
Δumax Δu ΔN
ΔNmax
a b
Δi
Δimax 173
Ingineria aplicaţiilor de timp real
SNTD: ∆ 5.53
∆ · ∆ ,
∆
SRA: ∆ (5.54
∆ ·∆ ,
∆
CUI: ∆ 5.55
∆ ·∆ ,
∆
CNA: ∆ 5.56
∆ ·∆ .
∆
ΔNmax
Δymax Δy*
174
Ingineria aplicaţiilor de timp real
5.59
· .
sau
· 5.61
unde
· · 5.62
(5.63)
sau
· 5.66
unde
5.67
(5.68)
.
175
Ingineria aplicaţiilor de timp real
Δy
Δymax
Δi
Δimax
SNTD: ∆ 5.69
∆ · ∆ ,
∆
SRA: ∆ (5.70
∆ · √∆ ,
∆
CUI: ∆ 5.71
∆ ·∆ ,
∆
CNA: ∆ 5.72
∆ ·∆ .
∆
ΔN
ΔNmax
Δymax Δy*
5.75
· .
· · 5.76
unde
5.77
·
(5.78)
2· ·
(5.79)
unde
5.81
177
Ingineria aplicaţiilor de timp real
(5.82)
178
Ingineria aplicaţiilor de timp real
∆ 5.87
,
∆
∆ · ∆ . 5.89
∆ · ∆ . 5.90
Exemplul 4.3.
179
Ingineria aplicaţiilor de timp real
LT LC
Qe
Rezolvare
Umax
N
Nmin Nmax
de unde rezultă
180
Ingineria aplicaţiilor de timp real
respectiv
1023
· 0,2 204,6
1
b – pentru SNMD funcţia q , coeficientul K2 şi funcţia h au formele de
mai jos:
∆ 5.91
∆ ·∆ ,
∆
∆ 5.92
,
∆
∆ 5.93
∆ ·∆ ,
∆
∆ 5.94
∆ ·∆ ,
∆
respectiv,
∆ ∆
∆ · ·∆ .
∆ ∆
5.95
∆ ∆
∆ · ∆ · ·∆ .
∆ ∆
5.96
sau
∆
∆ ·∆ .
∆
5.97
181
Ingineria aplicaţiilor de timp real
1023 204,6
1,364 / .
800 200
Exemplul 5.4.
182
Ingineria aplicaţiilor de timp real
u N Q*
i
CUI CNA BC2
FC
FT
Q
Rezolvare
a– 2 1 2 1 4096 1 4095
Umax = 2 V
de unde rezultă
183
Ingineria aplicaţiilor de timp real
respectiv
4095
· 0,4 819
2
c – se calculează coeficienţii f0 şi f2 din relaţiile (5.62) şi (5.63) după
cum urmează:
819 ,
Observaţie
Către CNA se va transmite una dintre valorile N=2914 uCNA sau
N=2915 uCNA, respectiv valoarea trunchiată sau aproximată prin adaos
(deoarece partea fracţionară este > 0,5.
184
Ingineria aplicaţiilor de timp real
Domeniu Traductor
Ymin Ymax Y
185
Ingineria aplicaţiilor de timp real
PROCEDURA TESTARE
COMANDA CALCULATA
Ycalc
Transfera
Ycalc
Y ≤ Ymin
Nu
Da Da
Y ≥ Ymax
Nu
Transfera
Y
RETURN
Fig. 5.32. Schema logică asociată procedurii de testare a unei comenzi calculate.
1
, 5.99
186
Ingineria aplicaţiilor de timp real
5.100
,
respectiv k-1
5.101
,
2 , 5.102
sau după unele grupări convenabile se obţine relaţia de mai jos (5.103)
1 1 2 .
(5.104)
1 2
187
Ingineria aplicaţiilor de timp real
· · · 5.105
Initializare task
REG_PID
SEMEX=1, stabileşte valori
iniţiale pentru UC, UA, EC,
EA, EAA.
Nu
∆t=T ?
Da
P(SEMEX)
V(SEMEX) EAA=EA
Achiziţioneză R UA=UC
EC = I-R
· ·
Transfera UC
la EE via SEA
Initializare task
CNS_OP
SEMEX=1, stabileşte valori
iniţiale pentru I, CC, EA, CAA.
Nu
Tast ?
V(SEMEX)
Da
Da
P? Modif Kp Transfera I,
Nu CC, CA, CAA
în BDP
Da
I? Modif Ti
Nu
P(SEMEX)
Da
D? Modif Td
Nu
Calculează
CC, CA, CAA
Da
R? Modif I
Nu
Nu
E?
Da Fig. 5.34. Schema logică asociată taskului
CONS_OP.
EXIT
189
Ingineria aplicaţiilor de timp real
Qr TT
Qr Tm
Tm
TC
Tref u T
2 EE Proces
TC m
1 (W)
r
Tref TT
220 V
50 Hz
a) b)
Fig. 5.35. Scheme ale SRA temperatura bipoziţional: a - schema principiala; b -
schema de structura; 1 – încălzitor electric; 2 – serpentină evacuare căldură; Tref,
T - temperatura prescrisă, respectiv reglată; u - mărime de comanda (stare
contact); m - mărime de execu ie (debit caloric W); Tm – temperatură ambiantă;
Qr – debit agent răcire.
190
Ingineria aplicaţiilor de timp real
u HYST
CON
DECON
T
Tmin Tref Tmax
ă 1
.
ă 1
5.106
5.107
2
5.108
2
191
Ingineria aplicaţiilor de timp real
u
CON
a)
DECON
t
T
Tmax
Tref
Tmin HYST
T0 b)
192
Ingineria aplicaţiilor de timp real
Initializare task
REG_BP
SEMEX=1, determină valoarea
iniţială UC pentru comanda U
Nu
∆t=Tcom ?
Da
P(SEMEX)
V(SEMEX)
Achizi ionează R
i calculează T
Nu Da
T ≤ Tmin ?
Nu
T ≥ Tmax ?
Da
U = DECON U= CON
Transmite U la EE
via SEN
193
Ingineria aplicaţiilor de timp real
Nu
Tast ?
V(SEMEX)
Da
Da
I? Modif Tref
Transfera
Nu Tmin, Tmax
Da în BDP
H? Modif Hyst
Nu
P(SEMEX)
Nu
E?
Da Calculează
Tmin, Tmax
EXIT
194
Ingineria aplicaţiilor de timp real
C1 C2 P2 P1
EC1 EC1
y1
i1* i1 e1 u1=i2 e2 u2 m y2
Tint BF1 BF2 EE SP2 SP1
+ - +
-
r2
T2
r1
T1
Qp T0 CT
r1
r2
Qa Pc PT
TT
u1=Pi Ti
Qc TC
PC
u2
RR
195
Ingineria aplicaţiilor de timp real
Taskul asociat SRA cascadă din figura 5.40, a cărui schemă logică este
ilustrată în figura 5.42 este sincronizat cu timpul, intervalul de execuţie Texec
fiind impus de inerţia SRA interior.
Initializare task
REG_CASCADA
K=1, SEMEX=1stabileşte valori
iniţiale pentru comenzile u1 şi u2
Nu
∆t=Texec ?
Da
1 2
K?
P(SEMEX) i2 = u1
V(SEMEX)
Achizi ioneză
rk
K=2 ek = ik - rk K=1
Calculează Transfera u2
comanda uk
la EE via SEA
K =2?
196
Ingineria aplicaţiilor de timp real
p21…p2k…p2n
Tp21
.. ..
. .
Tp2k
r21
r2k
P2
i I
SP2 y2
CP
+
y
CA up ∑
+ P1
EC +
i e ua u m y1
- Tint +
BF ∑ EE SP1
+
-
ra
Ta
197
Ingineria aplicaţiilor de timp real
Qp T0 CT
FTa TTp
rp1 T
rp2
Ti I
… TCp Qc Qa TTa
up u ra
∑
TCa
RR Ti
ua
Fig. 5.44. Schema principială a unui SRA temperatură combinat cu acţiune după
abatere şi perturbaţie: TTa, TTp - traductoare de temperatură; FTp - traductor de
debit; TCa, Tcp - regulatoare de temperatură abatere, perturbaţie,; RR - robinet de
reglare, ∑ - sumator.
198
Ingineria aplicaţiilor de timp real
Initializare task
REG_COMB
K=1, SEMEX=1stabileşte valori
iniţiale pentru comenzile ua şi up
Nu
∆t=Texec ? K=1
Da
1 2
K?
P(SEMEX) P(SEMEX)
V(SEMEX) V(SEMEX)
e = i - ra Calculează
comanda up
Calculează Transfera u
comanda ua
la EE via SEA
Nu Da
K=2 K =2? u = ua+up
199
Ingineria aplicaţiilor de timp real
RMV PROCES
BF12 u12 SP12
+ +
i2 *
i2 + u2 + y2
Ti2 BF22 u22 ∑ EE2 SP22 ∑
+ e2 m2
-
r2
T2
200
Ingineria aplicaţiilor de timp real
1 11 21 ; 5.109
2 22 12. 5.110
HVR
Li
xDi FC
RMV LC
xBi L(t) HVRi
Bi FC
F xF LC
HBi D, xD
HB FC
Qab
AT B B, xB
FC
Fig. 5.47. Schema principială a unui SRA concentraţie multivariabil: RMV – regulator
multivariabil; xDi, xBi – referinţe pentru SRA compoziţie produse vârf şi bază.
201
Ingineria aplicaţiilor de timp real
Initializare task
REG_MULTIVAR
J=1, SEMEX=1stabileşte valori
iniţiale pentru comenzile u1 şi u2
Nu
∆t=Texec ?
Da
P(SEMEX)
V(SEMEX)
Achiziţioneză rJ
via SIA
eJ = iJ - rJ
K=1
K=1 Transferă u1 şi u2
la EE via SEA
Selectare algoritm
J=2 regulator cKJ u2 = u21+u22
202
Ingineria aplicaţiilor de timp real
Iniţializare task
CNS_MULTIVAR
SEMEX=1, stabileşte valori iniţiale
pentru i1, i2,
Nu
Tast ?
V(SEMEX)
Da
Da
I? Modif i1*
Transfera
Nu i1, i2
Da în BDP
J? Modif i2*
Nu
P(SEMEX)
Nu
E?
Da Calculează
i1, i2
EXIT
203
Ingineria aplicaţiilor de timp real
204
Ingineria aplicaţiilor de timp real
205