of 39 /39
5. 5.1. PROGRAMAREA CALCULATOARELOR 5.1.1. Pentru progamul următor, corectati erorile de editare, compilare, atentionările și erorile de functionare. Programul calculează incidenta și procentajul literelor dintr-un fișier (denumit mai jos histograma). Scrieti în dreptul liniei greșite varianta corectă. #include <stdio.h> int main (int argc, char **argv) { FILE p_file; /* Fisier de intrare */ int c; /* Caracterul curent citit */ int hist['Z' - 'A' + 1]; /* Histograma literelor */ int sum_let; /* Numarul total de litere din fisier */ float freq; /* Frecventa de aparitie a literei curente */ /* Verificati numarul de argumente */ if (argc < 2) { printf (" %s <input file>\n", argv[0]); return (1); } /* Deschideti fisierul de intrare specificat de argv[1] */ p_file = fopen (argv[1], "r"); if (p_file == NULL) { printf ("Nu poate fi deschis fisierul de intrare '%s'.\n", argv[1]); return (1); } /*intializare cu 0 a histogramei */ for (c = 'A'; c > 'Z'; c++) hist[c - 'A'] = 0; /*Citirea continutului fisierului, caracter cu caracter */ sum_let = 0; while ((c = fputc(p_file)) != EOF) { if (c >= 'a' && c <= 'z') c += ('a' - 'A'); /*Daca este cazul, se trece la litera mare */ /* daca e litera, actualizeaza histograma */ if (c >= 'A' && c <= 'Z') { (hist[c - 'A'+1])++; sum_let++; } } fclose (p_file,w); /* Inchide fisierul */ /* Afiseaza histograma */ for (c = 'A'; c <= 'Z'; c++) { freq = 100 * (float)hist[c - 'A'] / (float)sum_let; printf ("%c : %4c (%5.2f %%)\n", c, hist[c - 'A'], freq); } return (0); } Solutie: #include <stdio.h>

5. 5.1. PROGRAMAREA CALCULATOARELOR...5. 5.1. PROGRAMAREA CALCULATOARELOR 5.1.1. Pentru progamul următor, corectati erorile de editare, compilare, atentionările și erorile de functionare.Programul

  • Upload
    others

  • View
    62

  • Download
    0

Embed Size (px)

Citation preview

5.

5.1. PROGRAMAREA CALCULATOARELOR

5.1.1. Pentru progamul următor, corectati erorile de editare, compilare, atentionările și

erorile de functionare. Programul calculează incidenta și procentajul literelor dintr-un fișier

(denumit mai jos histograma). Scrieti în dreptul liniei greșite varianta corectă.

#include <stdio.h>

int main (int argc, char **argv) {

FILE p_file; /* Fisier de intrare */

int c; /* Caracterul curent citit */

int hist['Z' - 'A' + 1]; /* Histograma literelor */

int sum_let; /* Numarul total de litere din fisier */

float freq; /* Frecventa de aparitie a literei curente */

/* Verificati numarul de argumente */

if (argc < 2) {

printf (" %s <input file>\n", argv[0]);

return (1);

}

/* Deschideti fisierul de intrare specificat de argv[1] */

p_file = fopen (argv[1], "r");

if (p_file == NULL) {

printf ("Nu poate fi deschis fisierul de intrare '%s'.\n", argv[1]);

return (1);

}

/*intializare cu 0 a histogramei */

for (c = 'A'; c > 'Z'; c++)

hist[c - 'A'] = 0;

/*Citirea continutului fisierului, caracter cu caracter */

sum_let = 0;

while ((c = fputc(p_file)) != EOF) {

if (c >= 'a' && c <= 'z')

c += ('a' - 'A'); /*Daca este cazul, se trece la litera mare */

/* daca e litera, actualizeaza histograma */

if (c >= 'A' && c <= 'Z') {

(hist[c - 'A'+1])++;

sum_let++;

}

}

fclose (p_file,w); /* Inchide fisierul */

/* Afiseaza histograma */

for (c = 'A'; c <= 'Z'; c++) {

freq = 100 * (float)hist[c - 'A'] / (float)sum_let;

printf ("%c : %4c (%5.2f %%)\n", c, hist[c - 'A'], freq);

}

return (0);

}

Solutie:

#include <stdio.h>

int main (int argc, char **argv) {

FILE *p_file; /* Fisier de intrare */

int c; /* Caracterul curent citit */

int hist['Z' - 'A' + 1]; /* Histograma literelor */

int sum_let; /* Numarul total de litere din fisier */

float freq; /* Frecventa de aparitie a literei curente */

/* Verificati numarul de argumente */

if (argc < 2) {

printf (" %s <input file>\n", argv[0]);

return (1);

}

/* Deschideti fisierul de intrare specificat de argv[1] */

p_file = fopen (argv[1], "r");

if (p_file == NULL) {

printf ("Nu poate fi deschis fisierul de intrare '%s'.\n", argv[1]);

return (1);

}

/*intializare cu 0 a histogramei */

for (c = 'A'; c <= 'Z'; c++)

hist[c - 'A'] = 0;

/*Citirea continutului fisierului, caracter cu caracter */

sum_let = 0;

while ((c = fgetc(p_file)) != EOF) {

if (c >= 'a' && c <= 'z')

c += ('A' - a'); /*Daca este cazul, se trece la litera mare */

/* daca e litera, actualizeaza histograma */

if (c >= 'A' && c <= 'Z') {

(hist[c - 'A')++;

sum_let++;

}

}

fclose (p_file); /* Inchide fisierul */

/* Afiseaza histograma */

for (c = 'A'; c <= 'Z'; c++) {

freq = 100 * (float)hist[c - 'A'] / (float)sum_let;

printf ("%c : %4d (%5.2f %%)\n", c, hist[c - 'A'], freq);

}

return (0);

}

5.1.2. Pentru programul următor să se precizeze care sunt rezultatele afișărilor – precizati în

dreptul liniei care contine functia de afișare.

#include <stdio.h>

#define MAX 5

int ModificaTabel(int b[], int);

int ModificaElement(int);

int main() {

int a[MAX] = {0,1,2,3,4};

int i;

printf( "Efectul transmiterii intregului tabel ca parametru:\n\nValorile"

" din tabelul original sunt:\n" );

for (i=0;i<MAX;i++)

printf("%3d",a[i]);

printf("\n");

ModificaTabel(a, MAX);

printf("Valorile din tabelul modificat sunt:\n");

for (i = 0; i < MAX; i++)

printf("%3d",a[i]);

printf( "\n\n\nEfectul transmiterii elementelor tabelului"

"\n\nValoarea elementului a[3] este %d\n", a[3]);

ModificaElement(a[3]);

printf( "Valoarea elementului a[3] este %d\n",a[3]);

return 0;

}

int ModificaTabel(int b[], int dimm) {

int j;

for (j=0;j<dimm;j++)

b[j] *= 2;

return 0;

}

int ModificaElement(int x) {

printf( "Valoarea elementului in ModificaElement este %d\n", x *= 2 );

return 0;

}

Solutie:

5.1.3. Să se scrie un program în C care este constituit din 3 părţi după cum urmează:

- se creează un fișier în care se introduc date caracter cu caracter de la tastatură.

Fişierul este închis la introducerea CTRL+Z de la tastatură;

- fişierul creat este redeschis pentru adăugarea de caractere de la tastatură şi închis la

introducerea CTRL+Z;

la final este listat continutului fișierului, linie cu linie.

Solutie:

#include <stdio.h>

#include <conio.h>

int main() {

FILE *pf;

char ch, s[100], nume_fis[50] = "c:\\fisier.txt";

int i;

clrscr();

/* crearea fisierului prin introducerea caracterelor,

inclusiv '/n', de la tastatura. Se termina cu Ctrl-Z */

pf=fopen(nume_fis,"w");

printf("\nIntroduceti textul: ");

while ((ch=getc(stdin))!=EOF)

putc(ch,pf);

fclose(pf);

/* Adaugarea unor siruri de caractere. Se termina cu Ctrl-Z*/

pf=fopen(nume_fis,"r+");

fseek(pf,0l,2);

printf("Precizati sirurile de caractere incheind cu ^Z:");

while(fgets(s,100,stdin)!=(char*)0)

fputs(s,pf);

fclose(pf);

/* Afisarea continutului */

printf("\nContinutul fisierului, linie cu linie, este: \n");

i=0;

pf=fopen(nume_fis,"r");

while(fgets(s,100,pf)!=(char *)0) {

printf("%d %s",i,s);

i++;

}

fclose(pf);

getch();

return 0;

}

5.2. STANDARDE ŞI GRAFICĂ TEHNICĂ ŞI CREAŢIE INTELECTUALĂ

5.2.1. Prezentaţi, pe scurt, regulile de întocmire a schemei circuitelor din cadrul

documentaţiei unei instalaţii electrice de automatizare în situaţia în care aceasta conţine atât

circuite de forţă cât şi circuite de comandă.

Soluţie:

Schema circuitelor permite înţelegerea funcţionării în detaliu a operaţiunilor ce pot fi realizate de

maşina industrială. Ea reprezintă, cu ajutorul semnelor convenţionale, dispozitivele electrice şi

toate legăturile, în special legăturile electrice utilizate în funcţionarea maşinii.

Pentru schema circuitelor se recomandă formatul A3.

Semnele convenţionale utilizate, cum ar fi de exemplu literele reper pentru identificarea

elementelor, trebuie să fie conform standardelor în vigoare.

Aparatele sunt reprezentate în poziţia lor fără tensiune, iar operatoarele logice binare puse la

zero. Organele mecanice de comandă sunt reprezentate în poziţia pe care o au înainte de a porni

în ciclu.

Diferite circuite se prezintă astfel încât să permită înţelegerea şi depanarea lor uşoară. Se

recomandă reprezentarea separată pe schemă a circuitelor de putere (a), de comandă şi de

semnalizare (b), în măsura în care acestea sunt separate electric, astfel:

a) Circuitele de forţă se reprezintă prin una sau mai multe linii orizontale de pe care pleacă

perpendicular derivaţiile cu protecţiile lor, spre fiecare aparat receptor (motor, etc.);

b) In circuitele de comanda si semnalizare fiecare circuit elementar se reprezintă între două sau

mai multe linii paralele, perpendicular pe acestea, sub forma unui traseu cuprinzând atât cât este

posibil, una sau mai multe linii drepte.

De asemenea, trebuie să se reprezinte sursa sau sursele de alimentare a circuitelor de comandă.

Pentru echipamentele electronice, în locul schemei circuitelor se poate reprezenta o schemă

asemănătoare cu schema funcţională, dar indicând în detaliu relaţiile intrări-ieşiri ale

operatoarelor logice binare (de exemplu, utilizând tabelele de adevăr).

Pe schema circuitelor se recomandă trecerea următoarelor informaţii:

- polarităţile;

- tensiunile şi frecvenţele diferitelor surse de alimentare şi numărul fazelor;

- caracteristicile specifice fiecărui aparat de comandă, atunci când acestea sunt necesare

la înţelegerea funcţionării (rezistoare, capacităţi etc.);

- curenţii nominali ai siguranţelor fuzibile, valorile de reglaj ale aparatelor cu

posibilitatea de reglaj;

- mijloacele de acţionare şi funcţiunile aparatelor care nu au funcţii strict electrice

(detectoare de poziţie, contacte cu comandă manuală, electrodistribuitoare hidraulice sau

pneumatice, dispozitive de temporizare);

- diagrama contactelor aparatelor cu comandă manuală;

- diagrama circuitelor de lucru ale unităţilor componentelor sau ale utilajului în general;

- alte precizări care să contribuie la citirea şi înţelegerea corectă a schemei circuitelor (de

exemplu valorile de reglaj ale parametrilor traductoarelor).

Astfel de precizări se pot da, de exemplu într-o legendă pe schemă.

În cazul în care maşina poate executa mai multe cicluri (eventual cu puncte de plecare diferite),

trebuie să se precizeze pe schemă ciclul pentru care aceasta este definită.

Se recomandă reprezentarea elementelor consumatoare de energie ale aparatelor (bobine,

electromagneţi, etc.) în apropierea liniei la care sunt racordate direct şi care este destinată să fie

legată, eventual la pământ; contactele pe care le comandă sunt atunci racordate la altă linie.

Pentru uşurarea citirii schemei, se recomandă reprezentarea operaţiilor în ordinea lor succesivă

de la stânga la dreapta sau de sus în jos.

Trebuie să se indice clar funcţia fiecărui circuit în funcţionarea maşinii.

5.2.2. Precizaţi, pe scurt, câte o măsura recomandată pentru implementare a patru dintre

următoarele metode de protecţie, destinate a fi aplicate in cadrul echipamentelor electrice:

a. Protecţia împotriva electrocutărilor; b. Protecţia împotriva scurtcircuitelor; c. Protecţia la

suprasarcină; d. Protecţia împotriva repornirii automate după întreruperea şi restabilirea

tensiunii; e. Dispozitive pentru oprirea de urgenţă şi pentru întreruperea alimentării; f.

Protecţia în caz de defect si g. Perturbaţii radioelectronice.

Soluţie a. Protecţia împotriva electrocutărilor

a.1 Protecţia împotriva electrocutărilor prin atingere directă. Această protecţie este destinată

să protejeze persoanele împotriva pericolelor care pot rezultă în urma unui contact direct cu

părţile active. Măsurile pot fi: - părţile active trebuiesc protejate prin carcase; - părţile active

trebuiesc izolate prin înglobarea acestora într-un înveliş izolant.

a.2. Protecţia împotriva electrocutărilor prin atingere indirectă.

a.2.1. Protecţia prin deconectarea rapidă a alimentării cu dispozitive de protecţie.

Deconectarea rapidă a alimentării, după apariţia unui defect, în scopul de a împiedica

menţinerea tensiunii de atingere un timp care prezintă pericol pentru persoane. Aceasta

presupune: - racordarea părţilor metalice inactive la circuitul de protecţie; - dispozitive de

protecţie care să asigure deconectarea rapidă a alimentării, în caz de defect, cu dispozitive de

protecţie (siguranţe, întrerupătoare, relee etc.). Trebuie să se asigure continuitatea circuitului

de protecţie prin legături efective, adică prin conductoare de protecţie sau direct prin părţi

metalice.

Organele de comandă manuală trebuie să fie realizate din materiale electroizolante.

a.2.2. Protecţia prin utilizarea tensiunii reduse. Tensiunile recomandate sunt de cel mult 40

Vef in c. a. si 60 in c. c.

a.2.3. Separare de protecţie. Separarea de protecţie a unui circuit, în scopul realizării de

„circuite unice”, pentru evitarea contactului cu părţile inactive, susceptibile a fi puse sub

tensiunea părţii active.

b. Protecţia împotriva scurtcircuitelor. Protecţia generală se prevede la începutul cablului de

alimentare a echipamentului. Trebuie să asigure protecţia conductoarelor, cu ajutorul

dispozitivelor de protecţie corespunzător alese. Se recomanda utilizarea de siguranţe fuzibile

sau întrerupătoare automate. Acestea trebuie să asigure o capacitate de rupere egală cu

intensitatea curentului de scurtcircuit estimat în punctul de instalare. Alegerea curentului

nominal al unui dispozitiv de protecţie împotriva scurtcircuitelor este determinată de secţiunea

cea mai mică a conductoarelor protejate de acest dispozitiv.

c. Protecţia la suprasarcină. Protecţia conductoarelor împotriva suprasarcinilor este necesară

pentru circuite care alimentează motoare. Aceasta se poate realiza cu diverse aparate cum ar fi

releele termice.

d. Protecţia împotriva repornirii automate după întreruperea şi restabilirea tensiunii. În

cazul în care repornirea automată a unor aparate, după întreruperea şi restabilirea alimentării,

poate să prezinte pericol pentru persoane, să provoace deteriorarea maşinii sau să dăuneze în

funcţionare, această repornire trebuie să fie împiedicată.

e. Dispozitive pentru oprirea de urgenţă şi pentru întreruperea alimentării. Echipamentul

electric de automatizare al unei maşini va cuprinde dispozitive care să permită oprirea în caz

de pericol si separarea echipamentul electric de la sursa de alimentare. Un astfel de dispozitiv

poate fi, de exemplu, un buton ciupercă de culoare roşie.

f. Protecţia în caz de defect. Dacă defectarea echipamentului de automatizare poate fi cauza

unor accidente, pentru evitarea acestui risc se vor lua măsuri corespunzătoare, de exemplu:

- utilizarea de dispozitive mecanice pentru asigurarea securităţii maşinii;

- blocări corespunzătoare ale circuitelor electrice, care comandă mişcări mecanice;

- utilizarea de funcţii redondante (dublare de circuit);

- adăugarea de circuite care să asigure funcţii de securitate.

g. Perturbaţii radioelectronice. Efectele nedorite ale perturbaţiilor radiostatice şi

electromagnetice se vor elimina, de exemplu, utilizând filtre, alegând anumite nivele de

putere, metode şi tehnici de cablare şi ecrane adecvate.

5.2.3. Precizaţi măsurile recomandate pentru a asigura fiabilitatea şi utilizabilitatea (condiţii

tehnice de calitate) ale unui program.

Soluţie:

a) Conditii pentru asigurarea fiabilitatii:

-Produsul trebuie să includă informaţii despre procedurile de salvare a datelor.

-Produsul trebuie sa includa functiuni suplimentare prin care se asigură capabilitatea

funcţională, se exemplu:

-verificări că intrarea este plauzibilă;

-protecţie împotriva consecinţelor grave datorate unei greşeli de utilizare;

-reluare în caz de eroare.

b) Modalitati de asigurare a calitatii de “utilizabilitate” a unui program:

-Produsul trebuie sa aiba o interfata cu utilizatorul, cum ar fi, de exemplu: linie de comandă,

meniu, ferestre, taste funcţionale, funcţiune de ajutor.

-Produsul trebuie sa dispuna de instrumente de adaptare la necesitatile utlizatorului, cum ar fi

de exemplu: modificarea parametrilor; modificarea algoritmilor de prelucrare pe calculator;

atribuiri la tastele funcţionale.

-Produsul trebuie sa asigure protecţia dreptului de autor, prin masuri cum ar fi: protecţia

tehnică împotriva copierii; data limită sau durata preprogramată de utilizare; atenţionările

interactive în vederea plătirii copiilor.

Masurile care se recomanda pentru “usurinta de a avea o privire de ansamblu” in cadrul

cerintei de “utilizabilitate” a programelor si datelor sunt:

-Fiecare suport de date trebuie să conţină identificarea produsului, iar dacă există mai mult

decât un suport, atunci să conţină şi un număr sau un text distinctiv.

-Atunci când programele sunt puse în funcţiune, utilizatorul trebuie să fie întotdeauna în

măsură de a şti care este funcţiunea care este în curs de a se executa.

-Ar trebui ca programele să furnizeze utilizatorului informaţii într-o formă care să fie uşor

vizibilă şi uşor de citit. Utilizatorul ar trebui să fie ghidat printr-o reprezentare şi grupare

adecvată a informaţiei. Atunci când este necesar, programele ar trebui să atenţioneze

utilizatorul.

-Mesajele emise de programe pot fi concepute astfel încât utilizatorul să le poată diferenţia

uşor după tip, de exemplu: confirmare; interogări din programe; avertizări; mesaje de eroare.

-Formatele ecranelor de intrare, rapoartelor sau altor intrări şi ieşiri ar trebui proiectate astfel

încât să fie clare şi uşor de perceput, de exemplu:

-câmpurile alfanumerice să fie aliniate la stânga;

-câmpurile numerice să fie aliniate la dreapta;

-în tabele punctele sau virgulele zecimale să fie aranjate pe aceeaşi linie verticală;

-limitele de câmp să fie uşor de recunoscut;

-câmpurile, a căror utilizare este obligatorie, sa fie semnalate ca atare;

-erorile de intrare identificate sunt imediat luminate cu intensitate mai mare în formatul

ecranului de intrare;

- se atrage atenţia utilizatorului la o schimbare a conţinutului ecranului cu ajutorul unui

semnal vizual sau auditiv.

5.3. DISPOZITIVE ŞI CIRCUITE ELECTRONICE

5.3.1. Pentru schema din figură se presupune că dispozitivul de comandă pe grilă (DCG)

furnizează semnale de comandă cu un unghiul de comandă α constant, raportat la fiecare

trecere prin zero a tensiunii reţelei. Frecvenţa tensiunii de alimentare este f = 50 Hz.

a) Să se reprezinte formele de variaţie în timp ale tensiunilor u2(t) şi uS(t), pentru α = /2

(rad).

b) Ştiind că pentru u2 (t)= U2m.sin t expresia curentului de sarcină iS(t) este

2

2

0,pentru [0, ) ;

/ sin ,pentru [ , ];  (1.1)

0,pentru ( , ) ;

/ sin ,pentru ,2 .

m S

S

m S

t

U R t ti t

t

U R t t

să se calculeze valoarea medie US med iar pe baza rezultatului obţinut să se reprezinte

caracteristica de comandă: US med(α), pentru 0; .

Soluţie:

a) mss.sf

T 2002050

11 , .

mss./

ftt 50050

502

2

2

.

Folosind aceste valori şi cunoscând principiul de funcţionare al schemei rezultă reprezentarea

din Fig. 1.

Fig 1. Fig. 2.

b) S S Su t R i t

2 2

0 0 0

1 1 1 1( ). ( ) ( ). ( ) ( ). ( ) ( ). ( )

2 2S med S S S S S S SU u t d t R i t d t R i t d t R i t d t

2 1 cosmSmed

UU

, având forma de variaţie din figura Fig. 2.

Us

U2

5.3.2. Se consideră schemele de amplificatoare inversoare din figurile de mai jos realizate cu

amplificatoare operaţionale.

a) Pentru schema din figura din stânga să se determine expresiile tensiunii de ieşire U0 = f(U1)

de parametru x, 0;1x fiind coeficientul de poziţie al cursorului potenţiometrului, în două

situaţii:i) amplificatorul operaţional este ideal şi fără saturaţie, ii) amplificator operaţional este

ideal cu fenomen de saturare a ieşirii. În primul caz să se calculeze U0 dacă R = 100kΩ, Rp =

50kΩ, x = 0.75, U1 = 8V. În al doilea caz să se calculeze U0, considerând că amplificatorul

este polarizat de la o sursă de tensiune dublă: +VS , 0V, -VS, şi că R = 100kΩ, Rp = 50kΩ, x =

0.5, VS = 10V, U1 = 8V.

b) Care este deosebirea dintre cele două scheme din punctul de vedere al rezistenţei Rp?

Soluţie:

a) i)Pentru un amplificator operaţional ideal, variaţia tensiunii de ieşire este nelimitată,

0 ;U . În Fig.2a avem montajul unui amplificator proporţional inversor, având

coeficientul de amplificare K negativ:

1 1o i i i

x R xU U U KU

x R x

; ; ( ;0]

1

xK K

x

, pentru x 0;1 .

Aplicaţie numerică:

0.75

8 24 V1 1 0.75

o i

x RU U

x R

, deci 24VoU .

ii) Pentru cazul unui amplificator operaţional ideal cu limitare, variaţia tensiunii de ieşire este

limitată, 0 ;S SU V V ,. Punând condiţia de limitare a tensiunii de ieşire, rezultă:

, ( ; ]; 0;11

, ; ; 0;11 1

, [ ; ); 0;11

S i S

o i i S S

S i S

xV dacă U V x

x

x xU U dacă U V V x

x x

xV dacă U V x

x

Aplicaţie numerică:

0.758V 24V <-10V

1 1 0.75Ox i S

xU U V

x

, deci 10VoU , limitat prin

saturarea ieşirii amplificatorului operaţional.

b) Montajul din Fig.2b permite ajustarea coeficientului de proporţionalitate negativ, fără a

modifica condiţia de eliminare a efectului temperaturii asupra tensiunii de ieşire,

1 || const.p nR R R , dacă 1 || nR R R .

În cazul montajului din Fig.2a, condiţia pentru Rp :

1

1|| 1 R const.

1p n

xR x RR R R x x

xR x R

, pentru x 0;1 .

5.3.3. Se consideră schemele electronice din Fig. a şi b realizate cu amplificatoare

operaţionale ideale şi elemente neliniare EN cu caracteristica din Fig. c, în configuraţii de

tipul celor din Fig. d.

i) Să calculeze şi să se reprezinte grafic caracteristica de transfer U1(Ue) a schemei din Fig.a

atunci când EN se realizează sub forma EN4.

ii) Să calculeze şi să se reprezinte grafic caracteristica de transfer U1(Ue) a schemei din Fig.b

atunci când EN se realizează sub forma EN6.

Fig.a. Fig.b.

En1 En2 En3 En4 En5 En6

Fig.c. Fig.d.

Soluţie:

EN de tip dipol (EN1÷EN6) pot fi utilizate în orice schemă, neavând terminal conectat la

borna de masă (0 V) a sursei de alimentare.

Soluţie:

Amplificatorul operaţional ideal este în montaj inversor, deci ecuaţia tensiunii de ieşire în

funcţie de intrare este:

k

0 k

1

100

100

ni i i i

RU KU U U U

R

;

V V

0 10 ; 10iU U

EN6 are limitele de intrare în conducţie egale, DZ1 şi DZ2 fiind identice:

Pragul de intrare în conducţie la polarizare negativă

UL2 = UZ2 + UDO1 = 5.2[V] + 0,65[V] = 5,85[V] pentru U12 -UL2 <0;

Pragul de intrare în conducţie la polarizare pozitivă

UL1 = UZ1 + UDO2 = 5.2[V] + 0,65[V] = 5,85[V] pentru 0 < UL1 U12

Polarizarea EN6 se face de către tensiunea de ieşire U0 a AO, deci avem V V

0 [ 10 ; 10 ]U .

Prin corelarea polarităţii tensiunii de ieşire a AO şi pragurile de intrare în conducţie, rezultă

V

2 2

2 1

V

1 1

; pentru [ 10 ; ); (EN în conducţie)

; pentru ; ; (EN blocat)

; pentru ( ; 10 ]. (ENîn conducţie)

L i L

e i i L L

L i L

U U U

U U U U U

U U U

5.4. FUNDAMENTELE CALCULATOARELOR

5.4.1. Să se reprezinte funcţia f din schema următoare cu un număr minim de porţi logice SI-

NU (2 sau 4 intrări):

5.4.2. Să se reprezinte funcţia f din figura următoare folosind un circuit multiplexor cu 2

intrări de adresă, 4 de date şi porţi logice:

Vom pune la intrările de adresă ale multiplexorului variabilele a şi b. Variabilele c şi d sunt

puse la intrătile de date în funcţie de valorile

funcţiei. In fapt, fiecare intrare de date devine o

funcţie de cele 2 variabile c şi d. obtinem

expresiile:

D00= d , D01= c + d , D02= D03= c

O schemă posibilă este reprezentată în figura

următoare (se accept şi reprezentare

simplificată pentru circuitul multiplexor cu

punctarea doar a intrărilor şi ieşirilor folosite):

5.4.3. Proiectaţi un numărător sincron modulo 5 folosind bistabile JK.

Soluţie:

Vom avea nevoie de 3 bistabile JK. Tabelul de funcţionare este următorul:

Tabelul1

In tabelul 1 am pus şi intrările J şi K ale celor 3

bistabile. Pentru aceasta am folosit tabelul de

funcţionare al bistabilului JK (tabelul 2, nu trebuie

specificat în rezolvare).

Din tabel obţinem următoarele ecuaţii (prin intermediul

diagramelor de minimizare):

Tabelul 2

J0 = Q2 ; K0 = 1; J1 = Q0 ; K1 = Q0 ; J2 = Q1 . Q0 ; K2 = 1;

Schema pentru numărător este dată în figura de mai jos:

5.5. TEORIA SISTEMELOR I

5.5.1. Să se stabilească dependenţa intrare - ieşire în domeniul imaginilor pentru sistemul din

figură cu orientarea {w, v1, v2} y.

a u HR()

w

-

v1 v2

y HP1(

)

HP2(

)

HM()

y

Soluţie: Rezolvarea problemei se bazează pe următorul rezultat: În ipoteza că ne găsim în

cazul SISO, funcţia de transfer a sistemului din figură se

calculează cu formula )(H)(H

)(H)(H

)(

21

1

1

.

Fie Hw(), Hv1() şi Hv2() funcţiile de transfer prin care se

exprimă în mod separat influenţa mărimilor de intrare asupra

mărimii de ieşire. Ele se obţin folosind formula anterioară astfel:

)(H)(H)(H)(H

)(H)(H)(H

)(w

)(y)(H

MPPR

PPR

)(v )(v

w

21

21

2

1 100

(1)

)(H)(H)(H)(H

)(H

)(H)(H))((H)(H

)(H

)(v

)(y)(H

PRMP

P

PRMP

P

)(v)(w

v

12

2

12

2

2

1 111001

(2)

)(H)(H)(H)(H)(H)(H)(H))((H)(v

)(y)(H

MPPRRPPM)(v)(w

v

21211

2 1

1

11

1

002

(3)

Sistemul fiind liniar este valabil principiul superpoziţiei, astfel că dependenţa intrare-ieşire are

forma:

1 2w v 1 v 2y( ) H ( )w( ) H ( )v ( ) H ( )v ( ) . (4).

Egalitatea (4) reprezintă rezultatul problemei.

Rezolvarea de mai sus se bazează pe metoda algebrei schemelor bloc. Rezultatul poate fi

obţinut cu acelaşi volum de muncă folosind formula lui Mason şi cu un volum de muncă şi

mai redus, folosind „calculul din aproape în aproape”.

5.5.2. În cazul discretizării prin aproximare a sistemelor liniare se folosesc formulele

(MT)

(MDA)

(MDR)

1z

1zh

1z

zh

1z

h

s

1

21

(1) (MDR – metoda Euler sau metoda dreptunghiului retardată, MDA –

metoda dreptunghiului sau metoda dreptunghiului avansată, MT – metoda Tustin sau metoda

trapezului). Explicaţi cum se folosesc aceste formule şi determinaţi modelul matematic în

timp discret ( cu orientarea ua ) asociat prin metoda dreptunghiului avansată sistemului în

timp continuu )t(a3)t(u2)t(u5 cu orientarea a u. Pasul de discretizare a timpului este h.

Sistemul dat poate îndeplini funcţia de filtru de ordinul I sau de regulator proporţional cu

filtrare.

Soluţie: Relaţiile se folosesc pentru a asocia unui sistem în timp continuu cu funcţia de

transfer H(s) un sistem în timp discret cu funcţia de transfer H(z). Calculul se reduce la

efectuarea substituţiei )(dinadecvataresiaexp

s

)s(H)z(H1

1

(2). Metoda de calcul poartă numele

de metoda substituţiei.

u1 y1=y

H1

H2 y2 u2=y

u

(+)

Sistemului dat îi corespunde funcţia de transfer

s

125

s

13

2s5

3)s(H

, iar în conformitate cu

formula de substituţie (2) aplicată pentru a doua egalitate din (1) rezultă

1

1z

hz

s

1z5h25

h3

5z)h25(

hz3

1z

hz25

1z

hz3

)s(H)z(H

.

Întrucât )z(u

)z(a)z(H , avem

1525

3

zh

h

)z(u

)z(a , respectiv )z(uh)z(az)z(a)h( 3525 1 . În

consecinţă modelul în timp discret este ]t[uh

h]t[a

h]t[a

25

31

25

5 . (3).

Egalitatea (3) reprezintă rezultatul problemei.

5.6. PROGRAMAREA ORIENTATĂ PE OBIECTE

5.6.1. Într-o aplicaţie de conducere de proces se utilizează senzori de tip analogic şi optic.

Toţi senzorii trebuie resetaţi şi calibraţi, respectiv periodic citiţi. Citirea presupune şi filtrare

folosind valoarea anterioară citită, dar metodele de filtrare sunt diferite pentru senzori de tip

diferit. Toate valorile citite sunt întregi. Fiecare operaţie de citire este specifică senzorului

respectiv, resetarea este comună tuturor tipurilor de senzori iar calibrarea este diferită pentru

senzorii analogici şi optici. Senzorii permit şi o operaţie identică de interogare a stării.

Senzorii optici mai necesită o operaţie specifică de aducere la zero, alta decât reset, iar

senzorii analogici necesită o operaţie specifică de selectare a canalului.

Proiectaţi o ierarhie de clase (se cer doar declaraţiile, nu şi implementările) care să modeleze

fragmentul corespunzător de realitate, în cadrul aplicaţiei software de conducere de proces.

Sugeraţi care vor fi metodele publice şi unde vor fi folosite acele funcţii care nu sunt publice.

Comentaţi fiecare variabilă şi fiecare funcţie membră.

Soluţie:

class senzor{

int status; // starea

protected:

int val_citita; // valoarea citita (va fi setata de citire)

int val_anterioara; // valoarea anterioara va fi transferata din val_citita

// in timpul apelului metodei de citire

int val_filtrata; // valoarea prelucrata prin filtrare (va fi returnata de get)

virtual int filtru()=0;

public:

virtual void calibrare()=0; // calibrarea este o functie virtuala pura

virtual void citire()=0; // citirea este si ea o functie virtuala pura

void reset(); // operatia de reset

int status(); // returneaza starea

int get(); // returneaza valoarea filtrata

};

class senzor_analog public: senzor { // clasa specializata pentru senzori analogici

int filtru(); // functia de filtrare nu va fi accesata de afara

public:

void calibrare(); // calibrarea specifica senzorului analogic

void citire(); // aici se va apela si filtrul specific

void select_canal(int ); // extensie pentru selectia canalului analogic

};

class senzor_optic public: senzor {

int filtru();

public:

void calibrare(); // calibrarea specifica senzorului optic

void citire(); // aici se va apela si filtrul specific

void zero(); // extensie pentru operatia specifica de aducere la zero

};

5.6.2. Valorile citite într-un sistem de monitorizare trebuie stocate într-o stivă. Creaţi pentru

aceasta un tipar stivă cu alocare dinamică şi apoi generaţi o stivă de întregi pentru stocarea

acelor valori.

Soluţie:

template <class T> class Cstack // tipar de stiva

{

T *m_p; // stiva propriu-zisa va fi aici

int m_nStored; // indicator varf stiva

int m_nDepth; // dimensiunea temporara a stivei

enum {GROW_BY=5}; // pasul de crestere a stivei

public:

CStack( ); // constructor

virtual ~CStack(); // destructor

int IsEmpty() const; // test stiva goala

void Push(const T &item); // introducere in stiva

T Pop(); // extragere din stiva

};

// Constructori

template <class T > CStack<T>::CStack()

{

m_p=0;

m_nStored=0;

m_nDepth=0;

}

template <class T > CStack<T>::~ CStack()

{

delete []m_p;

}

// Operatii

template <class T > int CStack<T>::IsEmpty() const

{

return m_nStored==0;

}

template <class T > void CStack<T>::Push(const T &item)

{

if(m_nStored==m_nDepth) // stiva alocata s-a umplut

{

T *p=new T[m_nDepth+GROW_BY]; // trebuie o stiva mai mai mare

for (int i = 0; i<m_nDepth; i++) // stiva se replica in cea noua

{

p[i]=m_p[i];

}

m_nDepth+=GROW_BY; // dimensiunea temporara creste

delete [ ]m_p; // stiva anterioara este eliberata

m_p=p;

}

m_p[m_nStored]=item; // introducerea in stiva

m_nStored ++; // si avansul indicatorului de varf stiva

}

template <class T > T CStack<T>::Pop( )

{

m_nStored--; // indicatorul de varf al stivei merge inapoi

return m_p[m_nStored]; // scoaterea din stiva

}

CStack <int> stiva_val_cit; // utilizare (stiva de intregi pentru valorile citite)

5.7. PROIECTAREA CIRCUITELOR DIGITALE DEDICATE

5.7.1. Să se implementeze în VHDL, cu componente, entitatea Ansablu descrisă de schema

hardware din figură care cuprinde două componente: C1 inclusă în biblioteca IEEE şi NR cu

funcţia de numărător înainte de 2 biţi, sincron pe front crescător al Clock-ului, cu Reset

asincron prioritar, care va fi implementat cu procese.

C1 NR

A

B

C

F D

count

2

O1

Rst

Clk

I3 I4 I5

I1

I2

Ansamblu

Soluţie

library IEEE, COMPASS_LIB;

use IEEE.STD_LOGIC_1164.all;

use COMPASS_LIB.COMPASS.all;

entity ANSAMBLU is

port (I1, I2, I3, I4, I5: in STD_LOGIC;

O1: out STD_LOGIC_Vector(1 downto 0) );

end ANSAMBLU;

architecture A1 of ANSAMBLU is

component C1

port (A, B, C: in STD_LOGIC;

F: out STD_LOGIC);

end component;

component NR

port (D, Clk, Rst: in STD_LOGIC;

Count: out STD_LOGIC_Vector(1 downto 0));

end component;

signal S: STD_LOGIC;

begin

Et1: C1 port map(I1, I2, I3, S);

Et2: NR port map(S, I4, I5, O1);

end A1;

------------------------------

entity NR is

port (D, Clk, Rst: in STD_LOGIC;

Count: out STD_LOGIC_Vector(1 downto 0));

end NR;

architecture V1 of NR is

Count := ”00”;

begin

process (Clk, Rst)

begin

if Rst = '0' then

Count <= "00";

elsif RISING_EDGE(Clk) then

Count <= Count + '1';

end if;

end process;

end V1;

5.7.2. a) Să se implementeze în VHDL automatul cu stări finite (ASF) descris prin diagrama

de stări din figură folosind templet-ul Registru plus Logica pentru Noua stare şi Ieşiri (cu 2

procese). Automatul are intrările D, Rst, Clk şi iesirea Y, este sincron pe frontul coborâtor al

clock-ului, şi are Reset prioritar asincron activ pe zero. (D este ieşirea unui convertor paralel

serie).

b) Precizaţi care este funcţiunea automatului.

c) Precizaţi numărul de bistabile implementate de Sinteza automată.

S0

Q=0

S1

Q=0

S3

Q=1

S2

Q=0

Rst

D=0

D=1

D=1

0

0

01

1

ASF

D

Clk

Rst

Y

a) b)

Soluţie a)

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity ASF is

port (D, Clk, Rst: in bit; Y: out bit);

end ASF;

architecture A1 of ASF is

type STATE is (S0, S1, S2, S3);

signal PR_state, NX_state: STATE;

begin

Registru: process (Rst, Clk)

begin

if (Rst='0') then PR_state <= S0;

elsif (Clk'event and Clk='0') then

PR_state <= NX_state;

end if;

end process;

------------------------------

Logica NX_state si OUT: process (D, PR_state)

begin

case PR_state is

when S0 => Y <= '0';

if (D='1') then NX_state <= S1;

else NX_state <= S0;

end if;

when S1 => Y <= '0';

if (D='1') then NX_state <= S2;

else NX_state <= S0;

end if;

when S2 => Y <= '0';

if (D='1') then NX_state <= S3;

else NX_state <= S0;

end if;

when S3 => Y <= '1';

if (D='0') then NX_state <= S0;

else NX_state <= S3;

end if;

end case;

end process;

end A1;

b) Funcţia realizată de ASF:

Detecţie şi semnalizare a faptului că pe perioada a 3 tacte consecutive D a fost 1.

c) Număr minim de bistabile date de Sinteza automată = 4.

5.8. TEORIA SISTEMELOR II

5.8.1. Se consideră sistemului de reglare cu schema bloc din figură. Să se determine condiţia

ca sistemul să fie asimptotic stabil. 0RK este amplificarea regulatorului iar 0IT timpul

integrator.

Soluţie: Rezolvarea problemei se bazează pe aplicarea criteriului Hurwitz. Se parcurg

următorii paşi: i) Determinarea polinomului caracteristic al sistemului pe baza funcţiei de

transfer; ii) Determinarea condiţiilor de stabilitate asimptotică pe baza aplicării criteriului lui

Hurwitz..

i) Sistemul are ordinul n=3. Pentru orientarea yw funcţia de transfer a sistemului este

RRIII

RIR

I

R

I

R

KsKTsTsT

KsTK

sssTK

sssTK

s10)101(25

)(10...

125

10)

11(1

125

10)

11(

)(23

2

2

. Pentru

analiza stabilităţii considerăm polinomul caracteristic adus în formă monică:

I

RR

RRIII

T

KsKsss

KsKTsTsTs

2)101(2.04.0)(

10)101(25)(

23

23

ii) Deoarece prin ipoteză 0RK , 0IT rezultă că toţi coeficienţii )s( sunt strict pozitivi.

Deci prima condiţie a criteriului Hurwitz este îndeplinită. Determinantul Hurwitz este

I

R

R

I

R

T

K.

)K(.T

K.

2400

0101201

0240

3 . În consecinţă,

040401 .. ,

)K(.T

K.

R

I

R

101201

240

2

I

RR

T

K)K(.

2101080 > 0 (1)

23

2

I

R

T

K.

Ca urmare condiţia de stabilitate asimptotică a sistemului este 2 >0.

Dezvoltând rezultă:

)K(.

KT

T

K)K(.

T

K)K(.

R

RI

I

RR

I

RR

101080

21010800

2101080

= >

R

RI

K101

K25T

.

Relaţia încadrată reprezintă rezultatul cerut.

)1

1(sT

KI

R 125

102 ss

-

w a c y

RG-PI Procesul condus

5.8.2. Enunţaţi criteriul de stabilitate Jury, dând explicaţiile necesare construirii schemei

Jury, şi utilizaţi enunţul pentru a analiza stabilitatea sistemului în timp discret cu orientarea

uy:

]t[x021]t[y

]t[u

0

1

0

]t[x

5.020

5.011

201

]1t[x .

Soluţie: Se consideră un sistem liniar în timp discret, invariant în timp, cu polinomul

caracteristic nn

nn azazazaz

1

1

10 ...)( (1). Cu coeficienţii din (1) se construieşte

o schema de calcul numită schema Jury. Ea este alcătuită din n-1 perechi de linii. In cadrul

fiecărei perechi, a doua linie din pereche o reproduce pe prima prin parcurgere în sens invers.

Elementul general al schemei îl notam cu klj ( k – indicele liniei, l- indicele coloanei ). În

stânga barei din schemă apare coeficientul Jury. Ei sunt notaţi cu ib2 , i reprezentând numărul

de ordine al perechii de linii.

Coeficienţii Jury ib2 se calculează cu formula 1,2

1,12

2

li

li

ij

jb . Aplicarea formulei este sugerată

în schema următoare în care cele 2 linii alcătuiesc perechea ‘i’:

- 1,12 ij ……………………

ib2 1,2ij …………………….

Prima linie a primei perechi se alcătuieşte din coeficienţii polinomului caracteristic în ordinea

021 ,...,, aaaa nnn (de la gradul 0 la gradul n).

Începând cu a doua pereche de linii, prima linie a perechii se completează pe baza perechii

anterioare folosind formula: 1,221,12,12 liilili jbjj . Fiecare nouă pereche de linii are o

coloană mai puţin decât perechea precedentă. Criteriul stabilităţii Jury are următorul enunţ:

Sistemul liniar in timp discret cu polinomul caracteristic (1) este asimptotic stabil dacă sunt

îndeplinite următoarele condiţii:

i) 0)1(

ii) 0)1()1( n

iii) 12 ib pentru 1n;1i (toţi coeficienţii Jury trebuie să fie subunitari în modul).

Pentru aplicaţia dată la început calculăm polinomul caracteristic, apoi analizăm succesiv dacă

cele trei condiţii din enunţul criteriului Jury sunt îndeplinite:

5.4zz5.1z5z)5.0z)(1z2z(

)1z(4)5.0z()1z(

5.0z20

5.01z1

201z

)z(

232

2

i) 05.415.11)1(

ii) 0)5.415.11()1()1( 3 => sistemul este instabil.

Nu mai este necesar să construim schema Jury.

Rezultatul rezolvării problemei este: sistemul dat este instabil.

5.8.3. Sistemele descrise prin ecuaţiile Fam şi MJ modelează matematic mecanisme

de translaţie, respectiv de rotaţie, fără frecare. Semnificaţia notaţiilor este următoarea: m –

masa mecanismului de translaţie, F – forţa rezultantă care acţionează asupra mecanismului,

a - acceleraţia imprimată de forţa F, J – momentul de inerţie al mecanismului de rotaţie, M –

Linia 1 a perechii ‘i’

Linia 2 a perechii ‘i’

momentul exterior care se exercită asupra mecanismului, - acceleraţia unghiulară

imprimată de momentul M. Fie p poziţia momentană a mecanismului de translaţie şi

poziţia mecanismului de rotaţie. În ipoteza că sistemele au orientările F p, respectiv M

, se cere: i) Să se calculeze funcţiile de transfer ale celor două sisteme; ii) Ecuaţiile de stare

ale celor două sisteme.

Soluţie:

i) Fie v viteza mecanismului de translaţie. Atunci avem:

pv , va , iar modelul dat devine Fpm

Pentru a calcula funcţia de transfer trecem egalitatea în domeniul operaţional:

)s(F)s(psmFpm 2

Întrucât, prin definiţie )s(F

)s(p)s(H , rezultă că sistemul are funcţia de transfer

2

1

sm)s(H

.

Fie viteza unghiulară a mecanismului de rotaţie. Atunci avem:

, , iar modelul dat devine J

Pentru a calcula funcţia de transfer trecem egalitatea în domeniul operaţional:

)s(M)s(sJJ 2

Întrucât, prin definiţie )s(M

)s()s(H

, rezultă că sistemul are funcţia de transfer

2

1

sJ)s(H

.

Relaţiile încadrate reprezintă funcţiile de transfer ale celor două sisteme.

ii) Ca variabile de stare ale sistemului de translaţie se adoptă poziţia p şi viteza v. Ele

caracterizează procese de acumulare de energie potenţială şi de energie cinetică. Ca urmare, o

primă ecuaţie de stare este vp . A doua ecuaţie de stare se obţine din Fam şi va .

Rezultă Fm

v1

. Matriceal, avem:

F

mv

p

v

p

10

00

10

.

Ca variabile de stare ale sistemului de rotaţie se adoptă poziţia unghiulară şi viteza

unghiulară . Ele caracterizează procese de acumulare de energie potenţială şi de energie

cinetică. Ca urmare, o primă ecuaţie de stare este . A doua ecuaţie de stare se obţine din

MJ şi . Rezultă MJ

1 . Matriceal, avem:

M

J

10

00

10

.

Relaţiile încadrate reprezintă ecuaţiile de stare ale celor două sisteme.

5.9. BAZE DE DATE

5.9.1. Se consideră două tabele (ale unei baze de date Oracle), cu numele PERSONAL (având

coloanele CNP, NUME si SALAR), respectiv CONTABILITATE (având coloanele

DATA_ACTUALIZARE, SALAR_MEDIU). Să se scrie comenzile SQL pentru crearea celor

două tabele, permiţând stocarea de date referitoare la categoriile de informaţii precizate prin

numele coloanelor (CNP, NUME, SALAR, DATA_ACTUALIZARE, SALAR_MEDIU). Se

vor prevedea şi constrângerile necesare pentru asigurarea integrităţii / coerenţei logice a

datelor / informaţiilor anterior referite, considerate obligatorii (tip, dimensiuni, plaja valori,

constrângeri).

Se cere să se scrie secvenţa de cod PL/SQL implementând un trigger (declanşator) care, la

orice operaţie de modificare/actualizare a conţinutului/datelor tabelei PERSONAL, calculează

valoarea medie de pe coloana SALAR (din PERSONAL), salvând-o în tabela

CONTABILITATE (in coloana SALAR_MEDIU), împreună cu data curentă calendaristică

aferenta operaţiei (în coloana DATA_ACTUALIZARE).

Solutie:

CREATE TABLE PERSONAL (

CNP char(13) primary key,

NUME varchar(20) NOT NULL,

SALAR int CHECK (SALAR>0));

CREATE TABLE CONTABILITATE (

DATA_ACTUALIZARE date default SYSDATE,

SALAR_MEDIU number);

CREATE or REPLACE trigger declansator

AFTER insert or update or delete on PERSONAL

DECLARE

sal number;

BEGIN

SELECT AVG(salar) into sal from PERSONAL;

INSERT into CONTABILITATE (Salar_mediu) values(sal);

END;

/

Solutie 2 –obligatorie dacă în tabela CONTABILITATE nu este prevăzută constrângerea de

dată curentă DEFAULT SYSDATE:

CREATE or REPLACE trigger declansator

AFTER insert or update or delete on PERSONAL

DECLARE

sal number;

BEGIN

SELECT AVG(salar) into sal from PERSONAL;

INSERT into CONTABILITATE values(sysdate, sal);

END;

/

5.9.2. Scrieţi o comandă SQL pentru crearea unei tabele PERSONAL permiţând stocarea de

date referitoare la următoarele categorii de informaţii: NR_MATRICOL, NUME,

PRENUME, DATA_NAŞTERII, SALAR_BAZA. Se vor prevedea şi constrângerile necesare

pentru asigurarea integrităţii / coerenţei logice a datelor / informaţiilor anterior referite,

considerate obligatorii (tip, dimensiuni, plaja valori, constrângeri). Scrieţi comenzile SQL

pentru adăugarea a două noi linii (cu orice date valorice). Scrieţi comenzile SQL pentru

ştergerea conţinutului tabelei, respectiv ştergerea tabelei.

Solutie:

CREATE TABLE PERSONAL

(NR_MATRICOL char(6) primary key,

NUME varchar(20) NOT NULL,

PRENUME varchar(20) NOT NULL,

DATA_NAST date NOT NULL,

SALAR_BAZA INT CHECK (SALAR_BAZA >0 AND SALAR_BAZA<10000));

INSERT INTO PERSONAL VALUES(‘LM1245’, ‘Ion’, ‘Ion’, ’12.12.1990’, 1000);

INSERT INTO PERSONAL VALUES(‘LM2568’, ‘Ioni’, ‘Ioni’, ’14.07.1990’, 2000);

DELETE FROM PERSONAL;

DROP TABLE PERSONAL;

Varianta alternativa posibilă pentru definiţia coloanei SALAR_BAZA:

- SALAR_BAZA INT CHECK (SALAR_BAZA BEWEEN 1 AND 10000)

- SALAR_BAZA NUMERIC(5) CHECK (SALAR_BAZA >0)

5.10. COMUNICAŢII DE DATE

5.10.1. Prezentaţi şi explicaţi funcţionarea transceiverului pe magistrala CAN folosind

schema din figură.

Soluţie:

Magistrala CAN constă din două linii, notate CANH (Can High line) şi CANL (CAN Low

line), la care se adaugă masa. Transmisia pe aceasta magistrala este de tip diferenţial.

În figură este reprezentat un transceiver de CAN. Dacă la intrarea driverului semnalul TxD

are valoarea 1 logic (starea 1), ambele tranzistoare vor fi blocate şi cele două linii se vor afla

la potenţialul 0,5·Vcc. Dacă se comandă valoarea 0 logic (starea 0), ambele tranzistoare vor fi

deschise şi între cele două linii apare o diferenţă de potenţial, ce va fi detectată de receiver.

Starea 0 este numită „dominantă” (cîştigă), iar starea 1 este denumită “recesivă” (pierde).

Aceast fapt este folosit pentru arbitrarea magistralei. Transceiverele de mare viteză (1Mbps)

sînt diferite de cele de mică viteză (125Kbps). Ultimele sînt tolerante la defecte. Căderea

uneia dintre cele două linii, prin întreruperea ei sau prin scurtcircuitarea la masă sau la Vcc nu

duce la căderea totală a comunicaţiei. Caracterul diferenţial al transmisiei şi filtrele

încorporate în receivere duc la un grad scăzul de interferenţă electromagnetică şi o bună

imunitate la zgomotul de mod comun (cel care se manifestă identic pe ambele linii, raportat la

masă.)

5.10.2. Prezentaţi comparativ metodele de codare a informaţiei de tip NRZ si AMI pentru

transmiterea datelor. Codaţi prin cele două metode secvenţa 101100.

Soluţie:

Metoda NRZ (Non Return to Zero). Aceasta este codarea "naturală", adică bitul 0 se codează

printr-un palier scăzut de tensiune, iar bitul 1 printr-un palier ridicat. Numim celulă de bit

durata alocată transmiterii unui bit de informaţie. În sistemul NRZ nivelul de tensiune este

eşantionat la mijlocul celulei de bit, pentru a determina valoarea numerică binară a

semnalului. Dezavantajul metodei este că sincronizarea de bit este o problemă dificil de

rezolvat.

Metoda AMI (Alternate Mark Inversion). Metoda foloseşte trei nivele de tensiune: pozitiv,

zero şi negativ. Bitul 0 este codificat prin absenţa unui impuls în celula de bit, iar bitul 1 prin

prezenţa impulsului. Codarea prin impuls, faţă de palier, este mai fiabilă în raport cu

perturbaţiile, dar dublează banda de frecvenţă necesară. Avantajul alternării este că nivelul

mediu de tensiune pe canal este constant, ceea ce simplifică situaţia din punctul de vedere al

perturbaţiilor legate de deriva de nul pe firul de masă.

5.10.3. Prezentaţi echipamentele componente ale unei celule de telefonie mobilă,

funcţionarea acesteia şi modalităţile de comunicare între celulă şi centrală.

Soluţie

Celula are următoarele componente

BTS (Base Transceiver Station – Staţia de bază de emisie/recepţie) constă din antena şi

echipamentul radio de emisie/recepţie care defineşte, în funcţie de puterea sa, aria de

cuprindere a celulei. Acest echipament conectează terminalul mobil la centrala de telefonie

celulara;

BSC (Base Station Controler – Controlerul staţiei de bază). Conţine partea digitală a

echipamentului celulei. Această componentă translatează semnalul de voce de 13 Kbit/sec în

standardul PCM de 64Kbit/sec şi administrează resursele radio ale BTS.

În funcţie de tipul celulei, rurală sau metropolitană, şi de alte condiţii, BTS se poate afla în

aceeaşi construcţie cu BSC sau la distanţă de acesta. În concentrările urbane, cu trafic foarte

intens, celulele au dimensiuni foarte mici (sute de metri) şi se pot lega mai multe transceivere

la un controler.

Antena serveşte doar pentru legătura între terminale şi BTS. Legătura între BTS şi centrala

de comutare se face prin canalele specifice telefoniei:

circuite analogice pe 2 fire. Situaţia este specifică celulelor foarte mici, care nici măcar nu

se leagă la o centrală, ci direct la o linie telefonică comutată din PSTN (Public Switched

Telephone Network);

circuite digitale pe cablu de cupru. Este cel mai răspîndit mod de comunicare între celule şi

centrale şi se realizează pe lungimi ce pot varia între interiorul unei clădiri şi distanţe de

ordinul kilometrilor;

fibra optică, permite legături la distanţe mari, pînă la 40 Km fără a folosi repetoare;

microunde.

Codarea NRZ

0 0 1 1 0 1

1 0 1 1 0 0

Codarea AMI

5.11. SISTEME INCORPORATE

5.11.1. Să se scrie un program în limbaj de asamblare pentru un microcontroler 8051, care

să accepte cereri de întreruperi externe pe liniile /INT0 si /INT1. Întreruperile sunt active pe

front căzător. În rutina de tratare a întreruperii /INT0 se va seta bitul 0 al portului P1 (P1.0),

iar în rutina de tratare a întreruperii pentru /INT1 se va reseta bitul P1.0.

Programul principal va rula în buclă infinita, după ce s-a realizat programarea sistemului de

întreruperi.

Soluţie

Programul corespunzător este:

ORG 0h

LJMP PP ;salt la PP

ORG 03h ;adresa de start a rutinei de tratare a intreruperii INT0

RUT_0: SETB P1.0 ;setare bit P1.0

RETI ;revenire din rutina de tratare a intreruperii INT0

ORG 13h ;adresa de start a rutinei de tratare a intreruperii INT1

RUT_1: CLR P1.0 ;resetare bit P1.0

RETI ;revenire din rutina de tratare a intreruperii INT1

ORG 100h ;adresa de start a programului principal

PP: CLR IE.7 ;invalidare globala a sistemului de intreruperi

SETB IE.0 ;validare intrerupere INT0

SETB TCON.0 ;activare front cazator pentru INT0

SETB IE.2 ;validare intrerupere INT1

SETB TCON.2 ;activare front cazator pentru INT1

SETB IE.7 ;validarea globala a sistemului de intreruperi

SJMP $ ;bucla infinita

5.12.2. Să se scrie un program în limbaj de asamblare pentru un microcontroler 8051, care

să asigure comunicaţia seriala în ecou (data recepţionată este transmisa înapoi) cu un

partener de „dialog”, prin intermediul sistemului UART integrat, la viteza de 9600

bauds/sec, ştiind ca frecventa oscilatorului este de 12 MHz.

Programul trebuie conceput astfel încât, microcontrolerul să gestioneze recepţia prin

intermediul întreruperii specifice sistemului de comunicaţie serială.

Fiecare octet recepţionat la un moment dat, va fi depus în memoria de date externă (MDX), la

adresa 1000h.

Soluţie

Formula de calcul a constantei de timp necesare programarii timerului T1 (generatorul de

baud-rate) este:

ratebaudTH

fOSC

SMOD

_384256)1(

2

Pentru o viteza de transfer de 12 MHz constanta de timp este:

25332563686400

12000000256

9600384

10122256)1(

60

TH

exprimat in hexazecimal: (TH1) = FDh

Structura cuvantului de comanda TMOD pentru programarea timerului T1 in modul 2 este:

D7 D6 D5 D4 D3 D2 D1 D0

0 0 1 0 0 0 0 0

Exprimat in hexazecimal: (TMOD) = 20h

Programul corespunzator este:

ORG 0h

LJMP PP ;salt la PP

ORG 23h ;adresa de start a rutinei de tratare a intreruperii ES

RUT_SER: CLR IE.4 ;invalideaza intreruperile ES

MOV A,SBUF ;transfera in acumulator octetul receptionat

MOVX @DPTR,A ;transfera in MDX la adresa 1000h caracterul

receptionat

CLR SCON.0 ;resetare fanion RI

MOV SBUF,A ;trensmite inapoi octetul receptionat

JNB SCON.1 ;asteapta incheierea transferului prin testarea

fanionului TI

CLR SCON.1 ;resetare fanion TI

SETB IE.4 ;valideaza cererile de intrerupere provenite de la

ES

RETI ;revenire din rutina de tratare a intreruperii ES

ORG

100h

;adresa de start a programului principal

PP: CLR IE.7 ;invalidare globala a sistemului de intreruperi

MOV TMOD,#20h ;transfera cuvantul de comanda pentru timerul 1

MOV TL1,#0FDh ;transfera constanta de timp in TL1

MOV TH1,#0FDh ;transfera constanta de timp in TH1

SETB SCON.6 ;pozitioneaza pe 1 bitul 6 din registrul SCON

(Modul 1)

CLR SCON.7 ;pozitioneaza pe 0 bitul 7 din registrul SCON

(Modul 1)

SETB SCON.4 ;validare receptie

SETB TCON.4 ;pornire soft timer T1

SETB IE.4 ;validare intreruperi de la sistemul de comunicatie

seriala

MOV DPTR,#1000h ;incarcare in DPTR a adresei din MDX unde se

depune octetul ;receptionat

SETB IE.7 ;validarea globala a sistemului de intreruperi

SJMP $ ;bucla infinita

5.11.3. Pentru un sistem cu microcontroler 8051, care dispune de:

Memorie program externă de 16 Koct, implementată cu circuite de capacitate de

4Kx8;

Memorie de date externă de 32 Koct, implementată cu circuite de capacitate de 8Kx8,

se cere:

i) Să se prezinte harta corespunzătoare memoriei program şi harta corespunzătoare memoriei

de date externă, în cadrul sistemului considerat.

ii) Să se deseneze schema de implementare a decodificatorul de adrese, pentru obtinerea

semnalelor de chip_select (/CSx – semnale de chip select „0” active). Circuitul decodificator

utilizat este 74LS138 (tabela de adevar si schema bloc a circuitului 74LS138 sunt prezentate

in figura de mai jos).

Soluţie:

i) Harta memoriei

a) Memoria program

Numărul de circuite necesare: N = 16/4 = 4 circuite

Linii de adresa utilizate pentru selectia locatiilor de memorie din circuite: 12 (A0...A11)

Linii de adresa utilizate la generarea semnalelor de chip select: 4 (A12...A15)

Harta memoriei program este sintetizata in tabelul de mai jos:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000h

0FFFh /CS_E0 . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1000h

1FFFh /CS_E1 . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1

0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000h

2FFFh /CS_E2 . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1

0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 3000h

3FFFh /CS_E3 . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1

b) Memoria de date externa

Numarul de circuite necesare: N = 32/8 = 4 circuite

Linii de adresa utilizate pentru selectia locatiilor de memorie din circuite: 13 (A0...A12)

Linii de adresa utilizate la generarea semnalelor de chip select: 3 (A13...A15)

Harta memoriei program este sintetizata in tabelul de mai jos:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000h

1FFFh /CS_X0 . . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000h

3FFFh /CS_X1 . . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1 1

0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000h

5FFFh /CS_X2 . . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1 1

0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 6000h

7FFFh /CS_X3 . . . . . . . . . . . . .

1 1 1 1 1 1 1 1 1 1 1 1 1

ii) Implementarea decodificatoarelor de adrese

a) Pentru memoria program

b) Pentru memoria de date externa

5.12. SISTEME DE OPERARE

5.12.1. Realizaţi un program în C ce funcţionează pe baza următorului scenariu: Un proces P

afişează repetitiv cifre de la 0 la 9. Afişarea va începe cu cifra 0 (cifra va fi afişată în buclă,

de câte ori e posibil într-o secundă), iar la fiecare secundă va incrementa cifra afişată.

Procesul de afişare se va încheia când se ajunge la 10 şi va afişa numărul total de cifre tipărite.

Soluţie:

#include<unistd.h>

#include<signal.h>

#include<sys/wait.h>

#include<sys/types.h>

void handler(int sig);

int number, counter;

int main(int argc, char** argv){

number = 0;

counter = 0;

signal(SIGALRM, &handler);

alarm(1);

while(number < 10)

{

printf("%d", number);

counter++;

}

printf("Total:%d", counter);

return 0;

}

void handler(int sig){

number++;

alarm(1);

}

5.12.2. Realizaţi un program C ce funcţionează pe baza următorului scenariu: se va crea un

proces părinte P şi un proces fiu F. Procesul P va citi conţinutul unui fişier primit ca şi

argument şi îl va trimite printr-un pipe procesului F. F va număra caracterele primite într-un

contor pe care îl va afisa în terminal.

Soluţie:

#include<stdio.h>

#include<string.h>

#include<unistd.h>

#include<fcntl.h>

int main(int argc, char**argv){

int ppf[2];//pipes

int fd;//file descriptor

char buffer[2];

pipe(ppf);

if(fork()){

//close unused pipe ends

close(ppf[0]);

//open file

fd = open(argv[1], O_RDONLY);

if(fd == -1){

perror("File read error");

_exit(1);

}

int n;

while((n = read(fd,buffer, strlen(buffer)+1)) != 0){

write(ppf[1], buffer, n);

}

close(ppf[1]);

int rc;

wait(&rc);

}else{

//close pipe ends

close(ppf[1]);

int contor = 0,n;

while((n = read(ppf[0],buffer, strlen(buffer)+1)) != 0){

contor += n;

}

printf("\nContor:%d\n",contor);

}

return 0;

}

5.12.3. Realizaţi un program shell script ce va primi ca şi argument un nume de director D şi

un cuvânt C. Programul va căuta cuvântul C parcurgând recursiv directorul D, iar pentru

fiecare fişier întâlnit care conţine cuvântul C va afişa calea relativă a acestuia.

Soluţie:

#!/bin/sh

word=$2

lst(){

for i in $1/*

do

if [ -d $i ]

then

lst $i

elif [ -f $i ]

then

count=`grep $word $i | wc -l`

if [ $count -gt 0 ]

then

echo $i

fi

fi

done

}

lst $1

5.13. SECURITATEA INFORMATIEI

5.13.1 (Structura unei chei pentru criptosistemul RSA în .NET) Fie o cheie de RSA exportată

din .NET, incluzând parametrii private, aşa cum reiese din Figura 1. De asemenea, fie

valorile artificiale de dimensiune redusă: modul n=115 şi exponent public e=3. Se cere:

Pentru cheia RSA din figură indicaţi care dintre valorile D, DP, DQ, Exponent, InverseQ,

Modulus, P şi Q sunt parametrii publici şi privaţi precum şi dimensiunea acestora în biţi.

Pentru modulul şi exponentul de dimensiune redusă calculaţi ceilalţi parametrii care se

regăsesc în structura unei chei de RSA în .NET. Eplicaţi ce exponent se foloseşte pentru

fiecare din cele 4 operaţii: criptare, decriptare, semnare, verificare, atunci când aceste

operaţii sunt efectuate modulo n.

Figura 1. Cheie RSA în mediul .NET

Solutie:

Parametrii publici ai cheii din .NET din figură sunt:

- modulul Modulus de 128*8=1024 biţi,

- exponentul Exponent care este reprezentat pe 3 bytes aşa cum se observă în structură, adică

24 de biţi dar care poate fi reprezentat pe doar 17 biţi corespunzând valorii 65537.

Parametrii privaţi ai cheii din .NET din figură sunt:

Exponentul D folosit la criptare având 128 de bytes adică 1024 biţi,

Exponenţii de decriptare DP şi DQ având 64 de bytes adică 512 biţi,

Inversul multiplicativ al lui Q modulo P adică InverseQ având 64 de bytes adică 512 biţi.

Factorii primi ai modulului P şi Q având fiecare câte 64 de bytes adică 512 biţi.

Pentru modulul n=115 factorizarea acestuia este n=5*23 de unde P=5 şi Q=23. Funcţia Euler

Phi este 4*22=88 de unde inversul multiplicativ al lui 3 este 59 deoarece 3*59=1 mod 88 şi

deci D=59. De aici exponenţii DP şi DQ urmează imediat ca: DP=59 mod 4 =3 şi DQ = 59

mod 22 =15, inversul multiplicativ al lui Q modulo P este 2 deoarece 2*23 = 1 mod 5 şi deci

InverseQ=2. Sumarizând: D = 59, DP = 3, DQ = 15, Exponent = 3, InverseQ = 2, Modulus =

115, P = 5, Q = 23.

La criptare şi respectiv verificarea semnăturii digitale se foloseşte exponentul e= 3 iar la

decriptare şi respectiv semnare digitală exponentul d = 59 (cu mentiunea ca atunci cand

operatia cu cheie privata se efectueaza conform CRT se vor folosi desigur DP exponentii si

DQ modulo P si Q).

5.13.2. (Structura unei chei pentru algoritmul de semnătură digitală DSA în .NET) Fie o

cheie de DSA exportată din .NET, incluzând parametrii private, aşa cum reiese din Figura 1.

De asemenea, fie valorile artificiale de dimensiune redusă: modul P=31, generator G=3 şi

Y=17. Se cere:

Pentru cheia DSA din figură indicaţi care dintre valorile G, P, X şi Y sunt parametrii publici

şi privaţi precum şi dimensiunea acestora în biţi.

Pentru parametrii de dimensiune redusă calculaţi cheia secretă X. Dacă valoarea Y ar fi

parte a unui schimb de cheie Diffie-Hellman în care a fost primit de la partenerul de

comunicare Y’=29, explicaţi care va fi cheia comună de sesiune.

Figura 1. Cheie DSA în mediul .NET

Solutie:

Parametrii publici ai cheii DSA din .NET din figură sunt:

- modulul P de 64*8=512 biţi,

- generatorul G de 64*8=512 biţi,

- valoarea Y de 64*8=512 biţi.

Parametrii privaţi ai cheii din .NET din figură sunt:

Exponentul X aplicat asupra generatorului G modulo P pentru calculul valorii Y având 20 de

bytes adică 160 biţi. Limitarea acestuia la 160 biţi se datorează folosirii funcţiei SHA1 la

semnare care are 160 biţi la output.

Pentru modulul P=31, generator G=3 şi Y=17 ştim că GXmod P=17 şi prin calcule succesive

(deşi nu cea mai eficientă metodă) avem 30mod 31=1, 31mod 31=3, 32mod 31=9, 33mod

31=27, 34mod 31=19, 35mod 31=26, 36mod 31=16, 37mod 31=17, de unde parametrul secret

este X=7.

Pentru schimbul de cheie Diffie-Hellman, având Y’=20 trebuie să îl aflăm pe X’ pentru care

va trebui să continuăm succesiunea de calcule de mai sus, din fericire după doar 2 paşi avem

38mod 31=20, 39mod 31=29 de unde X’=9. Aceasta înseamnă că avem cheia comună 37*9mod

31 iar cum calculele se efectuează modulo modulo 31 exponenţii pot fi reduşi modulo 30

(vezi Teorema lui Euler) şi deci 37*9mod 31 = 33mod 31=27 aceasta fiind cheia de sesiune

Diffie-Hellman.

5.13.3 (Autentificarea cu parole în sistemul de operare Linux). Fie secvenţa de mai jos din

fişierul criptat de parole aparţinând unei distribuţii de Ubuntu. Se cer următoarele

următoarele:

Cum se numeşte şi unde se găseşte acest fişier în sistemul de operare Ubuntu, respectiv cum

se adaugă un nou utilizator şi o parolă?

Care este valoarea de salt pentru parola utilizatorului ubuntu şi care este hash-ul acesteia

respectiv cum au fost calculate acesta?

Explicaţi dacă funcţia de criptare pentru parola userului ubuntu şi alice este acceaşi?

Care este funcţia cu ajutorul căreia se pot genera programatic parole?

ubuntu:$1$js9ai3VX$iFbR5uTfv3JMmFCladdcn1:16459:0:99999:7:::

tom:$6$vIkXOyrz$CMiFB8meMfTANianaS7z5f8yMfplk/TtncZs/7b0es65XZSIyz3kai

SwN/61sBdrPhT9B0RulJ9tWEnE7kpJC/:16470:0:99999:7:::

alice:$6$gpOJXcSy$AVrdUKBdSM8NlGmrbexoyetS2LhRgg3qkaTbZdMh4mj.Yps3

UxIkrtGDQfEGA.yNDhlIPG3m1hupX3b0I0Vs3.:16470:0:99999:7:::

bob:$6$5IPGOooA$J6rZ74NUpCVx9C2mpesKKr0iBjkHNCxz8Io3aPj5W6mwVKK

vnhWIbq0H91T9bDcWmDE3/6Ageoa3olcVe2nKY0:16470:0:99999:7:::

Figura 1. Secvenţă dintr-un fişier de parole Linux

Solutie:

Este vorba despre fişierul shadow aflat în /etc/shadow iar un nou user şi o nouă parolă se pot

adăuga cu urmatoare secventa de comenzi fiind necesare privilegii de root:

sudo useradd -m tom

sudo passwd tom

Valoarea salt pentru utilizatorul ubuntu este

js9ai3VX

iar cea a hashului

iFbR5uTfv3JMmFCladdcn1

fiind obţinută prin aplicarea unei funcţii one-way peste salt şi parola utilizatorului.

Nu, pentru utilizatorul ubuntu se foloseşte o funcţie bazată pe MD5 iar pentru alice una bazată

pe SHA512, distingem despre care dintre acestea este vorba din valoarile $1$ şi $6$ care

arată că este vorba de o generarare bazată pe MD5 respectiv SHA512.

Funcţia pentru generare a parolelor este char *crypt(const char *key, const char *salt)

5.14. REŢELE DE CALCULATORE

5.14.1. Se consideră adresa IP v4 172.16.0.150 având masca 255.255.255.192. Se cere:

a) Adresa reţelei, respectiv adresa de broadcast a reţelei din care face parte adresa IP;

b) Adresa subreţelei, respectiv adresa de broadcast a subreţelei din care face parte adresa

IP;

c) Numărul de hosturi din subreţeaua din care face parte adresa IP;

d) Numărul de subreţele definite de masca adresei IP dată.

Soluţie:

a) Adresa IP defineşte o reţea de clasa B. Rezultă că masca reţelei este 255.255.0.0 . Făcând

operaţiile pe biţi vom avea:

10101100.00010000.00000000.10010110 Adresa IP

11111111 .11111111 .00000000.00000000 Mască reţea

--------------------------------------------------

10101100.00010000.00000000.00000000 Adresa reţelei

--------------------------------------------------

10101100.00010000.11111111 .11111111 Adresa de broadcast a reţelei

Adresa reţelei este 172.16.0.0

Adresa de broadcast a reţelei este 172.16.255.255

b) Făcând operaţiile pe biţi vom avea:

10101100.00010000.00000000.10010110 Adresa IP

11111111 .11111111 .11111111 .11000000 Masca subreţea

--------------------------------------------------

10101100.00010000.00000000.10000000 Adresa subreţelei

--------------------------------------------------

10101100.00010000.00000000.10111111 Adresa de broadcast a subreţelei

Adresa subreţelei este 172.16.0.128

Adresa de broadcast a subreţelei este 172.16.0.191

c) Numărul de hosturi din subreţea: NH = 26-2 = 62 hosturi

d) Numărul de subreţele: NSR = 210-2 = 1022 subreţele

5.14.2. Se consideră adresa IP v4 192.168.10.125/28. Se cere:

a) Adresa reţelei, respectiv adresa de broadcast a reţelei definite de perechea adresă IP/

mască reţea.

b) Numărul de hosturi din reţeaua determinată la punctul a).

Soluţie:

a) Făcând operaţiile pe biţi vom avea:

11000000.10101000.00001010.01111101 Adresa IP

11111111 .11111111 .11111111 .11110000 Masca reţea

--------------------------------------------------

11000000.10101000.00001010.01110000 Adresa de reţea

--------------------------------------------------

11000000.10101000.00001010.01111111 Adresa de broadcast a reţelei

Adresa reţelei este 192.168.10.112.

Adresa de broadcast a reţelei este 192.168.10.127.

b) Numărul de hosturi din subreţea: NH = 24-2 = 14.