Sunteți pe pagina 1din 5

Grupa 3.2.

Tema de proiectare:
Să se implementeze, folosind mediul de dezvoltare Labwindows/CVI, o aplicație de timp
real ce simulează răspunsul unei funcții de transfer (din Tabelul de mai jos) la semnale de
intrare treaptă, rampă și sinusoidal. Studentul are libertatea de a folosit orice mecanism de
implementare, dar trebuie realizate Taskuri de timp real, bazate pe întreruperi (funcții de tip
CVICALLBACK):
- Crearea unei interfețe grafice sugestive, care să prezinte mecanisme de selecție și
grafice de vizulizare: grafic pentru semnalul de intrare și separat pentru răspunsul
funcției de transfer.
- Selecția din meniu a tipului de semnal treaptă, rampă și sinusoidal (sau un alt tip de
selecție particularizat de către fiecare student).
- Mecanism de ștergere grafic când semnalul umple fereastra de vizualizare a
graficului.
- Obiectele grafice pentru selecția parametrilor de semnal să fie contextuale, adică
atunci când se selectează un anumit tip de semnal să fie indisponibile elementele de
selecție pentru celelalte tipuri de semnale (cu parametrizarea hidden sau dimmed).
- Generarea răspunsului f.d.t. să fie continuu în timp, indiferent de semnalul de intrare
selectat la un moment de timp.
- Să se pună într-un fișier de tip word (ce va fi folosit și la prezentare) toate relațiile
iterative folosite în aplicație (semnale și funcție de transfer)

Prezentarea proiectului se va face individual, folosind platforma classroom/google prin


care se va prezenta aplicația realizată la nivel de funcționalitate, precum și la nivel de cod-
sursă.

Indicații:
➢ Semnalul de tip treaptă se va genera direct prin citirea, la fiecare perioadă de
eșantionare, a valorii unui obict de tip potențiometru. Prin modificarea cu mouse-ul a
valorii potețiometrului, se vor obține diverse valori ale semnalului treaptă în timp real.
➢ Semnalul rampă are relația de definiție 𝑥(𝑡) = 𝑎 ∙ 𝑡 + 𝑏
unde t-timpul curent, a – este panta semnalului rampă, b – este poziționarea pe
ordonată a semnalului (mai sus sau mai jos).
Relația iterativă ce va trebui implementată este 𝑥𝑘 = 𝑎 ∙ 𝑡𝑘 + 𝑏 , unde xk , tk sunt
valoarea semnalului la momentul actual respectiv momentul actual.

Obs: parametrii semnalului a, b, se vor citi de pe interfața grafică de pe 2 obiecte de tip


potențiometru. Dacă a>0 avem pantă pozitivă(semnalul crește), respectiv dacă a<0 avem
pantă negativă (semnalul descrește). Valoarea parametrului b va poziționa semnalul mai
sus sau mai jos pe grafic.
➢ Semnalul sinusoidal este implementat în Documentația/Aplicația primită anterior în
Task_01.
➢ Folosirea tuturor mecanismelor cerute în realizarea aplicației, cum ar fi: creare
meniuri, creare/afișare grafice, folosirea funcțiilor de tip CVICALLBACK,

Tabel cu particularizarea temei pentru fiecare student în parte III-AIA-3.1


Nr.crt. Nume student Funcție de transfer
1 8⋅𝑠+1 𝑌(𝑠)
DUMITRU A.I. ADRIAN-ȘTEFAN 𝐻(𝑠) = =
(23⋅𝑠+1)⋅(5⋅𝑠+1) 𝑈(𝑠)
2 1 𝑌(𝑠)
GHENCIOIU F. MARIUS-OVIDIU 𝐻(𝑠) = =
7⋅𝑠+1)⋅(0.02⋅𝑠+1)⋅(14⋅𝑠+1) 𝑈(𝑠)
3 2⋅𝑠+1 𝑌(𝑠)
GHERGHE I. ȘTEFAN-CĂTĂLIN 𝐻(𝑠) = =
(26⋅𝑠+1)⋅(7⋅𝑠+1) 𝑈(𝑠)
4 1 𝑌(𝑠)
GIOIA L. PETRICĂ-AUGUSTIN 𝐻(𝑠) = =
(54⋅𝑠+1)⋅(0.025⋅𝑠+1)⋅(14⋅𝑠+1) 𝑈(𝑠)
5 GÎNGEOVEANU Ș.S. GABRIELA- 21⋅𝑠+1 𝑌(𝑠)
𝐻(𝑠) = =
LARISA (23⋅𝑠+1)⋅(5⋅𝑠+1) 𝑈(𝑠)
6 GRIGORIE C. GABRIEL- 1 𝑌(𝑠)
𝐻(𝑠) = =
ALEXANDRU (18⋅𝑠+1)⋅(1.2⋅𝑠+1)⋅(18⋅𝑠+1) 𝑈(𝑠)
7 IANCU T.M. TEODOR- 23⋅𝑠+1 𝑌(𝑠)
𝐻(𝑠) = =
ALEXANDRU (32⋅𝑠+1)⋅(22⋅𝑠+1) 𝑈(𝑠)
8 1 𝑌(𝑠)
ILIE G. IULIAN-MIHAI 𝐻(𝑠) = =
(17⋅𝑠+1)⋅(2⋅𝑠+1)⋅(0.01⋅𝑠+1) 𝑈(𝑠)
9 ILINA P.G. TEDDY-RĂZVAN- 12⋅𝑠+1 𝑌(𝑠)
𝐻(𝑠) = =
IONUȚ (41⋅𝑠+1)⋅(31⋅𝑠+1) 𝑈(𝑠)
10 1 𝑌(𝑠)
ION M. CRISTIAN-GABRIEL 𝐻(𝑠) = =
(37⋅𝑠+1)⋅(12⋅𝑠+1)⋅(3⋅𝑠+1) 𝑈(𝑠)
11 7⋅𝑠+1 𝑌(𝑠)
ISPAS D. VALENTIN-MARIAN 𝐻(𝑠) = =
(79⋅𝑠+1)⋅(70⋅𝑠+1) 𝑈(𝑠)
12 1 𝑌(𝑠)
ISPAS V. NICOLETA-GABRIELA 𝐻(𝑠) = =
(101⋅𝑠+1)⋅(7⋅𝑠+1)⋅(0.001⋅𝑠+1) 𝑈(𝑠)
13 0.1⋅𝑠+1 𝑌(𝑠)
IVAN G. MIHAELA-DIANA 𝐻(𝑠) = =
(27⋅𝑠+1)⋅(2⋅𝑠+1) 𝑈(𝑠)
14 1 𝑌(𝑠)
IVAȘCU S. EDUARD-MIHAI 𝐻(𝑠) = =
(9⋅𝑠+1)⋅(41⋅𝑠+1)⋅(0.03⋅𝑠+1) 𝑈(𝑠)
15 2⋅𝑠+1 𝑌(𝑠)
MARICA V. MIHAI-CRISTIAN 𝐻(𝑠) = =
(23⋅𝑠+1)⋅(0.02⋅𝑠+1) 𝑈(𝑠)
16 1 𝑌(𝑠)
MILITARU M. ANDREI-GABRIEL 𝐻(𝑠) = =
(21⋅𝑠+1)⋅(53⋅𝑠+1)⋅(32⋅𝑠+1) 𝑈(𝑠)
17 12⋅𝑠+1 𝑌(𝑠)
MOLNĂR I. MIHNEA-ADRIAN 𝐻(𝑠) = =
(29⋅𝑠+1)⋅(0.02⋅𝑠+1) 𝑈(𝑠)
18 1 𝑌(𝑠)
NEACȘU M. S. MIHAI RADU 𝐻(𝑠) = =
(0.05⋅𝑠+1)⋅(0.012⋅𝑠+1)⋅(11⋅𝑠+1) 𝑈(𝑠)
19 NEGRILĂ L.D. BOGDAN- 0.05⋅𝑠+1 𝑌(𝑠)
𝐻(𝑠) = =
LAURENȚIU (0.07⋅𝑠+1)⋅(0.02⋅𝑠+1) 𝑈(𝑠)
20 1 𝑌(𝑠)
NENIU C. ANCA-MIHAELA 𝐻(𝑠) = =
(0.5⋅𝑠+1)⋅(2⋅𝑠+1)⋅(0.09⋅𝑠+1) 𝑈(𝑠)
21 0.1⋅𝑠+1 𝑌(𝑠)
NEȚA M. RĂZVAN-GEORGIAN 𝐻(𝑠) = =
(0.09⋅𝑠+1)⋅(0.02⋅𝑠+1) 𝑈(𝑠)
22 1 𝑌(𝑠)
NICĂ F. MARIAN-ALEXANDRU 𝐻(𝑠) = =
(30⋅𝑠+1)⋅(0.02⋅𝑠+1)⋅(24⋅𝑠+1) 𝑈(𝑠)
23 20⋅𝑠+1 𝑌(𝑠)
NICU Ș. ȘTEFAN-MIREL 𝐻(𝑠) = =
(11⋅𝑠+1)⋅(29⋅𝑠+1) 𝑈(𝑠)
24 NIȚESCU A. ALEXANDRU- 1 𝑌(𝑠)
𝐻(𝑠) = =
ANDREI (9⋅𝑠+1)⋅(56⋅𝑠+1)⋅(11⋅𝑠+1) 𝑈(𝑠)
25 NOVGORODSCHI E. RAUL- 7⋅𝑠+1 𝑌(𝑠)
𝐻(𝑠) = =
DANIEL (6⋅𝑠+1)⋅(0.2⋅𝑠+1) 𝑈(𝑠)
26 1 𝑌(𝑠)
NUȚĂ N. IONUȚ-ALEXANDRU 𝐻(𝑠) = =
(20⋅𝑠+1)⋅(0.02⋅𝑠+1)⋅(10⋅𝑠+1) 𝑈(𝑠)
27 7⋅𝑠+1 𝑌(𝑠)
OLOGU A. IRINA-MIHAELA 𝐻(𝑠) = =
(9⋅𝑠+1)⋅(23⋅𝑠+1) 𝑈(𝑠)
28 1 𝑌(𝑠)
OLTEANU M. IOANA 𝐻(𝑠) = =
(5⋅𝑠+1)⋅(0.002⋅𝑠+1)⋅(1.5⋅𝑠+1) 𝑈(𝑠)

Material suport:
Discretizare funcție de transfer de ordinul I
În cazul sistemelor continue, funcțiile de transfer de ordinul I sunt elemente de întârziere,
ce prezintă un factor de amplificare K şi o constantă de timp T :
𝐾 𝑌(𝑠)
𝐻(𝑠) = =
𝑇⋅𝑠+1 𝑈(𝑠)
unde: Y(s) – este mărimea de ieșire a funcției de transfer;
U(s) – este mărimea de intrare a funcției de transfer;
OBS: Pt. simplificare considerăm factorul de amplidicare K=1;
Funcția de transfer propusă va avea forma următoare:
1 𝑌(𝑠)
𝐻(𝑠) = = (1)
𝑇⋅𝑠+1 𝑈(𝑠)

În relația (1) vom face produsul mezilor și al extremilor:


1 𝑌(𝑠)
= ↔ 𝑇 ∙ 𝑠 ∙ 𝑌(𝑠) + 𝑌(𝑠) = 𝐾 ∙ 𝑈(𝑠) (2)
𝑇⋅𝑠+1 𝑈(𝑠)

Relația (2), fără a fi foarte riguroși matematic, o s-o transformăm direct în domeniul timp,
folosind proprietățile transformatei Laplace:
𝑑𝑦(𝑡)
𝑇 + 𝑦(𝑡) = 𝑢(𝑡) (3)
𝑑𝑡

Folosim metoda de aproximare a derivatei unei funcții pe o perioadă de eşantionare 𝑇𝑒 , și


considerâm momentul de timp curent (la momentele de eșantionare) 𝑡 = 𝑘 ⋅ 𝑇𝑒 , unde 𝑘 ∈ 𝑍.
𝑑𝑦(𝑡) 𝑦 −𝑦
≅ 𝑘 𝑘−1 (4)
𝑑𝑡 𝑇𝑒
unde yk - valoarea semnalului la momentul actual, iar yk-1 - valoarea semnalului la momentul
anterior, adică în urmă cu intervalul de timp dat de perioada de eșantionare.

Prelucrările succesive vor fi:


(𝑦 −𝑦 )
𝑇 𝑘 𝑘−1 + 𝑦𝑘 = 𝑢𝑘
𝑇𝑒
𝑇 𝑇
𝑦𝑘 ( + 1) − 𝑦𝑘−1 = 𝑢𝑘
𝑇𝑒 𝑇𝑒
𝑇+𝑇𝑒 𝑇
𝑦𝑘 − 𝑦𝑘−1 = 𝑢𝑘
𝑇𝑒 𝑇𝑒
𝑇 𝑇𝑒
𝑦𝑘 = 𝑦𝑘−1 + 𝑢𝑘 (5)
𝑇𝑒 +𝑇 𝑇𝑒 +𝑇
Relația (5) este relația iterativă ce poate fi implementată pe un sistem numeric de calcul
și reprezintă funcția de transfer de ordinul I discretizată (cu factorul de amplificare K=1)
În continuare se prezintă un mic artificiu matematic pentru simplificarea implementării,
în sensul micșorării timpului de calcul la nivelul unui sistem cu microprocesor. Această
micșorare se realizează prin reducerea numărului de înmulţiri/împărțiri din relaţia
precedentă. Se realizează un mic artificiu matematic prin adunarea şi scăderea în membrul
𝑇
drept al relaţiei a termenului: 𝑒 𝑦𝑘−1 şi astfel se obţine:
𝑇𝑒 +𝑇
𝑇 𝑇𝑒 𝑇𝑒 𝑇𝑒
𝑦𝑘 = 𝑦𝑘−1 + 𝑢𝑘 + 𝑦𝑘−1 − 𝑦𝑘−1
𝑇𝑒 +𝑇 𝑇𝑒 +𝑇 𝑇𝑒 +𝑇 𝑇𝑒 +𝑇
𝑇𝑒
𝑦𝑘 = 𝑦𝑘−1 + (𝑢𝑘 − 𝑦𝑘−1 )
𝑇𝑒 +𝑇
𝑇𝑒
Notăm = 𝐶, și obţinem relaţia numerică a f.d.t:
𝑇𝑒 +𝑇

𝒚𝒌 = 𝒚𝒌−𝟏 + 𝑪 ∙ (𝒖𝒌 − 𝒚𝒌−𝟏 ) (6)


Relaţia recursivă (6) prezintă doar o înmulțire și poate fi implementată cu ajutorul unui
sistem numeric de calcul.
OBS: Calculul Constantei de timp C se realizează doar o singură dată, în funcția
Labwindows/CVI de tip CVICALLBACK start_aplicatie()

Discretizare funcție de transfer de ordinul I de tip dipol (algoritm de avans/întârziere


numeric)
Funcția de transfer de ordinul I cu un zerou, este modelată prin următoarea relație:
1+𝑇 𝑠 𝑌(𝑠)
𝐻(𝑠) = 𝐾 ∙ 1 = (7)
1+𝑇2 𝑠 𝑈(𝑠)
unde: T1 , T2 - constante de timp, K-Factor de amplificare
Avem următoarea situație:
→ 𝑇1 > 𝑇2 – algoritmul este de avans;
→ 𝑇1 = 𝑇2 - algoritmul este de proportionalitate;
→ 𝑇1 < 𝑇2 - algoritmul este de întărziere;
OBS: Pt. simplificare considerăm factorul de amplidicare K=1;

Folosind metoda aproximării derivatei pe o perioadă de eșantionare, folosită și


anterior se poate obţine modelul discret:
1+𝑇1 𝑠 𝑌(𝑠)
= ↔ 𝑇2 ∙ 𝑠 ∙ 𝑌(𝑠) +𝑌(𝑠) = 𝑇1 ∙ 𝑠 ∙ 𝑈(𝑠) + 𝑈(𝑠)
1+𝑇2 𝑠 𝑈(𝑠)
𝑑𝑦(𝑡) 𝑑𝑢(𝑡)
Se face trecerea 𝑠 ∙ 𝑌(𝑠) → și 𝑠 ∙ 𝑈(𝑠) →
𝑑𝑡 𝑑𝑡
Considerând perioada de eșantionare Te vom avea:
(𝑦 −𝑦 ) (𝑢 −𝑢 )
𝑇2 ∙ 𝑘 𝑘−1 + 𝑦𝑘 = 𝑇1 ∙ 𝑘 𝑘−1 + 𝑢𝑘
𝑇𝑒 𝑇𝑒
𝑇2 +𝑇𝑒 𝑇2 𝑇1 +𝑇𝑒 𝑇1
𝑦𝑘 ∙ − ∙ 𝑦𝑘−1 = ∙ 𝑢𝑘 − ∙ 𝑢𝑘−1
𝑇𝑒 𝑇𝑒 𝑇𝑒 𝑇𝑒
𝑇2 𝑇1 +𝑇𝑒 𝑇1
𝑦𝑘 = ∙ 𝑦𝑘−1 + ∙ 𝑢𝑘 − ∙ 𝑢𝑘−1
𝑇2 +𝑇𝑒 𝑇𝑒 +𝑇2 𝑇𝑒 +𝑇2
La fel, pentru a reduce numărul înmulţirilor/împărțirilor şi evident timpul de calcul, se adună
𝑇
şi se scade în membrul drept termenul: 𝑒 ∙ 𝑦𝑘−1 şi vom obţine:
𝑇𝑒 +𝑇2
𝑇𝑒 𝑇1
𝑦𝑘 = 𝑦𝑘−1 + ∙ (𝑢𝑘 − 𝑦𝑘−1 ) + ∙ (𝑢𝑘 − 𝑢𝑘−1 )
𝑇𝑒 +𝑇2 𝑇𝑒 +𝑇2
Această relaţie recursivă poate fi implementată pe un sistem de calcul.
𝑇 𝑇
Notam: 𝐶1 = 𝑒 si 𝐶2 = 1
𝑇𝑒 +𝑇2 𝑇𝑒 +𝑇2

Element de ordinul I Avans-Intârziere devine:

𝒚𝒌 = 𝒚𝒌−𝟏 + 𝑪𝟏 ⋅ (𝒖𝒌 − 𝒚𝒌−𝟏 ) + 𝑪𝟐 ⋅ (𝒖𝒌 − 𝒖𝒌−𝟏 ) (7)


Relaţia recursivă (7) prezintă doar 2 înmulțiri și poate fi implementată cu ajutorul unui
sistem numeric de calcul.
OBS: Calculul Constantelor de timp C1 și C2 se realizează doar o singură dată în funcția
Labwindows/CVI de tip CVICALLBACK start_aplicatie()
Schema-bloc a succesiunilor de prelucrare este prezentata în Figura de mai jos:

Generator
Semnal treaptă >>>yk Funcția de transfer totală

Generator f.d.t. aperiodică f.d.t. dipol


Semnal rampă >>>yk uk >>> yk uk >>> yk

Generator
Semnal sinusoidal >>>yk

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