Sunteți pe pagina 1din 84

LUCRAREA 1 INTRODUCERE N MEDIUL DE PROGRAMARE SIMULINK

1.1. Obiectivele lucrrii n aceast prim lucrare de laborator, creia i sunt rezervate patru ore, se urmrete atingerea de ctre studeni a urmtoarelor obiective: nsuirea modului de lucru cu mediul de programare SIMULINK; familiarizarea cu obiectele din biblioteca SIMULINK; construirea diagramelor destinate simulrii unor elemente simple de simulare, n cadrul mediului de programare SIMULINK; 1.2. Prezentarea coninutului lucrrii MATLAB este un pachet de programe de nalt performan, dedicat calculului numeric i reprezentrilor grafice n domeniul tiinei i tehnici Una dintre aplicaiile specifice versiunii 6.5 al mediului MATLAB este SIMULINK. Acest pachet de programe este utilizat pentru simularea matematic a sistemelor dinamice cu ajutorul unor elemente dinamice fundamentale. 1.2.1. Lansarea n execuie a mediului SIMULINK Mediul SIMULINK poate fi activat prin intermediul mediului MATLAB, n dou moduri: 1. Se face click pe icona Simulink , din bara de instrumente a mediului Matlab; 2. Din mediul Matlab, n linia de comanda se editeaz comanda simulink i se execut, figura 1.1.

Fig. 1.1. Lansarea n execuie a mediului SIMULINK, utiliznd comanda simulink.

n urma aciunii uneia din comenzile specificate anterior, este lansat n execuie mediul SIMULINK. Pe ecran se va deschide o fereastr ce conine componentele aflate n biblioteca SIMULINK, figura 1.2.

Fig. 1.2. Biblioteca mediului Simulink.

Pentru construirea unei diagrame se vor selecta comenzile New, Model din mediul de comenzi File al mediului Simulink, figura 1.3. n urma execuiei acestei aciuni, pe ecran se va deschide o fereastr destinat construirii i simulrii diagramelor, ilustrat n figura 1.4.

Fig. 1.3. Lansarea n execuie a ferestrei de construire a unei diagrame.

Fig. 1.4. Imaginea ferestre diagramei destinat construiri i simulrii diagramelor.

1.2.2. Prezentarea componentelor din biblioteca Simulink Biblioteca mediului Simulink (Library Simulink) conine un set componente destinate realizrii unor operaii elementare, avnd semnificaie matematic sau de natura generrii i prelucrrii semnalelor, figura 1.2. Semnificaia celor mai utilizate componente din bibliotec sunt prezentate n tabelul 1.1. Tabelul 1.1. Semnificaia celor mai utilizate componente din biblioteca SIMULINK Nr. crt. 1 2 3 4 5 6 Denumire Source Sinks Discrete Continuous Math Operation Signal Routing Semnificaie Generarea semnalelor surs Reprezentarea grafic a dinamicii sistemelor Simularea sistemelor discrete in timp Simularea sistemelor liniare i sistemelor neliniare Realizarea operaiilor matematice Realizarea conexiunilor

La rndul ei fiecare component conine un set de instrumente. Dac se va executa dublu-click pe oricare dintre componentele din bibliotec, n partea dreapt a ferestrei din fig 1.2 vor apare instrumentele componentei respective, figura 1.5. n cele ce urmeaz se vor detalia cteva din cele mai utilizate componente ale bibliotecii Simulink.

Fig.1.5. Instrumentele componentei Sinks.

A1. Componenta semnalelor surs (Signal Source Library) Componenta semnalelor surs conine instrumente generatoare de semnale de intrare aplicate sistemului studiat. Aceste instrumente sunt obinute prin activarea componentei Sources. Principalele instrumente asociate componentei semnalelor surs sunt prezentate n tabelul 1.2. Semnalele surs cele mai utilizate n cadrul aplicaiilor sunt: semnalul de ceas, constanta, semnalul sinusoidal i semnalul treapt. Tabelul 1.2. Componenta Source Nr. crt. 1 2 3 4 5 Denumire instrument Constant Clock Sine Wave Step Ramp Semnificaie Semnal de intrare constant Semnal de ceas Semnal sinusoidal Semnal treapt Semnal ramp

A2. Componenta semnalelor de ieire (Signal Sinks Library) Instrumentele componentei Sinks sunt obinute prin activarea pictogramei Sinks. Semnificaia principalelor instrumente ale componentei Sinks sunt prezentate n tabelul 1.3. Tabelul 1.3 Componenta semnalelor de ieire Nr.ctr. Denumire 1 Scope 2 To Workspace 3 Stop Simulation Semnificaie Vizualizare mrimi de ieire pe osciloscop Mediul de lucru Sfritul simulrii

A3. Componenta sistemelor continue (Continuous-Library) Instrumentele componentei sistemelor liniare i neliniare sunt obinute prin activarea pictogramei Continuous. Principalele instrumente asociate componentei sistemelor liniare sunt prezentate n tabelul 1.4. Componenta sistemelor liniare i neliniare conine instrumente dedicate funciilor matematice algebrice: sumator, amplificator etc. Tabelul 1.4. Componenta sistemelor liniare Nr.crt. 1 2 3 Denumire Integrator Derivative Transfer Fcn Semnificaie Integrator Derivator Funcia de transfer

A4. Componenta funciilor matematice Prin activarea pictogramei Math Operation sunt obinute instrumentele componentei funciilor matematice. Semnificaia componentelor din blocul funciilor matematice sunt prezentate n tabelul 1.5. Meniul funciilor matematice conine obiectele pentru funcii matematice algebrice, funcia histerezis, funcia de ntrziere i saturare. Tabelul 1.5. Componenta sistemelor neliniare Nr.crt. 1 2 3 4 5 Denumire Sin Min Gain Sum Product Semnificaie Funcia trigonometric sinus Funcia minim Amplificator Sumator Produs

1.3. Partea experimental Pentru a realiza simularea dinamic a unui sistem, utiliznd mediul SIMULINK, sunt necesare parcurgerea urmtoarelor etape: 1. Determinarea modelului matematic. 2. Identificarea blocurilor corespunztoare elementelor dinamice, care modeleaz sistemul. 3. Realizarea diagramei sistemului, format din blocuri standard (aflate n biblioteca Simulink) sau a blocurilor proprii (create de utilizator). 4. Configurarea fiecrui bloc, n funcie de modelul matematic i parametrii asociai sistemului. 5. Lansarea n execuie, etap realizat prin comanda Start din meniul Simulation. 6. Selectarea opiunilor necesare vizualizrii rezultatelor simulrii. Exemplul 1 Fie modelul de forma: y = 3 u
(1.1)

asociat unui element proporional. S se construiasc diagrama care va implementa relaia (1.1) n mediul Simulink, pentru u=5; Rezolvare A1. Identificarea blocurilor. Relaia 1.1. poate fi implementat prin intermediul urmtoarelor blocuri: pentru generarea semnalului de intrare u se va utiliza blocul Constant din componenta Source Library. Blocul Gain din componenta Math Operations, pentru amplificare intrri u cu factorul de amplificare 3, Blocul Display pentru vizualizarea rezultatului din componenta Sinks. A2. Construirea diagramei. Pentru realizarea diagramei se procedeaz n modul urmtor: 1. Toate blocurile necesare (Constant, Gain, Display) vor fi copiate din biblioteca SIMULINK n fereastra de construire a diagramei. Pentru realizarea acestei etape se execut succesiv operaiile: Se activeaz fereastra Source-Library. Se execut click pe blocul Constant cu butonul din dreapta mouse-ului. Ct timp este apsat butonul, se realizeaz o copie a blocului i se plaseaz n diagrama bloc. Similar sunt copiate blocurile: Gain din fereastra Math Operations i respectiv DisplayBlock din fereastra Sink-Library. Operaii uzuale pentru copierea, mutarea i tergerea blocurilor: copiere - se va utiliza butonul drept al mouse-ului; 6

mutarea blocurilor - se va utiliza butonul stng al mouse-ului; tergerea blocurilor - se va utiliza butonul Delete.

1. Blocurile se vor conecta conform diagramei din figura 1.6. Acestea pot fi conectate prin apsarea butonului drept al mouse-ului i tragerea unei sgei de la ieirea unui bloc la intrarea altui bloc. In diagrama astfel obinut, blocurile pot fi deplasate i aranjate cu ajutorul butonului stng al mouseului.

Fig.1.6. Diagrama asociat relaiei 1.1.

A3. Configurarea blocurilor. Prin configurare se nelege setarea anumitor parametri numerici asociai blocurilor. In cadrul diagramei din figura 1.6, sunt necesare configurarea blocurilor Constant i Gain. Etapa de configurare decurge astfel: (1) Blocul Constant Se execut click pe blocul Constant; In urma activrii blocului Constant se va deschide csua de dialog specific blocului, figura 1.7. In cmpul specific introducerii parametrului se seteaz: Constant value: 5 Validarea valorilor introduse se face prin apsarea butonului Apply, figura 1.7. Pentru nchiderea csuei de dialog se utilizeaz butonul Close. (2) Blocul Gain In urma activrii blocului Gain se va deschide csua de dialog specific blocului, figura 1.8 In cmpul specific parametrilor se seteaz conform figurii 1.8., parametrul: Gain: 3

Fig. 1.7. Configurarea blocului Constant.

Fig.1.8. Configurarea blocului Gain.

Diagrama se va salva sub numele de prob11, alegnd comanda File/SaveAs, cu extensia mdl. A4. Lansarea n execuie. Aceasta este realizat prin comanda Start din meniul Simulation (figura 1.9). In cadrul blocului Display se va obine rezultatul evaluarii expresiei 1.1.

Fig.1.10 .

Exemplul 2. matematic:

Fie sistemul de ordinul 1, figura 1.10, descris prin modelul

T y + y = K u

(1.2)

unde T=0.9 reprezint constanta de timp a ecuaiei, exprimat n minute,iar K=3 este factorul de amplificare asociat variabilei de intrare u, u = 1( t ) .
u

Fig. 1.10. Structura sistemului descris de modelul matematic (1.2).

Condiia iniial a ecuaiei difereniale este y ( 0 ) = 1 . Sistemul va fi simulat pe intervalul de timp [ 0, 10] s. Rezolvare. Modelul matematic (1.2) se aduce la forma standard (1.3) : dy = dt
1 T

[ y( t ) +

Ku ( t ) ]

(1.3)

aceasta se integreaz ajungnd la expresia (1.4): y( t ) = y ( 0 ) +


1 T [ y( t ) + Ku( t ) ]dt

(1.4)

Ultima relaie este implementat prin intermediul diagramei bloc figura 1.12

Fig.1.11. Diagrama sistemului de ordinul 1.

Creare diagram. Pentru realizarea diagramei se vor avea n vedere urmtoarele etape: A. Toate blocurile necesare vor fi copiate din biblioteca SIMULINK n schema bloc; B. Conectarea blocurilor conform diagramei bloc din figura 1.11; C. Configurarea fiecrui bloc, introducnd valorile numerice pentru parametrii blocurilor prin intermediul csuei de dialog a fiecrui bloc. Explicarea mai detaliat a pailor de realizare a diagramei: A. Copierea blocurilor n cadrul noii diagrame Se deschide Linear-Library. Click pe blocul Integrator cu butonul din dreapta mouse-ului. Ct timp este apsat butonul se trage o copie a blocului peste schema bloc i se plaseaz n diagrama bloc. Se copiaz dou Gain-Block i un Sum-Block din Linear-Library. Se copiaz Step-Block din Source-Library. Se copiaz Scope-Block din Sink-Library. B. Conectarea blocurilor Conectarea blocurilor conform diagramei bloc din figura 1.11. Acestea pot fi conectate prin apsarea butonului drept al mouse-ului i tragerea unei sgei de la ieirea unui bloc la intrarea altui bloc. C. Configurarea blocurilor n csua de dialog a fiecrui bloc vom introduce valorile numerice ale parametrilor n cmpurile specifice acestora: Blocul Step necesit setarea parametrilor: grupul valorilor iniiale la 0; grupul valorilor finale la 1; step time la 0. n cadrul blocului Integrator sunt setate: 0 - limita inferioar; 10 - limita superioar; 1 - condiia iniial. Gain - necesit valoarea 0.9. Gain1 - se seteaz amplificarea la valoarea 3. n cadrul blocului Sum se seteaz nti + pentru calea direct urmat de - pentru reacie.

10

Simulare dinamic. Aceasta este realizat prin comanda Start din meniul Simulation. Pentru o mai bun reprezentare grafic a rezultatelor, n meniul Simulation/Parameters/Solver vor fi setai urmtorii parametrii, figura 1.12 : Start Time i Stop Time pentru setarea intervalului de integrare; Euler, Adam sau Runge-Kutta din meniul Solver Options pentru alegerea metodei de integrare.

Fig.1.12. Meniul Simulation parameters.

Vizualizarea rezultatelor simulrii este accesibil prin intermediul blocului Scope. Blocul Scope prezint cteva trsturi, figura 1.13: cel mai din stnga buton din fereastra Scope este butonul de Zoom care i permite s modifici dimensiunile graficului n ambele direcii, x i y (alegi aria de modificare cu mouse-ul); urmtoarele dou butoane sunt de asemenea butoane Zoom. Ele i permit s modifici graficul n direcia x, respectiv y. butonul cu binoclul este butonul Auto-scale care arat ntreg rspunsul n timp (anulnd orice modificare). urmtorul buton este butonul Save-axes care salveaz sau nghea axele . cel mai din dreapta buton este butonul Properties care permite n meniul Axes configurarea blocului Scope. In cmpurile Ymax, Ymin se introduc valori pentru determinarea limitelor de reprezentare pe axa y, figura 1.5.

11

Fig.1.13. Bara de obiecte a blocului Scope.

Fig.1.14. Csua de dialog a butonului Properties.

n figura 1.15 este redat dinamica ecuaiei de ordinul 1 (1.2) obinut n condiiile impuse. Rspunsul este aperiodic de ordinul 1.

Fig.1.15. Rezultatul obinut prin simularea sistemului de ordinul 1.

Exemplu 3. S se construiasc diagrama care va implementa relaia (1.2) de la exemplul 2, utiliznd blocul Subsystem.

12

n cazul n care o diagram devine foarte complicat, Simulink ofer posibilitatea de a grupa mai multe blocuri ntr-un singur bloc, utiliznd blocul Subsystem din componenta Port &Subsystem. Ca exemplu, vom crea un subsistem ce va conine toate blocurile dintre blocul Step i blocul Scope din figura 1.11. Diagrama rezultat se va fi prezenta n figura 1.16. Dac se va executa click pe blocul Subsystem se va deschide o noua diagram, figura 1.17.

Fig. 1.16.

Fig.1.17.

1.4. ntrebri i exerciii 1. Care sunt avantajele mediului de simulare Simulink? 2. S se construiasc diagrama de simulare pentru urmtoarele ecuaii: a) y=2u, unde u=4; b) y = 3 u + e u , u=5; c) 3 y + y = 2 u , y(0)=0, u(0)=1,5; 3. S se construiasc diagrama ce realizeaz conversia gradelor Celsius n grade Fahrenheit. 9 TF = TC + 32 5 13

LUCRAREA 2 ANALIZA EXPERIMENTAL A DINAMICII SISTEMELOR

2.1. Obiectivele lucrrii n prezenta lucrare, creia i sunt afectate patru ore, se urmrete atingerea urmtoarelor obiective: nelegerea noiunilor: sistem tehnic, dinamica unui sistem tehnic, simulare; cunoaterea elementelor de baza privind dinamica sistemelor. 2.2. Prezentarea coninutului lucrrii n cele ce urmeaz va fi prezentat modul de determinare experimental a modelului matematic dinamic asociat unei termorezistente. Pentru o termorezisten PT1001, prevzut cu un adaptor ncorporat rezistentintensitate, care genereaz la ieire 4-20mA, se va determina experimental caracteristica dinamic. In figura 2.1 sunt prezentate elementele de baza necesare efecturii experimentului.

2 I R + -

i [ 4 20mA]
AM

1 4

TT

TT 5

T1

T2

Fg.2.1.Determinarea experimental a caracteristicii dinamice a unei termorezistene; 1- termorezistena; 2- adaptorul rezistena-intensitate; 3- aparat de msurat; 4,5- vase cu temperaturi T1 i T2 diferite.

Termorezisten cu R=100 la T=1000C.

14

Prin trecerea rapid din vasul 4 n vasul 5, sau invers, lichidele din vase avnd temperaturile T1 T2, se aplic la intrarea termorezistentei un semnal treapt. Dup aplicarea treptei de temperatur la intrare, se noteaz valorile intensitii i n timp. 2.3. Partea experimental 1. Se va determina experimental rspunsul n timp, la variaia treapt, pentru traductorul de temperatur de tip termorezistent, conform celor precizate n paragraful 2.2. Se recomand urmtoarele: se va face un experiment de prob pentru formarea unei imagini de ansamblu i n mod deosebit, pentru stabilizarea scrii de timp i a intervalelor de timp la care se vor face citirile; se vor determina dou rspunsuri n timp: pentru treapta pozitiv (de la rece la cald) i pentru treapta negativ(de la cald la rece); 2. Pe baza rspunsurilor n timp de la punctul 1 se va determina MMD al traductorului. In acest scop se propun trei forme de modele matematice dinamice (MMD) de aproximare: MMD de ordinul I n variaii a d i + i = b T , dt (2.1)

MMD de tip functie de trasfer b , as + 1 MMD cu valori absolute H ( s) = a di + i = bT ; dt (2.2.)

(2.3)

Constantele a i b ale relaiilor anterioare se vor determina astfel: Constanta b se va calcula pe baza relaiei i b= , T Constanta a se va calcula pe baza relaiei a + a 2 + a3 a= 1 , 3

(2.4)

(2.5)

Pentru a determina constanata a1 se va alege un punct pe grafic, prin care se duce o tangenta n acel punct la grafic. Tangenta va intersecta dreapta ce determina starea staionara a sistemului. Distana dintre punctul de pe grafic i punctul determinat de intersecia tangentei cu dreapta ce determin starea staionara a sistemului, se va nota cu a1, figura 2.2 . In acelai mod se vor determina i celelalte dou constante a2, a3.

15

Fig. 2.2. 4. Pentru sistemul a di + i = bT , dt

unde a i b au valorile determinate la punctul 2, s se determine i(t) i graficul su atunci cnd temperatura T variaz sub forma de treapt de la 20 0C la 90 oC. 4. Pentru sistemul de la punctul 3 se va construi diagrama de simulare a sistemului n mediul de programare Simulink, conform celor nvate n cadrul primei lucrrii de laborator. 2.3. ntrebri i exerciii 1. S se fac aprecieri privind calitatea MMD utilizat la aproximarea dinamicii traductorului de temperatur investigat n paragraful 2.3. 2. Putei explica coninutul noiunii dinamica unui sistem tehnic? 3. Sa se construiasc raspunsul n timp al urmtoarei ecuaii difereniale dT 4 + T = 0,35 Qc dt unde Qc(t)=1000m3N/h; T(0)=335oC. 4. Pentru sistemul din figura 2.3. sunt presupuse urmtoarele modele matematice dinamice: a) y=2u; dy b) 3 = u ; y(0)=0; dt dy c) 3 + y = 2u y(0)=0; dt
u S y

Fig. 2.3 Sistem monovariabil.

S se construiasc, pentru fiecare caz n parte, caracteristica dinamic a sistemului atunci cnd intrarea u(t) variaz ca n figura 2.4.

16

1,5 t Fig. 2.4. Variaia n timp a intrrii u(t).

17

LUCRAREA 3 SISTEME DE MSURAT

3.1. Obiectivele lucrrii n cadrul acestei lucrri, creia i sunt afectate dou ore (o edin de laborator), se urmrete atingerea de ctre studeni a urmtoarelor obiective: nelegerea i nsuirea corect a noiunii msurare; nsuirea structurii unui sistem de msurat (SM); cunoaterea fizic a unor sisteme de msurat din laborator; nelegerea caracteristicii statice a unui element fizic (traductor sau aparat de afiare). 3.2. Prezentarea coninutului lucrrii Pentru noiunea msurare se va purta o discuie n laborator care s aib la baz cunotinele studenilor asupra acestei noiuni (predate la curs) i exemple fizice concrete din activitatea practic. Un sistem de msurat se compune principial din dou pri (fig. 3.1): traductorul, care sesizeaz mrimea din proces (temperatur, debit, nivel, presiune etc.) i genereaz la ieire un semnal corespunztor; aparatul de afiare (indicare, nregistrare) sau de msurare, care prin prelucrarea semnalului primit de la traductor determin i afieaz valoarea mrimii din proces. Cu ajutorul cadrului didactic, studenii vor cunoate fizic, principial, urmtoarele SM: SM-P, SM-N, SM-D i SM-T. (P presiune, N nivel, D - debit, T temperatur).

Fig. 3.1. Cele dou pri importante ale unui SM: T traductorul; AA aparatul de afiare; y mrimea din proces (debit, presiune, nivel etc.); ya mrimea afiat.

Divizai n dou semigrupe, studenii vor determina caracteristica static a unui traductor de nivel (LT) sau a unui traductor de presiune (PT) i a unui aparat de afiare. Se va prezenta i discuta principial schema unui poteniometru electronic (fig. 3.5 din subcap. 3.4); 18

Se va prezenta principial structura unui SM realizat cu ajutorul unui calculator de proces. 3.3. Partea experimental Aceast parte cuprinde: cunoaterea fizic a SM amintite n subcapitolul anterior; determinri experimentale asociate SM-P i SM-N. Cunoaterea fizic, principial, a celor patru SM se va realiza prin prezentarea acestora de ctre cadrul didactic, n laborator. Se va accentua componena acestora prin punerea n eviden a traductorului i a aparatului de afiare. Se va observa dac exist asemnri ntre aparatele de afiare ale celor patru sistem de msurat. Pentru studiul experimental al SM-P va fi utilizat montajul din fig. 3.2.
PI PI PT
+

Po
2...3 bar

R P
-

mA

PE
-

Fig. 3.2 Montaj pentru studiul experimental al SM-P: R reductor de presiune; PI manometru (presiune indicat); mA miliampermetru; PE poteniometru electronic.

Modul de lucru este prezentat n continuare. 1. Se noteaz mai nti domeniile mrimilor de intrare i ieire pentru PT i PE. 2. Cu ajutorul reductorului R se dau 6...10 valori presiunii P. pentru fiecare valoare a presiunii P se citesc valoarea intensitii I i valoarea indicat de poteniometrul electronic PE. Valorile presiunii P, intensistii I i celei indicate de poteniometrul PE se trec ntr-un tabel de forma celui cu nr. 3.1. Tabelul 3.1
Valori msurate pentru SM P

Presiunea P [bar] Intensitatea I [mA] Indicaia PE

P1 I1 IPE1

P2 I2 IPE2

... ... ...

Pn In IPEn

3. Cu datele din tabelul 3.1 se vor construi pe hrtie milimetric, graficele I = f(P) i IPE = g(I). Aceste grafice reprezentnd caracteristicile statice ale celor dou elemente.

19

4. Se va determina ecuaia caracteristicii statice (ca dreapta ce trece prin dou puncte de coordonate curente) . Pentru studiul experimental al SM N va fi utilizat montajul din fig. 3.3. Modul de lucru este prezentat n continuare. 1. Se noteaz mai nti domeniile mrimilor de intrare i ieire pentru LT i PE. 2. Cu ajutorul pompei SP se transport apa din partea inferioar a vasului V n partea superioar a acestuia. 3. Dup cum se observ din figur, nivelul apei este msurat n partea superioar a vasului. Modificarea acestuia se realizeaz prin deschiderea treptat a supapei dintre cele dou compartimente ale vasului V. Pentru fiecare valoare a nivelului apei n compartimentul superior al vasului se citesc valorile pentru nivelul H (cu ajutorul sticlei de nivel SN), pentru intensitatea I i pentru indicaia IPE a poteniometrului electronic PE. Valorile mrimilor H, I i I PE pentru cele 6... 10 determinri se trec ntr-un tabel asemntor cu tabelul 3.1. 4. Cu datele tabelate se construiesc, pe hrtie milimetric, graficele I = f(H) i IPE = g(I). Aceste grafice reprezint caracteristicile statice ale celor dou elemente. Pe baza analizei graficelor se vor determina concret expresiile funciilor f i g.
LT
+

mA

PE
-

SN

SP V

Fig. 3.3. Montaj pentru studiul experimental al SM-N: LT- traductor de nivel; mA - miliampermetru; PE- poteniometru electronic; SN- sticl de nivel; SP- pomp centrifugal; V- vas cu dou compartimente.

In cadrul lucrrii de laborator va fi prezentat, de asemenea un SM realizat cu calculatorul electronic (fig. 3.4).

20

T1

ITF-P

CE

CP

yn

Tn

rn

Fig. 3.4 Structura principiala a unui SM cu CE: T1,, Tn-traductoare; ITF-P- interfa de proces; CEcalculator electronic; CP-calculator de proces.

3.4. Intrebri i exerciii 1. Stii ce este un manometru ? Solicitai cadrului didactic sau tehnicianului s v arate un manometru secionat. Manometrul conine un traductor? Dar un aparat de afiare ? 2. Ce natur fizic are semnalul r pentru SM-P analizat ? 3. Care este domeniul de variaie al acestui semnal ? 4. Prelucrai datele experimentale obinute la cele dou SM cu ajutorul calculatorului electronic. 5. S se construiasc, pentru SM-P i SM-N, graficele I PE = fl(P) i IPE = f2(H). Ce semnificaie au cele dou grafice ? 6. In fig. 3.5 se prezint schema principial a poteniometrului electronic. ncercai s evideniai modul n care funcioneaz poteniometrul electronic(se va apela la cunotinele predate la curs.). Se va avea n vedere faptul c acesta trebuie s determine valoarea tensiunii Ui.
I=const.

E
DR R

+ Ue U

A
-

MR M R

Ui

Fig.3.5 Schema principiala a potentiometrului electronic: A-amplificator; MR-motor reversibil; DR-dispozitiv de inregistrare; Esursa de alimentare; R-potentiometru bobinat; Ui-tensiune aplicata la intrare: Ue -tensiune culeas ntre poteniometru i cursor.

21

LUCRAREA 4 CUNOATEREA EXPERIMENTAL A REGULATOARELOR ANALOGICE I NUMERICE

4.1. Obiectivele lucrrii Prin efectuarea acestei lucrri de laborator, pentru care sunt alocate dou ore, se urmrete atingerea urmtoarelor obiective: familiarizarea cu funcionarea unui regulator analogic; familiarizarea cu funcionarea unui regulator numeric ; determinarea experimental a caracteristicii statice (CS) a unui regulator proporional, cu aplicaie la un regulator numeric SHIMADEN. implementarea regulatoarelor PI si PID cu ajutorul mediului de programare Simulink. 4.2. Prezentarea coninutului lucrrii n cadrul acestei lucrri se vor prezenta regulatoarele analogice i numerice destinate SRA dup abatere. 4.2.1. Regulatoare analogice Regulatorul reprezint unul dintre elementele de baz ale dispozitivului de automatizare i este destinat elaborarii comenzii printr-o prelucrare adecvat a abaterii, abatere rezultat ca urmare a comparaiei ntre referin i reacie. Aceast definiie este valabil pentru regulatoarele destinate SRA dup abatere, spre deosebire de cele destinate SRA dup perturbaie la care algoritmul pentru determinarea comenzii este specific aplicaiei. Regulatorul este caracterizat prin mrimile din figura 4.1.
uM u Regulator r Kp Ti Td

Fig. 4.1. Mrimi caracteristice ale regulatorului dup abatere: i - referin; r - reacie; Kp,Ti,Td - parametrii de acordare ai regulatorului; uM - comand manual; u - comand.

22

Algoritmi pentru determinarea comenzii. La regulatoarele PID (proportionalintegrator-derivator) comanda se elaboreaz prin prelucrarea abaterii conform relaiei:
t 1 de e+ u = u0 + K p 0 edt + Td dt , Ti

unde: u este valoarea curent a comenzii; u0 - valoarea comenzii n absena abaterii; Kp - factorul de proprionalitate; Ti - constanta de integrare; Td - constanta de derivare. Din analiza relaiei rezult proporionalitatea comenzii cu abaterea, integrala i derivata acesteia. Dnd valori convenabile parametrilor Ti i Td se pot obine algoritmi specifici regulatoarelor P (proporional), PI (proporional-integrator) i PD (proporionalderivator), aa cum este aratat n notele de curs. Din punctul de vedere al realizrii fizice regulatoarele pot fi analogice i numerice. Cu toate c astzi se utilizeaz n exclusivitate regulatoarele numerice, se consider necesar prezentarea succint a elementelor regulatorului analogic ELC 113, fabricat i utilizat n Romnia. La prezentarea standului Studiul regulatoarelor analogice se va evidenia rolul regulatorului analogic ELC 113 i se va observa c panoul frontal al acestuia permite afiarea referinei abaterii i comenzii. 4.2.2. Regulatoare numerice n cadrul acestei lucrri de laborator se va studia experimental un regulator numeric SHIMADEN. Principalele mrimi caracteristice ale regulatorului numeric dup abatere sunt aceleai cu cele prezentate n figura 4.1. Acest tip de regulator se ncadreaz n clasa regulatoarelor automate discrete, (prelucrarea semnalelor se face n form numeric) i prezint urmtoarele caracteristici generale: este destinat unei singure bucle de reglare; are la baz un microprocesor specializat ; poate comunica prin legtur serial cu nivelul ierarhic superior; ofer faciliti sporite n ceea ce privete algoritmii de reglare; ofer contacte de ieire care pot fi integrate n sisteme de avertizare, protecie sau comand; parametrii de acordare BP, Ti, Td pot fi modificai local ( de la tastatur) sau de la distan (prin linia serial); are posibilitatea acordrii automate (autotuning); posed convertoare analog/numerice i numeric/analogice necesare pentru trecerea de la semnal continuu (analogic) la cel discret (numeric) i invers; la comutrile A/M i M/A echilibrrile se fac automat. 23

4.3. Partea experimental 4.3.1. Prezentarea standului experimental Determinrile experimentale se execut la standul Studiul regulatoarelor numerice. Standul cuprinde urmtoarele elemente: regulatoare numerice SHIMADEN i FOXBORO; elemente de comand manual ELX 227 destinate generrii semnalelor de reacie pentru regulatoare; nregistrator ELR 35, care vizualizeaz comanda generat de regulatorul SHIMADEN; 4.3.2. Desfurarea lucrrii naintea determinrilor experimentale se vor identifica elementele componente de pe faa panoului, precum i elementele panoului frontal al regulatorului numeric SHIMADEN, elemente ce sunt prezentate n anexa 4.2 a acestei lucrri. Operarea regulatorului SHIMADEN i diagramele de operare sunt prezentate n anexele 4.1, respectiv 4.3. Determinarea caracteristicii statice a regulatorului P Familia de caracteristici statice u=f(r,BP) se va trasa pentru situaia n care prescrierea i este fixat, iar BP este parametru. n vederea obinerii acestei familii de caracteristici se vor parcurge urmtoarele etape: a) scrierea expresiei analitice a CS a regulatorului P sub forma u=f(r,i,BP); b) pe baza relaiei scrise la punctul a) se va determina analitic valoarea comenzii pentru situaia i=r i se vor formula observaii privind dependena acesteia de parametrul BP; c) se alimenteaz panoul cu energie, numai n prezena cadrului didactic; d) se va efectua configurarea regulatorului SHIMADEN, n vederea obinerii algoritmului proporional; e) cu regulatorul n modul M (manual) se stabilete , prin acionarea tastaturii, valoarea comenzii u0 (exemplu 50%) care se citete la nregistrator i/sau pe ecranul regulatorului; f) de la elementul de generare a reaciei ELX 227 se stabilete o anumit valoare pentru mrimea de reacie, r (exemplu 50%), care se citete pe indicatorul aparatului respectiv sau pe ecranul regulatorului; g) se stabilete o valoare identic pentru mrimea prescris, i (r=i=50%), care se citete n zona de afiare a panoului frontal, n aa fel nct abaterea s fie nul; h) se va fixa o valoare pentru BP (exemplu BP=100%); i) se trece regulatorul pe modul A (automat) i se modific i cu raia de 10%, pn cnd se acoper tot domeniul [0100%], citindu-se la nregistrator valorile corespunztoare ale comenzii u. Observaie. La comutarea M/A indicaia nregistratorului trebuie s rmn pe valoarea u0 stabilit la punctul e), n condiiile abaterii nule. 24

Experimentul se repet pentru nc dou valori ale parametrului BP cuprinse n intervalul 50200. Rezultatele experimentale se trec ntr-un tabel de felul urmtor: Tabelul 3.1
Rezultate experimentale privind CS a regulatorului proporional

u0 Kp= i % mA u % mA

% mA Kp= i % mA

r Kp= u % mA i % mA

% mA U % mA

Kp* efectiv=
*

Kp* efectiv=

Kp* efectiv=

Parametrul Kpefectiv se calculeaz.

Se reia experimentul pentru a se observa c la intrri egale i momente de timp diferite regulatorul proporional genereaz comenzi egale. 4.3.3. Prelucrarea datelor experimentale Pe baza rezultatelor experimentale obinute se traseaz pe hrtie milimetric familia de caracteristici pentru cele trei valori ale parametrului BP. Se va determina valoarea efectiv a parametrului BP. 4.4. Implementarea regulatoarelor PI si PID in mediul de programare SIMULINK n biblioteca mediului de programare Simulink exist componenta Simulink Extras, n cadrul creia se gsete instrumentul Additional Linear. Acesta conine, pe lng alte blocuri, i blocurile corespunztoare regulatorului PID i regulatorului PID cu aproximarea componentei derivatoare. Regulatorul PID este unul ideal, care este de preferat a nu se folosi singur, ci conectat n serie cu un filtru trece-jos (cu funcia de transfer de ordinul I). n cele mai multe cazuri poate fi utilizat regulatorul PID cu aproximarea componentei derivative. Parametrizarea regulatorului PID se face n fereastra de dialog corespunztoare acestuia, P fiind factorul de proporionalitate K p, I reprezentnd Kp/Ti (Ti este timpul de integrare), iar D fiind asociat factorului K p*Td (Td este timpul de derivare). N este utilizat pentru 1/T f, unde Tf este constant de timp a filtrului). Pentru o mai bun configurare este de preferat implementarea propriului regulator, utiliznd blocurile din Linear Library.

25

4.5. ntrebri i exerciii 1. Ce este un regulator? 2. n ce const diferena ntre un regulator analogic i unul numeric? 3. Ce reprezint mrimea u0? 4. S se scrie algoritmii de reglare pentru regulatoarele R-P, R-PI i R-PD. 5. Determinai pe cale grafic rspunsul unui algoritm PI pentru situaia din figura 4.2. i,r e = -i+r 6. Putei spune dac regulatoarele numerice sunt i superioare celor analogice, i dac da, de ce? 7. Numii cei trei parametri de acordare ai unui regulator r PID. 8. Ce nseamn modul automat al regulatorului Fig. 4.2 SHIMADEN? Dar modul manual? 9.
10.

Cum se execut comutarea A/M la un regulator analogic? Dar la un regulator numeric? S se implementeze n mediul Simulink un regulator PI i un regulator PID,utiliznd blocurile din Linear Library.

26

ANEXA 4.1 OPERAREA REGULATORULUI SHIMADEN


Regulatorul SHIMADEN are opt moduri de funcionare (0, 1, 2,,7), fiecare mod avnd mai multe submoduri. Trecerea de la un mod la altul se face cu ajutorul tastei MODE, iar n cadrul unui mod, trecerea de la un submod la altul cu ajutorul tastei PARA. Pentru modificarea valorii i/sau tipului unui anumit parametru se vor utiliza tastele: <(REMOTE),V(MAN), (AT). Validarea oricrei modificri se face apsnd tasta ENT. Revenirea din orice mod sau submod la ecranul de baz se face apsnd de dou ori tasta RET( a doua apsare trebuie efectuat la cel mult dou secunde fa de prima). Eventualele erori sunt aduse la cunotina utilizatorului prin mesaje corespunztoare. n continuare sunt prezentate principalele probleme aferente operrii regulatorului. Comutarea A/M Din ecranul de baz (mod 0-0), apsnd tasta PARA, se ajunge n ecranul out (submodul 0-1). n acest ecran, apsnd tastele RET(SHIFT) + V(MAN) simultan, se aprinde lampa MAN ceea ce indic cuplarea modului de comand manual. Setarea valorii ieirii (comenzii) se face folosind tastele <, i V i se valideaz cu tasta ENT. Domeniul de ajustare al comenzii: -10.0% +110.0%. Pentru introducerea n modul automat, se utilizeaz aceleai dou taste, n acelai ecran out. Dup ntoarecerea n modul automat, lampa MAN se va stinge. Pentru observarea simultan a valorii din proces PV i a valorii comenzii se specific modul 0-2 (care are pe afiajul PV (de sus) valoarea din proces, iar pe afiajul SV (de jos) valoarea ieirii (comenzii)). Setarea tipului de algoritm i modificarea parametrilor de acordare . Att pentru setarea tipului de algoritm (P, I, PI, PD, PID), ct i pentru setarea corespunztoare a parametrilor de acordare este necesar parcurgerea submodurilor 0.9 (pentru BP), 0.10 (pentru Ti) i 0.11 (pentru Td). Acionnd tastele: <,V i se poate seta o anumit valoare a parametrului de acordare respectiv. n cazul depirii limitelor domeniului valid pentru componenta respectiv, n zona de afiare va apare mesajul off. Pentru validarea modificrilor se va apsa tasta ENT. Modificarea referinei (SV). n condiiile ecranului de baz (modul 0.0), n modul automat, prin apsarea tastei < se va aprinde cea mai din dreapta cifr a ecranului SV, care va ncepe s clipeasc, aceasta nsemnnd c poate fi modificat. Cnd se apas din nou tasta <, va ncepe s clipeasc a doua cifr din drepta. Pentru modificarea valorii respective se vor utiliza tastele i V, iar pentru validare tasta ENT.

27

ANEXA 4.2 PANOUL FRONTAL AL REGULATORULUI SHIMADEN PV


SV

Afisare numerica

OUT

OUT

EV2

HB EV3

AT
Lampi de semnalizare

PRG COM REM MAN DISP

SHIFT RET

DISP REM

LOCK MAN

EXEC ENT AT

SR 54

MODE PARA

Tastatura

<
SHIMADEN

Panoul de operare al acestui tip de regulator conine trei zone i anume: zona de afiare; zona de semnalizare; zona de operare. Zona de afiare permite informarea utilizatorului n legtur cu valoarea variabilelor asociate reglrii, valoarea unor parametrii ai regulatorului, modurile i submodurile de lucru. n ecranul de baz (modul 0.0) sunt afiate n procente reacia (PV - Process Value) i referina (SV - Set Value). Zona de semnalizare realizeaz avertizarea optic n legtur cu starea variabilelor procesului reglat i cu configuraia i modul de funcionare ale regulatorului. Zona de operare permite, prin intermediul a 7 taste cu dubl funcie, introducerea de date i modificarea (setarea) configuraiei regulatorului.

28

ANEXA 4.3 DIAGRAME DE OPERARE ALE REGULATORULUI SHIMADEN

mod 0
1 2 3. 4 1 2 3. 4

mod 1 nd- 1 ProG

mod 2 nd-2 t nE

mod 7 nd-7 oPt

0.1 out 5 0. 0 0.2 1 2 3. 4 0. 0 0.3 LS 0. 0 0.4 rS 0. 0 0.5 S -b 1. 0 0.6 E -I 1 0. 0 0.7 E -2 1 0. 0 0.8 E -3 End 0.9 P 3. 0 0.10 I 120 0.11 d 0 0.12 nr 0. 0 0.13 SF 0 4. 0 1.8 ProG on 2.4 t-nd
oFF

7.10 PrtC nonL

29

LUCRAREA 5 ELEMENTE DE EXECUIE

5.1. Obiectivele lucrrii n aceast lucrare de laborator se urmrete rezolvarea urmtoarelor obiective: cunoaterea principial a construciei i a funcionrii unui robinet de reglare (RR); analiza teoretic i experimental a regimului staionar al RR; nsuirea deprinderilor de calcul pentru dimensionarea hidraulic i alegerea unui RR. 5.2. Prezentarea funcional a RR Robinetul de reglare este element de execuie n cadrul unor sisteme de reglare automat (cu aciune dup abatere sau dup perturbaie), care permite modificarea debitului de fluid care circul prin el, ca urmare a variaiei comandate a seciunii de trecere a sistemului de strangulare. Mrimea de intrare a RR este un semnal pneumatic unificat (p c = 0,2 ... 1 bar) sau un semnal electric unificat (ic = 2 ...10 mA sau ic = 4 ... 20 mA), iar mrimea de ieire este debitul de fluid. Robinetul de reglare se compune din dou subansamble: servomotorul S i organul de reglare OR. n figura 5.1 este prezentat schema pricipial a unui RR cu acionare pneumatic. La variaia ntr-un sens a presiunii de comand p c, se modific cursa tijei h pn cnd membrana elastic este n echilibru de fore (fora elastic a resortului este egal cu fora exercitat de aerul comprimat) i n consecin se modific aria seciunii de trecere obturator scaun i n final se modific debitul de fluid. Legend: S servomotor pneumatic; OR organ de reglare; 1 resort; 2 membran rigidizat; 3 tij; 4 sistem de etanare; 5 obturator; 6 scaun; 7 corp robinet.

Fig. 5.1. Schema principial a unui robinet de reglare normal nchis.

30

Organul de reglare poate fi acionat cu servomotor pneumatic, hidraulic sau electric. Servomotorul pneumatic cu membran se utilizeaz la curse relativ mici (10...80 mm), iar cel cu piston la curse mari (50...500 mm). Acestea se caracterizeaz prin simplitate constructiv i funcional, robustee i siguran n exploatare, funcionare fr interdicii n medii explozive. 5.3. Caracteristicile statice ale RR Caracteristica static a unui sistem reprezint dependena n regim staionar dintre mrimea de ieire i mrimile de intrare. Unui RR i se asociaz urmtoarele caracteristici statice: caracteristica static a servomotorului S, h = f(u), n care u = pc sau u = ic; caracteristica static intrinsec a organului de reglare OR, Kv = f(h); caracteristici statice de lucru ale OR, Q = f(h). Caracteristica statica intrinsec a OR Aceasta este o caracteristic hidraulic proprie a OR, care depinde numai de aria i forma seciunii de trecere a OR. Dac se trateaz OR ca o rezisten hidraulic, debitul de fluid care trece prin acesta n regim de curgere turbulent, este Q = Ar n care: p r - cderea de presiune pe OR; - densitatea fluidului; Ar - aria seciunii de trecere a OR; - coeficient de debit; - coeficient de expansiune (detent). Pentru simplificarea relaiei (5.1) se introduce noiunea de debit specific, ca fiind egal cu debitul de ap cu densitatea = 1Kg / dm 3 care la trecerea prin OR produce o cdere de presiune remanent pr=1 bar. Expresia acestuia pentru condiiile etalon precizate, este K v = Ar 2 p r 2 p r
[m3/s] (5.1)

(5.2)

Dependena Kv=f(h) reprezint caracteristica intrinsec a OR. n tehnica reglrii s-au impus, prin profilarea corespunztoare a ventilului, urmtoarele caracteristici intrinseci: logaritmic, liniar i cu deschidere rapid (figura 5.2). Reprezentarea grafic 31

este K v / K vs = f (h / h100 ) , obinute prin raportarea valorilor curente la valorile lor maxime corespunztoare strii complet deschis a OR. Debitul specific de scpri K v0, pentru poziia nchis a OR, arat c RR nu asigur o etanare perfect.

Fig.5.2. Tipuri de caracteristici intrinseci: 1- logaritmic; 2 liniar; 3 cu deschidere rapid.

Caracteristici statice de lucru ale OR Dependena Q = f (h) n regim staionar, reprezint caracteristica static de lucru a OR. Aceasta depinde att de timpul i mrimea OR, ct i de sistemul hidraulic n care este montat acesta.

Fig.5.3. Caracteristici de lucru ale RR : a RR cu caracteristic intrinsec liniar; b RR cu caracteristic intrinsec logaritmic

32

n figura 5.3 se prezint caracteristicile statice de lucru ale celor dou tipuri de p r100 RR pentru diverse valori ale parametrului = . Se observ c pentru ps0 = 1( p s 0 = p r100 ) , caracteristica static de lucru se confund cu caracteristica static intrinsec. 5.4. Partea experimental Determinrile experimentale vor fi efectuate cu ajutorul standului prezentat principial n figura 5.4. Acest stand permite msurarea urmtoarelor mrimi: valoarea comenzii u, n %; cursa H a tijei robinetului de reglare; debitul Q al apei vehiculate; presiunea P0 la refularea pompei; presiunea P1 din amontele robinetului de reglare; presiunea P2 din avalul robinetului de reglare. Cursa H poate fi msurat direct (n mm) sau indirect prin intermediul sistemului de msurat deplasarea format din traductorul de deplasare XT i indicatorul de deplasare XI.

Fig. 5.4. Schema principal a standului pentru determinarea caracteristicilor RR: SP sursa de presiune (pomp centrifugal); PI manometru; FT trductor de debit; FR nregistrator de debit; HC element de comand manual; XT traductor de deplasare; XI indicator de deplasare.

Datele msurate vor fi trecute n tabelul 5.1.

33

Tabelul 5.1.
Date experimentale i calculate Mrimi primare
Nr. crt. H u [%] Hd [mm] Hi

Mrimi calculate
P0 [bar] P1 [bar] P2 [bar]

30 i x [mm] i30

Q [%]

Pr
[bar] 0,4 0,5 0,6

Q [m3/h]

Kv [m3/h]

H H100

Kv K v100

Q Q100 1 0,98 0,97

1 2 3

96 86 76

30 29 28

93 92 91

3 3 3,05

1,9 1,95 2

1,5 1,45 1,4

10,23 10,12 10,01

16,17 14,31 12,92

1 0,96 0,93

1 0,88 0,79

Modul de lucru Vor fi efectuate urmtoarele operaii: 1. Se va realiza traseul hidraulic pe stand astfel nct s se obin circuitul din figura 5.4; 2. Cu ajutorul elementului de comand manual HC se va deschide complet robinetul de reglare (H = H100); 3. Se nchide complet robinetul R1, se pornete pompa prin acionarea butonului P (pornire) de pe panoul asociat SRA-D, apoi se deschide complet R1; 4. Se aduce robinetul R2 ntr-o poziie convenabil (se recomand poziii pentru R2 care, pentru H = H100 s conduc la P2 = 12 bar); 5. Avnd RR cu H = H100 (la sfritul punctului 4), se face prima serie de citiri pentru tabelul anterior: u, H, Q, P0, P1,P2; 6. Se repet msurtorile de la puctul 5 pentru diferitele valori ale comenzii u, respectiv cursei H. n total se vor efectua 710 msurtori, relativ uniform distribuite n domeniul 0H100 al cursei (distribuite att pe sensul de nchidere ct i pe cel de deschidere). Msurtorile se vor efectua numai n regim staionar. Prelucrarea datelor Relaii de calcul: Pr = P1 P2 [bar]; Pr Pr , este valoarea maxim a domeniului sistemului de msurat debitul Q[%] Q= QSM 100 [m3/h]; 100 Kv = Q = Q

unde QSM100 (QSM100=11 m3/h). n continuare se va ilustra modul de calcul folosind exemplele de msurtori din tabelul 5.1. 34

Exempul 1 Pr = P1 P2 = 1,9 1,5 = 0,4 bar; Q[%] 93 Q= QSM 100 = 11 = 10,23 m3/h; 100 100 Q 10,23 Kv = = = 16,17 m3/h; Pr 0,4 H 30 Kv 16,17 = = 1; = = 1; H 100 30 K v100 16,17 Exempul 2 Pr = P1 P2 = 1,95 1,45 = 0,5 bar; Q[%] 92 Q= QSM 100 = 11 = 10,12 m3/h; 100 100 Q 10,12 Kv = = = 14,31 m3/h; Pr 0,5 H 29 Kv 14,31 = = 0,96 ; = = 0,88; H 100 30 K v100 16,17 Exempul 3 Pr = P1 P2 = 2 1,4 = 0,6 bar; Q[%] 91 Q= QSM 100 = 11 = 10,01 m3/h; 100 100 Q 10,01 Kv = = = 12,92 m3/h; Pr 0,6 Kv H 28 12,92 = = 0,93 ; = = 0,79; H100 30 K v100 16,17 Q 10,01 = = 0,97 . Q100 10,23 Q 10,12 = = 0,98 . Q100 10,23 Q 10,23 = = 1. Q100 10,23

Cu rezultatele obinute vor fi construite: H Kv = f caracteristica static intrinsec H ; K v100 100 H Q = f caracteristica static de lucru H ; Q100 100 ( CSI i CSL vor fi construite pe acelai grafic). n continuare se determin valoarea parametrului pentru CSL: = Pr100 Ps 35
(5.6)

unde : Pr100 este Pr pentru deschiderea maxim a RR (prima linie din tabelul 5.1); Ps = P00 ( Pv + gH ) , P00 valoarea lui P0 pentru Q = 0. Pentru CLS, n cazul sistemelor hidraulice fr ramificaie este cunoscut relaia Q = Q100 1 1 1 + 2 1 k v
(5.7)

n care k v =

Kv . K v100 Q = k v CLS se confund cu Q100

Se observ c n cazul n care = 1 rezult CSI. 5.5. ntrebri. Exerciii. Probleme

1. Utiliznd relaia (5.6) se vor determina valorile debitului de scpri relativ Q i absolut pentru cele trei caracteristici, respectiv pentru cele trei valori Q100 ale lui . 2. Ce semnificaie are Kv i n ce uniti de msur se exprim acesta? 3. Ce se nelege prin CSI? Cte tipuri principale de CSI cunoatei? 4. Care este diferena dintre CSI i CSL?

36

LUCRAREA 6 SISTEME DE REGLARE AUTOMAT

6.1. Obiectivele lucrrii n cadrul acestei lucrri de laborator, creia i sunt rezervate dou ore, se urmrete atingerea de ctre studeni a urmtoarelor obiective: nelegerea reglrii dup abatere; studiul experimental al unui sistem de reglare automat dup abatere; nelegerea reglrii dup perturbaie. 6.2. Prezentarea coninutului lucrrii Pe parcursul lucrrii de fa se va studia un sistem de reglare automat dup abatere a nivelului (SRA-N) i un simulator pentru un sistem de reglare automat dup perturbaie.

yi

i r

p C u EE m T P y

DA
Fig. 6.1. Schema bloc a unui SRA: P- proces; DA - dispozitiv de automatizare; T - traductor; T *- traductor de intrare; EE - element de executie; y - marime reglata; p - perturbatii; m - marime de executie; r - reactie; i referinta in semnal; yi - referinta in unitati ale marimii reglate; u - comanda.

Orice sistem de reglare automat (SRA) este constituit din dou pari principale: procesul automatizat P i dispozitivul de automatizare DA. SRA care acionez n baza legii reglrii dup abatere elaborez comanda pe baza prelucrrii diferenei (abaterii) care apare ntre starea curent i o stare de referin. Dup cum se observ din fig. 6.1. n structura DA intr traductorul, regulatorul i elementul de execuie, care ndeplinesc cele trei funcii de baz ale oricrui SRA i anume: informarea, elaborarea comenzii i execuia comenzii. n cadrul lucrrii de fa va fi utilizat un stand experimental pentru SRA-N, stand care este prezentat n figura 6.2. 37

Qe

Qi V R1 LT LI V
2 1

H r

Qe u

LC

H RR Qe

SP

Fig. 6.2. Schema principial a SRA-N existent n laborator: V1 ,V2 - vase cu lichid (suprapuse); R1R4 - robinete de izolare; LI - indicator de nivel (sticla de nivel).

n continuare vor fi discutate toate elementele ce compun SRA-N, n baza cunotinelor acumulate la lucrrile de laborator anterioare, precum i a noiunilor cunoscute la curs. Robinetul de reglare (RR) este de tip normal nchis (NI) i are rolul de a mri sau micora debitul Qe n funcie de modificrile comenzii u, primit de la LC. Observaie. RR normal nchis nseamn c robinetul de reglare este nchis atunci cnd comanda este minim. Regulatorul de nivel (LC) este de tip PID. Scriei algoritmul PID care st la baza funcionrii acestui tip de regulator (a se vedea lucrarea 4). Care este rolul LC n cadrul SRA dup abatere? Traductorul de nivel (LT) este un traductor de tip presiune diferenial. Spunei care este rolul LT (a se vedea lucrarea 3)! S se descrie sintetic funcionarea SRA-N pentru cazul n care Hi=ct. i Qi crete cu 2 m3/h. Reglarea dup perturbaie va fi discutat cu ajutorul sistemului din fig. 6.3.
u RR Qi H 2 Qe2 SP2 SP1 V Qe1

L C

r
F T

38

Fig.6.3. Exemplu de sistem de reglare dup perturbaie: V vas cilindric; FT traductor de debit; LC regulator de nivel; RR robinet de reglare; SP1, SP2 surse de presiune (pompe).

Alimentarea vasului are debitul Qi. Lichidul din vas este extras prin dou conducte, cu debitele Qel, respectiv Qe2. Prin conductele 1 i 2 curgerea este forat, sub presiunea creat de pompele SP1 i SP2. Punerea problemei de reglare: obiectivul sistemului const din meninerea constant a nivelului H, la o anumit valoare, notat n continuare cu Hi; debitele Qel i Qe2 au, din punctul de vedere al vasului, variaii aleatoare n timp (acestea sunt perturbaii); debitul Qi poate fi utilizat drept comand, ceea ce nseamn c acesta va fi modificat astfel nct s se menin nivelul H la valoarea Hi (H = Hi). Sistemul de reglare din fig. 6.3 va fi investigat, n cadrul lucrrii de laborator, cu ajutorul unui simulator. 6.3. Partea experimental n laborator, standul experimental care permite studiul SRA-N este reprezentat n fig. 6.2. n continuare vor fi parcurse urmtoarele etape: 1. Recunoaterea fizic a elementelor ce compun SRA-N; 2. Cu ajutorul tehnicianului sau a cadrului didactic va fi pus SRA-N n funciune; 3. Cu SRA-N funcionnd n modul automat, se va urmri i consemna n referat modul n care funcioneaz SRA-N la modificri ale valorii prescrise Hi i a debitului de intrare n vas, Qi. Pentru aceasta vor fi parcurse etapele: a. se aduce prescrierea regulatorului la 50% (H i=50%) i se ateapt pn cnd SRA-N ajunge n regim staionar (mrimea reglat H a ajuns egal cu prescris Hi);
b. c. d.

se modific Hi cu 10% astfel nct Hi=60% i se urmrete modul n care se modific mrimea reglat H; se aduce, din nou, prescrierea regulatorului la 50% (H i=50%) i se ateapt pn cnd SRA-N ajunge n regim staionar; se modific debitul Qi acionnd robinetul R1 (se deschide sau se nchide cu o tur) i se urmrete modul n care se modific mrimea reglat H.

7. Se vor face determinri ale formei i duratei regimului trazitoriu (dinamic) pentru anumite variaii date prescrierii Hi i perturbaiei Qi.

39

n acest scop se vor ntocmi grafice de forma celor din figura 6.4, unde se va pune n eviden aspectul calitativ al rspunsului SRA i durata regimului tranzitoriu.
Hi 30% t H H 40% Qi 50% t 60%

t Hi-H Hi-H

t Fig. 6.4. Grafice pentru analiza calitativ a rspunsului n timp pentru SRA-N.

Pentru SRA dupa perturbatie se va utiliza simulatorul existent in directorul Simulatoare. Dup activarea simulatorului, fiecare student va analiza cu atenie ceea ce ofer acesta cu ajutorul butoanelor, graficelor i altor elemente afiate pe ecran. Se vor urmri: reglarea automat a nivelului; pertubarea sistemului prin debitele Qe1 sau Qe2 (precizare: debitul Qe2 va fi modificat sub forme de treapt, pozitiv sau negativ, pe durate de timp limitate); reglarea manual a nivelului (dac aceast posibilitate este implementat n simulator). Se recomand studenilor s analizeze verosimilitatea fizic a evoluiei n timp a mrimilor aferente SRA-N, afiate pe ecranul monitorului. 6.4. Intrebri i exerciii 1. Care este dezavantajul SRA-N dup abatere? Exemplificai pe graficele experimentale obinute. 2. Care este avantajul SRA dup abatere? 3. Care sunt domeniile mrimilor de intrare i de ieire pentru: LT, LC, EE(RR)? 4. Fie procesul de acumulare a unui gaz ntr-un vas, ilustrat n figura 6.5.

40

Qi

Qe

Qe(t) - aleator Qi - comanda

Fig. 6.5. Procesul de acumulare a unui gaz ntr-un vas.

S se deseneze structura unui SRA-P dup perturbaie i apoi a unui SRA-P dup abatere. 8. Pentru incinta din fig. 6.6 se cere construirea structurii unui SRA-T dup perturbaie, perturbaia considerat fiind temperatura mediului exterior Tm.
T Tm

Agent termic Fig. 6.6. Reglarea temperaturii ntr-o incint.

41

LUCRAREA 7 GESTIUNEA TIMPULUI I GRAFICA N LIMBAJUL C

7.1. Obiectivele lucrrii nsuirea modului de utilizare a funciilor de control C, funciilor de control al timpului i funciilor video C in regim alfanumeric si in regim grafic; Elaborarea funciei pentru trasarea si gradarea unui sistem de axe; Elaborarea funciei pentru vizualizarea informaiei in bargraf. 7.2. Prezentarea coninutului lucrrii Mediul de programare C este unul dintre cele mai populare limbaje de programare. n cadrul acestei lucrri ne propunem s ne familiarizm cu acest mediu de programare, cu funciile de baz utilizate, funciile de control, funciile de gestionare a timpului i funciile grafice ale limbajului. A.Funcii de intrare-ieire n limbajul C Structura general a unui program C:

42

Etape n dezvoltarea unui program simplu n C:

Directiva preprocesor #include Sintaxa: #include <nume_fis> Efect: Include la compilare fiierul cu numele nume_fis (ca i cum s-ar "copia" textul acestuia n programul ce conine directiva #include). n general fiierele ce sunt incluse conin o serie de definiii i declaraii absolut obligatorii, ca de exemplu: stdio.h - funcii standard de I/O conio.h - extensie a funciilor de I/O la consol stdlib.h - funcii standard ale bibliotecilor C; graphics.h - funcii de lucru n regim grafic; math.h - functii matematice Tipuri de variabile des utilizate a) variabile de tip caracter (char) b) variabile de tip ntreg (int) -short -long -unsigned c) variabile de tip real -float: simpl precizie -double: dubl precizie Functia printf() Efect: afieaz un ir formatat pe ecran, n mod text. Sintaxa: printf(<sir_formatat>,var1,var2,...); <sir_formatat> este un ir de caractere ncadrat ntre ghilimele, care conine textul ce va fi afiat pe ecran i specificatorii de format pentru afiarea variabilelor var1,var2,... Fiecreia din variabilele var1,var2,... trebuie sa i corespund un specificator de format:

43

%u - ntreg fr semn %d ntreg %ld - ntreg lung %p pointer %f real %e - real n format exponenial %c caracter %s - ir de caractere %x - ntreg n format hexazecimal

Caractere "escape" coninute n sir formatat \n - linie nou \t - TAB \a - BELL \b - BACKSPACE \\ - \ Funcia scanf() Efect: citete de la tastatur valorile variabilelor coninute n list. Sintaxa: scanf(<ir_formatat>, &var1, &var2,...); <sir_formatat> conine cte un specificator de format pentru fiecare din variabilele var1,var2,... Caracterul & indic faptul c argumentele funciei scanf nu sunt variabilele, ci adresele lor. Functia gets() Efect: citete de la tastatur un ir de caractere Sintaxa: gets(ir_de_caractere); ir_de_caractere este numele unei variabile vector de tip char. Folosirea lui gets() este preferabil n locul lui scanf() (spre deosebire de scanf() utilizat pentru a citi iruri de caractere, gets() recunoate i spaiile, pe care le stocheaza n ir_de_ caractere). Functia clrscr() Efect: are ca efect tergerea ecranului Sintaxa: clrscr(); Functia gotoxy() Efect: poziioneaz cursorul-text n linia i coloana specificate Sintaxa: gotoxy(nr_coloan, nr_linie);

44

unde:

nr_coloana= 0 ... 79 nr_linie= 0 ... 24

Functia cprintf() Efect: Aceast funcie este similar lui printf(), ns afiarea se face ncepnd din poziia curent a cursorului-text. B. Funcii de control n limbajul C Instruciunea condiionat if ... else (selecia simpl) Sintaxa: if (expresie_c) { instruciune 1; instruciune 2; } else { instruciune 1'; instruciune 2'; } Efect: n funcie de valoarea de adevr a expresiei expresie_c se executa unul din seturile de instruciuni instruciune 1, instruciune 2, sau instruciune 1', instruciune 2' ... . Daca expresie_c este adevrat se execut setul aferent lui if; dac expresie_c este fals se execut setul aferent lui else. Instruciunea condiionat switch ... case (selecia multipl) Sintaxa: switch(variabil) { case constant_1: instruciuni1; break; case constant_2: instruciuni2; break; . . . default: instruciuni } 45

Efect: Este testat valoarea variabilei variabil i atunci cnd ea egaleaz valoarea unei constante a unui case se vor executa instruciunile aferente acelui case; daca variabil nu egaleaz nici o constant a unui case, se execut instruciunile aferente lui default (in cazul n care exista un bloc default, prezenta sa nefiind obligatorie). Variabila de test i constantele nu pot fi dect de tip int sau char. Prezena lui break la un grup case este necesar atunci cnd se dorete numai execuia instruciunilor aferente acelui case. Dac break lipsete i variabil a egalat o constant, se vor executa nu numai instruciunile aferente acelui case, ci toate instruciunile celorlalte case-uri care l succed (inclusiv default). Ciclul for Sintaxa: for(iniializare; test_condiie; increment) { instruciuni; } Efect: se execut ciclic o secven de instruciuni, n funcie de o condiie dat. Seciunea iniializare este folosit pentru a da o valoare iniial variabilei care controleaz ciclul, fiind executat o singur dat, nainte ca ciclul s nceap. Seciunea test_condiie testeaz variabila de control cu valoarea scop ori de cte ori ciclul se repet. Daca testul are valoarea de adevr fals, atunci execuia ciclului este ntrerupt. Acest test este fcut la nceputul fiecrui ciclu, la fiecare repetiie. Seciunea increment realizeaz modificarea variabilei de control a ciclului cu o anumita cantitate; ea este executat la sfritul fiecrui ciclu. Oricare din cele trei seciuni poate lipsi; de asemenea, testul de condiie se poate referi la orice alt variabil (nu numai la variabila de control a ciclului). Ciclul while Sintaxa: while(expresie_c) { instruciuni; } Efect: se execut ciclic secvena de instruciuni aferent, att timp ct expresia condiional expresie_c este adevrat. Testul condiional este efectuat la nceputul fiecrui ciclu, n consecin, daca expresie_c este fals de la nceput ciclul nu se va executa. Ciclul do Sintaxa:

46

do { instruciuni; } while(expresie_c); Efect: se executa ciclic secvena de instruciuni aferent att timp ct expresia condiional expresie_c este adevrat. Testul condiional este efectuat la sfritul fiecrui ciclu, n consecin, ciclul va fi executat cel puin o dat. Instruciunile break i continue Au rolul de a controla forat execuia ciclurilor for, while i do. Instruciunea break are ca efect ieirea forat din ciclu. Instruciunea continue foreaz ca urmtoarea parcurgere a ciclului s aib loc trecnd peste instruciunile dintre ea i ultima instruciune a ciclului inclusiv (acestea sunt "srite"). Funcia getch() Sintaxa:ch=getch(); sau getch() unde: ch=variabil de tip char Efect: Ateapt apsarea unei taste, dup care ntoarce codul acesteia variabilei ch. Dac apelul lui getch() se face fr atribuirea valorii ntoarse unei variabile, efectul este de oprire a programului pn la apsarea unei taste. Tasta apsat nu apare pe ecran. Funcia getche() Efect: Este similar cu getch(), singura deosebire fiind aceea c tasta apsat este afiat (are "ecou") pe ecran. Funcia kbhit() Efect: Detecteaz dac a fost apsat sau nu o tast. Dac a fost apsat o tast, kbhit() ntoarce valoarea "adevrat", n caz contrar ntoarce valoarea "fals". Funcia delay() Sintaxa: delay(timp_ms) Efect: Temporizeaz execuia programului cu timp_ms milisecunde. Observaie: Aflarea restului mpririi numrului ntreg a la numrul ntreg b: rest=a%b;

47

C. Funcii de gestionare a timpului Prototipurile funciilor de gestionare a timpului-sistem se gasesc n header-ele dos.h i time.h. Precizrile urmtoare se refer la funciile cu prototipul n header-ul dos.h. n dos.h se gsesc prototipurile urmtoarelor funcii ce permit gestionarea resursei timp:

void getdate(struct date *datep) void gettime(struct time *timep) void setdate(struct date *datep) void settime(struct time *timep) void sleep(unsigned seconds) void delay(unsigned milliseconds)
n care *datep i *timep sunt pointeri la structurile struct date i struct time; seconds, milliseconds sunt numere ntregi pozitive. Structurile aferente datei i orei sunt de forma: struct date { int da_year; char da_day: char da_ mon; }; respectiv: struct time { unsigned char ti_min; /* pentru minute */ unsigned char ti_hour; /* pentru ore */ unsigned char ti_hund; /* pentru sec/100 */ unsigned char ti-sec; /* pentru secunde */ }; Funciile getdate i gettime preiau data i ora curente iar funciile setdate i settime permit iniializarea datei i orei. Funciile delay i sleep permit ntrzierea execuiei programului cu numrul specificat de milisecunde, respectiv secunde. Modurile de utilizare a funciilor getdate, gettime i delay sunt evideniate n programele P1 i P2 ale cror texte surs se prezint n continuare.

/* pentru an */ /* pentru zi */ /* pentru lun */

48

/* Program P1 afisare data si ceas cu getdate() si gettime() */ #include <dos.h> #include <stdlib.h> struct date d; /* structura date */ struct time t; /* structura time */ int i,j; char c; void main(void) { clrscr(); gotoxy(30,5); cprintf("E - iesire din program"); /* bucla infinita */ for(;;) { getdate(&d); /* se preia data */ gettime(&t); /* se preia ora */ i=t.ti_sec; /* secunda curenta */ if(j!=i) /* sezizare schimbare secunda */ { gotoxy(58,3); /* tiparire in linia 3 coloana 58 */ cprintf("%02d-%02d-%4d", d.da_day, d.da_mon, d.da_year); cprintf(" %02d:%02d:%02d", t.ti_hour, t.ti_min, t.ti_sec); j=i; /* secunda anterioara */ } if(kbhit()) c=getch(); /* citesc tasta apasata */ if((c=='e') || (c=='E')) exit(1); } /* sfirsit for */ } /* sfirsit main */

/* Program P2 varianta a P1, care afiseaza si sutimile de secunda */ #include <dos.h> #include<stdlib.h> struct date d; struct time t;

49

void main(void) { gotoxy(30,5); cprintf("E - iesire din program"); clrscr(); /* bucla infinita */ for(;;){ delay(10); /* asteapta 10 ms */ getdate(&d); /* se preia data */ gettime(&t); /* se preia ora */ gotoxy(55,3); /* scrie in coloana 55, linia 3 */ cprintf("%02d-%02d-%4d", d.da_day, d.da_mon, d.da_year);
cprintf(" %02d:%02d:%02d:%02d", t.ti_hour, t.ti_min, t.ti_sec,t.ti_hund);

} }

if(kbhit()) c=getch(); if((c=='e' )|| (c=='E')) exit(1); /* sfirsit for */ /* sfirsit main */

/* test apasare tasta */

Programul P1 afieaz data i ora cu periodicitate de o secund, iar P2 cu o periodicitate de 10 ms (afind n plus fa de P1 sutimile de secund). Ieirea din cele dou programe se face prin apsarea tastei E (funcia kbhit()). D. Funcii video ale limbajului C Adaptorul video poate opera n dou moduri de baz: modul text (alfanumeric), de regul implicit; modul grafic. Modul text n modul text unitatea minim adresabil este caracterul reprezentat de o matrice de puncte (pixeli). Stabilirea modului text se poate face cu funcia void textmode(int mod); unde pentru situaia 80 coloane i 25 linii mod=3, iar numerotarea se face conform fig.7.1.
Coloana 1 Linia 1

Coloana 80

y
Linia 25 Fig.7.1. Numerotarea liniilor i coloanelor n cadrul modului alfanumeric

50

Prototipurile funciilor specifice modului text se gsesc n header-ul conio.h ,al crui coninut este prezentat n continuare. CONIO.H _________ Functions _________ cgets cputs getche gotoxy inport lowvideo outport puttext textcolor wherey

clreol cscanf getpass highvideo inportb movetext outportb _setcursortype textmode window

clrscr delline gettext insline inpw normvideo outpw textattr ungetch

cprintf getch gettextinfo inp kbhit outp putch textbackground wherex

Constants, data types, and global variables ____________________________________________ BLINK COLORS directvideo _NORMALCURSOR _SOLIDCURSOR text_info _wscroll

_NOCURSOR text_modes

Definirea i tergerea unei ferestre O fereastr este o zon dreptunghiular de pe ecran care poate fi gestionat n mod independent i care se creeaz cu ajutorul funciei window cu prototipul: void window(int stnga, int sus, int dreapta, int jos); La un moment dat este activ fereastra definit la ultimul apel al funciei window. Fereastra activ se terge cu funcia clrscr cu prototip void clrscr(void); OBSERVAIE: dup execuia funciei textmode fereastra implicit este reprezentat de tot ecranul. Gestiunea cursorului Cursorul se poate plasa pe un caracter al ferestrei active utiliznd funcia gotoxy cu prototipul void gotoxy(int x,int y); unde x i y reprezint numrul coloanei, respectiv al liniei n fereastra activ. Poziia curent a cursorului in fereastra activ se poate afla cu funciile: int wherex(void); int wherey(void);

51

Setarea culorilor n tabelul 7.1 se prezint codurile culorilor din paleta principal. Tabelul 7.1
Codurile culorilor

Culoare negru albastru verde turcoaz rou purpuriu maron gri deschis gri nchis albastru deschis verde deschis turcoaz deschis rou deschis purpuriu deschis galben alb clipire

Functie C BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE BLINK

Cod 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 128

Pentru setarea culorilor se folosesc funciile: pentru fond void textbackground(int culoare); pentru caractere void textcolor(int culoare); pentru atribut void textattr (int atribut); unde: culoare este un ntreg n intervalul [0,7] pentru fond si [0,15] pentru text; atribut =16 cul_fond | cul_text | clipire. Gestiunea textelor Pentru afiarea caracterelor color n conformitate cu atributele definite prin relaia de mai sus se pot folosi funciile: putch - afieaz un caracter; cputs - afieaz un ir (analog cu puts); cprintf - afieaz date sub controlul formatelor de conversie (analog cu printf). n continuare se prezint un program care utilizeaz o parte din funciile enumerate. /* 52

Program GRAF1.C functii video in mod text */ #include <dos.h> #include <conio.h> void sunet(int f1) { sound(f1),delay(100),sound(2*f1),delay(200), sound(f1),delay(100),nosound(); } void main(void) { clrscr(); textbackground(BLUE),clrscr(); window(24,7,60,17); textbackground(BLACK),clrscr(); window(22,6,58,16); textattr(RED*16|WHITE|BLINK),clrscr(); gotoxy(6,2),cprintf("SISTEME CU MICROPROCESOARE"); textattr(GREEN*16|YELLOW); gotoxy(7,5),cprintf("ECHIPAMENTE DE CONDUCERE"); textattr(BLUE*16|RED); gotoxy(14,8),cprintf(Pentru iesire); gotoxy(10,9),cprintf(se apasa orice tasta !); for(;;) { if(kbhit()) exit(1); sunet(550); } } /* altfel tiuie potrivit functiei sunet() */ /* se iese daca se apasa o tasta */

Modul grafic Prototipurile funciilor specifice modului grafic se gsesc n header-ul graphics.h, al crui coninut este prezentat n continuare.

53

____________ GRAPHICS.H ____________ Functions _________ arc circle closegraph ellipse floodfill getbkcolor getdrivername getgraphmode getmaxcolor getmaxy getpalette gettextsettings gety _graphfreemem imagesize installuserfont lineto outtext putimage registerbgidriver registerfarbgifont setactivepage setbkcolor setfillstyle setlinestyle settextjustify setviewport textheight

bar cleardevice detectgraph fillellipse getarccoords getcolor getfillpattern getimage getmaxmode getmodename getpalettesize getviewsettings graphdefaults _graphgetmem initgraph line moverel outtextxy putpixel registerfarbgidriver restorecrtmode setallpalette setcolor setgraphbufsize setpalette settextstyle setvisualpage textwidth

bar3d clearviewport drawpoly fillpoly getaspectratio getdefaultpalette getfillsettings getlinesettings getmaxx getmoderange getpixel getx grapherrormsg graphresult installuserdriver linerel moveto pieslice rectangle registerbgifont sector setaspectratio setfillpattern setgraphmode setrgbpalette setusercharsize setwritemode

Constants, data types, and global variables ___________________________________________ arccoordstype CGA_COLORS EGA_colors fill_patterns font_names graphics_drivers graphics_modes HORIZ_DIR line_widths linesettingstype line_widths linesettingstype palettetype pointtype text_just text directions USER_CHAR_SIZE VERT_DIR

COLORS fillsettingstype graphics_errors line_styles MAXCOLORS MAXCOLORS putimage_ops textsettingstype viewporttype

Setarea modului grafic rezult din urmtoarea secvena de program:

54

#include <stdio.h> #include <graphics.h> #include <stdlib.h> #include <conio.h> int gdrv=VGA,gmod=VGAHI,errorcode; void main(void) { initgraph(&gdrv,&gmod,"c:\\bc\\bgi"); errorcode=graphresult(); /* adaptor VGA, submod VGAHI (640 x 480 pixeli, 16 culori) */ /* iniializare mod grafic */ /* errorcode conine starea cu care s-a terminat funcia initgraph si trebuie sa fie grOk pentru o situatie normala */

if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); exit(1); /* returneaza codul erorii */ } outtextxy(100,100,"I S S C"); getch(); closegraph(); /* nchide modul grafic */ } n cazul utilizrii modului grafic sunt utile i urmtoarele funcii de setare: void restorcrtmode(void); void setgraphmode(void); void closegraph(void); int getgraphmode(void); grafic. - restabilete modul text; - restabilete modul grafic; - nchide sistemul grafic. - ntoarce o valoare intre 0 si 5 funcie de driverul

n modul grafic ecranul este vzut ca o matrice de 640 480 puncte, conform fig. 7.2.
(0,0)

(639,0)

(0,479)

(479,639)

Fig. 7.2. Numerotarea liniilor si coloanelor in cazul modului grafic.

55

Setarea culorii Pentru setarea culorii se folosesc funciile: void setbkcolor(int culoare); - seteaz culoarea fondului; void setcolor(int culoare); - seteaz culoarea de desenare; unde culoare are una din semnificaiile prezentate in tabelul 7.1. Desenarea n fereastra activ n tabelul 7.2 sunt prezentate prototipurile funciilor de desenare, iar n tabelele 7.3 i 7.4 codificrile pentru stilurile, respectiv pentru grosimile de linie.

Tabelul 7.2
Funcii de desenare n cadrul modului grafic Prototip Funcie

void moveto(int x,int y) void putpixel(int x,int y,int culoare); void lineto (int x,int y); void line(int x1,int y1,int x2,int y2); void circle(int x,int y,int r); void rectangle(int stinga,int sus, int dreapta,int jos) void setlinestyle(int stil_linie,int _model,int grosime);

fixeaz poziia curent n (x,y) nscrie pixelul (x,y) cu culoare linie din poziia curent pn la (x,y) linie din (x1,y1) n (x2,y2) cerc cu centrul n (x,y) si raza r dreptunghi cu colurile menionate fixeaz tipul liniei conform tabelelor de mai jos Tabelul 7.4

Codificarea grosimilor de linie Nume NORM_WIDTH Nume THICK_WIDTH SOLID_LINE DOTTED_LINE CENTER_LINE DASHED_LINE USERBIT_LINE

Cod Descriere Codificarea stilurilor de linie 1 1 pixel latime Cod Descriere 3 3 pixel latime 0 linie continu 1 2 3 4 linie punctat

Tabelul 7.3

linie ntrerupt ( ) linie intrerupt ( ) stil definit de utilizator

56

n tabelul 7.2 parametrul model are valoarea nenul pentru tipul USERBIT. Colorarea i haurarea figurilor Colorarea figurilor nchise, rezultate prin utilizarea funciilor din tabelul 7.2, se poate realiza cu funcia void floodfill(int x, int y, int culoare_contur); unde: x, y - coordonatele unui punct care aparine interiorului figurii; culoare_contur - culoarea conturului figurii. Specificarea modelului i a culorii de hasurare se fac cu funcia: void setfillstyle(int model, int color); unde: color - culoarea conform tabelului 7.1; model - modelul conform tabelului 7.5. Ferestre grafice n modul grafic ferestrele sunt cunoscute sub denumirea de viewport, pentru care n cele ce urmeaz se prezint funciile uzuale de lucru. Funcia setviewport(int stnga, int sus, int dreapta, int jos, int clip); creeaz o fereastra cu coordonatele indicate. Variabila de tip ntreg clip reglementeaz amplasarea n viewport a unor desene sau texte. Daca clip=0 figura (textul) poate depai limitele ferestrei, n caz contrar nu. La referire, colul stnga-sus are coordonatele (0,0), iar clip se definete la nceputul programului. Funcia clearviewport(); realizeaz tergerea ferestrei curente. Daca fereastra curent este reprezentat de tot ecranul, atunci pentru tergerea acestuia se utilizeaza funcia: cleardevice();

Afiarea textului n mod grafic Reprezentarea caracterelor unui text n modul grafic se poate face prin: descrierea imaginii fiecrui caracter prin cte o matrice de 8x8 pixeli (8x8 bit-mapped font); descrierea printr-un set de vectori (stroked font). Funcia void settextjustify(int orizontal, int vertical);

57

permite alinierea textului referitor la poziia curent (PC) conform precizrilor din tabelul 7.6. n mod implicit, alinierea orizontal este la stnga (LEFT_TEXT) iar cea vertical este la baz (BOTTOM_TEXT). .
Codificarea modelelor de haurare Nume EMPTY_FILL SOLID_FILL LINE_FILL LTSLASH_FILL SLASH_FILL BKSLASH_FILL LTBKSLASH_FILL HATCH_FILL XHATCH_FILL INTERLEAVE_FILL WIDE_DOT_FILL CLOSE_DOT_FILL USER_FILL Cod 0 1 2 3 4 5 6 7 8 9 10 11 12 Descriere umple cu culoarea de fond umple uniform toi pixelii haur orizontal haur /// haur /// linii groase haur \\\ linii groase haur \\\ haur n cruce +++ haur n cruce oblic haur cu ntreesere umple cu puncte rare umple cu puncte dese model utilizator

Tabelul 7,5

Tabelul 7.6
Alinierea textului in modul grafic Descriere Orizontal Nume LEFT_TEXT CENTER_TEXT RIGHT_TEXT BOTTOM_TEXT CENTER_TEXT TOP_TEXT Valoare 0 1 2 0 1 2 Aciune PC la stnga PC in centru PC la dreapta PC la baza PC in centru PC deasupra

vertical

Alegerea dimensiunii, a tipului de caracter i a direciei textului se face cu funcia: void settextstyle(int font, int directie, int mrime); unde parametrii sunt explicitai in tabelele 7.7 i 7.8. Tabelul 7.7
Tipuri de caractere (fonturi) asociate modului grafic

58

Nume DEFAULT_FONT TRIPLEX_FONT SMALL_FONT SANS_SERIF_FONT GOTHIC_FONT

Valoare 0 1 2 3 4

Descriere 8x8 mapped font strk.trip.font strk. small font strk.sans serif font strk. gothic font

Tabelul 7.8
Codificarea direciei textului pentru modul grafic Nume HORIZ_DIR VERT_DIR Valoare 0 1 Descriere stinga-dreapta jos-sus

Precizrile anterioare sunt valabile pentru afiarea textului cu una din funciile: void outtext(" char text "); n poziia curent void outtextxy(int x,int y," char text "); ncepnd cu punctul (x,y). Daca textul afiat are nevoie de formatare se poate folosi funcia sprinf conform exemplului de mai jos. char x[20]; sprintf("Valoarea lui x este:%d", x); outtextxy(10, 20, x); Observaii 1. elementele prezentate n tabelele 7.1 7.8 pot intra n functiile utilizate fie cu numele complet, fie cu codul; 2. pentru detalii in legatur cu utilizarea modului grafic se poate consulta documentaia mediului de programare. n programul de mai jos sunt utilizate o parte din funciile specifice modului grafic, descrise anterior. /* Program graf2.c functii video in modul grafic */ #include <stdio.h> #include <conio.h> #include <graphics.h> #include <stdlib.h> 59

#include <dos.h> #define CLIP_ON 1 void sunet(int f1) { sound(f1),delay(100),sound(2*f1),delay(200),sound(f1),delay(100),nosound(); } void main() { int i,j; int gdrv=VGA,gmod=VGAHI,errorcode; /* adaptor VGA, submod VGAHI (640 x 480 pixeli, 16 culori) */ initgraph(&gdrv, &gmod, "c:\\bc\\bgi"); /* initializare mod grafic */ errorcode=graphresult(); if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); exit(1); } cleardevice(); /* sterge ecranul */

setbkcolor(RED); settextstyle(TRIPLEX_FONT,HORIZ_DIR,3); outtextxy(90,50,"SUNTEM IN MODUL GRAFIC ! APASATI O TASTA !"); rectangle(100,100,400,400); sunet(500); getch(); setfillstyle(1,BLUE); floodfill(200,200,WHITE); sunet(600); getch(); circle(250,250,150); sunet(650); getch(); setfillstyle(1,CYAN); floodfill(250,250,WHITE); sunet(700); getch(); setviewport(175,175,325,325,CLIP_ON);clearviewport(); floodfill(250,250,WHITE); setfillstyle(1,MAGENTA); sunet(450); getch(); settextstyle(4,0,4); 60

outtextxy(30,70,"ECHIPAMENTE"); outtextxy(40,80,"NUMERICE"); sunet(850); getch(); restorecrtmode(); textattr(RED*16|WHITE|BLINK); gotoxy(5,5); cprintf(" SUNTEM IN MODUL ALFANUMERIC ! "); sunet(750); getch(); window(10,10,40,20); textbackground(BLUE); textcolor(YELLOW); for(i=1; i<=10; i++) { for(j=1; j<=10; j++) { gotoxy(j,i); cprintf("~"); } } gotoxy(3,5);cprintf("E.N."); sunet(1000); getch(); setgraphmode(getgraphmode()); /* se restaureaza modul grafic */ setbkcolor(LIGHTBLUE); settextstyle(TRIPLEX_FONT,HORIZ_DIR,3); outtextxy(90,50,"SUNTEM DIN NOU IN MODUL GRAFIC !"); outtextxy(90,60,"APASATI O TASTA!"); bar3d(100,100,300,300,20,1); sunet(700); getche(); } 7.3. Modul de lucru: I. Etape pregtitoare: a) Se pregtesc matrice de lucru (640x480) i (80x25) pentru lucrul n regim grafic, respectiv alfanumeric. Matricele vor fi pregtite pe hrtie de calc i se vor multiplica ulterior; b) Se vor construi pentru modul grafic functiile: - void axe(x0, y0, deltax, deltay) - void bargraf(stinga, jos, sus, param, delta, culoare) unde: x0, y0 - sunt coordonatele originii; deltax, deltay - lungimile n pixeli ale axelor; stinga, jos, sus - coordonatele bargrafului; param - valoarea n pixeli a parametrului care se vizualizeaz pe bargraf; 61

delta - limea n pixeli a bargrafului; culoare - culoarea de umplere a bargrafului; (Toate variabilele sunt de tip ntreg). c) Se construiesc programele de apel ale funciilor axe i bargraf. II. Desfurarea lucrrii a) Se pornete sistemul; b) Se intra n subdirectorul de lucru al subgrupei ; c) Se lanseaz mediul de programare; d) Se compileaz, linkediteaz i se lanseaz n execuie programele P1, P2, GRAF1, GRAF2. e) Se va observa diferena ntre modurile alfanumeric i grafic; f) Se vor edita, compila, linkedita i executa programele realizate in cadrul etapei I; g) Lucrarea se consider ncheiat cnd toate programele menionate sunt funcionale, iar referatul va cuprinde principalele idei din breviar i codurile surs ale programelor create. 7.4. ntrebri i exerciii 1. S se scrie un program care s citeasc de la tastatur un numr ntreg, apoi s scrie pe ecran urmtoarele informaii: Ai introdus numrul ... (numrul introdus) Numrul este ... (negativ, zero, pozitiv) Modulul sau este ... (modulul numrului introdus) 2. S se scrie un program care s afieze numerele de la 1 la 100, cte 5 pe un rnd. De fiecare dat cnd se trece la un rnd nou acest fapt s fie semnalat printr-un semnal sonor scurt. 3. S se scrie un program care s ceara introducerea de la tastatur a unui ir de caractere pe care apoi s-l afieze liter cu liter pn la ntlnirea primului spaiu, moment n care programul va trebui s se opreasc. Daca irul nu conine nici un spaiu, el va fi afiat integral. 4. S se scrie un program care s citeasc de la tastatur un ir de caractere i o liter, apoi sa numere apariiile literei respective n irul introdus. Mesajul dat trebuie s fie de forma: Litera ... apare de ... ori in irul introdus. 5. S se elaboreze un program care s testeze dac un numr natural introdus de la tastatur este numr prim. Dup efectuarea testului utilizatorul va fi chestionat dac dorete s testeze un alt numr (s se rspund cu D/N). 6. S se scrie un program care s simuleze funcionarea unui contor, astfel: - la apsarea tastei S contorul s nceap numrarea, de la ultima valoare afiat; - la apsarea tastei O contorul s se opreasc, rmnnd afiat valoarea acestuia - la apsarea tastei R contorul s revin la zero si dac anterior funciona, s se opreasc; - la apsarea tastei E s se ias din program.

62

LUCRAREA 8

PROGRAMAREA SECTIUNII ANALOGICE A INTERFEEI AX 5411 PENTRU INTRRI I IEIRI ANALOGICE

63

8.1.Obiectivele lucrrii nsuirea modului de utilizare a funciilor driver-ului interfeei de proces AX 5411; Determinarea caracteristicilor statice pentru subsistemul intrrilor i ieirilor analogice (SADA) al interfeei AX 5411; Vizualizarea comportrii dinamice a subsistemelor intrrilor i ieirilor analogice, cuplate; Elaborarea unor programe pentru vizualizarea comportrii dinamice (n planul u-t i pe bargraf ) a subsistemului intrrilor i al subsitemului ieirilor analogice. Elaborarea unui program pentru determinarea caracteristicii statice a ansamblului celor dou subsisteme. 8.2. Prezentarea coninutului de lucru CARACTERISTICI PRINCIPALE ALE SUBSISTEMULUI DE INTRRI ANALOGICE PENTRU INTERFAA AX 5411 AX5411 este o interfa multifuncional care conine toate cele 4 subsisteme (SADA, SADN, SDCA, SDCN) i care poate fi montat ntr-un slot disponibil al unui sistem IBM PC AT sau compatibil. n continuare se prezint principalele specificaii ale echipamentului. Subsistemul de achiziie a datelor analogice (SADA) Numr de intrri 16 simple (AI0 - AI15); Rezoluie CAN 12 bit; Frecven de achiziie max. 60 kHz ; Timpul de conversie A/D max 15 microsec. ; Timpul de achiziie max 5 microsec./canal; Domenii de intrare +/-10V,+/-5V,+/-2.5V,+/-1.25V, +/-0.625V,+/- 0.3125V (selectabile software); Impedana de intrare >10 M,50pF; Neliniaritate +/- 1 LSB; Eroare inerent +/- 1 LSB. Subsistemul de generare a comenzilor analogice (SDCA) Numr de ieiri 2 (DO0,DO1); Rezoluie 12 bit; Frecven max 33 kHz ; Domenii de ieire 05V,010V (selectabile hardware); Curent de ieire 5 mA max.

64

Subsistemul intrarilor/ieirilor numerice (SADN/SDCN) Intrri numerice 24 dintre care disponibile 8 (DI0 - DI7 ); Ieiri numerice 24 dintre care disponibile 8 (DO0 - DO7 ). Nivele intrare/ieire Conector intrare/ieire compatibile TTL; 50 pini

Caracteristici de interfaare cu calculatorul Magistrala compatibil IBM PC AT; Bii adres utilizai A9 - A0; Adresa de baz (IOPORT) 0300 hexa; Locaii necesare 16 (octei); Nivele de ntrerupere 2,3,4,5,6,7 (controlabile soft); Sursa de ntreruperi FINISH bit conversie A/D; Opiuni DMA DMA1 sau DMA3 selectabile hard; n fig. 8.1 se prezint asignarea pinilor n conectorul interfeei AX 5411.

CARACTERISTICILE DRIVER-ULUI C PENTRU SUBSISTEMUL INTRRILOR ANALOGICE PENTRU INTERFAA AX 5411 sintaxa: flag=ax5411(fun, dio, ary1, ary2);

65

AI0 AI1 AI2 AI3 AI4 AI5 AI6 AI7 AGND +12 V DA0 AGND DO0 DO1 DO2 DO3 DGND DO4 DO5 DO6 DO7 +5 VP EXTRG DGND

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49

2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50

AI8 AI9 AI10 AI11 AI12 AI13 AI14 AI5 AGND -12 V DA1 AGND DI0 DI1 DI2 DI3 DGND DI4 DI5 DI6 DI7 +12 V DGND

Nume

I/O

Funcie

AIx DAx Dix DOx +12v -12v AGND DGND +5vp +12v -12v EXTRG

Intrare Ieire Intrare Ieire Surs Surs Mas Mas Surs Surs Surs Intrare

Canal x Int.Anal. Canal x Ieire Anal. Canal x Int. Num. Canal x Ieire Num. Analogic Numeric PC +5v PC +12v PC -12v Trigger extern

Fig. 8.1. Asignarea i semnificaiile semnalelor din conectorul interfeei AX 5411.

if (flag == 0) procesare normala; else procesare cu erori; parametri: int fun : va conine numele sau numrul funciei din driver (funciile ce se vor utiliza n lucrrile de laborator sunt prezentate in tabelul 8.1); int dio[ ] : tablou de ntregi (maximum 7 elemente), care conine toi parametrii necesari funciei respective; int far ary1: tablou de ntregi (maximum 32 Kwords); int far ary2 : tablou de ntregi (maximum 32 Kwords);

66

n continuare sunt detaliate funciile din acest lucrare, urmnd ca celelalte s fie prezentate pe msura utilizrii. Tabelul 8.1
Codificarea principalelor funcii din driver Numr 0 1 2 3 13 14 15 16 INIT SET_CH SET_GAIN SFT_TRG DO_BYTE DI_BYTE DAC_ONE DAC_TWO Funcie Descriere

Iniializeaz funciile driver-ului AX5411 Seteaz canalul de achiziie Seteaz domeniul pentru toate canalele Realizeaz o achiziie pe un canal nscrie un octet n canalele DO0...DO7 Citete un octet din canalele DI0...DI7 Trimite un semnal analogic pe un canal Trimite semnale analogice pe ambele canale

Funcia INIT : iniializare AX 5411 Scop: 1. Seteaz adresa de baz conform dio[0]; 2. Seteaz nivelul de ntreruperi conform dio[1]; 3. Seteaz nivelul DMA conform dio[2]; 4. Verific prezena modulului AX 5411; 5. Dezactiveaz alte ntreruperi externe. Aceasta funcie se va executa o singur dat, naintea oricrei alte funcii. Intrri: fun dio[0] dio[1] dio[2] dio[3] dio[4] dio[5] dio[6] ary1 ary2 - INIT (sau 0); - adresa portului de baz (IOPORT); - nivel IRQ (de la 2 la 7); - canal DMA (1 sau 3); - neutilizat; - neutilizat; - neutilizat; - neutilizat; - neutilizat; - neutilizat.

67

Ieiri: flag

= = = = = =

0 - far erori; 2 - funcie n afara domeniului; 3 - eroare de setare a IOPORT; 4 - nivel IRQ setat n afara domeniului; 5 - canal DMA setat n afara domeniului; 6 - defect hardware.

Exemplu de utilizare a funciei INIT: #include <ax5411.h> #include <stdio.h> #define IOPORT 0x300 // int fun, flag; int far ary1; int far ary2; unsigned int dio[7]; // main( ) { fun=INIT; dio[0]=IOPORT; dio[1]=3; dio[2]=3; flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de initializare\n"); else printf("Initializare reusita"); getch();
}

Funcia SET_CH : setare canale achiziie Scop: 1. Seteaz numrul primului canal conform dio[0]; 2. Seteaz numrul ultimului canal conform dio[1]. Aceasta funcie se va executa o singur dat, naintea funciei de achiziie. Intrri: fun - SET_CH (sau 1); dio[0] - numrul canalului de start (0..15); dio[1] - numrul canalului de stop (0..15); dio[2] - neutilizat; dio[3] - neutilizat; 68

dio[4] - neutilizat; dio[5] - neutilizat; dio[6] - neutilizat; ary1 - neutilizat; ary2 - neutilizat. Ieiri: flag = 0 - fr erori; = 1 - driver neiniializat; = 2 - funcie n afara domeniului; = 7 - nr. canal n afara domeniului (0..15).

Exemplu de utilizare a funciei SET_CH:


.

fun=SET_CH; dio[0]=0; dio[1]=15; flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de setare canal\n"); else printf("Setare reusita/n"); .

// funcia set canal // nr. canal start //nr. canal stop

Funcia SET_GAIN : setare domeniu canale achiziie Scop: Seteaz domeniul pentru toate canalele conform dio[0]. Aceasta funcie se va executa o singur dat, naintea funciei de achiziie. Intrri: fun - SET_GAIN (sau 2); *) dio[0] - domeniul (1,2,4,8,16); dio[1] - neutilizat; dio[2] - neutilizat; dio[3] - neutilizat; dio[4] - neutilizat; dio[5] - neutilizat; dio[6] - neutilizat; ary1 - neutilizat; ary2 - neutilizat.

*)Valoare 1 2 4 8 16

Domeniu -5/+5 V -2.5/+2.5 V -1.25/+1.25 V -0.625/+0.625 V -0.3125/+0.3125 V

69

Ieiri: flag = 0 - fara erori; = 1 - driver neiniializat; = 2 - funcie n afara domeniului; = 22 - eroare setare domeniu. Exemplu de utilizare a funciei SET_GAIN: . fun=SET_GAIN; // functia set domeniu dio[0]=1; // domeniu selectat flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de setare domeniu\n"); else printf("Setare reusita/n"); . Funcia SFT_TRG : realizeaz conversia A/N Scop: Aceast funcie realizeaz o achiziie i conversia analog/numeric pentru canalele i domeniile selectate. Declanarea conversiei (start conversie) se realizeaz pe cale software (SoFTware_TRiGger). Funcia se va executa naintea unei conversii analog-numerice Intrri: fun - SFT_TRG (sau 3); dio[0] - neutilizat; dio[1] - neutilizat; dio[2] - neutilizat; dio[3] - neutilizat; dio[4] - neutilizat; dio[5] - neutilizat; dio[6] - neutilizat; ary1 - neutilizat; ary2 - neutilizat; Ieiri: flag = 0 - fr erori; = 1 - driver neiniializat; = 2 - funcie n afara domeniului; = 8 - eroare start conversie; dio[0] = numr de cuante n zecimal -2048 la +2047; dio[1] = numrul canalului pe care se achiziioneaz.

70

Exemplu de utilizare a funciei SFT_TRG: . fun=SFT_TRG; // functia software trigger flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de achizitie\n"); else printf("Data=%x, Canal=%x\n",dio[0],dio[1]); . UTILIZAREA DRIVER-ULUI C PENTRU AX 5411 N APLICAII PENTRU SUBSISTEMUL INTRRILOR ANALOGICE n vederea utilizrii driver-ului C pentru interfaa AX 5411, n aplicaii se va proceda dup cum urmeaz: a) se editeaz programul utilizator; b) se construiete un proiect (extensia .prj) conform exemplului de mai jos; c) se nscrie numele proiectului in funcia project a mediului de programare; d) se efectueaz compilarea, linkeditarea i execuia conform metodologiei cunoscute. Exemplu: program de achiziie de pe canalul 0, domeniu -5/+5V i tiprirea numrului de cuante. Acest program se gsete n subdirectorul de lucru sub numele TESTAI.CPP. // PROGRAM TESTAI TESTARE ACHIZITIE PE CANALUL 0 // #include <ax5411.h> #include <stdio.h> #include <conio.h> #include <dos.h> #define IOPORT 0X300 // adresa port de baza pentru AX 5411 int fun,flag; int far ary1; int far ary2; unsigned int dio[7]; int main( ) { clrscr(); // initializare AX5411 fun=INIT; dio[0]=IOPORT; dio[1]=3; dio[2]=3; flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de initializare \n"); // setare numar canal 71 // functia de initializare

fun=SET_CH; //functia set canal dio[0]=0; //nr. canal de start dio[1]=0; //nr. canal de stop flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de setare canal\n"); // setare domeniu fun=SET_GAIN; //functia set domeniu dio[0]=1; //domeniu selectat -5/+5V flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de setare domeniu\n"); textattr(GREEN*16|YELLOW); // bucla infinita for(;;) { delay(100); // achizitie fun=SFT_TRG; flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de achizitie\n"); else

//asteapta 100 ms //functia software trigger

// tiparire gotoxy(20,20), cprintf("Data=%d, Canal=%d\n",dio[0],dio[1]); if(kbhit()) break; // la apasarea unei taste iesire din ciclu } getch( ); return 0; } // iesire din program

CARACTERISTICI PRINCIPALE ALE SISTEMULUI IEIRLOR ANALOGICE PENTRU INTERFAA AX 5411 n continuare se prezint funciile specifice subsistemului ieirilor analogice. Pentru detalii privind caracteristicile sistemului de interfaa, vezi precizrile anterioare. Subsistemul ieirilor analogice Numr de ieiri Rezoluie Frecven Domeniu de ieire Curent de ieire 2 (DO0,DO1); 12 bit; max. 33 kHz ; 0..5V; max 5 mA . 72

CARACTERISTICILE DRIVER-ULUI C PENTRU AX 5411 N SISTEMUL IEIRILOR ANALOGICE Pentru detalii privind: - utilizarea driver-ului; - codificarea funciilor; funciile INIT,SET_CH,SET_GAIN,SFT_TRG, vezi subsistemul intrrilor analogice. n continuare se prezint funciile aferente ieirilor analogice. Funcia DAC_ONE : realizeaz conversia N/A pe un canal Scop: Aceasta funcie realizeaz o conversie numeric-analogica (N/A) i genereaz tensiunea rezultat pe canalul specificat n domeniul setat pe cale hardware (0..5V pentru prezenta lucrare). Valoarea tensiunii generate se obine cu relaia:

U gen =

Nr. cuante 5 4096

Intrri: fun - DAC_ONE (sau 15); dio[0] - canal nr. 0 sau 1; dio[1] - nr. cuante care se aplic CNA (intre 0 si 4095); dio[2] - neutilizat; dio[3] - neutilizat; dio[4] - neutilizat; dio[5] - neutilizat; dio[6] - neutilizat; ary1 - neutilizat; ary2 - neutilizat; Ieiri: flag = 0 - fr erori; = 1 - driver neiniializat; = 2 - functie n afara domeniului; = 21 - nr. cuante n afara domeniului; = 20 - nr. canal n afara domeniului (0 sau 1). Exemplu de utilizare a funciei DAC_ONE: . fun=DAC_ONE; // conversie N/A pe un canal dio[0] = 0; // canal 0 dio[1] = 1024; // nr. cuante flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de conversie !,flag=%d\n",flag); else printf("Canal=%d, Tens=%.2f V\n",dio[0],dio[1]*4096/5);

73

Funcia DAC_TWO : realizeaz conversia N/A pe ambele canale. Scop: Aceasta funcie realizeaz o conversie N/A i genereaz tensiunea rezultat pe ambele canale (0 i1), n domeniul setat pe cale hardware (0..5V pentru prezenta lucrare). Valoarea tensiunii generate se obine cu relaia:

U gen =

Nr. cuante 5 4096

Intrri: fun - DAC_TWO (sau 16); dio[0] - nr. cuante pe canalul nr. 0 (0..4095); dio[1] - nr. cuante pe canalul nr. 1 (0..4095); dio[2] - neutilizat; dio[3] - neutilizat; dio[4] - neutilizat; dio[5] - neutilizat; dio[6] - neutilizat; ary1 - neutilizat; ary2 - neutilizat. Iesiri: flag = 0 - fr erori; = 1 - driver neiniializat; = 2 - funcie n afara domeniului; = 21 - nr. cuante n afara domeniului. Exemplu de utilizare a funciei DAC_TWO: . fun=DAC_TWO; // conversie A/N pe un canal dio[0] = 1024; // nr. cuante pe canal 0 dio[1] = 2048; // nr. cuante pe canal 1 flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de conversie !,flag=%d\n",flag); else printf("Canal 0 Tens=%.2f V\n",dio[0]*4096/5); printf("Canal 1 Tens=%.2f V\n",dio[0]*4096/5); UTILIZAREA DRIVER-ULUI C PENTRU AX 5411 N APLICAII PENTRU SISTEMUL IEIRLOR ANALOGICE n vederea utilizrii driver-ului C pentru AX 5411 n aplicaii se va proceda dup cum urmeaz: a) se editeaz programul utilizator; b) se construiete un proiect (extensia .prj) conform exemplului de mai jos; 74

c) se nscrie numele proiectului n funcia project a mediului de programare; d) se efectueaz compilarea, linkeditarea i execuia conform metodologiei cunoscute. Exemplu: Program de generare pe canalul de ieire 0 de tensiuni din 0.5 V n 0.5 V , achiziia acestora pe canalul de intrare 0 i tiprirea att a tensiunii generate ct i celei achiziionate. Trecerea de la o valoare la alta se face prin apsarea tastei c. Acest program se gsete n subdirectorul de lucru sub numele TESTAO.CPP. // // PROGRAM TESTARE IESIRI ANALOGICE PE CANALUL AO0 // SI ACHIZITIA VALORII GENERATE PE CANALUL AI0 // #include <ax5411.h> #include <stdio.h> #include <conio.h> #include <dos.h> #define IOPORT 0x300 int fun,flag,i; int far *ary1; int far *ary2; float uach[20],ugen[20]; unsigned int dio[7]; main( ) { // initializare AX 5411 fun=INIT; dio[0]=IOPORT; dio[1]=3; dio[2]=3; flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de initializare\n"); // functia de initializare

// setare numar canal fun=SET_CH; // functia set canal dio[0]=0; // nr. canal start dio[1]=0; // nr. canal stop flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de setare canal\n"); // setare domeniu fun=SET_GAIN; dio[0]=1; flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) // functia set domeniu // domeniu selectat -5/+5V

75

printf("Eroare de setare domeniu\n"); // tipareste cap de tabel textbackground(BLACK); clrscr( ); textattr(BLUE*16|YELLOW); gotoxy(27,5);cprintf(" * DEMO SUBSISTEME D/A + A/D * "); gotoxy(30,7);cprintf(" i ugen[V] uach[V] "); gotoxy(30,8);cprintf(" ==================== "); // bucla cu 9 pasi for(i=1;i<=9;i++) { // generare tensiune dio[0]=0; // canal iesire nr. 0 ugen[i]=0.5*i; dio[1]=(int)(409.6*i); fun=DAC_ONE; flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de conversie D/A\n"); else // achizitie tensiune fun=SFT_TRG; // functia software trigger flag=ax5411(fun,dio,ary1,ary2); if(flag != 0) printf("Eroare de achizitie\n"); else uach[i]=dio[0]*0.00244; // tiparire gotoxy(30,8+i); cprintf(" %d %.2f getch( ); } // iesire din program getch( ); } 8.3 Partea experimental A. Descrierea platformelor de lucru Laboratorul CALCULATOARE DE PROCES conine componente funcionale importante: panoul complex IAN; 76 urmtoarele

%.2f \n",i,ugen[i],uach[i]);

// avans pentru o noua generare

platformele de lucru P1, P2, P3; stand pentru reglarea presiunii. Platformele de lucru P1, P2, P3 sunt conectate la panoul I.A.N. prin intermediul cablurilor prezentate punctat n fig. 8.2 i pozate n interiorul unor bare casetate. Conectarea fizic la panourile interfeelor de proces se realizeaz prin irurile de conectori SC1 , SC2, SC3, care au configuraia din fig. 8.3. Acest laborator este interconectat din punct de vedere funcional cu laboratorul Automatizarea proceselor chimice de unde se preiau semnale n curent de la traductoarele de debit (platforma P2) i nivel (platforma P1) i ctre care se trimit semnale n curent la elementele de execuie aferente SRA debit i SRA nivel. Comanda pompelor centrifugale ale celor dou SRA se poate realiza de la panoul IAN. La platforma P1 sunt conectate traductorul i elementul de execuie amplasate pe standul pentru reglarea presiunii. B. Desfurarea lucrrii a) Se realizeaz pe rnd montajul din fig.8.2 respectiv cel din fig.8.3 pentru fiecare platforma Pi (i=1,2,3); b) Se pornete sistemul ; c) Se intr n subdirectorul de lucru al subgrupei; d) Se lanseaz mediul de programare; e) Se editeaz proiectul dup cum urmeaz: - pentru subsistemul intrrilor analogice: - se tasteaz F10 i se selecteaz meniul Project; - se selecteaz submeniul Open project...; - se introduce numele proiectului; - se apas tasta Insert i se adaug fiierele : testai.cpp (existent n subdirectorul curent) ax5411cl.lib (existent n subdirectorul C:\BC\LIB) - se salveaz proiectul din meniul Options, submeniul Save... - pentru subsistemul ieirilor analogice: - se tasteaz F10 i se selecteaz meniul Project; - se selecteaz submeniul Open project...; - se introduce numele proiectului (LUC6.PRJ); - se apsa tasta Insert i se adaug fiierele : testao.cpp (existent n subdirectorul curent) ax5411cl.lib (existent n subdirectorul C:\BC\LIB) - se salveaz proiectul din meniul Options, submeniul Save... f) Se alimenteaz panoul cu tensiune; g) Se compileaz proiectul;

77

G2

G1 Fig. 8.2. Modul de conectare a platformelor de lucru la panoul I.A.N.: I.A.N. - panou intrri analogice i numerice; G1, G2, G3 - generatoare de semnal unificat; P1, P2, P3 platforme de lucru; SC1, SC2, SC3 - iruri de conectori.

PANOU I. A. N.
G3

P1 SC1

P2 SC2

P3 SC3

78

10

11

12

Semnal unificat 4...20 mA +

Comanda 1...5 V +

Semnal traductor +

Generator de semnal
+

Fig. 8.3. Configuraia irului de conectori.

AX 5411
17 1 + 12 11 250

Pi

MTM

SCi

De la Gi , i= 1...3 Fig. 8.4.Montajul utilizat pentru testarea intrrilor analogice: SCi - sir de cleme; Gi - generator de semnal unificat; MTM - multimetru; Pi - platforma de lucru.

h) Se linkediteaz i se lanseaz n execuie proiectul creat; i) Pentru verificarea programului se modific tensiunea de la panou i se urmresc valorile afiate pe ecran; j) Se lanseaz din subdirectorul de lucru programul pr2_itf.exe i se determin caracteristica static a canalului 0. Se noteaz tensiunile de intrare i ieire, coeficienii dreptei de regresie, abaterea standard, dispersia i se traseaz pe hrtie milimetric caracteristica static; k) Se lanseaz n execuie din subdirectorul de lucru programul pr4_itf.exe i prin modificri ale tensiunii de la panou se urmrete comportarea dinamic a achiziiei pe canalul 0; l) Se completeaz programul TESTAI n aa fel nct s permit vizualizarea tensiunii achiziionate ntr-un sistem de axe u-t i pe bargraf. n acest scop se vor 79

utiliza funciile axe si bargraf elaborate n cadrul lucrrii anterioare. Achiziia se va realiza n 500 pai cu temporizare 200 ms; m) Dup funcionarea programului se va nota sau, dup caz, se va lista textul surs la imprimant; n) Referatul va cuprinde principalele idei din breviar (referitoare la interfa i la driver), caracteristicile statice ale SADA i forma surs a programului TESTAI completat.

23 25

MTM

AX 5411

Fig. 8.5. Montajul utilizat pentru testarea ieirilor analogice : MTM - multimetru numeric.

o) Prin program se genereaz pe canalul DAO tensiuni cresctoare ntre 0.5 i 4.5 V, trecerea de la o tensiune la alta efectundu-se prin apsarea unei taste. Se verific concordana dintre valorile afiate pe ecran i cea indicat de multimetru; p) Se lanseaz din subdirectorul de lucru programul pr3_itf.exe i se determin caracteristica static a canalului DA0. Se noteaz tensiunile de intrare i ieire, coeficienii dreptei de regresie, abaterea standard, dispersia i se traseaz pe hrtie milimetric caracteristica static; r) Se lanseaz n execuie din subdirectorul de lucru programul pr5_itf.exe i se urmrete comportarea dinamic a canalelor cuplate DA0 i AI0 pentru diferite forme de variaie a tensiunii generate (liniar, sinusoidal, exponenial); s) Se completeaz programul TESTAO.CPP, astfel nct s permit trasarea caracteristicii statice Uach = f(Ugen) a ansamblului celor dou canale. n sistemul de axe se vor marca punctele experimentale i se va trasa dreapta obinut prin regresie liniar. Se vor calcula i afia de asemenea abaterea standard i dispersia.

LUCRAREA 9
80

VERIFICAREA UNOR TEOREME I AXIOME ALE ALGEBREI LOGICE


9.1.Obiectivele lucrrii Revederea cunotinelor de programare n limbajul C; Elaborarea de programe n limbajul C, prin care s se testeze proprietile funciilor logice i s se verifice teoremele i axiomele algebrei binare, 9.2. Prezentarea coninutului lucrrii Desfurarea lucrrii de laborator presupune deinerea de cunotine n domeniul algebrei binare, dintre care, n continuare, se vor prezenta succint cele de baz. Fie mulimea B = {x | x = 0; 1 }, unde prin definiie: 0 = elementul nul; 1 = elementul unitate (universal). n exprimarea curent, referirea la unul din cele dou elemente ale mulimii B se face prin noiunea de bit. Pe mulimea B se definesc 3 operatori principali: - complementarea (negaia, NOT)\ - disjuncia logic (suma logic, OR): - conjuncia logic (produs logic, AND). O modalitate comod de definire a unei funcii logice o reprezint utilizarea TABELELOR DE ADEVR . n continuare se prezint simbolurile i implementarea cu contacte (fig. 9.1) i tabelele de adevr pentru cele trei funcii logice fundamentale (tabelul 9.1).

Fig. 9.1. Funcii logice elementare: a - simbol; b - implementare cu contacte.

81

Tabelul 9.1
Funcii logice elementare (tabela de adevr )

A 0 0 1 1

B 0 1 0 1

AB AUB /A 0 0 1 0 1 1 0 1 0 1 1 0

Referitor la mulimea B i la operaiile definite mai cus sunt valabile 6 axiome i 5 teoreme care sunt prezentate sintetic n tabelul 9.2. Tabelul 9.2
Axiomele i teoremele algebrei binare

Tip A1 A2 A3 A4 A5 A6 T1 T2 T3 T4 T5

Denumire nchiderea mulimii B n raport cu operaiile +, Asociativitate Comutativitate Element neutru Distributivitate Existenta complementului Idempotena (tautologia) Element neutru Teorema dublei negaii Absorbia Teoremele De Morgan

Forma sum x + y B x y B x + (y + z) = (x + y) + z x+y=y+x x+0=0+x x + y z = (x + y) (x + z) x+ x = 1 x+x=x x+l=l x= x x+xy=x x+ y = x y

Forma produs x y B x + y B x ( y z ) = ( x y ) z x y = y x x l = l x x (y + z) = x y + x. z x x = 0 xx=x x 0 = 0


x= x

x (x + y) = x x y = x+ y

Una din metodele de demonstrare a teoremelor este aceea n care sunt utilizate tabelele de adevr. Perechile de operatori (NOT, AND) i (NOT, OR) formeaz fiecare cte un sistem complet, n sensul ca orice relaie definit pe mulimea B poate fi exprimat numai cu operatorii unei perechi. Circuitul fizic care implementeaz un operator logic poart denumirea general de poart logic. Sisteme complete au fost realizate i sub forma unor pori logice denumite NAND (NOT-AND), NOR (NOT-OR) pentru care sunt valabile urmtoarele funcii logice

82

Alta poart logic des utilizat este cea care implementeaz operaia SAU EXCLUSIV (EXCLUSIVE OR), creia i este specific funcia logic de mai jos.

Observaii: 1. Acest operator poate fi utilizat pentru determinarea coincidenei a doi operanzi. 2. Daca unul din operanzi este 1 atunci SAU EXCLUSIV poate fi utilizat ca operator de negaie. n continuare se prezint un program demonstrativ, n limbajul C, pentru testarea funciei logice I. /* Program care implementeaza funcia SI - se citesc valori pentru variabilele binare a si b - se tiprete valoarea funciei f=ab - pentru reluare se apas tasta y */ #include <sfdio.h> #include <conio.h> #include <std!ib.h> void main(void) { int a,b,f; char c; clrscr(); while(1) { printf("a="); scanf("%d, &a); printf("b="); scanf("%d", &b); f=a & b;

/* se citete a */ /* se citete b */ /* se determina f */

printf("%d AND %d =%d\n", a, b, f); /* se tipresc a.b.f */ printf(alt test ? (y/n)"); /* se testeaz opiunea de continuare */ c=getche(); if((c==n)||(c==N)) exit(1);

83

9.3. Desfurarea lucrrii 1. 2. 3. 4. 5. 6. Se pornete sistemul. Se intra n subdirectorul de lucru al subgrupei; Se lanseaz mediul de programare ; Se introduce programul demonstrativ ; Se compileaz, se linkediteaz i se lanseaz n execuie acest program; Lucrarea se consider ncheiat n momentul n care toate programele (demonstrative i dezvoltate sunt funcionale). Referatul va cuprinde principalele idei din breviar i textele surs ale programelor.

9.4. ntrebri i exerciii 1. Se completeaz programul n aa fel nct s se realizeze i testarea funciilor SAU, NU, SAU EXCLUSIV (la intrarea n program se va testa opiunea privind funcia); 2. Se va scrie i se va executa un program care sa permit implementarea funciilor logice SI, SAU, NU cu ajutorul porilor NAND; 3. Se va scrie i se va executa un program care sa permit demonstrarea echivalenei funciilor logice f1 i f2 din reprezentrile de mai jos.

84

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