Upcoming SlideShare
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Standard text messaging rates apply

# Curs Sctr2009

3,403

Published on

Materia de curs pt RTCS.

Materia de curs pt RTCS.

2 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total Views
3,403
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
82
0
Likes
2
Embeds 0
No embeds

No notes for slide

### Transcript

• 1. SISTEME DE CALCUL TIMP - REAL Mircea Grosu Facultatea de Automatic&#x103;, Calculatoare &#x15F;i Electronic&#x103; Catedra Ingineria Calculatoarelor &#x15F;i Comunica iilor 1-1
• 2. 1 INTRODUCERE ......................................................................................................................................... 1-6 1.1 Defini ii &#x15F;i clasific&#x103;ri ........................................................................................................................... 1-6 1.2 Elementele unui SCTR ........................................................................................................................ 1-7 1.3 Tipuri de SCTR ................................................................................................................................ 1-13 1.3.1 Sisteme bazate pe ceas ............................................................................................................... 1-14 1.3.2 Sisteme bazate pe evenimente (senzori) .................................................................................... 1-14 1.3.3 Sisteme interactive ..................................................................................................................... 1-14 1.3.4 Definirea SCTR ......................................................................................................................... 1-14 1.4 Clasificarea programelor ................................................................................................................... 1-15 1.4.1 Programele secven iale .............................................................................................................. 1-15 1.4.2 Programe multitasking ............................................................................................................... 1-15 1.4.3 Programe timp - real .................................................................................................................. 1-16 1.5 Concluzii............................................................................................................................................ 1-16 2 SCTR PENTRU CONTROLUL PROCESELOR INDUSTRIALE .......................................................... 2-17 2.1 Tipuri de procese ............................................................................................................................... 2-17 2.2 Opera ii realizate de c&#x103;tre sistemele pentru controlul proceselor ...................................................... 2-17 2.2.1 Controlul secven ial al proceselor.............................................................................................. 2-17 2.2.2 Controlul &#xEE;n bucl&#x103; (Direct Digital Control) ............................................................................... 2-18 2.2.3 Supervizarea proceselor ............................................................................................................. 2-20 2.2.4 Interfa a om-ma&#x15F;in&#x103; ................................................................................................................... 2-22 2.2.5 Responsabilit&#x103; ile inginerului de sistem .................................................................................... 2-22 2.3 Structuri de sisteme pentru controlul proceselor industriale ............................................................. 2-23 2.3.1 Sisteme de control centralizate .................................................................................................. 2-23 2.3.2 Sisteme ierarhizate ..................................................................................................................... 2-24 2.3.3 Sisteme distribuite ..................................................................................................................... 2-26 2.3.4 Piramida automatiz&#x103;rii ............................................................................................................... 2-28 3 STRUCTURA ECHIPAMENTELOR UTILIZATE IN SCTR ................................................................. 3-29 3.1 Structura hardware general&#x103; a calculatorului de proces..................................................................... 3-29 3.1.1 Unitatea central&#x103; ....................................................................................................................... 3-31 3.1.2 Dispozitive de comunica ie ........................................................................................................ 3-31 3.1.3 Dispozitive de proces ................................................................................................................. 3-31 3.1.4 Dispozitivele standard ale calculatorului ................................................................................... 3-31 3.1.5 Dispozitivele operatorului de proces ......................................................................................... 3-32 3.1.6 Ceasul timp - real (Real Time Clock) ........................................................................................ 3-32 3.2 Semnale preluate/transmise de SCTR din/c&#x103;tre lumea real&#x103; ............................................................. 3-32 3.3 Blocurile func ionale ale unui SADC ................................................................................................ 3-33 1-2
• 3. 3.3.1 Conectarea dispozitivelor de I/E la calculatorul gazd&#x103; .............................................................. 3-33 3.3.1.1 Dispozitive pe magistrala intern&#x103;........................................................................................... 3-34 3.3.1.2 Dispozitive pe magistrala extern&#x103; .......................................................................................... 3-34 3.3.2 Semnale din proces, traductoare &#x15F;i condi ionarea semnalelor.................................................... 3-35 3.3.2.1 Tipuri de semnale .................................................................................................................. 3-36 3.3.2.2 Traductoare &#x15F;i senzori ............................................................................................................ 3-37 3.3.2.2.1 Exemple de traductoare ................................................................................................... 3-37 3.3.3 Condi ionarea semnalelor .......................................................................................................... 3-41 3.3.3.1 Circuit tampon de intrare ....................................................................................................... 3-41 3.3.3.2 Conversia curent &#x2013; tensiune ................................................................................................... 3-42 3.3.3.3 Scalarea semnalelor analogice ............................................................................................... 3-43 3.3.3.4 Filtrarea .................................................................................................................................. 3-43 3.3.3.5 Izolare analogic&#x103; .................................................................................................................... 3-46 3.3.3.6 Protec ie la supratensiune ...................................................................................................... 3-47 3.3.3.7 Scalarea intr&#x103;rilor/ie&#x15F;irilor numerice ..................................................................................... 3-47 3.3.3.8 Izolarea numeric&#x103;................................................................................................................... 3-48 3.3.3.9 Detectarea contactelor............................................................................................................ 3-48 3.3.3.10 Comanda releelor ............................................................................................................... 3-49 3.3.4 Subsistemele de intrare/ie&#x15F;ire ale SADC ................................................................................... 3-49 3.3.4.1 Subsistemul de intr&#x103;ri analogice ............................................................................................ 3-49 3.3.4.1.1 Convertoare analog numerice (CAN) .............................................................................. 3-50 3.3.4.1.2 Amplificarea .................................................................................................................... 3-51 3.3.4.1.3 Multiplexarea analogic&#x103; .................................................................................................. 3-51 3.3.4.1.4 Circuitele de e&#x15F;antionare &#x15F;i memorare (S/H) ................................................................... 3-52 3.3.4.1.5 Multiplexarea &#xEE;n timp ...................................................................................................... 3-52 3.3.4.1.6 Timpul de conversie ........................................................................................................ 3-52 3.3.4.1.7 Conectarea canalelor analogice la multiplexor ................................................................ 3-53 3.3.4.1.8 Scalarea intr&#x103;rilor analogice ............................................................................................ 3-55 3.3.4.2 Subsistemul de ie&#x15F;iri analogice .............................................................................................. 3-55 3.3.4.3 Subsistemul de intr&#x103;ri-ie&#x15F;iri numerice ................................................................................... 3-56 3.3.4.4 Subsistemul de intr&#x103;ri-ie&#x15F;iri de num&#x103;rare .............................................................................. 3-56 4 PROGRAMAREA DISPOZITIVELOR I/E &#xCE;N APLICA II TIMP - REAL ........................................... 4-57 4.1 Tehnici de comunicare cu dispozitivele de intrare/ie&#x15F;ire ................................................................... 4-57 4.1.1 Metoda Polling .......................................................................................................................... 4-57 4.1.2 Metoda &#xEE;ntreruperilor externe .................................................................................................... 4-58 4.1.3 Metoda Intr&#x103;ri/iE&#x15F;iri buffer-ate .................................................................................................. 4-58 4.1.4 Alegerea strategiei optime ......................................................................................................... 4-58 1-3
• 4. 4.2 Programarea utiliz&#xE2;nd &#xEE;ntreruperile ................................................................................................... 4-60 4.2.1 Prezentarea sistemului de &#xEE;ntreruperi la PC ............................................................................... 4-60 4.2.2 Plasarea I8259 &#xEE;n spa iul de I/E la PC........................................................................................ 4-62 4.2.3 Detalii de programare utiliz&#xE2;nd &#xEE;ntreruperile la PC cu SO DOS ............................................... 4-63 4.2.4 Exemple de utilizare a &#xEE;ntreruperilor ......................................................................................... 4-67 4.3 Dispozitive pentru generarea bazei de timp &#x15F;i num&#x103;rarea de evenimente ......................................... 4-72 4.3.1 Dispozitivul mum&#x103;r&#x103;tor/periodizator I8254 .............................................................................. 4-72 4.3.2 Utilizarea I8254 pentru num&#x103;rarea de evenimente .................................................................... 4-75 4.3.3 Utilizarea lui I8254 pentru generarea de &#xEE;ntreruperi .................................................................. 4-76 4.3.4 Exemplu de utilizare a dispozitivului I8254 pentru generarea bazei de timp ............................ 4-79 4.3.5 Reprogramarea ceasului sistem ................................................................................................. 4-82 4.4 Exemplu de sistem de achizi ie de date ............................................................................................. 4-84 4.4.1 ADA 2100 - date generale &#x15F;i prezentarea resurselor .................................................................. 4-84 4.4.2 Generalit&#x103; i ................................................................................................................................ 4-86 4.4.3 Setarea adresei de baz&#x103; .............................................................................................................. 4-86 4.4.4 Harta I/E pentru ADA 2100 ....................................................................................................... 4-86 4.4.5 Modul de configurare al modulului ........................................................................................... 4-88 4.4.6 Descriere la nivel de schem&#x103; bloc.............................................................................................. 4-88 4.4.6.1 Lan ul de conversie analog-numeric&#x103; .................................................................................... 4-88 4.4.6.2 Realizarea unei citiri A/N ...................................................................................................... 4-89 4.4.6.3 Circuitele de conversie numeric-analogic&#x103; ............................................................................ 4-89 4.4.6.4 Interfa a paralel&#x103; programabil&#x103; (PPI - I8255) ........................................................................ 4-90 4.4.6.5 PIT num&#x103;r&#x103;tor/periodizator programabil (I8254) .................................................................. 4-90 4.4.7 Prezentarea comutatoarelor &#x15F;i a programatoarelor hardware ..................................................... 4-90 4.4.8 Proceduri de calibrare ................................................................................................................ 4-93 4.4.9 Conectarea modulului la proces ................................................................................................. 4-95 4.4.10 Programe de test ........................................................................................................................ 4-95 4.4.11 Programarea modulului ADA 2100 ........................................................................................... 4-95 5 SISTEME DE OPERARE TIMP - REAL MULTITASKING ................................................................ 5-101 5.1 Introducere ....................................................................................................................................... 5-101 5.2 Gestiunea task-urilor &#xEE;n aplica ii timp - real .................................................................................... 5-103 5.2.1 Tranzi ia st&#x103;rilor &#x15F;i descriptori de task ..................................................................................... 5-104 5.2.2 Descriptori de task ................................................................................................................... 5-105 5.2.3 Dispecerizarea &#x15F;i planificarea task-urilor................................................................................. 5-106 5.2.4 Niveluri de prioritate................................................................................................................ 5-106 5.2.4.1 Nivelul &#xEE;ntreruperilor ........................................................................................................... 5-108 5.2.4.2 Nivelul de ceas ..................................................................................................................... 5-108 1-4
• 5. 5.2.4.2.1 Task-uri periodice.......................................................................................................... 5-109 5.2.4.2.2 Task-uri &#xEE;nt&#xE2;rziate.......................................................................................................... 5-113 5.2.4.3 Nivelul de baz&#x103; .................................................................................................................... 5-113 5.2.5 Apelul la dispecer .................................................................................................................... 5-114 5.2.6 Exemplu de gestiune a task-urilor: SOTRM REX ................................................................... 5-116 5.2.6.1 St&#x103;rile task-urilor ................................................................................................................. 5-116 5.2.6.2 Directivele implicate &#xEE;n tranzi ia st&#x103;rilor ............................................................................. 5-117 5.2.6.3 Descriptori de task ............................................................................................................... 5-118 5.2.6.4 Dispecerul ............................................................................................................................ 5-119 5.2.6.5 Planificatorul ....................................................................................................................... 5-121 6 ALGORITMI DE PLANIFICARE A TASK-URILOR &#xCE;N SCTR CU CONSTR&#xC2;NGERI DE TIMP RIGIDE ........................................................................................................................................................... 6-125 6.1 No iuni introductive ......................................................................................................................... 6-125 6.2 Algoritmul de planificare RM ......................................................................................................... 6-128 6.2.1 Prezentarea algoritmului .......................................................................................................... 6-128 6.2.2 Extinderea algoritmului de planificare RM pentru includerea task-urilor sporadice ............... 6-134 6.2.3 Algoritmul de planificare RM &#xEE;n prezen a supra&#xEE;nc&#x103;rc&#x103;rii ocazionale..................................... 6-135 6.2.4 Generalizarea algoritmului de planificare RM......................................................................... 6-137 6.2.5 Considerarea &#xEE;ntreruperilor ...................................................................................................... 6-139 6.2.6 Considerarea sincroniz&#x103;rii task-urilor ...................................................................................... 6-141 6.3 Algoritmul de planificare EDF ........................................................................................................ 6-144 6.4 Analiza comparativ&#x103; a algoritmilor RM &#x15F;i EDF .............................................................................. 6-146 6.4.1 Supra&#xEE;nc&#x103;rcarea execu iei ........................................................................................................ 6-146 6.4.2 Supra&#xEE;nc&#x103;rcarea de planificare ................................................................................................. 6-147 6.5 Studiu de caz: algoritm mixt de planificare RM-EDF ..................................................................... 6-148 6.5.1 Analiza performan elor algoritmului ....................................................................................... 6-148 6.5.2 Testul de planificabilitate ........................................................................................................ 6-149 6.5.3 Localizarea Tx ......................................................................................................................... 6-150 7 COMUNICA IA TIMP - REAL............................................................................................................. 7-151 7.1 Introducere ....................................................................................................................................... 7-151 7.2 Protocoale de comunica ie timp - real ............................................................................................. 7-152 7.3 Protocoale bazate pe timpul limit&#x103;................................................................................................... 7-152 7.3.1 Constr&#xE2;ngeri aferente nodurilor ............................................................................................... 7-153 7.3.2 Instabilitatea &#xEE;nt&#xE2;rzierii ............................................................................................................ 7-156 8 BIBLIOGRAFIE ..................................................................................................................................... 8-157 1-5
• 6. 1 INTRODUCERE 1.1 Defini ii &#x15F;i clasific&#x103;ri Aplica ii ale sistemelor de calcul timp - real (SCTR) sunt &#xEE;nt&#xE2;lnite &#xEE;n toate domeniile de activitate. Cea mai mare parte dintre aceste aplica ii se refer&#x103; la sisteme informatice de supraveghere &#x15F;i control &#xEE;n industrie (la nivel de utilaje, instala ii, linii tehnologice, sec ii, &#xEE;ntreprinderi &#x15F;i platforme industriale), &#xEE;n transport &#x15F;i telecomunica ii, &#xEE;n distribu ia energiei electrice, &#xEE;n automatizarea experiment&#x103;rilor &#x15F;tiin ifice, &#xEE;n activit&#x103; i de management, servicii etc. &#xCE;n prezent, pot fi &#xEE;nt&#xE2;lnite pretutindeni echipamente, instala ii, produse de larg consum etc. care au &#xEE;nglobate aplica ii timp - real. &#xCE;n [Tur99] se arat&#x103; modul de &#xEE;mp&#x103;r ire a pie ei comerciale de microprocesoare &#xEE;n anul 1999: mai pu in de 1% din lumea microprocesoarelor erau utilizate &#xEE;n sisteme cu &#xEE;ntrebuin are general&#x103;. Peste 99% dintre microprocesoare erau utilizate &#xEE;n aplica ii timp-real. Acestea sunt omniprezente, de la telefoanele celulare, pagere, cuptoare cu microunde p&#xE2;n&#x103; la sisteme complexe de control trafic aerian, telecomunica ii, utilit&#x103; i publice, conducerea proceselor industriale, multimedia etc. Structura hardware &#x15F;i software-ul de baz&#x103; &#x15F;i aplicativ prezint&#x103; tr&#x103;s&#x103;turi specifice pentru SCTR, ceea ce face ca aceste sisteme s&#x103; fie o categorie distinct&#x103; &#xEE;ntre sistemele de prelucrare a datelor. &#xCE;ntr-un sistem de calcul timp - real, esen ial este intervalul de timp dintre momentul introducerii datelor &#x15F;i momentul ob inerii &#x15F;i interpret&#x103;rii rezultatelor. &#xCE;ntr-un sistem de prelucrare clasic, nu sunt impuse constr&#xE2;ngeri pe fluxul introducere date &#x2013; prelucrare date - ob inere rezultate pe c&#xE2;nd &#xEE;n SCTR timpul de r&#x103;spuns este esen ial. Acesta este unul dintre motivele pentru care trebuie aplicate tehnici speciale pentru introducerea datelor, prelucrare &#x15F;i vizualizare, respectiv aplicare a rezultatelor. Privind dintr-un cadru mai larg, SCTR fac parte din categoria sistemelor de calcul ON LINE &#x2013; &#xEE;n care datele de intrare sunt introduse direct de la locul unde sunt produse iar rezultatele sunt transmise direct la locul de utilizare. Datele fie sunt introduse de la terminale de c&#x103;tre operatori umani, fie provin de la traductoare ori senzori amplasa i &#xEE;n mediul extern. Rezultatele sunt transmise la ie&#x15F;ire la terminale pentru vizualizare de c&#x103;tre operatorul uman sau la elemente de execu ie. SCTR este un sistem de calcul care preia suficient de rapid datele de intrare, efectueaz&#x103; prelucr&#x103;rile necesare &#xEE;ntr-un interval de timp suficient de scurt &#x15F;i transmite rezultatele la ie&#x15F;ire suficient de rapid pentru a mai influen a desf&#x103;&#x15F;urarea fenomenului la care se refer&#x103; datele. Timpul de r&#x103;spuns al unui SCTR este timpul necesar pentru a genera o informa ie de reac ie la datele introduse. Timpul de r&#x103;spuns este o valoare absolut&#x103; care difer&#x103; &#xEE;n func ie de cerin ele aplica iei timp - real: &#x2022; sisteme de recunoa&#x15F;tere a vocii &#x2013; [100ns &#x2013; 10 ms]; &#x2022; simulator de zbor &#x2013;[1us-10us]; &#x2022; simulare de procese &#x15F;i controlul re elelor - [10us-100us]; &#x2022; control &#xEE;n telemetrie &#x15F;i analize seismice - [100us=1ms]; &#x2022; controllere pentru robo i &#x2013; [1ms-10ms]; &#x2022; sisteme pentru controlul proceselor &#x15F;i automatiz&#x103;ri industriale &#x2013; [100us-100ms]; &#x2022; diagnosticare medical&#x103; automat&#x103; &#x15F;i laboratoare automate &#x2013; [10ms &#x2013; 100ms]; 1-6
• 7. &#x2022; sisteme pentru detectare &#x15F;i alarmare incendiu &#x2013; [ 100ms-1s]; &#x2022; sistem rezerv&#x103;ri locuri &#x2013; [2s-3s]; &#xCE;n func ie de domeniul de utilizare exist&#x103; mai multe tipuri de sisteme de calcul ON LINE, care &#xEE;nglobeaz&#x103; &#x15F;i sistemele de calcul timp - real: &#x2022; Sisteme pentru controlul &#x15F;i supravegherea proceselor. &#x2022; Sisteme conversa ionale &#x2013; care presupun lucrul interactiv de la terminal, introducere de comenzi (date, programe etc.) &#x15F;i r&#x103;spuns imediat la acestea. &#x2022; Sisteme tranzac ionale &#x2013; care sunt interactive de la terminal, dar num&#x103;rul &#x15F;i tipul de mesaje &#x15F;i comenzi este limitat pentru a spori viteza de r&#x103;spuns. Rezultatele se afi&#x15F;eaz&#x103; &#xEE;n formate prestabilite la proiectarea aplica iei. Comenzile &#x15F;i mesajele fixe se numesc tranzac ii. Exemple: sisteme bancare, rezervare de locuri, conducere de procese &#xEE;n regim ghid operator. &#x2022; Sisteme timp - real &#xEE;ncorporate (Embedded Real Time Systems). Aceste sisteme fac parte integrant&#x103; dintr-un sistem tehnic ori tehnologic mai general. Exemple: un sistem pentru conducerea unui robot pe o linie de fabrica ie a unui produs, sistem de control al zborului &#xEE;n avia ie, sisteme de control autovehicule. &#xCE;n ceea ce prive&#x15F;te SCTR, &#xEE;n literatura de specialitate exist&#x103; mai multe scheme de clasificare: &#x2022; Din punct de vedere al timpului de r&#x103;spuns: pot fi Hard Real-Time systems (HRT) sau Soft Real-Time systems (STR) HRT = cu constr&#xE2;ngeri de timp dure; ie&#x15F;irile trebuie produse &#xEE;n limite de timp (deadlines) specificate, &#xEE;n caz contrar va ap&#x103;rea defect de sistem (Exemple: Sisteme de control al zborului, Sisteme de control trafic aerian, Roboti, Sisteme de control autovehicule...) SRT = cu constr&#xE2;ngeri de timp flexibile; deadline-urile pot fi pierdute ocazional f&#x103;r&#x103; a se considera c&#x103; sistemul este defect (Exemple: sisteme de comunica ie care utilizeaz&#x103; protocoale cu &#x201E;time out&#x201D;, Sisteme &#x201E;casier automat&#x201D;, Sisteme de rezervare a locurilor, Sisteme pentru controlul proceselor proiectate s&#x103; tolereze &#xEE;nt&#xE2;rzieri ...) &#x2022; Din punct de vedere al deschiderii: SCTR proprietar, care depind de caracteristicile sistemului de operare proprietar, arhitectura hard &#x15F;i setul de instruc iuni al calculatorului; costurile cu dezvolt&#x103;rile soft &#x15F;i portarea spre alte platforme sunt foarte mari la aceste sisteme. SCTR deschise, care se bazeaz&#x103; pe standarde industriale pentru microprocesoare, sisteme de operare timp - real, protocoale de comunica ie, magistrale de interfa are; costul sistemelor este mai mic, datorit&#x103; disponibilit&#x103; ii pachetelor de programe, u&#x15F;urin ei de integrare &#x15F;i utilizare, independen a de platforme hard proprietar, etc. &#x2022; Din punct de vedere al arhitecturii: SCTR centralizate, &#xEE;n care procesoarele sunt localizate &#xEE;ntr-un singur nod din sistem iar timpul de comunicare &#xEE;ntre procese este neglijabil &#xEE;n raport cu timpul lor de execu ie; un sistem multiprocesor cu memorie partajat&#x103; este un exemplu de sistem centralizat. SCTR distribuite, &#xEE;n care procesoarele sunt distribuite &#xEE;n diverse locuri din sistem iar timpul de comunicare &#xEE;ntre procesele de pe diferite procesoare nu este neglijabil comparativ cu timpul lor de execu ie; un exemplu de astfel de sistem este o re ea local&#x103; de calculatoare. 1.2 Elementele unui SCTR Se va considera ca exemplu o instala ie pentru &#xEE;nc&#x103;lzirea aerului [Stu88] (figura 1.2-1). Un ventilator sufl&#x103; aer c&#x103;tre un element de &#xEE;nc&#x103;lzire, dirijarea f&#x103;c&#xE2;ndu-se printr-o conduct&#x103;. La ie&#x15F;irea din aceasta este amplasat un termistor care formeaz&#x103; un bra al unui circuit punte de m&#x103;sur&#x103;. Ie&#x15F;irea amplificat&#x103; a 1-7
• 8. acestui circuit este propor ional&#x103; cu temperatura &#x15F;i este o tensiune continu&#x103; &#xEE;n domeniul 0..10 V care poate fi m&#x103;surat&#x103; &#xEE;n punctul B. Valoarea curentului electric prin elementul de &#xEE;nc&#x103;lzire poate fi modificat&#x103; printr-o unitate de control tiristorizat&#x103;. Comanda acestei unit&#x103; i se face cu o tensiune continu&#x103; &#xEE;n domeniul 0..10V &#xEE;n punctul A. Debitul Element de &#xEE;nc&#x103;lzire termistor Motor on/off flux aer Sens rota ie Control motor Unitate tiristorizat&#x103; Total deschis Punte de m&#x103;sur&#x103; motor Ventilator Poten iometru Temperatura masurat&#x103; Semnal "Pozi ie curent&#x103; alimentare de la 0 la 10V obturator" Obturator A aspira ie aer M&#x103;surare ie&#x15F;ire Total manual &#xEE;nchis automat Panou operator Control intrare aer Control element de &#xEE;nc&#x103;lzire Man LED stare LED-uri stare (vent. elem. P/O, obt. &#xEE;nc&#x103;lzire &#xEE;nchis/deschis) ON/OFF Control Control manual &#xEE;nc&#x103;lzire manual aspira ie aer LED Auto/Man Fig. 1.2-1 Monitorizarea &#x15F;i controlul unei instala ii de &#xEE;nc&#x103;lzire aer 1-8
• 9. aerului poate fi modificat prin intermediul unui obturator care este ac ionat de un motor reversibil. Motorul lucreaz&#x103; la o vitez&#x103; constant&#x103; iar pornirea sau oprirea sa poate fi comandat&#x103; de un semnal numeric (0 sau 1) &#x2013; aplicat la circuitul de control al motorului. Tot la acest circuit de control se aplic&#x103; un semnal numeric pentru a comanda sensul de rota ie. La obturator este ata&#x15F;at un poten iometru de pe care se poate culege o tensiune propor ional&#x103; cu pozi ia obturatorului iar pozi iile &#x201E;total &#xEE;nchis&#x201D; sau &#x201E;total deschis&#x201D; ale acestuia sunt detectate cu dou&#x103; contacte. Operatorul are la dispozi ie un panou de la care controlul instala iei poate fi comutat pe Automat sau Manual. &#xCE;n modul de lucru Manual curentul de pe elementul de &#xEE;nc&#x103;lzire &#x15F;i pozi ia obturatorului (aspira ie aer) pot fi modificate folosind dou&#x103; poten iometre. Exist&#x103; de asemenea comutatoare pentru a opera asupra ventilatorului &#x15F;i elementului de &#xEE;nc&#x103;lzire. Led-urile de pe panou indic&#x103; ventilator pornit/oprit, element de &#xEE;nc&#x103;lzire oprit/oprit, obturator total deschis sau total &#xEE;nchis &#x15F;i stare de func ionare (Automat sau Manual). &#xCE;n modul de lucru Automat prin controlul poten iometrelor poate fi ajustat&#x103; temperatura elementului de &#xEE;nc&#x103;lzire &#x15F;i pozi ia obturatorului. Controlul acestui proces simplu cu ajutorul calculatorului necesit&#x103; monitorizare (urm&#x103;rirea st&#x103;rilor &#x15F;i valorilor), calcule &#xEE;n conformitate cu algoritmul de control &#x15F;i ac ionare. &#xCE;n figura 1.2-2 se prezint&#x103; o schem&#x103; a sistemului de conducere cu calculator a instala iei de &#xEE;nc&#x103;lzire aer: Monitorizarea presupune ob inerea informa iilor despre starea curent&#x103; a procesului. &#xCE;n exemplul prezentat aceasta se realizeaz&#x103; prin intermediul semnalelor analogice precum temperatura aerului &#x15F;i pozi ia obturatorului, prin intr&#x103;rile numerice de la pozi iile extreme ale obturatorului precum &#x15F;i prin semnale de CALCULATOR Intr&#x103;ri numerice CAN CNA Ie&#x15F;iri numerice Spre panou Total operator inchis Total Direc ie On/off deschis Intrare de la Pozi ie Circuit de Control motor puntea de obturator &#xEE;nc&#x103;lzire m&#x103;sur&#x103; Panou operator MAN / AUTO Element de &#xEE;nc&#x103;lzire Termistor Ventilator motor Fig. 1.2-2 Sistem de conducere cu calculator a instala iei de &#xEE;nc&#x103;lzire aer stare &#x2013; modul de lucru, motor pornit, &#xEE;nc&#x103;lzitor pornit etc.. Calculele sunt necesare pentru reglarea permanent&#x103; a temperaturii elementului de &#xEE;nc&#x103;lzire &#xEE;n corela ie cu temperatura aerului la ie&#x15F;ire. Reglarea se poate face &#xEE;n func ie de temperatura dorit&#x103; prin intermediul obturatorului &#x15F;i prin elementul de &#xEE;nc&#x103;lzire. Calculele se refer&#x103; &#x15F;i la rezolvarea unor situa ii conflictuale (interbloc&#x103;ri): 1-9
• 10. &#x2022; &#xEE;nc&#x103;lzirea rezisten ei nu se poate face dac&#x103; ventilatorul este oprit; &#x2022; comanda automat&#x103; nu se poate face dac&#x103; operatorul a trecut &#xEE;n mod de lucru manual iar comanda manual&#x103; nu se poate face dac&#x103; modul de lucru este automat. Ac ionarea presupune: &#x2022; furnizarea unei tensiuni pentru controlul elementului de &#xEE;nc&#x103;lzire &#xEE;n conformitate cu temperatura necesar&#x103; la ie&#x15F;ire; &#x2022; comanda ie&#x15F;irilor numerice pentru START/STOP motor, direc ia de rotire; &#x2022; aprinderea ori stingerea ledurilor de la panou. Programele (task-urile) de ac ionare &#x15F;i monitorizare programeaz&#x103; dispozitive de interfa &#x103; precum convertor analog-numeric (CAN), convertor numeric-analogic (CAN), intr&#x103;ri numerice &#x15F;i ie&#x15F;iri numerice. Schema general&#x103; este prezentat&#x103; &#xEE;n figura 1.2-3: CALCULATOR Dispozitive I / O standard Dispozitive de Dispozitive intrare din de ie&#x15F;ire spre INTERFE E CU PROCESUL proces proces PROCES Fig. 1.2-3 Sistem generalizat de conducere procese Fiecare dintre tipurile de dispozitive necesit&#x103; soft care s&#x103; opereze asupra lor. Ne vom referi la acest soft &#xEE;n continuare ca task-uri de intrare/ie&#x15F;ire (I/E). &#xCE;n figura 1.2-4 se prezint&#x103; un sistem de control cu calculatorul care include interfe e hard &#x15F;i soft: 1-10
• 11. Dispozitivele de intrare &#x15F;i softul aferent furnizeaz&#x103; informa ii pentru a crea o imagine intern&#x103; a intr&#x103;rilor din CALCULATOR Imaginea Taskuri de control intern&#x103; a procesului Imaginea Imaginea ie&#x15F;irii intr&#x103;rii Taskuri de intrare Taskuri de ie&#x15F;ire Dispozitive de intrare Dispozitive de ie&#x15F;ire spre din proces proces PROCES Fig. 1.2-4 Sistem de control generalizat care prezint&#x103; interfe e hard &#x15F;i soft proces. Imaginea intr&#x103;rii este format&#x103; din e&#x15F;antioane prelevate din semnalele din proces astfel &#xEE;nc&#xE2;t fenomenul de la intrare s&#x103; poate fi reconstituit f&#x103;r&#x103; distorsiuni. Ea este un instantaneu al st&#x103;rii procesului care trebuie actualizat: &#x2022; periodic (ciclic), la intervale de timp stabilite pre-execu ie sau &#x2022; sporadic, la modificarea st&#x103;rii unor m&#x103;rimi discrete sau la modificarea valorii unor m&#x103;rimi continue &#xEE;n afara unui interval admisibil. Imaginea ie&#x15F;irii reprezint&#x103; valori rezultate &#xEE;n urma aplic&#x103;rii algoritmului de calcul. Aceasta este actualizat&#x103; periodic de c&#x103;tre task-urile de control, intervalul de timp aferent perioadei fiind suficient de mic pentru a actualiza corect imaginea ie&#x219;irii. Task-urile de ie&#x15F;ire transfer&#x103; datele din imaginea ie&#x219;irii c&#x103;tre proces, sincronizat cu task-urile de control, ac ion&#xE2;nd asupra acestuia astfel &#xEE;nc&#xE2;t comportamentul s&#x103;u s&#x103; corespund&#x103; imaginii ie&#x219;irii. 1-11
• 12. Acest model simplu de sistem de control descris &#xEE;mparte task-urile de realizat &#xEE;n trei grupe: &#x2022; task-uri de intrare in proces; &#x2022; task-uri de ie&#x15F;ire spre proces; &#x2022; task-uri de control. Comunicarea cu operatorul este tratat&#x103; &#xEE;n schem&#x103; ca parte a task-urilor de I/E. &#xCE;n multe aplica ii comunica ia reprezint&#x103; &#x15F;i altceva dec&#xE2;t achizi ie de date de la traductoare &#x15F;i senzori ori ac ionarea de comutatoare, valve etc. Sistemele de control pot fi distribuite pe mai multe calculatoare nu toate situate &#xEE;n acela&#x15F;i loc &#x15F;i trebuie asigurat&#x103; comunica ia &#xEE;ntre acestea. Prin urmare, modelul prezentat anterior poate fi extins pentru a include &#x15F;i task-urile de comunica ie (figura 1.2-5). 1-12
• 13. DISPLAY Tastatur&#x103; Imprimant&#x103; Re ea comunica ie INTERFE E Taskuri control Taskuri comunica ie Imaginea intr&#x103;rii Imaginea ie&#x15F;irii Taskuri de intrare Taskuri de ie&#x15F;ire Dispozitive de intrare Dispozitive de ie&#x15F;ire spre din proces proces PROCES Fig. 1.2-5 Sistem de control generalizat, cu taskuri de comunica ie 1.3 Tipuri de SCTR Task-urile de intrare, ie&#x15F;ire &#x15F;i comunica ie au o tr&#x103;s&#x103;tur&#x103; comun&#x103;: sunt conectate prin dispozitive hardware la procese care sunt externe calculatorului. Acestea au o evolu ie proprie &#xEE;n timp, iar calculatorul opereaz&#x103; &#xEE;n timp real dac&#x103; ac iunile pe care le realizeaz&#x103; sunt &#xEE;n concordan &#x103; cu timpul de desf&#x103;&#x15F;urare al proceselor externe. Rela ia poate fi definit&#x103; &#xEE;n termeni referitori la timpul care s-a scurs sau la momentul actual din cursul unei zile &#xEE;n care caz se spune despre sisteme c&#x103; sunt bazate pe ceas. De asemenea, rela ia se poate defini &#xEE;n termeni referitori la evenimente, cum ar fi, de exemplu, &#xEE;nchiderea unui contactor, &#xEE;n care caz se spune despre sisteme c&#x103; sunt bazate pe evenimente. Exist&#x103; de asemenea o a treia categorie, cea a sistemelor interactive &#xEE;n care rela ia dintre ac iunile din calculator &#x15F;i &#xEE;ntregul sistem este definit&#x103; &#xEE;n termeni mult mai largi. &#xCE;n aceste sisteme este esen ial ca setul de ac iuni din calculator s&#x103; se realizeze &#xEE;ntr-un interval de timp predeterminat. Majoritatea task- urilor de comunicare fac parte din aceast&#x103; categorie. 1-13
• 14. Task-urile de control, de&#x15F;i nu sunt direct conectate la evenimente externe, trebuie s&#x103; opereze de asemenea &#xEE;n timp real, rezultatele calculelor trebuind s&#x103; respecte limite de timp impuse. 1.3.1 Sisteme bazate pe ceas Aceste sisteme opereaz&#x103; pe baza unor constante de timp ale procesului; valorile acestora pot fi de exemplu de ordinul orelor, pentru procese chimice sau de ordinul milisecundelor pentru aparatura de bord a avioanelor. Pentru controlul &#xEE;n bucl&#x103;, rata de actualizare a imaginii procesului (prelevarea de e&#x15F;antioane din proces) este dependent&#x103; de constantele de timp ale procesului controlat; cu c&#xE2;t constanta de timp este mai mic&#x103;, frecven a de e&#x15F;antionare este mai mare. Sistemul utilizat pentru control trebuie sincronizat cu timpul real sau cu timpul natural &#x15F;i trebuie s&#x103; fie capabil s&#x103; realizeze opera iile de m&#x103;surare, control &#x15F;i ac ionare periodic, intervalul de timp asociat cu perioada fiind dependent de constantele de timp ale procesului. Sincronizarea se ob ine de obicei prin ad&#x103;ugarea la SCTR a unui ceas denumit &#xEE;n mod uzual ceas timp - real (Real-Time Clock &#x2013;RTC). O ie&#x15F;ire de la RTC se utilizeaz&#x103; ca &#x15F;i comand&#x103; pentru &#xEE;ntreruperea opera iilor curente ale calculatorului la intervale de timp fixate. Ca r&#x103;spuns la &#xEE;ntreruperi, sistemul planific&#x103; &#x15F;i lanseaz&#x103; &#xEE;n execu ie task-uri de intrare, ie&#x15F;ire, sau control. Task-urile pot fi grupate pentru controlarea diferitelor p&#x103;r i ale procesului, pentru care constantele de timp pot fi diferite. Planificarea execu iei task-urilor se face periodic, &#xEE;n func ie de aceste constante. Cea mai mic&#x103; perioad&#x103; de execu ie care poate fi planificat&#x103; este egal&#x103; cu rezolu ia RTC; prin num&#x103;rarea &#xEE;ntreruperilor de ceas trebuie s&#x103; poat&#x103; fi calculate cu precizie perioadele de lansare a tuturor task- urilor. &#xCE;n mod frecvent &#xEE;ntreruperea de la ceas este utilizat&#x103; &#x15F;i pentru a calcula data &#x15F;i timpul (ceas &#x15F;i calendar). Multe sisteme dau impresia c&#x103; sunt bazate pe ceas deoarece afi&#x15F;eaz&#x103; data &#x15F;i ora. Acest lucru nu este relevant. Pentru ca un sistem s&#x103; fie un SCTR bazat pe ceas el trebuie s&#x103; se sincronizeze cu procese externe calculatorului. 1.3.2 Sisteme bazate pe evenimente (senzori) &#xCE;n unele sisteme ac iunile sunt declan&#x15F;ate nu la anumite intervale de timp, ci ca reac ie la evenimente externe. Exemplu: pornirea unei instala ii de &#xEE;nc&#x103;lzire ca urmare a sc&#x103;derii temperaturii sub o anumit&#x103; valoare. Sistemele bazate pe evenimente sunt &#xEE;n multe situa ii utilizate pentru indicarea unor condi ii de semnalizare preventiv&#x103; sau alarmare &#x15F;i pentru startarea ac iunilor necesare de &#xEE;ntreprins &#xEE;n astfel de situa ii. Exemple: oprirea &#xEE;nc&#x103;lzirii unui cazan la dep&#x103;&#x15F;irea pragului de alarmare asociat presiunii, declan&#x15F;area alarmei &#x15F;i a instala iei de stins incendiu la detectarea prezen ei fumului sau la cre&#x15F;terea temperaturii etc. &#xCE;n mod uzual, pentru sistemele bazate pe evenimente &#xEE;n specifica ii se include &#x15F;i cerin a referitoare la timpii de r&#x103;spuns la evenimente. Astfel de sisteme utilizeaz&#x103; de regul&#x103; &#xEE;ntreruperile externe pentru a informa sistemul de calcul de apari ia evenimentului; &#xEE;n sistemele simple se utilizeaz&#x103; de multe ori polling-ul &#x2013; citirea periodic&#x103; a senzorilor - pentru a detecta apari ia evenimentelor. 1.3.3 Sisteme interactive Acoper&#x103; o gam&#x103; larg&#x103; de aplica ii precum rezerv&#x103;ri de locuri, automate bancare etc. Cerin ele timp - real sunt &#xEE;n mod uzual exprimate &#xEE;n termeni referitori la timpul mediu de r&#x103;spuns care s&#x103; nu dep&#x103;&#x15F;easc&#x103; un anumit interval (de exemplu timpul mediu de r&#x103;spuns pentru un bancomat nu trebuie s&#x103; dep&#x103;&#x15F;easc&#x103; 10 secunde). R&#x103;spunsul este determinat de starea intern&#x103; a elementului de prelucrare, nu de procese externe acestuia. 1.3.4 Definirea SCTR Termenul timp - real se poate aplica la sisteme &#xEE;n care: 1. Ordinea calculelor este determinat&#x103; de trecerea timpului ori de evenimente externe calculatorului. 1-14
• 15. 2. Rezultatele ob inute depind de valoarea variabilei timp. Cel mai frecvent sunt evocate &#xEE;n literatura de specialitate dou&#x103; categorii de sisteme: &#x2022; sistemele care pot avea un timp mediu de execu ie care este mai mic dec&#xE2;t un interval maxim specificat - constr&#xE2;ngerile de timp real sunt &#x201E;flexibile&#x201D; (Soft Real Time Systems sau SRT) &#x2022; prelucr&#x103;rile trebuie terminate &#xEE;ntr-un interval maxim de timp pentru fiecare situa ie &#xEE;n parte (sistemul trebuie s&#x103; se mi&#x15F;te rapid) - constr&#xE2;ngerile de timp real sunt &#x201E;rigide&#x201D; (Hard Real Time Systems sau HRT ) A doua categorie impune constr&#xE2;ngeri mult mai severe asupra performan ei sistemului dec&#xE2;t prima categorie. Din aceast&#x103; categorie fac parte a&#x15F;a numitele sisteme &#xEE;ncorporate (&#x201C;Embedded Systems&#x201D;) &#xEE;n care sistemul constituie parte integrant&#x103; a unei ma&#x15F;ini sau instala ii. 1.4 Clasificarea programelor Studii experimentale arat&#x103; clar c&#x103; anumite tipuri de programe, &#xEE;n particular acelea care realizeaz&#x103; opera ii timp - real, sunt mult mai dificil de realizat dec&#xE2;t programele obi&#x15F;nuite. Tehnicile de lucru pentru verificarea corectitudinii programelor sunt date &#x15F;i de diferen ele &#xEE;ntre diferitele tipuri de programe. Lucr&#x103;ri teoretice referitoare la tehnicile pentru demonstrarea corectitudinii unui program au permis identificarea a 3 tipuri de programe: &#x2022; secven iale; &#x2022; multitasking; &#x2022; timp - real. 1.4.1 Programele secven iale Ac iunile sunt strict ordonate ca o secven &#x103; &#xEE;n timp. Comportarea unui program depinde numai de efectele instruc iunilor individuale &#x15F;i de ordinea lor. Timpul necesar pentru o anumit&#x103; prelucrare este mereu acela&#x15F;i. Pentru testare se porne&#x15F;te de la urm&#x103;toarele premise: 1. O instruc iune practic define&#x15F;te o ac iune fix&#x103; (static&#x103;) &#xEE;n sistem; 2. Oricare dintre ac iunile programului produc secven e statice de evenimente. 1.4.2 Programe multitasking Difer&#x103; de cele secven iale prin aceea c&#x103; opera iile care trebuie realizate opera iile care trebuie realizate nu sunt executate neap&#x103;rat ca o secnven &#x103; continu&#x103; &#xEE;n timp.. Mai mult, opera iile se pot desf&#x103;&#x15F;ura concurent. Astfel, un program poate fi construit dintr-un num&#x103;r de p&#x103;r i numite &#x201E;procese&#x201D; sau &#x201E;task&#x201D;-uri care: &#x2022; luate separat, sunt compuse din secven e de instruc iuni; &#x2022; se execut&#x103; concurent cu alte task-uri; &#x2022; comunic&#x103; cu alte task-uri prin memorie partajat&#x103;, semnale de sincronizare, mesaje, cutii po&#x15F;tale... Testarea presupune acelea&#x15F;i premise ca la programele secven iale, cu unele deosebiri: &#x2022; Task-urile pot fi testate separat numai dac&#x103; variabilele fiec&#x103;rui task sunt distincte. Dac&#x103; variabilele sunt partajate, posibila concuren &#x103; la resurse poate suspenda execu ia p&#xE2;n&#x103; la eliberarea acestora; &#x2022; Cerin ele de sincronizare cu alte task-uri fac ca timpul de execu ie a secven ei de instruc iuni pentru fiecare task s&#x103; nu poat&#x103; fi determinat cu precizie de c&#x103;tre procedurile de validare - timpul de execu ie a task-urilor depinde &#x15F;i de modul de execu ie a procedurilor de sincronizare&#x219; 1-15
• 16. &#x2022; Prioritatea de lansare &#xEE;n execu ie: timpul de executie al task-ului este influen at &#x219;i de intervalul de timp &#xEE;n care execu ia sa este suspendat&#x103; atunci c&#xE2;nd procesorul execut&#x103; alte task-uri cu prioritate mai mare. 1.4.3 Programe timp - real Un program timp - real difer&#x103; de tipurile anterioare de programe prin aceea c&#x103; pe l&#xE2;ng&#x103; faptul c&#x103; ac iunile sale nu sunt disjuncte &#xEE;n timp, secven a ac iunilor sale nu este determinat&#x103; doar de proiectant, ci &#x219;i de evenimentele din mediul exterior. Acestea sunt declan&#x15F;ate de condi ii din afara calculatorului &#x15F;i nu pot fi f&#x103;cute s&#x103; respecte, de exemplu, regulile de sincronizare dintre task-uri! Un program timp - real poate fi &#xEE;mp&#x103;r it &#xEE;n task-uri, dar comutarea dintre acestea nu a&#x15F;teapt&#x103; neap&#x103;rat dup&#x103; un semnal intern de sincronizare, deoarece ceea ce se &#xEE;nt&#xE2;mpl&#x103; &#xEE;n mediul extern nu poate fi &#xEE;nt&#xE2;rziat. &#xCE;n programul timp - real, &#xEE;n contrast cu celelalte tipuri de programe, timpul actual asociat cu o ac iune este un factor esen ial &#xEE;n procesul de validare. Mijloacele de determinare a corectitudinii execu iei difer&#x103; fundamental de mijloacele asociate programelor secven iale sau multitasking. Multe limbaje de programare folosite uzual nu posed&#x103; mecanisme pentru realizarea aplica iilor timp - real, iar programatorul trebuie s&#x103; &#x15F;i le creeze singur. De asemenea, instrumentele de testare utilizate &#xEE;n mod curent pentru validarea programelor nu func ioneaz&#x103; corect &#xEE;n aplica ii timp - real. Chiar dac&#x103; exist&#x103; limbaje de programare pentru aplica ii timp - real, acestea sunt elaborate pentru anumite tipuri de ma&#x15F;ini/sisteme de operare, portarea pe alte platforme hard/soft necesit&#xE2;nd eforturi nu tocmai neglijabile. Aceasta determin&#x103; un cost al aplica iei mult mai ridicat, iar &#xEE;n multe situa ii lipsa unor mijloace de dezvoltare &#x219;i testare accesibile este &#xEE;n contrast evident cu necesitatea unor aplica ii fiabile. Au fost realizate sisteme de operare de TR, dar datorit&#x103; efortului mare necesar pentru realizarea lor &#x15F;i a pie ei relativ limitate, acestea au fost completate &#x15F;i cu module specifice sistemelor de operare de uz general; exemple de SOTR timp - real : QNX, LYNX, VxWorks, RT Linux, eCOS. Uneori, se obi&#x15F;nuie&#x15F;te ca pentru aplica ii timp - real s&#x103; fie realizate de proiectan ii de aplica ii executive de timp real dedicate, care implementeaz&#x103; algoritmi de planificare &#x15F;i sincronizare proiecta i &#xEE;n func ie de aplica ie. 1.5 Concluzii &#xCE;n acest capitol au fost prezentate elemente introductive referitoare la SCTR. Acestea sunt o categorie distinct&#x103; de sisteme de calcul. Pentru dezvoltarea aplica iilor timp - real, proiectan ii acestora trebuie s&#x103; aib&#x103; cuno&#x15F;tin e despre: &#x2022; procesul sau domeniul c&#x103;ruia i se adreseaz&#x103; aplica ia; &#x2022; senzori &#x15F;i elemente de execu ie; &#x2022; structura &#x15F;i performan ele elementelor de prelucrare; &#x2022; tehnici de interfa are cu lumea real&#x103;; &#x2022; sistemul de comunica ii de date; &#x2022; sisteme de operare timp-real &#x15F;i algoritmi de planificare; &#x2022; proiectare software; &#x2022; limbaje de programare; &#x2022; proiectarea algoritmilor de control; &#x2022; algoritmi de prelucrare a semnalelor. 1-16
• 17. 2 SCTR PENTRU CONTROLUL PROCESELOR INDUSTRIALE 2.1 Tipuri de procese &#xCE;n func ie de modul &#xEE;n care sunt efectuate prelucr&#x103;rile, procesele industriale sau de laborator pot fi de tipul: &#x2022; pe loturi (batch processes); &#x2022; continue; &#x2022; de laborator (sau de test); Termenul de prelucrare &#xEE;n loturi este utilizat pentru descrierea proceselor &#xEE;n care o secven &#x103; de opera ii determin&#x103; producerea unor serii rezultate &#x15F;i &#xEE;n care secven a este apoi repetat&#x103; pentru producerea unor alte serii de rezultate. Astfel de prelucr&#x103;ri se &#xEE;nt&#xE2;lnesc de exemplu &#xEE;n sistemele de proces care controleaz&#x103; laminoare. &#xCE;ntre dou&#x103; lans&#x103;ri &#xEE;n produc ie ale unui lot se modific&#x103; datele despre produs dar secven a de opera ii r&#x103;m&#xE2;ne practic aceea&#x15F;i. Caracteristica proceselor pe loturi este timpul necesar preg&#x103;tirii pentru produc ie. Acesta se nume&#x15F;te timp de setup &#x15F;i &#xEE;n multe sisteme de acest gen este important raportul dintre timpul de setup &#x15F;i timpul de operare efectiv&#x103;. Termenul continuu este folosit pentru procesele &#xEE;n care produc ia este men inut&#x103; pentru o lung&#x103; perioad&#x103; de timp f&#x103;r&#x103; &#xEE;ntreruperi (luni sau chiar ani). Caracteristicile produselor care trebuie ob inute &#xEE;n sistemele continue se schimb&#x103; din mers (exemplu: produc ia de energie electric&#x103;). Termenul de sisteme de laborator se refer&#x103; la acele procese care &#xEE;n mod curent sunt controlate de c&#x103;tre operator. Acestea constau &#xEE;n utilizarea calculatorului pentru a controla experimente complexe sau echipamente complexe supuse test&#x103;rii. Exemplu: standuri pentru &#xEE;ncercarea traductoarelor, standuri pentru testarea motoarelor electrice, experimente &#xEE;n medicin&#x103;, etc. Indiferent de tipul procesului controlat, calculatorul de proces execut&#x103; una sau mai multe dintre opera iile: &#x2022; controlul secven ial al proceselor; &#x2022; controlul &#xEE;n bucl&#x103;; &#x2022; supervizarea proceselor; &#x2022; interfa a om-ma&#x15F;in&#x103;. &#x2022; &#xEE;nregistrarea datelor; &#x2022; analiza datelor. 2.2 Opera ii realizate de c&#x103;tre sistemele pentru controlul proceselor 2.2.1 Controlul secven ial al proceselor De&#x15F;i controlul secven ial apare &#xEE;n cea mai mare parte a proceselor, el este totu&#x15F;i predominant la procesele de produc ie pe loturi. Controlul secven ial este utilizat mai mult &#xEE;n procesele &#xEE;n care opera iile se refer&#x103; la amestecul unor materii prime &#xEE;n anumite condi ii impuse. Pe l&#xE2;ng&#x103; controlul secven ial, calculatorul realizeaz&#x103; frecvent &#x15F;i controlul continuu &#xEE;n bucl&#x103; &#xEE;nchis&#x103; pentru reglarea unor parametri precum temperatura, presiunea, nivelul, debitul etc. 2-17
• 18. 2.2.2 Controlul &#xEE;n bucl&#x103; (Direct Digital Control) &#xCE;n astfel de sisteme calculatorul este interfa at cu procesul ca &#xEE;n figura 2.2.2-1: Supraveghere cu calculator &#x15F;i/sau uman&#x103; Val.de referin &#x103; Val. m&#x103;surate r Calculator de proces (controller) m Proces condus Ie&#x15F;iri Intr&#x103;ri y x Fig. 2.2.2-1 Control &#xEE;n bucl&#x103; &#xEE;nchis&#x103; &#xCE;n aceste sisteme calculatorul este o component&#x103; critic&#x103; &#x15F;i trebuie luate m&#x103;suri pentru a garanta ca &#xEE;n cazul unei proaste func ion&#x103;ri a acestuia procesul va r&#x103;m&#xE2;ne &#xEE;ntr-o stare stabil&#x103;. Algoritmii de control utiliza i depind de aplica ie. Cei mai folosi i sunt algoritmii care pleac&#x103; de la algoritmul analogic de control cu 3 termeni (propor ional+integral+derivativ - PID). Ecua ia &#xEE;n domeniul timpului pentru controller-ul PID ideal este [Stu88]: &#xF8EE; 1 de(t ) &#xF8F9; m(t ) = K c &#xF8EF;e(t ) + &#x222B; e(t )dt + Td &#xF8FA; (1) &#xF8F0; Ti dt &#xF8FB; unde e(t)=r(t)-y(t), cu y(t) &#x2013; variabila m&#x103;surat&#x103; la ie&#x15F;ire, r(t) - variabila de referin &#x103; (set-point), e(t) - eroarea. Kc este factorul de amplificare global al controller-ului, Ti este constanta de timp de integrare iar Td constanta de timp a ac iunii derivative. Acest algoritm poate fi exprimat &#x15F;i &#xEE;n alte forme. De exemplu, ac iunea derivativ&#x103; este &#xEE;n mod frecvent neutilizat&#x103; sau uneori de/dt este &#xEE;nlocuit prin dy/dt pentru a evita diferen ierea variabilei de referin &#x103; etc. Algoritmul poate fi implementat soft utiliz&#xE2;nd o ecua ie echivalent&#x103; pentru (1). Astfel, dac&#x103; intervalul de e&#x15F;antionare pentru calcule este T secunde, atunci pot fi utilizate aproxim&#x103;rile 2-18
• 19. de e &#x2212; ek &#x2212;1 n |k = k si &#x222B; e(t ) dt = &#x2211; e k T dk T k =0 Ecua ia de control devine &#xEE;n acest caz &#xF8EE; e &#x2212; en &#x2212;1 1 n &#xF8F9; mn = K c &#xF8EF;Td n T + en + Ti &#x2211; e T &#xF8FA; (2) k &#xF8F0; k =0 &#xF8FB; Dac&#x103; se fac &#xEE;nlocuirile K p = Kc T Ki = Kc Ti Td Kd = Kc T ecua ia (2) poate fi exprimat&#x103; ca un algoritm de forma s n = s n &#x2212;1 + en (3) mn = K p en + K i s n + K d (en &#x2212; en &#x2212;1 ) unde sn este suma erorilor. Algoritmul PID nu este singurul algoritm pentru control &#xEE;n bucl&#x103;, dar este cel mai utilizat, datorit&#x103; simplit&#x103; ii &#x15F;i a faptului c&#x103; este adecvat pentru peste 90% dintre problemele de control. Un controller simplu PID utiliz&#xE2;nd algoritmul dat de ecua iile 3 poate fi programat &#xEE;n C astfel: 2-19
• 20. &#x2026; # define KPVAL 1.0 # define KIVAL 0.8 # define KDVAL 0.3 #define FALSE 0 #define TRUE 1 float s, kp, ki, kd, en, enold, mn; unsigned char stop; extern float can(void);/*func ie care achizitioneaza de la convertorul analog numeric, calculeaza si returneaza valoarea erorii e; este dependenta de hardware utilizat.*/ extern void cna(float mn);/* func ie care primeste la intrare corectia (valoarea de actionare) si o transmite la convertorul numeric - analogic*/ void task_PID(void){ &#x2026; stop = FALSE; s = 0.0; kp = KPVAL; ki = KIVAL; kd = KDVAL; enold = can(); /* bucla de control*/ while (!stop){ en = can(); /* adc returnraza valoarea erorii actuale*/ s = s+en;/* suma pentru integrala*/ mn = kp*en + ki*s + kd * (en - enold); cna(mn); enold = en; } &#x2026; } Pozi ionarea variabilei stop pentru oprirea task-ului se face din exterior, de exemplu ca urmare a ac iunii operatorului. Acest exemplu este o abordare simplificat&#x103; referitoare la implementarea algoritmului. O serie de al i factori, precum ie&#x15F;irea parametrilor din limite, rata de e&#x15F;antionare pentru achizi ia datelor, caden a &#xEE;n care sunt ac ionate ie&#x15F;irile, filtr&#x103;rile intr&#x103;rilor etc., trebuie lua i &#xEE;n considerare. De asemenea, &#xEE;n algoritm nu se ine cont de cerin a obligatorie ca variabila de control mn s&#x103; fie calculat&#x103; sincronizat cu &#x201E;timpul real&#x201D;. Astfel, rata de e&#x15F;antionare - vezi formula (2) &#x2013; depinde de viteza de calcul a echipamentului pe care ruleaz&#x103; programul. Pentru o operare corect&#x103;, este nevoie de mijloace de fixare a intervalului de timp pentru calcul la valoarea T. Acest lucru se face prin metode care vor fi prezentate ulterior. 2.2.3 Supervizarea proceselor Utilizarea calculatorului pentru controlul proceselor a dus la diversificarea tipurilor de activit&#x103; i care se pot realiza, deoarece sistemele cu calculator pot s&#x103; controleze opera iile unei instala ii &#x15F;i &#xEE;n paralel s&#x103; furnizeze informa ii pentru ingineri sau manageri &#xEE;n diverse moduri, prin intermediul interfe ei om-ma&#x15F;in&#x103;. Un exemplu de instala ie care se preteaz&#x103; la supervizarea cu ajutorul calculatorului este prezentat&#x103; &#xEE;n figura 2.2.3-1. 2-20
• 21. Furnizare materie prim&#x103; Abur TP TP Traductor presiune Recirculare solutie Vaporizatoare Produs concentrat Fig. 2.2.3-1 Supervizarea unei instala ii de vaporizare (reproducere din [Stu88]) 2-21
• 22. &#xCE;n acest proces, dou&#x103; vaporizatoare sunt interconectate &#x15F;i &#xEE;n fiecare se introduce o solu ie care prin evaporarea apei trebuie s&#x103; &#xEE;&#x15F;i m&#x103;reasc&#x103; concentra ia &#xEE;n substan &#x103; util&#x103;. &#xCE;nc&#x103;lzirea se face la primul vaporizator cu abur care este furnizat printr-un schimb&#x103;tor de c&#x103;ldur&#x103; conectat la acesta, iar la al doilea vaporizator se utilizeaz&#x103; aburul rezultat din primul vaporizator. Pentru a realiza o evaporare maxim&#x103;, presiunea &#xEE;n vaporizatoare trebuie s&#x103; fie c&#xE2;t mai mare posibil, respect&#xE2;nd &#xEE;ns&#x103; m&#x103;surile de siguran &#x103; &#xEE;n exploatare. Totu&#x15F;i, este necesar&#x103; o coordonare &#xEE;ntre cele dou&#x103; vaporizatoare: dac&#x103; primul func ioneaz&#x103; la capacitatea maxim&#x103;, poate furniza at&#xE2;t de mult abur &#xEE;nc&#xE2;t s&#x103; dep&#x103;&#x15F;easc&#x103; limitele de siguran &#x103; pentru al doilea. O schem&#x103; de supervizare pentru acest proces va fi proiectat&#x103; s&#x103; opereze asupra celor dou&#x103; instala ii astfel &#xEE;nc&#xE2;t s&#x103; ob in&#x103; rezultatele cele mai bune, &#xEE;n condi ii de siguran &#x103;. Algoritmii de supervizare vizeaz&#x103; ansamblul procesului &#x15F;i se execut&#x103; &#xEE;n timp real, &#xEE;n paralel cu opera iunile curente din proces. Cele mai multe dintre aplica iile de supervizare a proceselor permit inginerilor &#x15F;i operatorilor s&#x103; cunoasc&#x103; st&#x103;rile instala iilor &#x15F;i s&#x103; intervin&#x103; &#xEE;n timp real. &#xCE;n unele sisteme complexe sunt implemen ati la acest nivel &#x15F;i algoritmi de control destina i optimiz&#x103;rii. Complexitatea lor depinde de tipul procesului: este o mare diferen &#x103; de exemplu &#xEE;ntre procesul de evaporare prezentat mai sus &#x15F;i supervizarea procesului &#xEE;ntr-o central&#x103; electric&#x103; nuclear&#x103;. 2.2.4 Interfa a om-ma&#x15F;in&#x103; Foarte importante &#xEE;n SCTR pentru controlul proceselor sunt facilit&#x103; ile furnizate operatorilor de proces, inginerilor &#x15F;i managerilor. Un operator de proces trebuie s&#x103; aib&#x103; la dispozi ie mijloace simple &#x15F;i clare pentru interven ia &#xEE;n instala ii sau echipamente. El trebuie s&#x103; poat&#x103; schimba valorile variabilelor de referin &#x103;, s&#x103; fie informat rapid despre condi iile de alarmare, s&#x103; poat&#x103; ac iona asupra elementelor de execu ie direct de la dispozitivul de intrare. Operatorii utilizeaz&#x103; console dedicate, care au de obicei o tastatur&#x103; special&#x103;, unul sau mai multe monitoare &#x15F;i imprimant&#x103;. Pe monitoare se prezint&#x103; func ionarea instala iilor prin intermediul schemelor sinoptice, sunt afi&#x15F;ate evenimentele legate de proces &#x15F;i de func ionarea sistemului, se prezint&#x103; informa ii despre modul de func ionare al buclelor de reglare etc. O mare parte din eforturile de proiectare &#x15F;i programare este dedicat&#x103; dezvolt&#x103;rii de aplica ii destinate oper&#x103;rii cu mare u&#x15F;urin &#x103; &#x15F;i prezent&#x103;rii c&#xE2;t mai sugestive a informa iilor (prin scheme sinoptice, instrumente vizuale etc). 2.2.5 Responsabilit&#x103; ile inginerului de sistem Inginerul de sistem are ca responsabilitate configurarea aplica iei pentru a controla procesul, pentru a oferi operatorilor informa iile necesare &#x15F;i pentru a crea &#x15F;i actualiza &#xEE;n timp real baze de date cu informa ii necesare analizei ulterioare, cu evenimentele care au ap&#x103;rut &#xEE;n instala ii etc. Cu alte cuvinte, inginerul responsabil de sistem trebuie s&#x103; aib&#x103; posibilitatea: &#x2022; s&#x103; defineasc&#x103; modul de achizi ie de date &#x15F;i de ac iune &#xEE;n proces; &#x2022; s&#x103; seteze constantele pentru scanare, filtrare, limite de alarmare &#x15F;i ac ionare etc.; &#x2022; s&#x103; defineasc&#x103; buclele de reglare, eventual modul de cascadare a controller-elor destinate regl&#x103;rii &#x15F;i de conectare cu alte elemente din schema de control; &#x2022; s&#x103; poat&#x103; s&#x103; regleze modul de achizi ie &#x15F;i control prin selectarea amplific&#x103;rilor celor mai potrivite; &#x2022; s&#x103; defineasc&#x103; &#x15F;i s&#x103; programeze procedurile de control necesare pentru operarea automat&#x103;; &#x2022; s&#x103; determine &#x15F;i s&#x103; implementeze schemele de supraveghere. 2-22
• 23. Software-ul trebuie s&#x103; pun&#x103; la dispozi ia inginerului mijloacele necesare pentru a face aceste lucruri. &#xCE;n acest scop, au fost realizate medii de dezvoltare a aplica iilor de proces precum: WinCC, Monitor PRO, Genesys, InTouch, SL/GMS, PVSS II, ActivWare, MicroSCADA etc. 2.3 Structuri de sisteme pentru controlul proceselor industriale 2.3.1 Sisteme de control centralizate Odat&#x103; cu reducerea costurilor calculatoarelor s-a extins utilizarea sistemelor de control cu calculator. Primele sisteme (anii 1960...1970) constau dintr-un singur calculator cu o capacitate suficient&#x103; pentru a &#xEE;ndeplini toate func iile unui proces. Acesta era conectat la un set de interfe e cu procesul. Semnalele de la traductoare &#xEE;n astfel de sisteme sunt aduse &#xEE;ntr-un singur loc (o camer&#x103;) pentru a fi conectate la interfe e. Dezavantajul unei astfel de solu ii, pe l&#xE2;ng&#x103; consumul mare de cabluri, este c&#x103; defectarea calculatorului afecteaz&#x103; &#xEE;ntregul sistem. Implementarea buclelor de control &#xEE;n sistemele centralizate pune probleme legate de disponibilitatea calculatorului central &#x2013; nefunc ionarea acestuia era echivalent&#x103; cu blocarea &#xEE;ntregului proces. &#xCE;n anii '70 s-a trecut la implementarea buclelor de reglare cu regulatoare analogice, care primeau valorile de setpoint de la calculatorul central. &#xCE;n cazul defect&#x103;rii calculatorului, regulatoarele continuau func ionarea &#xEE;n regim de lucru local. &#xCE;n anii '70-80, ca urmare a sc&#x103;derii pre ului calculatoarelor, pentru cre&#x15F;terea toleran ei la defecte &#xEE;n aplica iile industriale critice erau frecvent utilizate sisteme de calculatoare duble ( figura 2.3.1-1). Periferice standard Management Calculator A Calculator B Comutator Bloc de control Interfe e Proces Fig. 2.3.1-1 Sistem cu calculatoar dublu Comutarea &#xEE;ntre cele dou&#x103; calculatoare poate fi manual&#x103; sau automat&#x103;. C&#xE2;nd este necesar&#x103; comutarea automat&#x103; comutatorul devine o component&#x103; critic&#x103;. De asemenea, programarea &#x15F;i problemele de testare &#x15F;i control sunt foarte complicate. 2-23
• 24. 2.3.2 Sisteme ierarhizate Au o larg&#x103; r&#x103;sp&#xE2;ndire &#xEE;n domeniile unde se iau decizii centralizat. &#xCE;ntr-un sistem ierarhizat o celul&#x103; este implicat&#x103; &#xEE;n luarea deciziei &#xEE;n felul urm&#x103;tor (Fig. 2.3.2-1): Informa ii Comenzi Nivel superior Constr&#xE2;ngeri Constr&#xE2;ngeri Acela&#x15F;i nivel Luarea deciziei Informa ii Informa ii Informa ii Comenzi Nivel inferior (provenite de la nivelul inferor) Fig. 2.3.2-1 Func ia de fabricare ierarhic&#x103; a deciziilor Fiecare element de decizie presupune recep ionarea unor comenzi de la nivelul superior &#x15F;i transmiterea informa iilor &#xEE;napoi la acest nivel. Pe baza informa iei recep ionate de la elementele de pe nivelul inferior precum &#x15F;i pe baza corec iilor sau constr&#xE2;ngerilor impuse de elementele de pe acela&#x15F;i nivel se transmit comenzi la elementele de pe nivel inferior. O structur&#x103; ierarhic&#x103; cu mai multe celule poate fi asimilat&#x103; cu o piramid&#x103; ca &#xEE;n figura 2.3.2-2: Fig. 2.3.2-2 Structura ierarhic&#x103; de luare a deciziilor La baza piramidei este necesar un timp de r&#x103;spuns mic, de ordinul msec sau sec. Pe m&#x103;sur&#x103; ce se avanseaz&#x103; spre v&#xE2;rful piramidei timpul de r&#x103;spuns cre&#x15F;te. 2-24
• 25. Un exemplu tipic de sistem ierarhizat este sistemul de produc ie automat&#x103; a unor loturi de produse (figura 2.3.2-3). Acest sistem are 3 niveluri pe care le vom denumi: &#x2022; manager; &#x2022; supervizor; &#x2022; unitate de control. Manager Gestionare resurse Planificare produc ie Evaluare Supervizor Elaborare re ete Secven e de opera ii Coordonare Magistrala de date Unitate de control Unitate de control PROCES Fig. 2.3.2-3 Prelucrarea &#xEE;n loturi utiliz&#xE2;nd un sistem ierarhic Se utilizeaz&#x103; calculatoare separate pentru func iile de manageri, supervizori &#x15F;i pentru controlul procesului. La nivelul de manager func iile principale sunt: &#x2022; gestiunea resurselor; &#x2022; programarea produc iei; 2-25
• 26. &#x2022; evaluarea produc iei. Informa iile referitoare la programarea produc iei sunt transferate la nivelul supervizor. Acest nivel are implementate re etele de produc ie &#x15F;i secven ele de opera ii pentru ob inerea produselor. Informa iile despre proces se &#xEE;ncarc&#x103; la ini iativa supervizorului &#xEE;n unit&#x103; ile de control care execut&#x103; opera iile individuale. &#xCE;n timpul execu iei, supervizorul va primi informa ii despre modul de derulare a fiec&#x103;rui proces &#x15F;i va rezolva orice conflict &#xEE;n disputa asupra resurselor; de asemenea informeaz&#x103; managerul despre rezultat. La nivelul inferior, unit&#x103; ile de control sunt responsabile de opera iile de proces (&#xEE;nchiderea &#x2013; deschiderea de vane, comutatoare, control de temperaturi, viteze, debite, monitorizarea alarmelor) &#x15F;i de informarea nivelului supervizor despre proces. Cele mai multe sisteme ierarhizate necesit&#x103; re ele de calculatoare distribuite, &#xEE;n practic&#x103; cel mai des &#xEE;nt&#xE2;lnite sisteme de proces fiind cele distribuite (fizic &#x15F;i logic) &#x15F;i ierarhizate (&#xEE;n procesul de luare a deciziilor). 2.3.3 Sisteme distribuite Caracteristicile unui sistem distribuit sunt: &#x2022; fiecare unitate poate executa task-uri similare cu celelalte unit&#x103; i de calcul; &#x2022; &#xEE;n caz de defectare a unei unit&#x103; i, atributele acesteia pot fi realizate de alt&#x103; unitate. &#xCE;n sistemele distribuite, munca e divizat&#x103; &#x15F;i executat&#x103; de mai multe calculatoare. Aceasta implic&#x103; dificult&#x103; i &#xEE;n realizarea modulelor hard &#x15F;i a pachetelor soft pentru c&#x103; task-urile trebuie alocate mai multor procesoare, care partajeaz&#x103; sau nu anumite resurse. &#xCE;n realitate, cele mai multe sisteme moderne utilizeaz&#x103; structuri distribuite &#x15F;i ierarhizate. &#xCE;n acestea, task-urile de m&#x103;sur&#x103;, ac ionare, control &#xEE;n bucl&#x103;, comunicare cu operatorul, supervizare etc. sunt distribuite &#xEE;ntre mai multe calculatoare. Acestea sunt interconectate printr-un canal de comunicare de mare vitez&#x103; (FIELDBUS sau LAN), de-a lungul c&#x103;ruia calculatoarele sunt interconectate &#xEE;ntr-o structur&#x103; ierarhic&#x103; de comand&#x103; (figura 2.3.3-1). Sistemele distribuite &#x15F;i ierarhizate au urm&#x103;toarele avantaje: &#x2022; Capacitatea de calcul cre&#x15F;te prin partajarea task-urilor &#xEE;ntre diferite procesoare. De exemplu, la nivelul 1 se pot face mult mai bine filtr&#x103;ri, scal&#x103;ri, m&#x103;sur&#x103;ri, ac ion&#x103;ri, nu pentru c&#x103; acestea sunt opera ii foarte complicate, ci mai ales pentru c&#x103; se aplic&#x103; unui num&#x103;r mare de m&#x103;rimi. De asemenea, calculele complicate pentru control &#xEE;n bucl&#x103; se fac de c&#x103;tre procesoare separate, cresc&#xE2;nd viteza de lucru &#x15F;i fiabilitatea. Nivelul 2 preia datele &#x15F;i trimite concluziile prin intermediul mediului de comunica ie. &#x2022; Sistemul este mai flexibil dec&#xE2;t cu un singur procesor; se pot face mai u&#x15F;or modific&#x103;ri prin ad&#x103;ugarea de noi module. De asemenea, se pot utiliza standardiz&#x103;rile specifice comunica iilor de date &#xEE;n re ea. &#x2022; Defectarea unui modul nu afecteaz&#x103; &#xEE;ntreg sistemul. Pentru izolarea defec iunii se poate trece u&#x15F;or &#xEE;n alt mod de lucru (manual de exemplu) apoi se face &#xEE;nlocuirea. &#x2022; Se pot face u&#x15F;or modific&#x103;ri hard &#x15F;i soft deoarece este mai u&#x15F;or s&#x103; modifici un singur modul dec&#xE2;t &#xEE;ntreg sistemul. &#x2022; Calea de comunicare serial&#x103; permite ca echipamentele s&#x103; fie distribuite pe o arie geografic&#x103; mai mare, nemaifiind astfel necesare cabluri care s&#x103; aduc&#x103; semnalele &#xEE;ntr-o singur&#x103; &#xEE;nc&#x103;pere. 2-26
• 27. &#x2022; Nivel 6 Management Nivel 5 Microcomputer Supervizor Nivel 4 Microcomputer Comunica ie operator Nivel 3 Microcomputer Control secven ial al proceselor Nivel 2 Microcomputer Control &#xEE;n bucl&#x103; Nivel 1 Controller Controller Controller Achizi ie/ac ionare PROCES Fig. 2.3.2-1 Sistem distribuit &#x15F;i ierarhizat 2-27
• 28. 2.3.4 Piramida automatiz&#x103;rii SCTR distribuite &#x15F;i ierarhizate &#xEE;nlocuiesc tot mai frecvent sistemele clasice de automatizare. Nivelurile ierarhice de automatizare pot fi reprezentare prin piramida automatiz&#x103;rii (figura 2.3.4-1). Volum de Sincronizare Timp real date f. mare NU Management Lent (min sau ore) mare NU Supervizare mediu NU mare Celula de baz&#x103; mediu DA/NU Control procese mic DA Achizi ie date &#x219;i msec ac ionare Nivel ierarhic Nivel ierarhic Fig. 2.3.4-1 Piramida automatiz&#x103;rii Parametrii lua i &#xEE;n considerare sunt: nivelul ierarhic, cerin ele timp - real, volumul de date gestionat de elementele de prelucrare &#x15F;i cerin ele de sincronizare. 2-28
• 29. 3 STRUCTURA ECHIPAMENTELOR UTILIZATE IN SCTR 3.1 Structura hardware general&#x103; a calculatorului de proces De&#x15F;i cele mai multe calculatoare pot fi utilizate pentru aplica ii timp - real, nu toate sunt adaptate pentru a r&#x103;spunde cerin elor acestora. Cerin ele se refer&#x103; &#xEE;n mod uzual la necesitatea ata&#x15F;&#x103;rii la calculator a unor dispozitive care s&#x103; permit&#x103; comunicarea &#xEE;n timp real cu mediul exterior &#x15F;i cu utilizatorii. Pentru calculatoarele dotate cu dispozitivele necesare &#xEE;n aplica iile timp - real pentru controlul proceselor se folose&#x15F;te &#xEE;n mod curent denumirea de calculatoare de proces. O caracteristic&#x103; a acestora este concep ia modular&#x103;: ele permit ad&#x103;ugarea la elementul de prelucrare a unor module externe, &#xEE;n particular dispozitive specializate de intrare/ie&#x15F;ire. Dispozitivele tipice de interfa are ale unui calculator sunt prezentate &#xEE;n figura 3.1- 1 3-29
• 30. 1 4 Memorie UC Dispozitive Interfe e de Intrare/iE&#x15F;ire standard 6 &#xCE;ntreruperi, RTC HDD 3 Streamer In Semnale Imprimant&#x103; numerice Out Display, tastatur&#x103; In Semnale &#xEE;n impulsuri 5 Dispozitive operator Out proces P CAN Panou R operator O C CNA Display E S Canale de telemetrie Alarmare Dispozitive de proces Imprimant&#x103; 2 Dispozitive de comunica ii Fig. 3.1-1 Dispozitive de interfa are tipice 3-30
• 31. 3.1.1 Unitatea central&#x103; Unit&#x103; i centrale similare cu ale sistemelor de uz general (de ex. PC cu 80x86), de cele mai multe ori &#xEE;n construc ie industrial&#x103;, sunt utilizate frecvent &#xEE;n calculatoarele de proces. &#xCE;n sistemele &#xEE;ncorporate sau &#xEE;n sistemele distribuite pentru controlul proceselor sunt disponibile echipamente numite PLC (Programable Logic Controller) sau RTU (Remote Terminal Unit). Astfel de echipamente sunt produse de firme precum SIEMENS, SCHNEIDER Electric, GENERAL ELECTRIC FANUC, ABB s.a. Unit&#x103; ile centrale ale acestor echipamente sunt realizate cu microprocesoare de diverse tipuri: procesoare de uz general - 80x86, Motorola 68xxx (16/32 bi i); controllere programabile (calculatoare &#xEE;ntr-un singur cip) - 8051, 8048, HC11, 80C552 (8 bi i); 80C166 (16 bi i) etc. 3.1.2 Dispozitive de comunica ie Dispozitivele de comunica ie interfa eaz&#x103; calculatorul de proces cu mediile de comunica ie &#xEE;n re ele industriale sau &#xEE;n re ele de uz general. Exist&#x103; o mare varietate de dispozitive &#x15F;i medii de comunica ie, selectate &#xEE;n func ie de aplica ie, condi ii tehnice existente, cerin e de performan &#x103; etc.: &#x2022; dispozitive pentru comunica ie serial&#x103; RS232, RS485, RS422; &#x2022; dispozitive pentru comunica ie &#xEE;n LAN; &#x2022; dispozitive de comunica ie prin microunde; &#x2022; dispozitive de comunica ie &#xEE;n infraro&#x15F;u, etc. 3.1.3 Dispozitive de proces Dispozitivele de proces sunt de diverse tipuri, &#xEE;n func ie de m&#x103;rimile achizi ionate ori comandate. Aceste dispozitive trateaz&#x103;: &#x2022; I/E numerice &#x2013; valori binare (0 sau 1 logic) pentru fiecare semnal. Se refer&#x103; la m&#x103;rimi de genul pornire/oprire, deschidere/&#xEE;nchidere etc. &#x2022; I/E analogice &#x2013; interfe e care primesc sau genereaz&#x103; semnale analogice continue &#xEE;n curent sau tensiune. Valorile de curent sau tensiune se convertesc &#xEE;n/din unit&#x103; i inginere&#x15F;ti prin module soft care in cont de rela ia dintre domeniul semnalului de I/E &#xEE;n/din calculator &#x15F;i domeniul m&#x103;rimii fizice. Semnalele analogice de intrare provin de la senzori sau traductoare iar cele de ie&#x15F;ire se aplic&#x103; la elemente de ac ionare, instrumente de m&#x103;sur&#x103; analogice etc. &#x2022; I/E &#xEE;n impulsuri &#x2013; o serie de instrumente de m&#x103;sur&#x103; (contoare de energie, integratoare de debit etc.) ofer&#x103; la ie&#x15F;ire impulsuri propor ionale cu m&#x103;rimile m&#x103;surate. De asemenea, unele elemente de execu ie (motoare pas cu pas) necesit&#x103; comanda &#xEE;n impulsuri. Calculatorul trebuie s&#x103; dispun&#x103; &#xEE;n aceste cazuri de interfe e de num&#x103;rare a impulsurilor &#x15F;i respectiv de comand&#x103; &#xEE;n impulsuri. &#x2022; Canale de telemetrie &#x2013; se utilizeaz&#x103; pentru conectarea unor instrumente specializate pentru m&#x103;sur&#x103; &#x15F;i control, aflate la distan &#x103;. &#xCE;n func ie de locul de amplasare, dispozitivele de interfa are cu procesul pot fi pe magistrala intern&#x103; (PLUG- IN) sau pe magistrala extern&#x103; (conectate la calculator prin intermediul re elelor de comunica ie serial&#x103; sau interfe elor paralele). 3.1.4 Dispozitivele standard ale calculatorului Calculatoarele de proces &#xEE;n multe cazuri au &#xEE;n configurare &#x15F;i dispozitive standard uzuale precum discuri, benzi, display, tastatur&#x103;, mouse etc. 3-31
• 32. 3.1.5 Dispozitivele operatorului de proces Operatorul de proces poate utiliza chiar dispozitivele calculatorului. &#xCE;n unele situa ii se utilizeaz&#x103; &#xEE;ns&#x103; console speciale ale operatorului de proces care con in dispozitive de afi&#x15F;are (de obicei display color de mari dimensiuni), de comand&#x103; &#xEE;n proces (panouri de comand&#x103;), de alarmare (HUPA), respectiv pentru listarea unor jurnale de evenimente (imprimante de panou). 3.1.6 Ceasul timp - real (Real Time Clock) RTC este un dispozitiv auxiliar, vital pentru SCTR. &#xCE;n func ie de tipul aplica iei, RTC poate fi un ceas electronic, un ceas generat soft sau un simplu generator de impulsuri cu frecven a precis controlat&#x103; care d&#x103; &#xEE;ntreruperi la intervale de timp programabile. Orice SCTR utilizeaz&#x103; RTC pentru a genera &#xEE;ntreruperi la anumite intervale de timp (de exemplu la PC de aproximativ 18,2 ori pe secund&#x103;). &#xCE;n sistemele &#xEE;n care timpul este foarte important se utilizeaz&#x103; ceasuri digitale care genereaz&#x103; &#xEE;ntreruperi la anumite frecven e, pot &#xEE;ntre ine automat data &#x15F;i ora, alimentarea f&#x103;c&#xE2;ndu-se de la o surs&#x103; de alimentare auxiliar&#x103;. &#xCE;n SCTR, RTC este folosit pentru: &#xEE;ntre inere dat&#x103; &#x15F;i or&#x103;, stabilire intervale de e&#x15F;antioane a procesului, intervale de comunica ii, timeout, memorare date pe disc, afi&#x15F;are pe display a curbelor y(t), elaborare de rapoarte la imprimant&#x103; etc.. Uzual, &#xEE;ntreruperea de la RTC este folosit&#x103; &#x15F;i de c&#x103;tre sistemul de operare timp - real pentru planificarea &#x15F;i dispecerizarea task-urilor. 3.2 Semnale preluate/transmise de SCTR din/c&#x103;tre lumea real&#x103; &#xCE;n mod uzual, calculatorul de proces con ine dispozitive pentru 3 tipuri de semnale &#xEE;n tensiune: analogice, numerice &#x15F;i &#xEE;n impulsuri. Semnalele analogice se deosebesc de celelalte prin aceea c&#x103; amplitudinea lor variaz&#x103; &#xEE;n timp, iar cele numerice sau &#xEE;n impulsuri pot lua numai valori 0 &#x15F;i 1. Distinc ia &#xEE;ntre semnalele numerice &#x15F;i cele &#xEE;n impulsuri const&#x103; &#xEE;n modul de tratare a informa iei &#x15F;i &#xEE;n tipul interfe elor hard utilizate pentru achizi ie. Unui semnal numeric ata&#x15F;at unui canal i se asociaz&#x103; un bit la nivelul interfe ei de achizi ie. Starea de 0 sau 1 a semnalelor numerice este memorat&#x103; static &#xEE;ntr-un bit sau &#xEE;ntr-o grup&#x103; de bi i care se schimb&#x103; &#xEE;n func ie de evolu ia semnalului din lumea real&#x103;. Semnalele &#xEE;n impulsuri sunt memorate sub forma unui num&#x103;r de tranzi ii care au ap&#x103;rut pe semnalul de intrare sau care trebuie generate la ie&#x15F;ire &#xEE;ntr-un interval de timp dat. Semnalele analogice sunt transformate &#xEE;n reprezentare numeric&#x103; prin intermediul CAN (Convertor Analog Numeric). Semnalele analogice de ie&#x15F;ire sunt generate pornind de la valorile numerice prin intermediul CNA (Convertor Numeric Analog). Cele mai multe interfe e de proces accept&#x103; la intrare semnale &#xEE;n domenii unificate de curent sau tensiune: &#x2022; ~0 V pentru 0 logic &#x15F;i ~5V pentru 1 logic la semnalele numerice sau &#xEE;n impulsuri; &#x2022; intrare &#xEE;n curent continuu 4-20mA (uneori &#x15F;i 2 &#x2013;10 mA, 0 &#x2013; 10 mA ) sau &#xEE;n tensiune continu&#x103; 0 &#x2013;10 V, 0-5V, +/-10V, +/-5 V pentru semnalele analogice. Semnalele unificate &#xEE;n curen i sau tensiune au amplitudini suficiente pentru interfe ele din calculator. Uneori &#xEE;ns&#x103;, traductoarele sau senzorii ofer&#x103; la ie&#x15F;ire semnale care nu sunt &#xEE;n curent sau tensiune sau semnale &#xEE;n curent sau tensiune care nu se &#xEE;ncadreaz&#x103; &#xEE;n domeniile unificate. Din acest motiv, sunt necesare module de 3-32
• 33. condi ionare semnale care adapteaz&#x103; semnalele la cerin ele interfe ei din calculator. Acest fel de module sunt utilizate de asemenea &#x15F;i pentru izolarea calculatorului fa &#x103; de tensiunile &#xEE;nalte, pentru filtrarea zgomotelor etc. Semnalele numerice sau analogice de ie&#x15F;ire sunt oferite de interfe ele de ie&#x15F;ire din calculator &#xEE;n domeniile unificate de curent sau tensiune specificate mai sus. &#xCE;n paragraful urm&#x103;tor sunt prezentate detalii referitoare la blocurile func ionale care efectueaz&#x103; transformarea semnalelor din mediul extern &#xEE;n format recunoscut de c&#x103;tre calculator &#x15F;i respectiv transform&#x103; datele din format calculator &#xEE;n semnale c&#x103;tre mediul extern. Pentru sistemele care con in astfel de blocuri func ionale, interconectate &#xEE;ntre ele &#x15F;i cu calculatorul, se va utiliza &#xEE;n continuare denumirea de Sistem de Achizi ie de Date &#x15F;i Control (SADC). 3.3 Blocurile func ionale ale unui SADC Schema bloc &#x15F;i func iile generale ale unui SADC sunt sintetizate &#xEE;n figura 3.3-1 Dispozitive de Mediul Intrare pentru extern Traductoare Condi ionare conversie semnale Analiza Afi&#x15F;are, semnale &#xEE;n format acceptat &#xEE;nregistrare Senzori de calculator Decizii Dispozitive de iE&#x15F;ire pentru conversie date c&#x103;tre proces Mediul exterrn Elemente de execu ie Fig. 3.3-1 Sistem de achizi ie de date &#x15F;i control &#x2013; schema bloc 3.3.1 Conectarea dispozitivelor de I/E la calculatorul gazd&#x103; O parte important&#x103; a oric&#x103;rui SADC este calculatorul gazd&#x103; (host computer). Exist&#x103; multe tipuri de dispozitive (numite uneori &#x201E;module&#x201D;) specializate pentru achizi ie de date &#x15F;i control, care se pot conecta la calculatorul gazd&#x103; &#xEE;n unul dintre urm&#x103;toarele moduri: &#x2022; direct pe magistralele de date/adrese/comenzi ale calculatorului - conectare pe magistrala intern&#x103; sau PLUG-IN; &#x2022; prin intermediul canalelor de comunica ie seriale sau paralele - conectare pe magistrala extern&#x103;. 3-33
• 34. &#xCE;n continuare, termenul &#x201E;sistem&#x201D; va fi utilizat &#xEE;n diverse moduri: un sistem poate include tot ceea ce este necesar pentru achizi ie de date &#x15F;i control, inclusiv calculatorul gazd&#x103;; de asemenea, termenul sistem poate fi utilizat &#x15F;i pentru descrierea unor dispozitive sau subansamble ale unui astfel de sistem, cu toate c&#x103; acestea ar putea fi denumite mai corect subsisteme. 3.3.1.1 Dispozitive pe magistrala intern&#x103; Principalele avantaje ale conect&#x103;rii directe pe magistrala calculatorului gazd&#x103; (de exemplu la PC) sunt: &#x2022; viteza mare de achizi ie &#x15F;i comand&#x103;; &#x2022; costul sc&#x103;zut; &#x2022; dimensiuni mai mici. La aceste sisteme costul este mai redus pentru c&#x103; nu mai este nevoie de incinte &#x15F;i surse de alimentare separate, alimentarea f&#x103;c&#xE2;ndu-se din sursa intern&#x103; a calculatorului gazd&#x103;. Vitezele mari se ob in datorit&#x103; elimin&#x103;rii protocolului de comunica ie &#x15F;i a c&#x103;ilor de comunica ie care fac ca transmisia datelor s&#x103; fie lent&#x103;. Exemplu: Rata de achizi ie a unui SADC folosind interfa a RS 232 la viteza de 9600 bauds este limitat&#x103; la zeci de e&#x15F;antioane / sec. &#xCE;n contrast, SADC ce con in dispozitive pe magistrala intern&#x103; pot achizi iona sute de mii de e&#x15F;antioane pe secund&#x103;. &#xCE;n figura 3.3.1.1-1 se prezint&#x103; schema bloc simplificat&#x103; a unui sistem cu dispozitive pe magistrala intern&#x103;. SADC pe magistrala intern&#x103; con in dispozitive (module) de interfa are ce se conecteaz&#x103; direct pe sloturile Dispozitive ADC + calculator gazd&#x103; BUS &#xB5;C Proces Dispozitive (PC) I/E mag. intern&#x103; Fig. 3.3.1.1-1 Sistem ADC pe magistral&#x103; intern&#x103; disponibile din calculator. Mai mult, exist&#x103; sisteme ce permit ca un singur modul s&#x103; conecteze la calculator mai multe tipuri de semnale de I/E, &#xEE;n mod selectiv. Sistemele moderne includ procesoare de semnal &#x15F;i ofer&#x103; func ii de achizi ie, prelucrare primar&#x103; a datelor, transmisii de date etc. &#xCE;n unele aplica ii un calculator ce dispune de suficiente resurse poate con ine module de achizi ie pe magistrala intern&#x103; &#x15F;i &#xEE;n acela&#x15F;i timp poate fi conectat prin canale de comunica ie seriale sau paralele cu alte SADC sau calculatoare gazd&#x103;. Acela&#x15F;i calculator, pe care se execut&#x103; software de baz&#x103; &#x15F;i de aplica ie adecvate, poate executa concurent func ii de achizi ie, control, analiza datelor, grafic&#x103;, etc. 3.3.1.2 Dispozitive pe magistrala extern&#x103; Acestea sunt de obicei echipamente inteligente, capabile s&#x103; &#xEE;ndeplineasc&#x103; sarcini de achizi ie de date &#x15F;i control &#x15F;i sarcini de comunica ie. La nivel fizic, comunica ia este realizat&#x103; prin interfe e standardizate cablate (RS 232, RS 422, RS 485, IEEE 802.3, IEE 488 (GPIB)...) sau wireless (microunde, infraro&#x15F;u...) Dispozitivele inteligente pe magistrala extern&#x103; sunt la r&#xE2;ndul lor SADC-uri cu module conectate pe magistrala intern&#x103; sau extern&#x103;. 3-34
• 35. Exemple de dispozitive conectate pe magistrala extern&#x103;: &#x2022; calculatoare de proces cu UC compatibil&#x103; IBM PC (cunoscute sub denumirea &#x201E;IPC&#x201D; &#x2013; Industrial PC); &#x2022; echipamente PLC sau RTU cu UC realizate cu microcontrollere (precum cele din familia I80C51, 80C166, MOTOROLA 68000, ZILOG 180) sau microprocesoare de uz general; &#x2022; traductoare/senzori &#x15F;i elemente de execu ie inteligente, realizate cu microcontrollere sau procesoare de semnal. Dispozitiv I/E pe mag. extern&#x103; RS 232 Dispoziti RS 422 ve I/E pe Proces mag. &#xB5;C Calculator intern&#x103; gazd&#x103; RS 485 IEEE 488 LAN Fig. 3.3.1.2-1 &#x2013; SADC cu dispozitive pe magistrala extern&#x103; &#xCE;n figura 3.3.1.2-1 se prezint&#x103; schema bloc a sistemelor conectate pe magistrala extern&#x103;: Posibilitatea de a avea la distan &#x103; SADC permite realizarea unor SCTR distribuite. Re elele care interconecteaz&#x103; mai multe dispozitive pe magistrala extern&#x103; &#x15F;i calculatoare gazd&#x103; se numesc re ele industriale. Pentru re elele industriale cablate, &#xEE;n literatura de specialitate se mai utilizeaz&#x103; &#x15F;i denumirea de fieldbus (magistrala/bus de teren). Exemplu de re ea industrial&#x103;: SADC-urile din sta iile de transformare ale unei companii sunt conectate prin fieldbus-uri RS485 la un dispecerat energetic amplasat &#xEE;n cl&#x103;direa administrativ&#x103;. Aceasta permite ca prin intermediul unor calculatoare gazd&#x103; din re eaua local&#x103; de la dispecerat s&#x103; fie efectuate activit&#x103; i de monitorizare/calcule/ac ionare &#x15F;i supervizare a &#xEE;ntregului proces de gestiune energetic&#x103;. Avantaje ale conect&#x103;rii pe magistrala extern&#x103;: &#x2022; teoretic se poate configura orice sistem, oric&#xE2;t de mare ar fi distribuirea sa &#xEE;n spa iu; &#x2022; SADC pot fi la mare distan &#x103; fa &#x103; de calculatorul gazd&#x103; (sute de m, km...), permi &#xE2;nd astfel amplasarea &#xEE;n apropierea zonei &#xEE;n care se g&#x103;sesc senzorii &#x15F;i elementele de execu ie; &#x2022; SADC degreveaz&#x103; calculatorul gazd&#x103; de sarcinile specifice de achizi ie de date &#x15F;i control; &#x2022; SADC se poate conecta la orice tip de calculator care dispune de interfe e de comunica ie corespunz&#x103;toare. 3.3.2 Semnale din proces, traductoare &#x15F;i condi ionarea semnalelor Deoarece semnalele din lumea real&#x103; sunt de o foarte mare diversitate, sunt necesare dispozitive care s&#x103; simplifice tratarea acestora de c&#x103;tre dispozitivele de conversie &#xEE;n/din format numeric acceptat de c&#x103;tre calculator. Acest lucru se realizeaz&#x103; prin intermediul traductoarelor (senzori), elementelor de execu ie si circuitelor de condi ionare semnale. 3-35
• 36. &#xCE;n continuare se prezint&#x103; cele mai comune semnale din proces &#x15F;i modul &#xEE;n care acestea sunt prelucrate. 3.3.2.1 Tipuri de semnale &#xCE;n general, un SADC accept&#x103; 3 tipuri de semnale &#xEE;n tensiune: &#x2022; analogice; &#x2022; binare (numite uneori &#x15F;i numerice); &#x2022; &#xEE;n impulsuri. Unele traductoare ofer&#x103; semnale &#xEE;n curent, care se convertesc &#xEE;n tensiune pentru a fi m&#x103;surate de sistemul de achizi ie. De&#x15F;i toate semnalele din proces sunt variabile &#xEE;n timp, numai cele analogice &#xEE;&#x15F;i modific&#x103; amplitudinea propor ional cu valoarea m&#x103;rimii de intrare. Semnalele numerice &#x15F;i cele &#xEE;n impulsuri sunt similare din mai mai multe puncte de vedere: ambele au amplitudine constant&#x103; &#x15F;i sunt reprezentate prin cele 2 valori posibile, High &#x15F;i Low. H &#x2192; 2 -:-5V; L &#x2192; 0 -:- 0,8V. Totu&#x15F;i, &#xEE;n proces pot fi semnale numerice de valori mai mari (110V, 220V) &#x15F;i acestea trebuie adaptate la nivelurile TTL precizate mai sus. Distinc ia &#xEE;ntre semnalele numerice &#x15F;i cele de impulsuri const&#x103; &#xEE;n modul de tratare a informa iei &#x15F;i &#xEE;n tipurile de interfe e utilizate. Unui semnal numeric ata&#x15F;at unui SADC i se asociaz&#x103; un bit la nivelul calculatorului. Deoarece semnalele numerice &#xEE;&#x15F;i pot schimba starea cu mare vitez&#x103;, informa ia se p&#x103;streaz&#x103; static &#xEE;ntr-un bit sau un grup de bi i, citi i de pe interfa &#x103; la un anumit moment de timp. &#xCE;n contrast, informa ia &#xEE;n impulsuri se memoreaz&#x103; sub form&#x103; de num&#x103;r de tranzi ii ale st&#x103;rii sau sub forma de rat&#x103; de tranzi ie (Ex.: impulsuri / sec). Semnal analogic +10V Semnal numeric 5V 0 -10V Fig. 3.3.2.1-1 Semnale numerice vs. semnale analogice Semnalele analogice sunt convertite &#xEE;n format calculator prin intermediul convertoarelor analog-numerice (CAN). 3-36
• 38. &#x2022; Tip J &#x2192; combina ie Fe &#x2013; C (Fier &#x2013; Constantan) &#x2022; Tip K &#x2192; combina ie Ch &#x2013; A l (Crom &#x2013; Aluminiu) &#x2022; Tip T &#x2192; combina ie Cu &#x2013; C (Cupru &#x2013; Constantan) TC au pre sc&#x103;zut &#x15F;i volum mic, cu precizie limitat&#x103;, &#xEE;n general &#xEE;n gama 1 &#xF7; 3% indiferent de material sau modul de utilizare. Timpul de r&#x103;spuns este de ordinul a c&#xE2;torva secunde &#x15F;i este necesar&#x103; compensarea fenomenelor de neliniaritate &#x15F;i de jonc iuni multiple. Legea jonc iunii - jonc iunea unui TC genereaz&#x103; o tensiune electromotoare propor ional&#x103; cu temperatura (efectul Seebeck): V=K(t) (1) K = coeficient Seebeck definit pe o jonc iune particular&#x103; metal &#x2013; metal t = temperatura exprimat&#x103; &#xEE;n &#xB0;C Aceast&#x103; tensiune nu se poate m&#x103;sura direct pentru c&#x103; atunci c&#xE2;nd se conecteaz&#x103; un TC la un dispozitiv de m&#x103;sur&#x103; conexiunile ce se fac &#xEE;ntre aparatul de m&#x103;sur&#x103; &#x15F;i traductor creeaz&#x103; un nou circuit termoelectric. Ex.: - s&#x103; conect&#x103;m un voltmetru la un TC tip T (Cu &#x2013; C) (figura 3.3.2.2.1-1) Ji = jonc iunea i, i = [1,3]. Cu J2 Constantan Voltmetru J1 Cu J3 Cu V1 Fig. 3.3.2.2.1-1 M&#x103;surarea temperaturii cu un termocuplu Pentru determinarea temperaturii, se dore&#x15F;te m&#x103;surarea tensiunii V1 &#xEE;n J1 (care este amplasat&#x103; &#xEE;n mediul a c&#x103;rui temperatur&#x103; trebuie m&#x103;surat&#x103;). Dar, prin conectarea voltmetrului s-au format &#xEE;nc&#x103; 2 jonc iuni J2 &#x15F;i J3. Jonc iunea J3 este o jonc iune Cu &#x2013; Cu &#x15F;i nu se creeaz&#x103; o tensiune termoelectromotoare &#x21D2; V3 = 0. J2 este o jonc iune Cu &#x2013; C &#x21D2; tensiunea V2 opus&#x103; ca semn tensiunii V1 (pentru c&#x103; avem Cu-C &#x15F;i nu C-Cu). Ca rezultat pe voltmetru se va citi o tensiune Vv propor ional&#x103; cu diferen a temperaturilor din punctele J1 &#x15F;i J2. Prin urmare nu putem cunoa&#x15F;te temperatura &#xEE;n J1 f&#x103;r&#x103; ca &#xEE;n prealabil s&#x103; cunoa&#x15F;tem temperatura din J2. O modalitate este aceea de a pune J2 &#xEE;ntr-o baie de ghea &#x103; for &#xE2;nd temperatura la 0&#xB0;C. Aceasta define&#x15F;te pe J2 ca pe o jonc iune de referin &#x103;, put&#xE2;nd astfel considera t2 ca o temperatur&#x103; de referin &#x103; tref . &#x21D2; Vv = V1 &#x2013; Vref = K(t1 &#x2013; tref) (2) De notat c&#x103; Vref &#x2260; 0V pentru c&#x103; rela ia Seebeck se bazeaz&#x103; pe scara Kelvin (zero absolut). De asemenea coeficientul K depinde &#x15F;i el de temperatur&#x103;. Exist&#x103; tabele care con in nu numai Vref la orice temperatur&#x103; ci chiar Vv c&#xE2;nd tref=0&#xB0;C. TC Cu-C este un caz special pentru c&#x103; unul dintre fire, cel de Cu, este din acela&#x15F;i metal cu bornele voltmetrului (Cu). S&#x103; consider&#x103;m un caz mai general utiliz&#xE2;nd un TC Fe-C &#x21D2; J3 devine jonc iune Cu-Fe. Se poate ar&#x103;ta c&#x103; dac&#x103; jonc iunea Cu-Fe &#x15F;i Cu-C sunt la aceea&#x15F;i temperatur&#x103;, rezultanta de tensiune este echivalent&#x103; cu a unei singure jonc iuni Fe-C. Aceasta ne permite s&#x103; utiliz&#x103;m rela ia (2) pentru ca ambele 3-38
• 39. jonc iuni sunt din acela&#x15F;i material (Fe-C &#xEE;n acest caz). Este important ca ambele jonc iuni parazite s&#x103; fie la aceea&#x15F;i temperatur&#x103; de referin &#x103;. Revenind la (2) trebuie ar&#x103;tat c&#x103; tref trebuie cunoscut cu precizie pentru calculul lui t1. Se pot utiliza &#xEE;n acest scop alte dispozitive de m&#x103;surare ale temperaturii precum: &#x2022; termistoare; &#x2022; senzori semiconductori; &#x2022; termorezistente. A&#x15F;adar, sub controlul unui calculator opera iile de m&#x103;surare a unui TC devin: 1. m&#x103;surarea lui tref &#x15F;i determinarea (din tabele) a tensiunii echivalente Vref a TC pentru jonc iunea parazit&#x103;; 2. m&#x103;surarea Vv &#x15F;i determinarea V1 (sc&#x103;z&#xE2;nd Vref din Vv); 3. conversia tensiunii V1 &#xEE;n temperatura c&#x103;utat&#x103; t1. Aceast&#x103; procedur&#x103; este cunoscut&#x103; sub numele de &#x201E;compensarea de jonc iune&#x201D;. Se pune problema de ce se utilizeaz&#x103; TC ce necesit&#x103; compensarea de jonc iune &#xEE;n timp ce exist&#x103; dispozitive care nu necesit&#x103; compensare? R&#x103;spunsul este: 1. TC pot fi utilizate pentru m&#x103;surarea unui interval mare de temperaturi 2. Exista avantaje constructive, TC put&#xE2;nd fi construit la dimensiunile dorite, fie prin sudare, fie prin &#xEE;ncapsulare, pentru protec ie folosindu-se diverse tipuri de &#xEE;nveli&#x15F;uri (teci, carcase, etc). La alegerea unui TC se va ine cont de urm&#x103;torii factori: &#x2022; pre ; &#x2022; precizie; &#x2022; posibilit&#x103; i de m&#x103;surare. Exemplu: &#x2022; Tip J Pre sc&#x103;zut Sensibilitate mare Precizie moderat&#x103; (nu pot fi utilizate peste 760 &#xB0;C pentru c&#x103; se decalibreaz&#x103;) &#x2022; Tip K pre moderat; sensibilitate moderat&#x103;; precizie sc&#x103;zut&#x103; &#x15F;i domeniul de m&#x103;sur&#x103; ridicat (pot s&#x103; m&#x103;soare max. 1370 &#xB0;C). &#x2022; Tip T pre moderat; sensibilitate moderat&#x103;; precizie &#xEE;nalt&#x103; (utilizat pentru m&#x103;surarea temperaturilor sc&#x103;zute). 3-39
• 40. Toate TC pot fi utilizate pe baza unor curbe sau tabele standard publicate &#xEE;n cataloage &#xEE;n care exist&#x103; coresponden &#x103; &#xEE;ntre temperatur&#x103; &#x15F;i tensiunea electromotoare generat&#x103;. Termistoare Termistorul este un dispozitiv din oxid metalic sau semiconductor ce &#xEE;&#x15F;i modific&#x103; rezisten a cu temperatura. Are un coeficient de temperatur&#x103; negativ ce ajunge la -4 &#x2013;:- - 8% / &#xB0;C. Exist&#x103; &#x15F;i termistoare cu coeficient pozitiv de temperatur&#x103;. Coeficientul de temperatur&#x103; fiind de c&#xE2;teva % pe &#xB0;C, face posibil&#x103; sesizarea unor varia ii mici de temperatur&#x103; (0,01 &#xB0;C) fa &#x103; de alte dispozitive. Precizia termistoarelor este de 10 ori mai bun&#x103; ca TC, variind &#xEE;ntre +/-0.1&#xB0;C. Dimensiunile mici &#x15F;i Rnominal&#x103; mare constituie avantaje semnificative pentru termistoare. Sunt confec ionate din amestec de Ni, Mn, Co, Fe, Mg, Ti, etc, sintetizate la temperaturi de 1000 &#xB0;C, se &#xEE;ncapsuleaz&#x103; &#xEE;n plastic, metal sau sticl&#x103;. Se pot face m&#x103;sur&#x103;tori &#xEE;n intervalul &#x2013;100 &#xF7; +300 &#xB0;C. Pe l&#xE2;ng&#x103; intervalul limitat de m&#x103;surare trebuie mare aten ie &#xEE;n montarea &#x15F;i m&#xE2;nuirea lor, deoarece sunt foarte fragile. Termorezistente metalice (RTD) Ca &#x15F;i termistoarele RTD se bazeaz&#x103; pe varia ia rezisten ei cu temperatura. Pentru confec ionare se utilizeaz&#x103; Pt, Ni, Wo, Cu, Rd, Ag, etc. Exemplu: Pt100 &#x2192; RTD platin&#x103; 100 (100 este rezisten a firului &#xEE;n ohmi) Intervalul util de temperatur&#x103; pentru RTD cu Pt este &#x2013;180 &#xB0;C &#xF7; + 680 &#xB0;C. De fapt platina este cea mai utilizat&#x103;. RTD au un coeficient de temperatur&#x103; pozitiv &#x15F;i prezint&#x103; o anumit&#x103; neliniaritate. Pentru acurate ea m&#x103;sur&#x103;torii se pot aplica corec ii. (ex.: polinoame de gradul 3 pornind de la tabele de corec ie). Termorezisten ele sunt construite fie cu fir metalic fie cu pelicul&#x103;. Cele cu pelicul&#x103; ofer&#x103; un tr&#x103;spuns mic, pre sc&#x103;zut &#x15F;i o valoare mare a rezisten ei, &#xEE;ns&#x103; fa &#x103; de cele cu fir metalic sunt mai pu in stabile &#xEE;n timp. Construc ia RTD depinde de destina ia lor. Se utilizeaz&#x103; &#xEE;n special &#xEE;n fluide conductoare (ap&#x103;, ulei). Cele mai multe termorezisten e cu Pt au 100 sau 200 ohmi. RTD cu pelicul&#x103; Pt 100 sunt cele mai larg r&#x103;sp&#xE2;ndite. Acestea au sensibilitate de 0,4 ohmi / &#xB0;C &#x15F;i pot fi utilizate la m&#x103;sur&#x103;tori &#xEE;ntre -180&#xB0;C &#xF7; 1000&#xB0;C cu precizie de 0,1 &#xF7; 1 &#xB0;C, dar la unele traductoare speciale se poate ajunge p&#xE2;n&#x103; la 0,01 &#xB0;C. Sunt interschimbabile &#x15F;i au timp de r&#x103;spuns relativ mic. Senzori de temperatur&#x103; jonc iune semiconductor Se mai numesc &#x15F;i senzori cu siliciu (Si). Este format dintr-un circuit electronic care exploateaz&#x103; comportamentul jonctiunii active semiconductoare la variatia temperaturii. Exist&#x103; jonc iuni cu ie&#x15F;iri &#xEE;n curent sau tensiune. &#xCE;n ambele cazuri ie&#x15F;irile sunt direct propor ionale cu temperatura. Ie&#x15F;irea liniar&#x103; este de nivel relativ &#xEE;nalt, ceea ce face interpretarea foarte u&#x15F;oar&#x103;. Cele mai cunoscute tipuri genereaz&#x103; 1&#xB5;A/&#xB0;K (298&#xB5;A la 25&#xB0;C). Acesta poate fi convertit extern &#xEE;ntr-o tensiune utiliz&#xE2;nd o rezisten &#x103; cunoscut&#x103;. Dispozitivele semiconductoare se utilizeaz&#x103; pentru m&#x103;surarea temperaturii &#xEE;n intervalul -50&#xB0;C &#xF7; +150 &#xB0;C. Precizii de 0,5 &#xB0;C sunt comune, dar se pot ob ine &#x15F;i precizii de 0,1 &#xB0;C. Traductoare de presiune, for &#x103;, deformare, pozi ie, deplasare, nivel De&#x15F;i fiecare din ace&#x15F;ti senzori sunt baza i pe principii diferite, semnalele lor de ie&#x15F;ire sunt tensiuni, curen i, impedan e. Aceste semnale se convertesc direct sau indirect &#xEE;n niveluri de tensiune analogice. &#x2022; Traductoarele de presiune: - se &#xEE;mpart &#xEE;n 3 categorii: 3-40
• 42. Caracteristicile de intrare (curent bias, impedan &#x103;, tensiunea de offset, l&#x103;rgimea de band&#x103; etc.) SADC implic&#x103; + - Vout + OPA 104 * R1 * R1 p&#xE2;n&#x103; la 109 ohmi Fig. 3.3.3.1-1 Circuit tampon de intrare anumite limit&#x103;ri referitoare la plaja semnalelor care pot fi m&#x103;surate cu acurate e. Unele traductoare (exemplu: de pH, piezoelectrice etc.) au o impedan &#x103; de ie&#x15F;ire foarte mare. Conectarea acestora direct la SADC (care &#xEE;n mod normal are o impedan &#x103; de intrare moderat&#x103;) poate s&#x103; duc&#x103; la erori de m&#x103;surare. La aceste tipuri de semnale se intercaleaz&#x103; &#xEE;ntre traductor &#x15F;i SADC un amplificator opera ional cu impedan &#x103; de intrare mare, cu rol de circuit tampon &#xEE;ntre semnal &#x15F;i dispozitivul de m&#x103;surare. 3.3.3.2 Conversia curent &#x2013; tensiune Semnalele de ie&#x15F;ire ale senzorilor sunt adesea &#xEE;n curent de 4 &#xF7; 20 mA. &#xCE;nainte de a intra &#xEE;n SADC acestea se convertesc &#xEE;n tensiune printr-un rezistor. + Tin 250 ohmi Vout Fig. 3.3.3.2-1 Conversia curent-tensiune (4-20mA) R1 + Iin -&gt; - Vout=-Iin*R1 + OPA 111 Fig. 3.3.3.2-2 Conversie curent-tensiune pentru curen i foarte mici Se utilizeaz&#x103; R=250 sau 500 ohmi pentru a se face conversia &#xEE;n 1 &#xF7; 5 V sau 2 &#xF7; 10 V. Important este nu valoarea rezisten ei ci stabilitatea acesteia (cu temperatura &#xEE;n special). Tehnica ce utilizeaz&#x103; numai rezisten e pentru a face conversia curent &#x2013; tensiune are limit&#x103;ri. Dac&#x103; de exemplu se dore&#x15F;te utilizarea unui curent de 1uA, este necesar&#x103; o rezisten &#x103; de aproximativ 5 Mohmi. &#xCE;n acest caz apar &#xEE;ns&#x103; 3-42
• 43. erori foarte mari datorate zgomotului &#x15F;i &#xEE;nc&#x103;rc&#x103;rii sistemului de m&#x103;surare. Etajele de intrare &#xEE;n SADC con in dispozitive electronice care creeaz&#x103; curen i mici dar fini i (curen i de polarizare = &#x201E;bias&#x201D;). Ace&#x15F;ti curen i sunt absorbi i de sursa de semnal. De asemenea, ei sunt debita i prin rezisten a de conversie curent &#x2013; tensiune afect&#xE2;nd semnalul ce vine din proces. Acestea sunt motivele pentru care pentru m&#x103;surare nu se mai folose&#x15F;te o singur&#x103; rezisten &#x103;, ci o schem&#x103; inversoare cu AO. Cu astfel de scheme pot fi m&#x103;sura i curen i &#xEE;ncep&#xE2;nd de la 10 pA. 3.3.3.3 Scalarea semnalelor analogice &#xCE;n mod obi&#x15F;nuit intr&#x103;rile CAN sunt la 0 &#xF7; 10 V; 0-5V;+/-5 V; +/-10 V. Dac&#x103; semnalul de intrare este mai mic dec&#xE2;t 1 V, rezolu ia &#x15F;i precizia sunt afectate. &#xCE;n aceste situa ii, este bine s&#x103; se amplifice semnalul &#xEE;naintea CAN. &#xCE;n func ie de caracterul semnalului, &#xEE;n mod uzual se utilizeaz&#x103; amplific&#x103;ri (gain) de 2, 4, 8, 16, 100 &#x15F;i 1000. Multe dintre circuitele ce &#xEE;nglobeaz&#x103; CAN au amplificatoare &#xEE;ncorporate. &#xCE;n alte situa ii este necesar s&#x103; se m&#x103;soare semnale de intrare de 12, 48 sau 100 V. Pentru a aduce aceste semnale &#xEE;n domeniul de intrare al SADC se utilizeaz&#x103; divizoare de tensiune. &#xCE;n cazul divizoarelor este important modul de selectare a rezistoarelor R1 &#x15F;i R2. Alegerea lui R1 mare poate R1 + Vout R2 Vin Vout = Vin * R 2 / (R 1 + R 2) Fig. 3.3.3.3-1 Divizor de tensiune pentru a reduce semnalale de intrare sub 10V introduce limit&#x103;ri de l&#x103; imi de band&#x103; a semnalului datorit&#x103; filtrului trece &#x2013; jos produs de R1 &#x15F;i de o capacitate parazit&#x103; Cp &#xEE;n paralel cu R2. L&#x103; imea benzii poate fi extins&#x103; introduc&#xE2;nd un condensator Cs &#xEE;n paralel cu R1. Valoarea sa trebuie selectat&#x103; astfel &#xEE;nc&#xE2;t R1Cs = R2Cp. &#xCE;n plus ecua ia presupune ca impedan a sursei de semnal s&#x103; fie mic&#x103; &#xEE;n compara ie cu R1 + R2, iar R1 &#x15F;i R2 c&#xE2;t mai mari posibil. 3.3.3.4 Filtrarea Are ca scop eliminarea din m&#x103;rimea m&#x103;surat&#x103; a zgomotelor care o &#xEE;nso esc &#x15F;i care sunt periodice sau neperiodice. Zgomotele provin de obicei din: &#x2022; induc ia semnalelor de frecven &#x103; industrial&#x103; (50Hz, 60Hz, 300Hz) ca urmare a unei vecin&#x103;t&#x103; i &#xEE;ntre cablul de for &#x103; &#x15F;i cel de m&#x103;sur&#x103;; &#x2022; induc ia unor impulsuri provenite din regimuri tranzitorii pe cabluri de for &#x103;. O metod&#x103; de filtrare este medierea datelor achizi ionate, care cre&#x15F;te raportul dintre semnal &#x15F;i zgomot. Datorit&#x103; vitezei &#x15F;i facilit&#x103; ilor oferite de SADC moderne, medierea este u&#x15F;or de implementat. Medierea este cea mai eficient&#x103; pentru reducerea zgomotelor aleatoare periodice (50Hz, 60Hz, etc). Toate tehnicile de filtrare, fie c&#x103; sunt software, fie c&#x103; sunt hardware, sunt create s&#x103; filtreze unele tipuri de zgomote specifice. Firmele de specialitate ofer&#x103; module de condi ionare a semnalelor prev&#x103;zute cu diverse tipuri de filtre. Cele mai comune tipuri sunt reprezentate prin filtre pasive cu 1 &#x15F;i 2 poli , ca &#xEE;n figura 3.3.3.4-1: 3-43
• 44. + R1 + R1 R2 10K 10K C1 C1 C2 2,7&#xB5;F 2,7&#xB5;F A B Fig. 3.3.3.4-1 Filtru trece jos cu 1 (A) sau 2 (B) poli Figura B este un exemplu de circuit bipolar de filtrare pentru mod comun care atenueaz&#x103; zgomote de 60-80 Hz. R R Semnal * intrare C C Spre SADC R R * C C Fig. 3.3.3.4-2 Filtru trece jos cu 2 poli diferen ial Figura 3.3.3.4-2 sugereaz&#x103; un filtru trece jos diferen ial cu 2 poli. * reprezint&#x103; rezisten ele de retur pentru curen ii de polarizare (bias) ai amplificatoarelor din SADC. Rezisten ele &#x15F;i condensatoarele pentru filtrul prezentat trebuie alese cu aten ie, orice neadaptare a atenu&#x103;rii put&#xE2;nd aduce la degradarea rejec iei de mod comun a sistemului. SADC utilizeaz&#x103; tehnici de e&#x15F;antionare a datelor, ceea ce &#xEE;nseamn&#x103; c&#x103;, de&#x15F;i semnalele de intrare sunt continue, citirea lor de c&#x103;tre SADC nu este continu&#x103; (exist&#x103; &#x201E;gap-uri&#x201D; &#xEE;ntre e&#x15F;antioane). La refacerea semnalelor se fac unele &#x201E;presupuneri&#x201D; asupra datelor care exist&#x103; &#xEE;ntre punctele cunoscute. De obicei se folose&#x15F;te interpolarea liniar&#x103;, care traseaz&#x103; linii drepte &#xEE;ntre punctele date (cunoscute). Dac&#x103; interpolarea liniar&#x103; nu este suficient de precis&#x103;, se recurge &#xEE;n mod logic la cre&#x15F;terea ratei de e&#x15F;antionare care are ca efect mic&#x15F;orarea gap-urilor dintre e&#x15F;antioane prin ad&#x103;ugarea de date citite. Nyquist a fundamentat foarte solid din punct de vedere teoretic aspectele legate de e&#x15F;antionarea datelor. &#xCE;n termeni simpli, criteriul lui Nyquist referitor la e&#x15F;antionare se formuleaz&#x103; astfel: 3-44
• 45. Dac&#x103; un semnal continuu cu banda limitat&#x103; de frecven &#x103; nu con ine componente de frecven &#x103; mai mare dec&#xE2;t o frecven &#x103; maxim&#x103; specificat&#x103;, semnalul original poate fi reconstituit f&#x103;r&#x103; distorsiuni din e&#x15F;antionare dac&#x103; este e&#x15F;antionat la o rat&#x103; mai mare de cel pu in 2 ori frecven a maxim&#x103; specificat&#x103;. Dac&#x103; rata de e&#x15F;antionare este mai mic&#x103; dec&#xE2;t cea specificat&#x103; &#xEE;n teorema lui Nyquist, pot fi trase concluzii eronate despre semnalul de intrare. Exemplu: A B Fig. 3.3.3.4-3 Alias datorat unei rate mici de e&#x15F;antionare &#xCE;n figura 3.3.3.4-3, la A se prezint&#x103; un semnal variabil &#xEE;n timp; dac&#x103; acesta este e&#x15F;antionat cu o frecven &#x103; mai mic&#x103; dec&#xE2;t este necesar (momentele e&#x15F;antion&#x103;rii sunt sugerate cu linie &#xEE;ntrerupt&#x103;) se ob ine semnalul de la B care are o varia ie &#xEE;n timp mult mai lent&#x103; dec&#xE2;t a semnalului ini ial supus e&#x15F;antion&#x103;rii, deci reprezint&#x103; un semnal de frecven &#x103; diferit&#x103; fa &#x103; de cea ini ial&#x103;. Acest al doilea semnal reprezint&#x103; un a&#x15F;a-zis semnal &#x201E;alias&#x201D; al semnalului ini ial. &#xCE;n acest fel se ob ine prin refacere o informa ie fals&#x103;. Utilizarea unei rate de e&#x15F;antionare care nu ine cont de frecven a cea mai mare care are semnifica ie &#xEE;n semnalul de intrare denatureaz&#x103; datele de intrare. Dac&#x103; semnalul de intrare con ine zgomot de frecven e mai mari dec&#xE2;t ale semnalului, e&#x15F;antionarea sa cu o frecven &#x103; determinat&#x103; de frecven a sa maxim&#x103; (&#x15F;i nu a zgomotului), duce la crearea unui &#x201E;alias&#x201D; al zgomotului care nu mai poate fi eliminat printr-o filtrare ulterioar&#x103;. De exemplu, e&#x15F;antionarea la o secund&#x103; a unui semnal peste care se moduleaz&#x103; zgomotul de 50 Hz face imposibil&#x103; &#xEE;nl&#x103;turarea zgomotului - pentru &#xEE;nl&#x103;turarea acestui zgomot prin filtrare ulterioar&#x103;, e&#x15F;antionarea ar trebui f&#x103;cut&#x103; la o frecven &#x103; de cel pu in 100 HZ (e&#x15F;antionare la max. 10 ms). Solu ia pentru &#xEE;nl&#x103;turarea acestui fenomen este e&#x15F;antionarea la o rat&#x103; corespunz&#x103;toare. Dac&#x103; nu se cunosc componentele de frecven &#x103; care pot cauza violarea criteriului lui Nyquist, trebuie amplasate filtre de intrare &#x201E;anti-aliasing&#x201D; pentru a limita frecven ele &#xEE;nalte datorate zgomotelor. La alegerea filtrelor se va ine cont ca acestea s&#x103; nu atenueze semnalul util sau, &#xEE;n alte cazuri, s&#x103; nu fac&#x103; filtrare par ial&#x103; (s&#x103; lase anumite zgomote 3-45
• 46. s&#x103; treac&#x103;). Exist&#x103; publica ii de specialitate care fundamenteaz&#x103; matematic diverse tipuri de filtr&#x103;ri &#x15F;i prezint&#x103; algoritmii de calcul. &#xCE;n aplica ii pentru controlul proceselor, filtrarea zgomotelor provenite de la frecven ele industriale (inducerea unor semnale de 50Hz de exemplu) &#xEE;n timp real se poate face utiliz&#xE2;nd filtrare soft prin algoritm de mediere de tip &#x201E;fereastr&#x103; glisant&#x103;&#x201D;; num&#x103;rul de e&#x15F;antioane din fereastra pe care se face medierea depinde de frecven a semnalului de zgomot ce trebuie filtrat (vezi criteriul lui Nyquist) &#x15F;i trebuie s&#x103; con in&#x103; e&#x15F;antioane aferente cel pu in unei perioade. Algoritmul gestioneaz&#x103; un buffer circular cu valorile ce intr&#x103; &#xEE;n medie, la fiecare e&#x15F;antionare elimin&#xE2;nd cea mai veche valoare &#x15F;i introduc&#xE2;nd &#xEE;n buffer pe cea mai nou&#x103;. F&#x103;c&#xE2;nd media e&#x15F;antioanelor din buffer, se ob ine valoarea m&#x103;rimii de intrare neafectat&#x103; de zgomotul industrial. Dac&#x103; se dore&#x15F;te o refacere c&#xE2;t mai fidel&#x103; a semnalului util de la intrare, este bine ca e&#x15F;antionarea s&#x103; fie la o frecven &#x103; de 5 &#x2013; 10 ori mai mare dec&#xE2;t cea mai mare component&#x103; de frecven &#x103; din semnalul achizi ionat. 3.3.3.5 Izolare analogic&#x103; Este utilizat&#x103; &#xEE;n unele aplica ii pentru a proteja oamenii &#x15F;i echipamentele de contactele cu tensiunea &#xEE;nalt&#x103;. Alte aplica ii necesit&#x103; &#xEE;ntreruperea buclelor de mas&#x103; sau &#xEE;ndep&#x103;rtarea semnalelor mari de mod comun. Exemplu: Dac&#x103; un termocuplu este conectat pe rotorul unui motor, el poate fi la 240V fa &#x103; de mas&#x103;. Totu&#x15F;i tensiunea de ie&#x15F;ire a TC poate fi numai de 30 mV. Cei 30 mV reprezint&#x103; un semnal diferen ial, deoarece se aplic&#x103; la intr&#x103;rile + &#x15F;i - ale canalului de achizi ie. Pe de alt&#x103; parte, cei 240 V apar nu ca un semnal diferen ial ci ca un K C Spre SADC Fig. 3.3.3.5-1 Cuplare capacitiv&#x103; &#x2013; condensator flotant semnal comun la ambele intr&#x103;ri + &#x15F;i &#x2013; ale SADC. Tensiunea de mod comun este referit&#x103; la masa sursei de alimentare a sistemului. Canalele standard de intr&#x103;ri analogice pot accepta numai p&#xE2;n&#x103; la 10 V semnal de mod comun pentru a r&#x103;m&#xE2;ne liniare. De asemenea, tensiuni mai mari de 30 V pot distruge componentele etajelor de intrare. &#xCE;n exemplul dat cei 240 V reprezint&#x103; un real pericol. De aceea, trebuie s&#x103; fie utilizat un izolator analogic care s&#x103; separe semnalul diferen ial util de tensiunea de mod comun nedorit&#x103;. Pentru izolare se utilizeaz&#x103; 3 tipuri de module de condi ionare: cuplare capacitiv&#x103;, cuplare prin transformator &#x15F;i cuplare optic&#x103;. &#x2022; Cuplare capacitiv&#x103; &#x2013; se utilizeaz&#x103; izolatorul denumit capacitate flotanta (&#x201C;flying capacitor"). Acesta utilizeaz&#x103; un releu mecanic, comandat de SADC, care pune un condensator succesiv &#xEE;n paralel cu procesul, respectiv cu intrarea SADC. Are pre sc&#x103;zut dar este mai pu in fiabil datorit&#x103; releului mecanic utilizat. &#x2022; Cuplare prin transformator &#x2013; este cea mai performant&#x103;. Asigur&#x103; precizii ridicate &#x15F;i tensiuni mari de str&#x103;pungere. Are pre ridicat &#x15F;i se utilizeaz&#x103; acolo unde se justific&#x103; precizie mare. &#xCE;n aplica iile medicale aceast&#x103; cuplare este cea mai folosit&#x103;, deoarece asigur&#x103; cea mai bun&#x103; protec ie. &#x2022; Cuplare optic&#x103; &#x2013; este cea mai des folosit&#x103; &#xEE;n sistemele industriale de achizi ie. Izolatorii optici ofer&#x103; performan e ridicate la pre sc&#x103;zut. Firmele de specialitate ofer&#x103; o gam&#x103; larg&#x103; de module pentru izolare, 3-46
• 47. fie individual pentru fiecare canal, fie prin &#x201E;panouri de borne&#x201D; utilizate pentru mai multe canale simultan. 3.3.3.6 Protec ie la supratensiune C&#xE2;nd un sistem poate fi obiectul unei intr&#x103;ri de &#xEE;nalt&#x103; tensiune accidental&#x103;, este necesar&#x103; protejarea echipamentului pentru a nu fi distrus. Intr&#x103;rile de &#xEE;nalt&#x103; tensiune pot fi produse de fulgere, c&#xE2;mpuri magnetice, electricitate static&#x103;, contact electric cu linii de tensiune &#xEE;nalt&#x103;, etc. Firmele care produc module de condi ionare ofer&#x103; re ele de protec ie dintre care &#xEE;n figura 3.3.3.6-1 se dau schemele a dou&#x103; tipuri. 1K, 1W A 15V MOV &#xBC;A B &#x223C; 15V MOV Fig. 3.3.3.6-1 Re ele reprezentative de protec ie a intr&#x103;rii MOV = metal oxid varistor (&#xEE;n loc de MOV se pot utiliza 2 diode Zenner) Circuitul A poate tolera intr&#x103;ri continue p&#xE2;n&#x103; la 45V. C&#xE2;nd suprasarcina dispare, calea de semnal revine automat la normal. Circuitul B este utilizat pentru supratensiuni continue, p&#xE2;n&#x103; la 280V. Dac&#x103; supratensiunea se men ine, se arde siguran a pentru a proteja circuitul de protec ie. Rezisten a (sau siguran a la B) &#x15F;i MOV formeaz&#x103; un limitator de tensiune pentru a asigura ca supratensiunea s&#x103; nu ajung&#x103; la intr&#x103;rile SADC. MOV reac ioneaz&#x103; foarte rapid pentru a absorbi impulsurile rapide de energie &#xEE;nalt&#x103;. Condensatoarele ajut&#x103; la suprimarea tranzi iilor de &#xEE;nalt&#x103; frecven &#x103;. Valorile condensatoarelor vor fi c&#xE2;t mai mari, deoarece zgomotele pot dep&#x103;&#x15F;i 1kV. De asemenea condensatoarele se vor pozi iona c&#xE2;t mai aproape posibil de punctul de intrare a semnalului &#xEE;n sistem. 3.3.3.7 Scalarea intr&#x103;rilor/ie&#x15F;irilor numerice 3-47
• 48. Pentru semnale numerice se poate utiliza circuitul urm&#x103;tor pentru a produce semnale TTL. Condensatorul de 10pF este inclus pentru a ajuta la men inerea componentelor de &#xEE;nalt&#x103; frecven &#x103; prezente 10K TTL Vin=(10-50)V 4,7 V Zenner C 10 pF Fig. 3.3.3.7-1 &#x2013; Circuit de conversie semnale numerice mari &#xEE;n TTL &#xEE;n semnalul de intrare. Sistemele de achizi ie necesit&#x103; tranzi ia rapid&#x103; a frontului semnalului de intrare pentru a asigura o opera ie sigur&#x103; (de obicei tranzi ii &#x2264; 10 microsecunde). Dac&#x103; o anumit&#x103; intrare nu este suficient de rapid&#x103; (tranzi ia sa), se utilizeaz&#x103; circuite cu triggere Schmidt &#xEE;n etajul dinaintea SADC. C&#xE2;nd ie&#x15F;irile numerice comand&#x103; sarcini mai mari dec&#xE2;t TTL, acestea sunt convertite prin tranzistoare de putere &#x15F;i triacuri pentru a comanda curen i sau tensiuni &#xEE;nalte (alternative sau continui). 3.3.3.8 Izolarea numeric&#x103; Pentru intr&#x103;rile / ie&#x15F;irile numerice este necesar&#x103; izolarea &#xEE;ntre SADC &#x15F;i proces. Uzual, modulele pentru m&#x103;rimi numerice se separ&#x103; de semnalele din c&#xE2;mp, prin izolare optic&#x103; (cu optocuploare). Firmele de specialitate ofer&#x103; panouri de condi ionare pentru un num&#x103;r de intr&#x103;ri &#x15F;i / sau ie&#x15F;iri, care asigur&#x103; at&#xE2;t izolarea c&#xE2;t &#x15F;i conversia semnalelor &#xEE;n nivel TTL. 3.3.3.9 Detectarea contactelor +5V R1 R2 Spre SADC C1 contacte externe Fig. 3.3.3-11 Detectarea contactelor C&#xE2;nd se face interfa a cu relee sau contactoare care au contacte mecanice, trebuie inut cont de faptul c&#x103; datorit&#x103; oxid&#x103;rii contactelor sau altor imperfec iuni, pot apare niveluri TTL parazite care pot fi interpretate eronat. Pentru reducerea oxid&#x103;rii contactelor este necesar&#x103; trecerea unui curent prin contactele de releu. De asemenea, pentru ob inerea nivelurilor TTL la intrarea SADC atunci c&#xE2;nd se &#xEE;nchid/deschid contactele, trebuie ca prin circuit s&#x103; fie injectat un curent (numit &#x15F;i curent &#x201E;pull-up&#x201D;). Schema din fig. 3.3.3-11 poate fi utilizat&#x103; at&#xE2;t pentru curentul &#x201E;pull-up&#x201D; c&#xE2;t &#x15F;i pentru reducerea efectelor oxid&#x103;rii. Pentru un curent de 20 mA, R1 = 250 ohmi iar R2C1 este un filtru pentru eliminarea oscila iilor eronate. 3-48
• 49. C&#xE2;nd contactul este deschis, tensiunea la intrarea SADC este 5V iar c&#xE2;nd contactul este &#xEE;nchis tensiunea este 0V. 3.3.3.10 Comanda releelor Se face un circuit de forma prezentat&#x103; &#xEE;n figura 3.3.3.10-1: +5V De la ie&#x15F;irea TTL a D1 SADC Releu exterior Fig. 3.3.3.10-1 Circuit de comand&#x103; a unui releu D1 protejeaz&#x103; circuitul intern fa &#x103; de curen ii inductivi de revenire de la releu, care produc v&#xE2;rfuri de &#xEE;nalt&#x103; tensiune. Dioda se alege astfel &#xEE;nc&#xE2;t s&#x103; r&#x103;spund&#x103; rapid. 3.3.4 Subsistemele de intrare/ie&#x15F;ire ale SADC Dup&#x103; cum am v&#x103;zut, majoritatea semnalelor din lumea real&#x103; nu pot fi citite direct de calculator. Conversia semnalelor &#xEE;ntr-un format recunoscut de acesta se realizeaz&#x103; de c&#x103;tre SADC prin intermediul unei variet&#x103; i de dispozitive ce include convertoare analog numerice (CAN), multiplexoare, circuite de e&#x15F;antionare-memorare (Sample and Hold - S/H), amplificatoare, circuite de num&#x103;rare &#x15F;i temporizare precum &#x15F;i alte func ii specializate. Caracteristica cea mai important&#x103; a SADC este aceea c&#x103; integreaz&#x103; func ii diferite principal &#xEE;ntr-un sistem unitar. Un SADC poate s&#x103; con in&#x103; unul sau mai multe tipuri de subsisteme: &#x2022; intr&#x103;ri analogice; &#x2022; ie&#x15F;iri analogice; &#x2022; intr&#x103;ri numerice; &#x2022; ie&#x15F;iri numerice; &#x2022; intr&#x103;ri de num&#x103;rare; &#x2022; ie&#x15F;iri de num&#x103;rare. 3.3.4.1 Subsistemul de intr&#x103;ri analogice Func ia de baz&#x103; a unui astfel de subsistem este conversia analog-numeric&#x103; a semnalelor. Aceasta este realizat&#x103; de CAN care transform&#x103; informa iile analogice &#xEE;n cod binar. Pe l&#xE2;ng&#x103; CAN mai sunt necesare: &#x2022; circuite de amplificare; &#x2022; circuite de e&#x15F;antionare-memorare (S/H); &#x2022; multiplexoare analogice (MUX-AN); 3-49
• 50. &#x2022; circuite de condi ionare a semnalelor . 3.3.4.1.1 Convertoare analog numerice (CAN) Cele mai utilizate sunt: &#x2022; cu aproxima ii succesive (SAR); &#x2022; cu integrare (DUAL SLOPE); &#x2022; paralele (FLASH); &#x2022; conversie tensiune-frecven &#x103; (V/F counting). Convertoarele paralele sunt cele mai rapide, dar &#x15F;i cele mai scumpe, iar convertoarele cu integrare sunt cele mai lente &#x15F;i mai ieftine. Rezolu ia CAN se exprim&#x103; ca 1/2N, unde N este num&#x103;rul de bi i ai codului generat de CAN. Uneori, se indic&#x103; mai simplu pentru a exprima rezolu ia, num&#x103;rul de bi i ai convertorului. Se poate spune astfel c&#x103; rezolu ia este de 8, 10, 12, 14, 16 bi i. De asemenea, rezolu ia se mai poate exprima &#x15F;i &#xEE;n mV &#x2013; c&#xE2; i milivolti din domeniul de intrare se asociaz&#x103; la cea mai mic&#x103; valoare dat&#x103; de CAN (valoarea LSB). Astfel, pentru un convertor de 12 bi i &#x15F;i un domeniu de intrare de 0-10V rezolu ia este de 10/212 = 2,44 mV acesta fiind cel mai mic nivel detectabil de c&#x103;tre un CAN pe 12 bi i. Precizia este un parametru important pentru m&#x103;surarea intr&#x103;rilor analogice. Acesta define&#x15F;te eroarea total&#x103; la o anumit&#x103; citire. De exemplu, la un SADC pentru care se specific&#x103; precizia 0,05% pe domeniu de 10 V va genera o eroare &#xEE;n cazul cel mai defavorabil de &#xB1;5 mV (10V*0.0005V). Trebuie s&#x103; ne asigur&#x103;m c&#x103; precizia dat&#x103; se refer&#x103; la domeniul de lucru care ne intereseaz&#x103;. De asemenea, &#xEE;n prezentarea sistemelor de achizi ie precizia se poate referi la &#xEE;ntregul lan de m&#x103;sur&#x103; (traductor + condi ionare semnale + multiplexor + S/H + CAN) sau la componente de pe lan . Prin urmare, &#xEE;n realizarea aplica iilor trebuie avut &#xEE;n vedere &#x15F;i la ce se refer&#x103; precizia specificat&#x103; de fabricant. Cu c&#xE2;t rezolu ia convertoarelor este mai bun&#x103;, cu at&#xE2;t ele sunt mai scumpe &#x15F;i mai lente. Pentru o aplica ie dat&#x103; trebuie definite c&#xE2;t mai precis cerin ele &#x15F;i criteriile de performan &#x103; &#xEE;nainte de a decide asupra rezolu iei necesar&#x103; pentru convertor, deoarece aceasta are influen &#x103; asupra costului &#x15F;i vitezei de conversie. Punctul de pornire pentru selectarea convertorului este dinamica traductoarelor utilizate. Dinamica traductorului se refer&#x103; la rela ia dintre nivelul maxim al semnalului de intrare la cap&#x103;t de scal&#x103; &#x15F;i cel mai mic nivel detectabil de c&#x103;tre traductor. Nu exist&#x103; neap&#x103;rat o corelare &#xEE;ntre dinamica &#x15F;i precizia traductorului. Exemplu: pentru un traductor cu precizie 0,5% dinamica poate fi mai mare de 80 dB. Aceast&#x103; dinamic&#x103; cere &#xEE;n schimb un sistem cu o rezolu ie de cel pu in 12 bi i. Pentru corelarea cu dinamica maxim&#x103;, unele aplica ii cer la CAN rezolu ii mari, de 14 sau 16 bi i. &#xCE;n astfel de situa ii, prin amplificarea semnalelor de nivel sc&#x103;zut poate fi m&#x103;rit&#x103; rezolu ia. Exemplu: la o amplificare de 10 sau 100 de ori, rezolu ia cre&#x15F;te cu mai mult de 3 respectiv 6 bi i. Aceasta &#xEE;nseamn&#x103; c&#x103; dac&#x103; se utilizeaz&#x103; un convertor pe 12 bi i, utilizarea amplific&#x103;rii (corelat cu o dinamic&#x103; corespunz&#x103;toare a traductorului) echivaleaz&#x103; cu o rezolu ie de 15 respectiv 18 bi i. Pentru un convertor pe 12 bi i o parte (rezolu ia) reprezint&#x103; 1/4096 sau aproximativ 0,025% din &#xEE;ntregul domeniu de lucru. La un convertor pe 16 bi i o parte reprezint&#x103; 1/65536 sau aproximativ 0,0015% din domeniu. Prin urmare, rezolu ia ofer&#x103; informa ia necesar&#x103; pentru a stabili care sunt dinamica &#x15F;i precizia utile pentru un sistem dat. Pe de alt&#x103; parte, m&#x103;rind rezolu ia nu putem beneficia de acest avantaj dec&#xE2;t dac&#x103; &#x15F;i celelalte componente din sistem (traductorul, amplificatorul, circuitele de e&#x15F;antionare-memorie, condi ion&#x103;ri semnale etc.) nu ac ioneaz&#x103; ca factori limitatori &#xEE;n sistem. Dac&#x103; varia ia unui semnal de intrare este mai mic&#x103; dec&#xE2;t rezolu ia sistemului, aceast&#x103; varia ie trece neobservat&#x103;. De exemplu, la folosirea unui CAN pe 12 3-50
• 51. bi i f&#x103;r&#x103; nici o amplificare prealabil&#x103;, orice varia ie de semnal care nu dep&#x103;&#x15F;e&#x15F;te 2,44 mV &#xEE;n domeniul de lucru 0&#xF7;10 V nu va putea fi detectat&#x103;. Dac&#x103; semnalul este amplificat, de exemplu, de 1000 de ori &#xEE;nainte de conversie, rezolu ia, &#xEE;n absen a zgomotului, poate fi crescut&#x103; la 2,44 &#xB5;V. La viteza mai mare de 100 e&#x15F;antioane/sec, cel mai indicat este convertorul cu aproxim&#x103;ri succesive. Cu acesta pot fi atinse viteze de achizi ie de peste 100.000 e&#x15F;antioane/sec. La acest convertor, semnalul de intrare se compar&#x103; cu semnale generate prin &#x201E;ghiciri&#x201D; ponderate liniare, p&#xE2;n&#x103; c&#xE2;nd cele 2 semnale devin identice. Semnalul de intrare trebuie s&#x103; r&#x103;m&#xE2;n&#x103; neschimbat &#xEE;n timpul compar&#x103;rilor, &#xEE;n acest scop folosindu- se circuite de e&#x15F;antioane/memorare (Sample and Hold - S/H). Dac&#x103; nu este nevoie de viteze mari de e&#x15F;antionare, se pot utiliza convertoare cu integrare, ce pot oferi rezolu ii de 12, 14, 16 bi i la o vitez&#x103; maxim&#x103; 3-50 e&#x15F;antioane/sec. Acest convertor mediaz&#x103; pe timpul conversiei, filtr&#xE2;nd &#xEE;n acest fel zgomotul de intrare. De asemenea, liniaritatea &#x15F;i precizia sa sunt mai bune dec&#xE2;t la celelalte tipuri de convertoare. 3.3.4.1.2 Amplificarea Ca s&#x103; func ioneze optim, un CAN necesit&#x103; la intrare un semnal cu amplitudine mare. Pentru a cre&#x15F;te amplitudinea semnalelor mici se utilizeaz&#x103; amplificatoarele. Acestea trebuie s&#x103; aib&#x103; mai multe trepte de c&#xE2;&#x15F;tig (GAIN) selectabile prin soft. Trepte uzuale sunt 2, 4, 8, 16, 100, 1000. Dispozitivul de selectare a treptelor de c&#xE2;&#x15F;tig este cunoscut sub numele de amplificator cu c&#xE2;&#x15F;tig programabil (PROGRAMABLE GAIN AMPLIFIER &#x2013; PGA). De multe ori pentru a reduce costul se utilizeaz&#x103; PGA cu c&#xE2;&#x15F;tig reglabil manual (selec ia se face cu strapuri sau select&#xE2;nd anumite rezisten e). De re inut c&#x103; amplificatorul nu este necesar &#xEE;n orice aplica ie. 3.3.4.1.3 Multiplexarea analogic&#x103; Multiplexorul analogic (MUX-AN) este o structur&#x103; de comutatoare electronice ce permite ca un num&#x103;r mare de canale analogice de intrare s&#x103; poat&#x103; fi prelucrate folosind un singur amplificator, un singur circuit de e&#x15F;antionare memorare &#x15F;i un singur CAN. Schema bloc a unui subsistem cu multiplexare analogic&#x103; este prezentat&#x103; &#xEE;n figura 3.3.4.1-1. 3-51
• 52. Condi ionare semnale 1 Amplificator 2 MUX AN S/H E&#x15F;antionare - memorare n CAN Convertor analog numeric Cod ie&#x15F;ire (numeric) Fig. 3.3.4.1-1 &#x2013; Sistem complet de intr&#x103;ri analogice Prin soft se poate controla orice canal pentru a fi achizi ionat la un anumit moment de timp. Aceast&#x103; metod&#x103; reduce considerabil costul fa &#x103; de utilizarea amplificatorului &#x15F;i CAN separat pe fiecare canal. Deoarece amplificatorul &#x15F;i convertorul sunt folosite &#xEE;n comun, viteza de achizi ie se reduce. Aproximativ, viteza de achizi ie se divizeaz&#x103; la num&#x103;rul de canale gestionate. Pentru astfel de sisteme, randamentul e&#x15F;antion&#x103;rii se define&#x15F;te ca produsul dintre viteza de achizi ie pe un canal &#x15F;i num&#x103;rul de canale. 3.3.4.1.4 Circuitele de e&#x15F;antionare &#x15F;i memorare (S/H) CAN bazate pe aproxim&#x103;ri succesive necesit&#x103; ca semnalul de intrare s&#x103; nu se modifice pe perioada ciclului de conversie. Func ia circuitului S/H este de a e&#x15F;antiona &#x15F;i memora valoarea prezent&#x103; la intrare &#xEE;nainte de &#xEE;nceperea fiec&#x103;rei conversii. Nivelul e&#x15F;antionat &#x15F;i memorat este men inut constant chiar dac&#x103; semnalul de la intrare se modific&#x103;, p&#xE2;n&#x103; c&#xE2;nd conversia analog - numeric&#x103; se termin&#x103;. Memorarea se face de regul&#x103; cu un circuit capacitiv care este comutat electronic &#xEE;ntre circuitul de intrare &#x15F;i amplificator. 3.3.4.1.5 Multiplexarea &#xEE;n timp Canalele de intr&#x103;ri analogice folosesc &#xEE;n comun amplificatorul, circuitele S/H &#x15F;i CAN. Utilizatorul selecteaz&#x103; rata de e&#x15F;antionare dorit&#x103; &#xEE;n func ie de aplica ia dat&#x103;. Dac&#x103; fiecare canal trebuie citit de r ori pe secund&#x103;, atunci MUX AN trebuie s&#x103; fie comandat de n*r ori pe secund&#x103; (unde n este num&#x103;rul canalelor citite). MUX AN, circuitele S/H, CAN &#x15F;i amplificatorul trebuie s&#x103; fie at&#xE2;t de rapide &#xEE;nc&#xE2;t s&#x103; se execute un ciclu de conversie &#xEE;ntr-un timp mai mic dec&#xE2;t 1/(n*r) secunde. 3.3.4.1.6 Timpul de conversie Timpul de conversie define&#x15F;te viteza CAN, care &#xEE;ns&#x103; reprezint&#x103; numai o parte din timpul total necesar pentru a m&#x103;sura un canal dat. Ideal, toate canalele de intrare ar trebui citite &#xEE;n acela&#x15F;i moment de timp, adic&#x103; la fiecare 1/r secunde. &#xCE;n realitate, multiplexarea &#xEE;n timp genereaz&#x103; o asimetrie (jitter), care se datoreaz&#x103; diferen ei de timp &#xEE;ntre citirile canalelor multiplexate. 3-52
• 53. Dac&#x103; MUX, S/H &#x15F;i CAN sunt suficient de rapide, putem avea impresia c&#x103; citirile se fac simultan. Unele aplica ii &#xEE;ns&#x103; sunt foarte sensibile la asimetria fa &#x103; de timp. De exemplu, m&#x103;surarea puterii electrice instantanee (P = U*I*co&#x3D5;) sau pozi iile relative ale componentelor mecanice &#xEE;ntr-o instala ie robot. Chiar dac&#x103; folosim cele mai rapide CAN exist&#x103; multe aplica ii ce nu pot tolera diferen ele de timp dintre citiri. De exemplu, dac&#x103; se e&#x15F;antioneaz&#x103; 4 intr&#x103;ri analogice cu un randament de 89.000 e&#x15F;antioane pe secund&#x103;, timpul mort &#xEE;ntre 2 conversii ar fi de 11,25 &#xB5;sec.. Este nevoie deci de 45 &#xB5;sec pentru a citi cele 4 canale. La o frecven &#x103; a semnalelor de intrare de 10 kHz (o perioad&#x103; dureaz&#x103; 100usec), va exista o diferen &#x103; de faz&#x103; de 121.5&#xB0; &#xEE;ntre primul &#x15F;i al patrulea canal ( 33.75us / 100us * 360&#xB0;). &#xCE;n aplica ii critice, se utilizeaz&#x103; tehnica circuitelor de e&#x15F;antionare-memorare simultane (figura 3.3.4.1-2) ce poate reduce asimetria de timp de 100 p&#xE2;n&#x103; la 1000 ori. 1 S/H Amplificator CAN 2 S/H MUX AN n S/H Fig. 3.3.4.1-2 Sistem cu circuite S/H multiple Pentru exemplul dat anterior, diferen a de faz&#x103; &#xEE;ntre primul &#x15F;i al patrulea canal dac&#x103; se utilizeaz&#x103; aceast&#x103; tehnic&#x103;, ar fi mai mic&#x103; de 0,04&#xB0; (dependent de caracteristicile S/H). 3.3.4.1.7 Conectarea canalelor analogice la multiplexor Canalele analogice pot fi configurate ca intr&#x103;ri asimetrice (single-ended) sau diferen iale. &#xCE;ntr-o configura ie single-ended, canalele se raporteaz&#x103; toate la o singur&#x103; mas&#x103; comun&#x103;. Numai &#x201E;firul cald&#x201D; al semnalului este conectat prin intermediul MUX AN la amplificator. Returul este comun pentru toate semnalele &#x15F;i se face prin intermediul cabl&#x103;rilor de &#xEE;mp&#x103;m&#xE2;ntare. Astfel, at&#xE2;t sursa de semnal c&#xE2;t &#x15F;i intr&#x103;rile &#xEE;n amplificator sunt referite la o mas&#x103; comun&#x103;. Acest mod de configurare se poate utiliza doar &#xEE;n cazul &#xEE;n care c&#x103;derea de tensiune pe traseul de mas&#x103; este mic&#x103;. Problemele apar c&#xE2;nd aceast&#x103; c&#x103;dere de tensiune este mare. Aceasta genereaz&#x103; bucle de mas&#x103; (curen i prin conductorul de mas&#x103;), ceea ce poate genera tensiuni eronate la intr&#x103;rile CAN. Avantajul configur&#x103;rii single-ended este pre ul sc&#x103;zut pe canal, at&#xE2;t ca num&#x103;r de cabluri utilizate c&#xE2;t &#x15F;i ca num&#x103;r de intr&#x103;ri &#xEE;n MUX AN (practic pe fiecare intrare a MUX AN este conectat un canal). Modul de conexiune single-ended este dat de figura 3.3.4.1-3: 3-53
• 54. Tur (fir cald) Amplificator de instrumenta ie Es Es - DV &#x223C; Rez.firului Retur (fir rece) VG1 VG2 Masa sursei Masa calculatorului Fig. 3.3.4.1-3 Conexiune single-ended Eroarea de m&#x103;sur&#x103; este DV=VG1-VG2, care reprezint&#x103; c&#x103;derea de poten ial pe traseul de mas&#x103;. Intr&#x103;rile diferen iale folosesc dou&#x103; fire pentru conectarea la amplificator (intrarea inversoare &#x15F;i intrarea neinversoare). Ambele fire se conecteaz&#x103; &#x15F;i la sursa de semnal. Orice semnal indus prin bucla de mas&#x103; va apare ca semnal de mod comun &#x15F;i va fi rejectat de propriet&#x103; ile diferen iale ale amplificatorului. &#xCE;n figura 3.3.4.1-4 este prezentat&#x103; conexiunea diferen ial&#x103;. Amplificator de instrumenta ie Es Es &#x223C; VCM Rez.firului VG1 VG2 Masa sursei Masa calculatorului Fig. 3.3.4.1-4 Conexiunea diferen ial&#x103; 3-54
• 55. Tensiune de mod comun este VCM=VG1-VG2. Eroarea cauzat&#x103; de tensiunea de mod comun (VCM) este redus&#x103; prin rejec ia de mod comun a amplificatorului de instrumenta ie (tipic 80 dB sau mai mare). Conexiunile diferen iale reduc considerabil efectele buclelor de mas&#x103;, dar utilizeaz&#x103; fiecare dou&#x103; intr&#x103;ri la MUX-AN &#x15F;i dou&#x103; cabluri de legatur&#x103;. Astfel, un sistem de 16 canale de multiplexare va permite conectarea a 16 semnale pe conexiune single-ended, respectiv numai 8 canale pe conexiune diferen ial&#x103;. &#xCE;n unele aplica ii se utilizeaz&#x103; a&#x15F;a numitele conexiuni pseudo-diferen iale. Conexiunile se fac de fapt single-ended, dar una dintre intr&#x103;ri este conectat&#x103; pentru a m&#x103;sura tensiunea indus&#x103; &#xEE;n bucla de mas&#x103;, urm&#xE2;nd a se face apoi corec ia soft. Aceast&#x103; tehnic&#x103; se poate utiliza acolo unde toate semnalele de intrare folosesc ca referin &#x103; acela&#x15F;i poten ial de mas&#x103;. 3.3.4.1.8 Scalarea intr&#x103;rilor analogice Traductoarele prezint&#x103; la intrarea &#xEE;n sistemul de intr&#x103;ri analogice semnale direct propor ionale cu evolu ia m&#x103;rimii m&#x103;surate (intr&#x103;ri analogice liniare) sau semnale care au o coresponden &#x103; cu m&#x103;rimea conform specifica iilor fabricantului (intr&#x103;ri analogice neliniare). La acestea din urma fie se specific&#x103; o rela ie matematic&#x103; de coresponden &#x103;, fie sunt date tabele de coresponden &#x103; (&#xEE;n acest caz punctele neincluse &#xEE;n tabele se calculeaz&#x103; prin interpolare liniar&#x103;). Conversia din valori exprimate &#xEE;n coduri CAN (de exemplu pentru convertoare de 12 bi i acestea variaz&#x103; &#xEE;n domeniul 0-4095) sau valori de tensiune/curent prezente la intrarea CAN &#xEE;n valori inginere&#x15F;ti se face cu formula Y=aX+b unde Y este m&#x103;rimea exprimat&#x103; &#xEE;n unit&#x103; i inginere&#x15F;ti, X valoarea CAN (sau curent/tensiune corespunz&#x103;toare) iar a &#x15F;i b coeficien i de scalare. a se calculeaz&#x103; ca raport &#xEE;ntre domeniul de varia ie al m&#x103;rimii fizice (&#xEE;n unit&#x103; i inginere&#x15F;ti) care corespunde semnalului de intrare &#x15F;i domeniul de varia ie al semmnalului de intrare &#xEE;n CAN. b este limita minim&#x103; a domeniului de m&#x103;sur&#x103; exprimat&#x103; &#xEE;n unit&#x103; i de m&#x103;sur&#x103; inginere&#x15F;ti Exemplu: dac&#x103; 0 CAN corespunde la &#x2013;100&#xB0;C iar 4095 corespunde la +100&#xB0;C, atunci: a = (100-(-100))/(4095-0)) = 0.04884; b = -100. La valoarea CAN 1024 va corespunde 0.04884*1024-100= -50&#xB0;C. 3.3.4.2 Subsistemul de ie&#x15F;iri analogice Ie&#x15F;irile analogice sunt utilizate pentru a genera tensiune de excita ie, forme de und&#x103;, simul&#x103;ri de ie&#x15F;ire de la alte dispozitive, etc. Specifica iile ie&#x15F;irilor analogice sunt similare cu ale intr&#x103;rilor analogice: &#x2022; rezolu ia se d&#x103; &#xEE;n bi i, mV sau %; &#x2022; rata de actualizare a ie&#x15F;irii se d&#x103; &#xEE;n e&#x15F;antioane/secund&#x103;; &#x2022; domeniul de varia ie al semnalului de ie&#x15F;ire este &#xB1;5 V, &#xB1;10 V, 0 &#xF7; 10 V, 0-5V, respectiv 4 &#x2013; 20 mA. &#xCE;n cazul &#xEE;n care se comand&#x103; sarcini cu impedan &#x103; de valori mici (motoare electrice) se utilizeaz&#x103; ca tampon &#xEE;ntre CNA &#x15F;i proces amplificatoare de putere sau generatoare de curent de valori mari. Dac&#x103; acela&#x15F;i CAN este utilizat pentru a comanda mai multe ie&#x15F;iri analogice, se utilizeaz&#x103; scheme cu demultiplexoare analogice &#x15F;i elemente analogice de memorare. 3-55
• 56. Semnalul reconstituit la ie&#x15F;irea CNA este dependent de rata cu care e&#x15F;antioanele sunt trimise. Rata de actualizare a CNA trebuie s&#x103; in&#x103; cont de semnalul care trebuie ob inut la ie&#x15F;ire. 3.3.4.3 Subsistemul de intr&#x103;ri-ie&#x15F;iri numerice Intr&#x103;rile numerice sunt utilizate pentru a detecta starea contactelor de releu, condi ii de pornit/oprit, pentru a citi ie&#x15F;irile numerice paralele de la diverse dispozitive etc. Ie&#x15F;irile numerice sunt utilizate pentru a porni/opri diverse dispozitive, pentru a aprinde l&#x103;mpi, leduri, declan&#x15F;area releelor sau contactoarelor, scrierea de date la dispozitive care au intr&#x103;ri numerice paralele etc. De asemenea, interfe ele numerice sunt utilizate pentru comunica ii de mare vitez&#x103; &#xEE;ntre diverse dispozitive. Cele mai multe sisteme de achizi ie de date &#x15F;i control pot accepta &#x15F;i genera semnale TTL 0 &#xF7; 5 V. 3.3.4.4 Subsistemul de intr&#x103;ri-ie&#x15F;iri de num&#x103;rare Exista o varietate mare de aplica ii ce utilizeaz&#x103; num&#x103;rarea. Exemple: contorizarea energiei electrice, contorizarea energiei termice. Alte aplica ii cer ca anumite dispozitive s&#x103; fie pornite sau oprite la momente de timp foarte precise. Toate aceste func ii pot fi rezolvate cu circuite de tip num&#x103;r&#x103;tor / periodizator (counter/timer) care sunt destinate pentru aplica ii de num&#x103;rare, m&#x103;surare de frecven &#x103;, generarea de baze de timp etc. Se pot utiliza circuite counter/timer precum I8253, I8254, AMD 9513 etc. Num&#x103;r&#x103;toarele din aceste circuite se caracterizeaz&#x103; prin capacitatea maxim&#x103; de num&#x103;rare &#x15F;i prin frcven a maxim&#x103; a tactului la intrare. Majoritatea sistemelor folosesc num&#x103;r&#x103;toare de 16 bi i ce pot &#xEE;nregistra impulsuri la frecven a maxim&#x103; de 8 MHz. Num&#x103;r&#x103;toarele sunt independente unele fa &#x103; de celelalte &#x15F;i pot fi utilizate &#xEE;n diverse moduri de lucru (num&#x103;rare elementar&#x103;, num&#x103;rare &#x15F;i divizare de frecven &#x103;, generare de impulsuri). Generatoarele de impulsuri permit programarea prin soft at&#xE2;t a duratei (factor de umplere) c&#xE2;t &#x15F;i a frecven ei impulsurilor. Un astfel de generator se folose&#x15F;te de exemplu pentru a genera o baz&#x103; de timp impus&#x103; pentru achizi ia datelor. Pentru m&#x103;surarea frecven ei folosind num&#x103;r&#x103;toarele se pot utiliza dou&#x103; metode ce depind de tipul aplica iei: &#x2022; Determinarea perioadei semnalului necunoscut compar&#xE2;ndu-l cu perioada cunoscut&#x103; a semnalului unui generator de tact. Avantajul acestei metode este c&#x103; permite o m&#x103;surare a semnalelor de joas&#x103; frecven &#x103; cu o rezolu ie mare, frecven a m&#x103;surat&#x103; put&#xE2;nd fi sub 10Hz. &#x2022; Num&#x103;rarea perioadelor semnalului necunoscut &#xEE;ntr-un interval de timp fixat. Cu aceast&#x103; tehnic&#x103; se pot m&#x103;sura semnale de frecven e mari, de ordinul MHz. 3-56
• 57. 4 PROGRAMAREA DISPOZITIVELOR I/E &#xCE;N APLICA II TIMP - REAL 4.1 Tehnici de comunicare cu dispozitivele de intrare/ie&#x15F;ire Gestiunea comunic&#x103;rii aplica iei timp-real cu dispozitivele I/E presupune utilizarea unor tehnici de programare specifice, destinate s&#x103; sincronizeze opera iile de I/E cu prelucr&#x103;rile interne. Dac&#x103; de exemplu datele sunt citite &#xEE;nainte ca un dispozitiv s&#x103; le poat&#x103; furniza, atunci rezultatul este eronat. De asemenea, dac&#x103; aplica ia nu preia datele suficient de rapid, dispozitivul periferic poate s&#x103; le &#xEE;nlocuiasc&#x103; cu altele noi f&#x103;r&#x103; ca acest lucru s&#x103; poat&#x103; fi depistat. Prin urmare, este necesar ca &#xEE;n fluxul prelucr&#x103;rilor s&#x103; existe secven e de program care s&#x103; realizeze sincronizarea opera iilor de I/E cu programele de aplica ie (detectarea dac&#x103; un periferic este gata s&#x103; furnizeze/primeasc&#x103; date &#x15F;i s&#x103; realizeze transferul acestora). Pentru sincronizarea comunic&#x103;rii &#xEE;ntre aplica ie &#x15F;i echipamentele periferice exist&#x103; 2 tehnici de baz&#x103;: &#x2022; aplica ia interogheaz&#x103; periodic dispozitivele (polling) citind registrele de stare pentru a determina c&#xE2;nd se poate comunica cu acesta; &#x2022; dispozitivele periferice &#xEE;ntrerup procesorul pentru execu ia unor proceduri specifice de comunicare. 4.1.1 Metoda Polling Procesorul interogheaz&#x103; dispozitivele periodic, citind unul sau mai multe registre de stare a c&#x103;ror valoare permite procesorului s&#x103; decid&#x103; c&#xE2;nd dispozitivul este preg&#x103;tit pentru comunicare. Dac&#x103; dispozitivul solicit&#x103; serviciile procesorului, este apelat&#x103; o rutin&#x103; de tratare specific&#x103;, &#xEE;n caz contrar procesorul fie continu&#x103; interogarea fie execut&#x103; alte prelucr&#x103;ri. Bucla de polling poate s&#x103; fie implementat&#x103; &#xEE;n dou&#x103; moduri: 1. A&#x15F;teptare &#xEE;n bucla de test p&#xE2;n&#x103; c&#xE2;nd dispozitivul este gata &#x15F;i apoi transfer de date. 2. Dac&#x103; dispozitivul nu este gata &#xEE;n momentul interog&#x103;rii se continu&#x103; cu alte prelucr&#x103;ri (inclusiv interogarea altor dispozitive), iar c&#xE2;nd este gata se face transferul de date. De&#x15F;i polling este cea mai simpl&#x103; metod&#x103; de comunicare, prezinta unele dezavantaje: &#x2022; Aplica ia trebuie s&#x103; fie capabil&#x103; s&#x103; execute &#xEE;ntreaga bucl&#x103; suficient de rapid pentru a putea ine cont de toate cerin ele perifericelor. &#x2022; &#xCE;n func ie de &#xEE;nc&#x103;rcarea sistemului, o bucl&#x103; polling poate fi suficient de rapid&#x103; &#xEE;n anumite condi ii de func ionare a dispozitivelor, iar &#xEE;n alte condi ii poate fi extrem de lent&#x103; (de exemplu dac&#x103; se execut&#x103; multe sarcini &#xEE;ntr-un anumit pas al buclei sau dac&#x103; sunt interogate mai multe dispozitive &#x15F;i toate cer servicii simultan). &#x2022; C&#xE2;nd complexitatea programului cre&#x15F;te ca urmare a introducerii de noi prelucr&#x103;ri, o bucl&#x103; polling, care la origine lucra bine, poate deveni prea lung&#x103;. &#x2022; Dac&#x103; se cere executarea unor ac iuni cu o baz&#x103; de timp prestabilit&#x103;, o bucl&#x103; polling nu permite &#xEE;ntotdeauna ca aceasta s&#x103; fie controlat&#x103; pentru a asigura precizia adecvat&#x103;. Dac&#x103; baza de timp se calculeaz&#x103; in&#xE2;nd cont de durata de execu ie a instruc iunilor ma&#x15F;in&#x103;, schimbarea tactului procesorului implic&#x103; modificarea programului. 4-57
• 58. 4.1.2 Metoda &#xEE;ntreruperilor externe Prin aceast&#x103; metod&#x103; dispozitivul aten ioneaz&#x103; aplica ia gener&#xE2;nd &#xEE;ntreruperi externe. Tratarea prompt&#x103; a &#xEE;ntreruperilor de la toate dispozitivele este posibil&#x103; at&#xE2;t timp c&#xE2;t cererile c&#x103;tre procesor sunt rezonabile, acesta este capabil s&#x103; lanseze rapid procedurile (rutinele) de tratare iar timpul de execu ie al acestora este suficient de mic. &#xCE;n particular, metoda &#xEE;ntreruperilor externe este de preferat &#xEE;n aplica ii care cer precizie pentru timpul de achizi ie de date &#x15F;i control, &#xEE;n timp ce procesorul execut&#x103; &#x15F;i alte sarcini. De asemenea, este util&#x103; dac&#x103; mai multe dispozitive solicit&#x103; asincron servicii, la intervale de timp nepredictibile. Pentru programarea &#xEE;ntreruperilor sunt necesare cunoa&#x15F;terea sistemului de &#xEE;ntreruperi al calculatorului &#x15F;i modul de programare al acestuia. De asemenea, este necesar&#x103; cunoa&#x15F;terea limbajului de asamblare al procesorului sau cel pu in cuvintele cheie &#x15F;i procedurile speciale pentru &#xEE;ntreruperi furnizate de anumite medii de dezvoltare pentru limbaje evoluate. (Unele limbaje precum C/C++, PASCAL, ADA furnizeaz&#x103; mijloace de tratare a &#xEE;ntreruperilor cu proceduri care realizeaz&#x103; citirea/scrierea prin adresarea absolut&#x103; a loca iilor de memorie, opera ii de intrare/ie&#x15F;ire la nivel fizic prin programarea porturilor sau loca iilor de memorie, secven e de intrare &#x15F;i de ie&#x15F;ire din procedurile de tratare a &#xEE;ntreruperilor). Succesiunea execu iei instruc iunilor de c&#x103;tre procesor depinde de apari ia evenimentelor care declan&#x15F;eaz&#x103; proceduri de tratare a &#xEE;ntreruperilor. Gre&#x15F;elile &#xEE;n tratarea sistemului de &#xEE;ntreruperi al calculatorului provoac&#x103; erori grave &#xEE;n execu ia programului &#x15F;i afecteaz&#x103; negativ func ionarea sistemului, ceea ce face ca programele care utilizeaz&#x103; &#xEE;ntreruperile s&#x103; fie greu de depanat. 4.1.3 Metoda Intr&#x103;ri/iE&#x15F;iri buffer-ate Aceast&#x103; metod&#x103; &#xEE;mbin&#x103; avantajele polling-ului cu avantajele &#xEE;ntreruperilor. Este utilizat&#x103; &#xEE;n aplica ii precum bucle de control sau &#xEE;n aplica ii de supraveghere, unde datele sunt prelucrate &#x15F;i afi&#x15F;ate &#xEE;n paralel cu achizi ia lor. Implementarea uzual&#x103; a intr&#x103;rilor bufferate const&#x103; &#xEE;n: &#x2022; o rutin&#x103; de tratare a &#xEE;ntreruperilor care cite&#x15F;te (achizi ioneaz&#x103; de la un dispozitiv extern) datele &#x15F;i le memoreaz&#x103; &#xEE;ntr-un buffer circular; &#x2022; un task scris ca o bucl&#x103; polling &#xEE;n care aplica ia a&#x15F;teapt&#x103; datele iar atunci c&#xE2;nd sunt &#xEE;n memorie le prelucreaz&#x103;. Contorul de inserare &#xEE;n buffer este gestionat de rutina de tratare a &#xEE;ntreruperilor &#x15F;i indic&#x103; mereu urm&#x103;toarea loca ie &#xEE;n care trebuie depuse datele achizi ionate. Contorul este incrementat circular. Contorul de extragere este gestionat de task-ul care efectueaz&#x103; &#xEE;n polling prelucrarea datelor din buffer. Permanent, task-ul principal compar&#x103; cele doua contoare: dac&#x103; acestea sunt diferite, exist&#x103; date noi &#xEE;ntre loca iile indicate de contorul de extragere (care indic&#x103; cea mai veche dat&#x103; depus&#x103; &#xEE;n buffer &#x15F;i netratat&#x103;) &#x15F;i contorul de inserare &#x2013; 1. dac&#x103; nu exist&#x103; date noi procedura polling fie a&#x15F;teapt&#x103; date, fie efectueaz&#x103; alte prelucr&#x103;ri. Trebuie s&#x103; existe un echilibru &#xEE;ntre rata de achizi ie &#x15F;i viteza de prelucrare astfel &#xEE;nc&#xE2;t buffer-ul s&#x103; nu con in&#x103; mai mult dec&#xE2;t c&#xE2;teva intr&#x103;ri noi, iar contorul de inserare s&#x103; nu dep&#x103;&#x15F;easc&#x103; pe cel de extragere (circular). Ie&#x15F;irile buffer-ate pot fi tratate similar. Task-ul principal depune datele &#xEE;ntr-un buffer circular (container), pe m&#x103;sur&#x103; ce ele sunt prelucrate, iar rutinele de tratare a &#xEE;ntreruperilor le extrag &#x15F;i le trimit c&#x103;tre dispozitivul de ie&#x15F;ire. &#xCE;n acest caz, contorul de inserare este men inut de task-ul principal, iar cel de extragere de rutina de tratare a &#xEE;ntreruperii. Dac&#x103; datele trebuie transferate c&#x103;tre dispozitivul extern la intervale de timp egale (de exemplu pentru generarea unor forme de und&#x103;), task-ul trebuie s&#x103; fie capabil s&#x103; depun&#x103; date suficient de rapid &#xEE;n buffer, pentru ca acesta s&#x103; nu fie vid atunci c&#xE2;nd se execut&#x103; rutina care transfer&#x103; o nou&#x103; dat&#x103; c&#x103;tre dispozitiv. 4.1.4 Alegerea strategiei optime Trebuie subliniat c&#x103; utilizarea &#xEE;ntreruperilor nu este &#xEE;ntotdeauna mai bun&#x103; dec&#xE2;t polling-ul, acesta oferind avantaje semnificative &#xEE;n cazul anumitor aplica ii. Cea mai bun&#x103; strategie pentru achizi ie foarte rapid&#x103; de date (f&#x103;r&#x103; alte prelucr&#x103;ri &#xEE;n paralel) este utilizarea polling-ului cu bucle scurte scrise &#xEE;n limbaj de asamblare, care testeaz&#x103; continuu un registru de stare al 4-58
• 59. perifericului. Perifericul este servit imediat ce condi ia este &#xEE;ndeplinit&#x103; &#xEE;i testarea &#xEE;ncepe din nou. Spre deosebire de bucla general&#x103; polling descris&#x103; anterior, aceast&#x103; bucl&#x103; nu execut&#x103; &#x15F;i alte opera ii. Dac&#x103; precizia timpului de transfer este considerat&#x103; de mare importan &#x103; &#x15F;i dac&#x103; bucla polling scurt&#x103; nu permite controlul acestuia, atunci acesta trebuie controlat de o baz&#x103; de timp extern&#x103;. Aceasta se poate realiza prin impulsuri generate de un num&#x103;r&#x103;tor programabil sau un generator de frecven &#x103; (realizat de exemplu cu I8254, AMD 9513 etc. - vezi 4.3). Pe de alt&#x103; parte, &#xEE;ntreruperile sunt o bun&#x103; modalitate de a controla achizi ia de date atunci c&#xE2;nd rata de achizi ie este suficient de sc&#x103;zut&#x103; &#x15F;i exist&#x103; timp disponibil suficient &#xEE;ntre &#xEE;ntreruperi. De asemenea &#xEE;ntreruperile sunt mai avantajoase dec&#xE2;t polling-ul dac&#x103; programul trebuie s&#x103; comunice asincron cu mai multe dispozitive sau dac&#x103; programul trebuie s&#x103; execute mai multe task-uri &#xEE;n paralel cu sarcinile de achizi ie de date &#x15F;i comenzi. Multe din aplica iile &#xEE;n &#xEE;ntreruperi sunt cel mai bine tratate dac&#x103; se utilizeaz&#x103; I/E buffer-ate. Utilizarea &#xEE;ntreruperilor permite procesorului s&#x103; execute task-uri precum &#xEE;nregistrarea datelor pe disc, citirea datelor de pe disc, execu ia func iilor de control, afi&#x15F;area pe display &#x15F;i / sau la imprimant&#x103;, dialogul cu operatorul etc. concurent cu achizi ia de date &#x15F;i comenzi. Alegerea strategiei optime este determinat&#x103; prin urmare de cerin ele aplica iei &#x15F;i de resursele hard/soft disponibile. &#xCE;nainte de a decide dac&#x103; se utilizeaz&#x103; &#xEE;ntreruperi sau polling, trebuie s&#x103; se estimeze supra&#xEE;nc&#x103;rcarea &#xEE;ntreruperilor (salvarea/restaurarea registrelor alterabile) care depinde printre altele &#x15F;i de procesor &#x15F;i de frecven a tactului folosit de calculator. Pentru un PC limitele practice &#xEE;n utilizarea &#xEE;ntreruperilor pentru transferuri de date cu dispozitive CAN / CNA poate varia &#xEE;ntre c&#xE2;teva e&#x15F;antioane/sec. p&#xE2;n&#x103; la mii de e&#x15F;antioane/sec., depinz&#xE2;nd de strategia aleas&#x103; &#x15F;i de celelalte task-uri pe care sistemul trebuie s&#x103; le execute &#xEE;n paralel. 4-59
• 60. 4.2 Programarea utiliz&#xE2;nd &#xEE;ntreruperile Tehnica program&#x103;rii &#xEE;n &#xEE;ntreruperi presupune &#xEE;n primul r&#xE2;nd cunoa&#x15F;terea sistemului de &#xEE;ntreruperi al calculatorului utilizat. &#xCE;n cele ce urmeaz&#x103; se reamintesc unele no iuni referitoare la sistemul de &#xEE;ntreruperi al PC &#x15F;i se prezint&#x103; detalii privind modul de programare al acestuia &#xEE;n modul real al procesoarelor x86. 4.2.1 Prezentarea sistemului de &#xEE;ntreruperi la PC Pentru tratarea &#xEE;ntreruperilor, programul trebuie s&#x103; con in&#x103; rutine speciale de tratare a acestora (interrupt handlers). Adresele acestor rutine se plaseaz&#x103; &#xEE;n loca ii speciale ale memoriei, astfel &#xEE;nc&#xE2;t ele s&#x103; poat&#x103; fi A&#x15F;teapt&#x103; &#xEE;ntrerupere Eveniment extern NU IF=1 DA NU Nivel demascat ? DA NU Procesorul trateaz&#x103; alt&#x103; IT ? DA NU Prioritatea este mai mare ? DA Start rutin&#x103; de tratare &#xEE;ntrerupere Fig. 4.2.1-1Automatul de lansare IT externe la I8259A 4-60
• 61. executate la apari ia &#xEE;ntreruperilor. La PC, gestiunea &#xEE;ntreruperilor externe mascabile (vezi &#x15F;i 4.2.3) este realizat&#x103; de c&#x103;tre dou&#x103; dispozitive I8259A, cascadate. Caracteristicile de baz&#x103; ale I8259A sunt: &#x2022; gestioneaz&#x103; 8 niveluri de &#xEE;ntreruperi, fiecare av&#xE2;nd asociat un nivel de prioritate (0 cel mai prioritar, 7 cel mai pu in prioritar); &#x2022; &#xEE;ntreruperile cu prioritate mai mare pot &#xEE;ntrerupe execu ia rutinelor de tratare a unor &#xEE;ntreruperi mai pu in prioritare; &#x2022; fiecare nivel de &#xEE;ntrerupere poate s&#x103; fie mascat sau demascat; &#x2022; I8259 pot fi cascadate pentru a cre&#x15F;te num&#x103;rul de &#xEE;ntreruperi. &#xCE;ntreruperile externe mascabile pot fi dezactivate prin program execut&#xE2;nd instruc iunea disable interrupt (cli), care reseteaz&#x103; Interrupt Flag (IF) din PSW. Dac&#x103; procesorul prime&#x15F;te &#xEE;ntreruperi c&#xE2;nd acestea sunt dezactivate, nu va r&#x103;spunde p&#xE2;n&#x103; c&#xE2;nd prin program nu se execut&#x103; instruc iunea enable interrupt (sti), care seteaz&#x103; IF. Dac&#x103; o &#xEE;ntrerupere exista memorat&#x103; &#xEE;n momentul execu iei sti, procesorul efectueaz&#x103; opera iile pentru lansarea rutinei de tratare a &#xEE;ntreruperii. I8259A identific&#x103; automat sursa de &#xEE;ntrerupere extern&#x103; &#x15F;i dac&#x103; nivelul pe care este conectat&#x103; aceasta nu este inhibat (nu este mascat&#x103; sau nu este &#xEE;n curs de execu ie o rutin&#x103; de tratare &#xEE;ntrerupere mai prioritar&#x103;) activeaz&#x103; semnalul Interrupt Request de la procesor. Procesorul, dac&#x103; IF este setat (&#xEE;ntreruperile sunt autorizate) memoreaz&#x103; starea &#xEE;ntreruperii, termin&#x103; normal instruc iunea &#xEE;n curs de execu ie la apari ia &#xEE;ntreruperii (procesorul r&#x103;spunde la &#xEE;ntreruperi &#xEE;ntre instruc iuni) &#x15F;i activeaz&#x103; semnalul de acceptare a &#xEE;ntreruperii (interrupt acknowledge). La detectarea acestui semnal, controllerul comunic&#x103; procesorului num&#x103;rul vectorului de &#xEE;ntrerupere asociat &#xEE;ntreruperii (pe 8 bi i), pe baza c&#x103;ruia procesorul identific&#x103; adresa primei instruc iuni executabile din rutina de tratare &#x15F;i o &#xEE;ncarc&#x103; &#xEE;n CS:IP. Algoritmul clasic de lansare a unei rutine de tratare, implementat &#xEE;n controllerele care gestioneaz&#x103; &#xEE;ntreruperile externe la PC, este prezentat &#xEE;n figura 4.2.1-1. Adresa primei instruc iuni executabile a rutinei de tratare a &#xEE;ntreruperii este memorat&#x103; &#xEE;n prealabil (prin programul utilizator sau de c&#x103;tre sistemul de operare) &#xEE;n tabela vectorilor de &#xEE;ntrerupere, &#xEE;n loca iile rezervate pentru intr&#x103;rile de &#xEE;ntrerupere ale controllerelor I8259A. Tabela vectorilor de &#xEE;ntrerupere este zona de memorie dintre adresele fizice [0,3ffh] &#x15F;i con ine 256 de vectori a 4 octe i fiecare. &#xCE;n fiecare vector se memoreaz&#x103; valorile care trebuie &#xEE;nc&#x103;rcate &#xEE;n registrele IP &#x15F;i CS pentru a adresa prima instruc iune a rutinei de tratare. Primii 2 octe i din vector sunt pentru IP (&#xEE;n ordinea low - high) iar urm&#x103;torii 2 pentru CS (ordinea low - high). Pentru lansarea &#xEE;n execu ie a rutinei de tratare a &#xEE;ntreruperii, procesorul efectueaz&#x103; urm&#x103;toarele opera iuni: &#x2022; salveaz&#x103; &#xEE;n stiv&#x103; (v&#xE2;rful stivei este indicat de SS:SP) con inutul registrelor care indic&#x103; adresa instruc iunii urm&#x103;toare (CS &#x15F;i IP) &#x15F;i cuv&#xE2;ntul de stare al procesorului (PSW); &#x2022; activeaz&#x103; semnalul de acceptare a &#xEE;ntreruperii (interrupt acknowledge); &#x2022; &#xEE;ncarc&#x103; &#xEE;n registrele de adres&#x103; (CS &#x15F;i IP) adresa rutinei de tratare a &#xEE;ntreruperii din tabela vectorilor de &#xEE;ntrerupere. La lansarea rutinei de tratare a &#xEE;ntreruperii, procesorul reseteaz&#x103; IF, ceea ce &#xEE;nseamn&#x103; c&#x103; &#xEE;n timpul execu iei acesteia &#xEE;ntreruperile mascabile sunt dezactivate. Totu&#x15F;i, IF poate fi setat prin program &#xEE;n rutina de tratare. Ultima instruc iune din rutina de tratare a &#xEE;ntreruperii este interrupt return (iret), care este similar&#x103; cu instruc iunea ret. Adresa instruc iunii urm&#x103;toare &#x15F;i starea originale sunt restaurate (&#xEE;n CS:IP &#x15F;i respectiv PSW) &#x15F;i procesorul continu&#x103; cu execu ia instruc iunii urm&#x103;toare celei la care a fost &#xEE;ntrerupt. 4-61
• 62. Ori de c&#xE2;te ori controllerul genereaz&#x103; o &#xEE;ntrerupere, &#xEE;ntreruperile de prioritate mai mic&#x103; sunt automat inhibate p&#xE2;n&#x103; c&#xE2;nd prin program este achitat&#x103; &#xEE;ntreruperea (vezi 4.2.3) a c&#x103;rei rutin&#x103; este &#xEE;n curs de execu ie. Cererile de &#xEE;ntreruperi pe niveluri de prioritate mai mic&#x103; sunt totu&#x15F;i memorate de controller &#x15F;i se declan&#x15F;eaz&#x103; mecanismul de cerere de &#xEE;ntrerupere la procesor atunci c&#xE2;nd sunt &#xEE;ndeplinite condi iile de prioritate. &#xCE;ntreruperile cu prioritate mai mare pot &#xEE;ntrerupe rutinele de tratare a &#xEE;ntreruperilor cu prioritate mai mic&#x103; dac&#x103; acestea din urm&#x103; au executat instruc iunea sti (au activat sistemul de &#xEE;ntreruperi externe mascabile). Dac&#x103; acestea nu au executat instruc iunea sti ele nu pot fi &#xEE;ntrerupte deoarece, dup&#x103; cum s-a ar&#x103;tat, la lansare &#xEE;n execu ie a rutinei de tratare se dezactiveaz&#x103; automat sistemul de &#xEE;ntreruperi. La PC (sub DOS), BIOS ini ializeaz&#x103; la startare controllerele I8259 &#x15F;i completeaz&#x103; o parte dintre vectorii din tabela de &#xEE;ntreruperi cu adresele rutinelor de tratare; este indicat ca programele de sistem &#x15F;i utilizator s&#x103; in&#x103; cont de aceast&#x103; ini ializare. Sistemul de &#xEE;ntreruperi externe este programat astfel &#xEE;nc&#xE2;t pentru &#xEE;ntreruperile de la 0 la 7 (de la controllerul 1) s&#x103; fie lansate &#xEE;n execu ie rutinele ale c&#x103;ror adrese de start se g&#x103;sesc &#xEE;n vectorii de la 08h la 0fh, iar pentru &#xEE;ntreruperile de la 8 la 0fh (de la controllerul 2) s&#x103; fie lansate &#xEE;n execu ie rutinele ale c&#x103;ror adrese de start se g&#x103;sesc &#xEE;n vectorii de la 70h la 77h. Adresa fizic&#x103; de memorie pentru adresa memorat&#x103; &#xEE;n vectorul de &#xEE;ntrerupere n este n*4. (Ex: pentru vectorul 8 adresa de memorie este 20h). O rutin&#x103; de tratare a unei &#xEE;ntreruperi externe poate fi lansat&#x103; (de obicei pentru testare sau simulare) &#x15F;i prin program, cu instruc iunea int n.. Exemple (vezi si 4.2.2): &#x2022; int 9 &#x2013; lanseaz&#x103; &#xEE;n execu ie rutina de tratare a &#xEE;ntreruperii pentru tastatur&#x103;; &#x2022; int 8 &#x2013; lanseaz&#x103; &#xEE;n execu ie rutina de tratare a &#xEE;ntreruperii pentru ceasul de timp real; &#x2022; int 0BH - lanseaz&#x103; &#xEE;n execu ie rutina de tratare a &#xEE;ntreruperii pentru COM2. 4.2.2 Plasarea I8259 &#xEE;n spa iul de I/E la PC La PC, porturile de I/E de la 0 la OFFH sunt rezervate pentru a fi utilizate pe placa de baz&#x103; a calculatorului. Porturile de la 100h p&#xE2;n&#x103; la 3FFH sunt utilizate de c&#x103;tre dispozitivele conectate pe magistrala I/E a calculatorului. Porturile cu adrese mai mari de 400h nu sunt disponibile pe placa de baz&#x103; &#xEE;n sistem. Asignarea uzual&#x103; a porturilor la dispozitive este urm&#x103;toarea: &#x2022; de la 0 la 0Fh - porturile pentru controller-ul DMA1, 4 canale I8237; &#x2022; de la 20h la 21h - primul controller I8259A pentru &#xEE;ntreruperi, la care sunt asignate urm&#x103;toarele &#xEE;ntreruperi externe mascabile: pe canalul 0 - &#xEE;ntreruperea de la ceasul de timp real; pe canalul 1 - &#xEE;ntreruperea de la tastatur&#x103;; pe canalul 2 - la AT cascadare c&#x103;tre al doilea controller I8259; pe canalul 3 - &#xEE;ntrerupere de la COM2; pe canalul 4 - &#xEE;ntrerupere de la COM1; pe canalul 5 - &#xEE;ntrerupere de la a doua imprimant&#x103; LPT2 sau placa de re ea; pe canalul 6 - &#xEE;ntrerupere de la controller-ul floppy discului; pe canalul 7 - &#xEE;ntrerupere de la prima imprimant&#x103; LPT1. &#x2022; de la 40h la 43h - porturile pentru dispozitivul num&#x103;r&#x103;tor/periodizator I8254; un registru de control &#x15F;i 3 num&#x103;r&#x103;toare de 16 bi i sunt disponibile pe acest dispozitiv: Num&#x103;r&#x103;torul 0 - ceasul de timp real; 4-62
• 63. Num&#x103;r&#x103;torul 1 - este utilizat pentru re&#xEE;mprosp&#x103;tarea memoriei; Num&#x103;r&#x103;torul 2 - este utilizat pentru difuzor. &#x2022; de la 60h la 64h la AT - controller-ul pentru tastatur&#x103;; &#x2022; de la 70h la 71h - pentru accesul la CMOS &#x15F;i ceasul de timp real din CMOS; &#x2022; de la 80h la 8Fh - regiunea de pagin&#x103; DMA; &#x2022; de la A0h la A1h - adresele pentru al 2-lea controller de &#xEE;ntreruperi I8259 la AT; la acest controller, sunt asignate urm&#x103;toarele &#xEE;ntreruperi externe mascabile: pe canalul 0 - &#xEE;ntreruperea de la ceasul de timp real din CMOS (utilizat&#x103; de sistemul de operare OS/2); pe canalul 1 - rezervat, la AT preia func ia canalului 2 de la primul controller care este utilizat pentru cascadare; canalele 2,3,4 - disponibile pentru &#xEE;ntreruperi de la alte dispozitive dec&#xE2;t cele sistem; canalul 5 - rezervat pentru coprocesorul matematic; canalul 6 - rezervat pentru controller-ul de hard disc; canalul 7 - disponibil; &#x2022; C0h-CFh - al doilea controller DMA; &#x2022; F0h-F1h - coprocesor matematic; &#x2022; 170h-177h - al 2-lea hard disc; &#x2022; 1F0h-1F7h - primul hard disc; &#x2022; 200h-207h - games; &#x2022; 278h-27Fh - interfa &#x103; paralela pentru LPT2; &#x2022; 2E8h-2EFh - porturi pentru COM4; &#x2022; 2F8h-2FFh - porturi pentru COM2; &#x2022; 370h-377h - al doilea controller al floppy discului; &#x2022; 378h-37Fh - porturi pentru LPT1; &#x2022; 3E8h-3EFh - porturi pentru COM3; &#x2022; 3F0h-3F7h - primul controller floppy; &#x2022; 3F8h-3FFh -porturi pentru COM1; 4.2.3 Detalii de programare utiliz&#xE2;nd &#xEE;ntreruperile la PC cu SO DOS Se reaminte&#x15F;te faptul c&#x103; la microprocesoarele din familia 80x86 &#xEE;ntreruperile pot fi interne sau externe. &#xCE;ntreruperile interne sunt generate fie de instruc iunile software (int n), fie de procesor &#xEE;n anumite situa ii (dep&#x103;&#x15F;ire aritmetic&#x103;, TF pozi ionat etc). &#xCE;ntreruperile externe sunt generate de hardware &#x15F;i pot fi: &#x2022; nemascabile (pe intrarea NMI la procesor), sau &#x2022; mascabile (prin intermediul controller-elor I8259); &#xCE;ntreruperile nemascabile &#xEE;ntrerup secven a curent&#x103; de instruc iuni indiferent de situa ie. 4-63
• 64. &#xCE;ntreruperile mascabile &#xEE;ntrerup secven a curent&#x103; de instruc iuni numai dac&#x103; IF=1, dac&#x103; bitul asociat &#xEE;n registrul masc&#x103; al I8259 (vezi mai jos) este pus la 0 &#x15F;i dac&#x103; nu este &#xEE;n curs de tratare o alt&#x103; &#xEE;ntrerupere extern&#x103; mai prioritar&#x103;. &#xCE;n continuare sunt prezentate aspecte practice de utilizare a sistemului de &#xEE;ntreruperi externe la PC, dup&#x103; ce BIOS a executat procedura de ini ializare. &#xCE;n practic&#x103;, se &#xEE;nt&#xE2;lnesc dou&#x103; modalit&#x103; i de utilizare a &#xEE;ntreruperilor: 1. apelarea procedurilor pe care BIOS-ul sau alte programe/drivere/TSR-uri le pun la dispozi ie; 2. capturarea vectorului de &#xEE;ntrerupere &#x15F;i depunerea &#xEE;n tabela vectorilor de &#xEE;ntrerupere a adresei unei rutine de tratare utilizator. Lansarea &#xEE;n execu ie a rutinelor de tratare, &#xEE;n ambele cazuri, se face &#xEE;n func ie de tipul &#xEE;ntreruperii: &#x2022; prin program cu instruc iunile int pentru &#xEE;ntreruperi software; &#x2022; declan&#x15F;at de c&#x103;tre semnale externe/interne cablate pe nivelurile &#xEE;ntreruperilor externe; Rutinele de tratare asociate &#xEE;ntreruperilor externe pot fi apelate &#x15F;i cu instruc iuni int, de obicei pentru testare &#x15F;i depanare. Apelul prin program cu instruc iunea int presupune urm&#x103;torii pa&#x15F;i: 1. salvarea registrelor procesorului (dac&#x103; este cazul); 2. &#xEE;nc&#x103;rcarea &#xEE;n registrele procesorului sau &#xEE;n anumite loca ii de memorie a unor valori solicitate de rutina de tratare a &#xEE;ntreruperii; 3. executarea instruc iunii int (int n); 4. tratarea ie&#x15F;irilor (dac&#x103; exist&#x103;) din rutina de tratare a &#xEE;ntreruperii; 5. refacerea registrelor salvate la primul pas. &#xCE;n func ie de specificul rutinei de tratare a &#xEE;ntreruperilor anumi i pa&#x15F;i pot fi omi&#x15F;i (de exemplu pentru rutinele care nu afecteaz&#x103; registrele sau indicatorii de condi ii nu sunt neap&#x103;rat necesari pa&#x15F;ii privind salvarea &#x15F;i restaurarea registrelor &#x15F;i indicatorilor). &#xCE;n cazul &#xEE;n care programul apeleaz&#x103; propria rutin&#x103; de tratare a &#xEE;ntreruperii este necesar s&#x103; fie tratate toate aspectele referitoare la salvarea &#x15F;i restaurarea registrelor &#x15F;i indicatorilor, pentru a nu provoca efecte colaterale dezastruoase pentru func ionarea sistemului. Pentru capturarea unui vector de &#xEE;ntrerupere, &#xEE;n program trebuie s&#x103; apar&#x103; urm&#x103;toarele secven e: &#x2022; salvarea &#xEE;n memorie (de obicei &#xEE;n segmentul curent de date sau cod) a adreselor rutinelor de tratare curente, care urmeaz&#x103; a fi &#xEE;nlocuite cu rutine utilizator ; &#x2022; depunerea &#xEE;n tabela vectorilor de &#xEE;ntreruperi a adresei rutinei de tratare utilizator; Observa ii: 1. Exist&#x103; situa ii &#xEE;n care rutina de tratare a &#xEE;ntreruperii utilizator, &#xEE;nainte sau dup&#x103; efectuarea unor prelucr&#x103;ri specifice aplica iei, trebuie s&#x103; apeleze &#x15F;i rutina ini ial&#x103; de tratare a &#xEE;ntreruperii (dac&#x103; de exemplu &#xEE;n BIOS este prev&#x103;zut&#x103; o astfel de rutin&#x103;) &#x2013; vezi &#x15F;i exemplul de la 4.2.4. 2. La sf&#xE2;r&#x15F;itul programului scris de utilizator trebuie ca adresele originale ale rutinelor de tratare utilizate &#xEE;n program s&#x103; fie ref&#x103;cute &#xEE;n tabela vectorilor de &#xEE;ntrerupere, &#xEE;n caz contrar ap&#x103;r&#xE2;nd efecte imprevizibile &#xEE;n func ionarea sistemului. Atunci c&#xE2;nd utilizeaz&#x103; &#xEE;ntreruperile mascabile externe, programatorul trebuie s&#x103; trateze &#xEE;n mod adecvat urm&#x103;toarele: &#x2022; activarea/dezactivarea sistemului de &#xEE;ntreruperi mascabile; &#x2022; mascarea/demascarea nivelurilor de &#xEE;ntrerupere la controllerul I8259; 4-64
• 65. &#x2022; registrele procesorului trebuie salvate la &#xEE;nceputul execu iei rutinei de tratare &#x15F;i restaurate la sf&#xE2;r&#x15F;itul acesteia; &#x2022; achitarea &#xEE;ntreruperii externe &#xEE;n curs de execu ie; &#x2022; comunicarea (sincronizarea) cu programul/programele utilizator pe care rutina &#xEE;l/le deserve&#x15F;te. Sistemul de &#xEE;ntreruperi mascabile se activeaz&#x103; dup&#x103; execu ia instruc iunii sti sau dup&#x103; execu ia unei instruc iuni popf &#xEE;n care indicatorul IF din cuv&#xE2;ntul extras din stiva este 1 &#x15F;i se dezactiveaz&#x103; cu instruc iunea cli sau dac&#x103; se execut&#x103; instruc iunea popf &#xEE;n care indicatorului IF &#xEE;n cuv&#xE2;ntul extras din stiv&#x103; este 0. C&#xE2;t timp sistemul de &#xEE;ntreruperi este activat, pot avea acces la procesor numai &#xEE;ntreruperile care nu sunt mascate &#xEE;n octetul de m&#x103;&#x15F;ti din controllerul I8259. La primul controller de &#xEE;ntreruperi registrul de mascare este la adresa 21h, iar la cel de-al 2-lea la adresa 0A1h. &#xCE;n aceste registre, pentru fiecare &#xEE;ntrerupere exist&#x103; c&#xE2;te un bit de mascare. Registrul masc&#x103; de la adresa 21h: bit: 7 6 5 4 3 2 1 0 | &#x2026;&#x2026; | | | IRQ7 IRQ2 IRQ1 IRQ0 Registrul masc&#x103; de la adresa 0A1h : bit: 7 6543 2 1 0 | &#x2026;.. | | | IRQF IRQA IRQ9 IRQ8 Dac&#x103; bitul corespunz&#x103;tor IRQn este egal cu 0, nivelul de &#xEE;ntrerupere este demascat; dac&#x103; este egal cu 1, nivelul de &#xEE;ntrerupere este mascat &#x15F;i &#xEE;ntreruperea asociat&#x103; nu este tratat&#x103; de c&#x103;tre controller. Exemplu: Mascarea/demascarea unei &#xEE;ntreruperi pe nivelul 1 (pentru IRQ1 ) IRQ1-demascare: in al,21h mov oldmask1,al and al,0FDh out 21h,al IRQ1-mascare: in al,21h mov oldmask1,al or al,2 out 21h,al Refacerea m&#x103;&#x15F;tii ini iale se face cu secven a de instruc iuni: mov al,oldmask1 out 21h,al Exemplu: Mascarea/demascarea unei &#xEE;ntreruperi pe nivelul 9 (pentru IRQ9 ) IRQ9-demascare: in al,a1h mov oldmask2,al and al,0FDh out a1h,al IRQ9-mascare: 4-65
• 66. in al,a1h mov oldmask2,al or al,2 out a1h,al Refacerea m&#x103;&#x15F;tii ini iale se face cu secven a de instruc iuni: mov al,oldmask2 out a1h,al Atunci c&#xE2;nd prin hardware se lanseaz&#x103; &#xEE;n execu ie o rutin&#x103; de tratare a &#xEE;ntreruperii, se salveaz&#x103; automat &#xEE;n stiv&#x103; (&#xEE;n aceast&#x103; ordine): IP, CS si PSW ; structura PSW pentru modul de lucru real al procesorului este urm&#x103;toarea: 15 &#x2026;&#x2026;&#x2026;&#x2026;. 0 | | xxxxODITSZxAxPxC unde: x nu conteaz&#x103; iar O, D, I,T,S,Z, A, P, C sunt indicatorii; I este Interrupt Flag. Prin program, trebuie salva i (cu instruc iuni push) regi&#x15F;trii procesor care sunt utiliza i &#xEE;n rutin&#x103; - pentru siguran &#x103;, este bine s&#x103; fie salva i to i. La terminarea rutinei de tratare, se restaureaz&#x103; to i regi&#x15F;trii salva i la &#xEE;nceput (cu instruc iuni pop, &#xEE;n ordinea invers&#x103; salv&#x103;rii) apoi se execut&#x103; iret. C&#xE2;nd se execut&#x103; instruc iunea iret, se refac automat PSW,CS,IP. &#x2022; &#xCE;n timpul execu iei rutinei de tratare, dup&#x103; efectuarea prelucr&#x103;rilor specifice pentru nivelul de prioritate al &#xEE;ntreruperii, trebuie f&#x103;cut&#x103; achitarea &#xEE;ntreruperii externe, cu urm&#x103;toarele secven e de instruc iuni: ; pentru primul I8259: mov al,20h out 20h,al ; pentru la 2-lea I8259: mov al,20h out 0a0h,al Dac&#x103; &#xEE;ntreruperea nu este achitat&#x103;, nu vor mai putea fi lansate ulterior rutinele de tratare cu prioritate mai mic&#x103; sau egal&#x103; cu a &#xEE;ntreruperii neachitate. Deoarece programul &#xEE;n curs de execu ie nu cunoa&#x15F;te c&#xE2;nd apar &#xEE;ntreruperile, este necesar ca rutina de tratare &#x15F;i acesta s&#x103; comunice/s&#x103; se sincronizeze; de regul&#x103; comunicarea/sincronizarea se realizeaz&#x103; prin intermediul unor zone comune de memorie (memorie partajat&#x103;). Accesul la aceste zone trebuie f&#x103;cut cu interblocare, pentru a evita erorile. Exemplu: un program pe 16 bi i, modul real partajeaz&#x103; cu o rutin&#x103; de tratare a &#xEE;ntreruperii un &#xEE;ntreg long (pe 4 octe i), a c&#x103;rui scriere/citire se face prin dou&#x103; instruc iuni procesor. Atunci c&#xE2;nd programul utilizator cite&#x15F;te &#xEE;ntregul f&#x103;r&#x103; interblocare, exist&#x103; pericolul ca &#xEE;ntre cele dou&#x103; instruc iuni de citire s&#x103; se declan&#x15F;eze rutina de tratare care modific&#x103; valoarea; &#xEE;n aceast&#x103; situa ie, programul utilizator va citi partea low din vechea valoare &#x15F;i partea high din noua valoare. Evitarea acestei situa ii se face utiliz&#xE2;nd mecanisme de interblocare puse la dispozi ie de c&#x103;tre sistemul de operare sau implementate &#xEE;n program. Cea mai simpl&#x103; metod&#x103;, este ca accesul &#xEE;n scriere/citire din programul utilizator la zonele comune s&#x103; se fac&#x103; cu secven a: cli ; dezactiveaz&#x103; &#xEE;ntreruperi &#x2026; Acces la zona comun&#x103; &#x2026; sti ; activeaz&#x103; &#xEE;ntreruperi &#xCE;n general, &#xEE;n rutina de tratare nu trebuie s&#x103; fie executate apeluri sistem sau subprograme comune cu programele utilizator, dac&#x103; acestea nu sunt reentrante. De asemenea, accesul la porturi, zone comune de memorie sau alte resurse comune cu sistemul de operare sau programele utilizator trebuie s&#x103; se fac&#x103; cu interblocare. 4-66
• 67. 4.2.4 Exemple de utilizare a &#xEE;ntreruperilor Av&#xE2;nd ca sistem de operare MS DOS, s&#x103; se elaboreze un program &#xEE;n limbaj de asamblare care la fiecare 10 &#xEE;ntreruperi de la ceasul de timp real s&#x103; afi&#x15F;eze pe monitor caracterul &#x2018;A&#x2019;. O &#xEE;ntrerupere de la ceasul de timp real al PC apare de aproximativ 18.2 ori pe secund&#x103; (la aprox. 55 ms) &#x2013; vezi &#x15F;i 4.3.4. Oprirea programului s&#x103; se poat&#x103; face fie la ac ionarea tastelor CTRL+BREAK, fie dup&#x103; ce s-a afi&#x15F;at de 1000 ori caracterul &#x2018;A&#x2019;. Pentru a scrie acest program este necesar s&#x103; fie captura i vectorii de &#xEE;ntrerupere de pe nivelul 8, unde este depus&#x103; adresa rutinei de tratare pentru IRQ0 &#x15F;i de pe nivelul 23h asociat instruc iunii int 23, unde este depus&#x103; adresa rutinei de tratare pentru CTRL+BREAK. Pentru afi&#x15F;area pe monitor a caracterului &#x2018;A&#x2019; se va folosi func ia DOS 09h iar pentru oprirea normal&#x103; a programului se va folosi func ia DOS 4ch a &#xEE;ntreruperii software int 21h. Detalii privind func iile DOS/BIOS utilizatepot fi furnizate de programul &#xAB; Help &#xBB; disponibil la laborator. dosseg .model small .stack 200h .data int_8_ip dw ? int_8_cs dw ? int_23_ip dw ? int_23_cs dw ? msg db 'A\$' timer dw 0 ;contor zece dw 10 old_mask db ? .code save_ds dw ? program_ceas proc near mov ax,@data mov ds,ax mov cs:save_ds,ax ; salvare ds xor ax,ax mov es,ax ;salvare adresele BIOS pentru rutinele de tratare pentru nivelurile 8h si ;23h mov ax,es:(8*4) mov int_8_ip,ax mov ax,es: (8*4+2) mov int_8_cs,ax mov ax,es: ( 23h*4 ) mov int_23_ip, ax mov ax,es: ( 23h*4+2 ) mov int_23_cs , ax ;Se dezactiveaza sistemul de &#xEE;ntreruperi pentru a nu apare ;accidental &#xEE;ntreruperi in timp ce se fac modific&#x103;ri in tabela ;vectorilor de &#xEE;ntreruperi cli ;Depune in tabela adresele rutinelor de tratare utilizator mov word ptr es: ( 8*4 ) , offset it_ceas mov word ptr es: ( 8*4+2 ) , cs mov word ptr es: ( 23h*4 ) , offset ctrl_break mov word ptr es: ( 23h*4+2 ) , cs ;demascare nivelul 0 la primul I8259 in al,21h mov old_mask , al 4-67
• 68. and al, 0FEh out 21h, al ; demascare nivel 0. ; activeaza sistemul de &#xEE;ntreruperi mascabile sti ;aici incepe bucla de prelucrare in programul utilizator mov si,timer repeta: mov dx, 0 mov ax, timer cmp ax, si jz repeta ;daca nu s-a modificat contorul, repeta mov si,ax div zece cmp dx, 0 jnz repeta; numai la 10 tick-uri se face afisarea mov dx,offset msg mov ah,9 ; functia DOS de afisare sir de caractere terminat cu &#x2018;\$&#x2019; int 21h ; afiseaza &#x2018;A&#x2019; mov ax,timer cmp ax, 1000 jc repeta call far ptr restore_vect ;restaureaza vectorii initiali mov ah,4ch ;termina programul int 21h program_ceas endp it_ceas proc far ; rutina de tratare I.T ceas push ax push ds push bx push cx push dx push si push di push bp push es mov ax,cs:save_ds mov ds,ax ;reface ds al programului asociat rutinei inc timer pop es pop bp pop di pop si pop dx pop cx pop bx pop ds pop ax jmp dword ptr int_8_ip it_ceas endp ctrl_brk proc far ; rutina de tratare CTRL+BREAK push ax push ds push bx push cx push dx 4-68
• 69. push si push di push bp push es mov ax,cs:save_ds mov ds,ax xor ax,ax mov es,ax call far ptr restore_vect pop es pop bp pop di pop si pop dx pop cx pop bx pop ds pop ax jmp dword ptr int_23_ip ctrl_brk endp restore_vect proc far ; restaurare vectori initiali si masca la ie&#x15F;irea din program&#x2026; cli mov ax,int_8_ip mov es:(8*4),ax mov ax,int_8_cs mov es:(8*4+2),ax mov ax,int_23_ip mov es:(23h*4),ax mov ax,int_23_cs mov es:(23h*4+2),ax mov al,old_mask out 21h,al sti ret restore_vect endp end program_ceas Observa ii: 1. Rutinele de tratare pentru &#xEE;ntreruperea de la ceas (it_ceas) &#x15F;i pentru tratarea ac ion&#x103;rii tastelor ctrl_break (ctrl_brk) se termin&#x103; cu instruc iunea jmp la adresa vectorului originar de tratare a &#xEE;ntreruperii, salvat &#xEE;n programul utilizator. Acest lucru este necesar deoarece exist&#x103; &#xEE;n sistemul de operare rutine care trateaz&#x103; aceste &#xEE;ntreruperi, &#xEE;n cadrul trat&#x103;rii efectu&#xE2;ndu-se opera ii absolut necesare pentru sistem &#x2013; de exemplu oprirea motorului de la floppy disc este gestionat&#x103; &#xEE;n rutina de ceas original&#x103;. Nu toate &#xEE;ntreruperile au proceduri de tratare &#xEE;n cadrul BIOS sau sistemului de operare. &#xCE;n astfel de situa ii modul de terminare depinde de tipul &#xEE;ntreruperii: dac&#x103; &#xEE;ntreruperile sunt externe &#x15F;i mascabile, atunci &#xEE;nainte de terminare se face achitarea &#xEE;ntreruperii &#xEE;n curs de tratare &#x15F;i apoi se execut&#x103; instruc iunea iret; pentru celelalte tipuri de &#xEE;ntreruperi terminarea se face pur &#x15F;i simplu cu iret; &#xCE;n cazul de fa &#x103; dac&#x103; sistemul de operare nu ar avea rutina pentru &#xEE;ntreruperea de la ceas instruc iunile: pop ax jmp dword ptr int_8_ip ar trebui &#xEE;nlocuite cu: mov al,20h; 4-69
• 70. out 20h,al pop ax iret Pentru rutina de tratare ac ionarea CTRL+BREAK terminarea s-ar putea face &#xEE;nlocuind jmp dword ptr int_23_ip cu iret. 2. &#xCE;ntreruperea unui program DOS din execu ie se poate face utiliz&#xE2;nd CTRL+C sau CTRL+BREAK. Prin utilizarea comenzii BREAK &#xEE;n CONFIG.SYS sau ca o comand&#x103; obi&#x15F;nuit&#x103; DOS, sistemul de operare poate fi determinat s&#x103; verifice ac ionarea tastelor respective &#xEE;n timpul oric&#x103;rui apel sistem (BREAK=ON) sau s&#x103; fac&#x103; verificarea numai &#xEE;n timpul apelurilor sistemului pentru opera iile de I/E cu echipamente periferice standard (BREAK=OFF). &#xCE;n program se folose&#x15F;te astfel apelul sistem 09H pentru afi&#x15F;area unui &#x15F;ir de caractere iar &#xEE;n timpul execu iei acestui apel se face testul de ac ionare CTRL+BREAK. Programul de mai sus se poate scrie &#x15F;i &#xEE;n limbajul C/C++, PASCAL etc. fie prin utilizarea func iilor speciale pentru &#xEE;ntreruperi, existente &#xEE;n bibliotecile mediilor de dezvoltare, fie prin utilizarea program&#x103;rii mixte limbaj evoluat / limbaj de asamblare. O versiune a programului scris&#x103; &#xEE;n Borland C/C++ este urm&#x103;toarea: #include &lt;stdio.h&gt; #include &lt;dos.h&gt; #include &lt;conio.h&gt; #define INTR_8 0X08 /* &#xCE;ntreruperea de la ceas, la aprox. 55ms*/ #define INTR_23 0X23 /* &#xCE;ntreruperea CTRL_BREAK */ #ifdef __cplusplus #define __CPPARGS ... #else #define __CPPARGS #endif unsigned char oldmask_1=0; void interrupt ( *oldint8)(__CPPARGS); void interrupt ( *oldint23)(__CPPARGS); int count=0,oldcount=0,ctrl_bk=0; void interrupt ceas(__CPPARGS){ /* incrementeaza contorul */ count++; /* achitarea &#xEE;ntreruperii */ outportb(0x20,0x20); } void interrupt ctrl_brk(__CPPARGS){ ctrl_bk=1; } void main(void){ /* salveaza vechii vectori de &#xEE;ntrerupere */ oldint8 = getvect(INTR_8); oldint23 = getvect(INTR_23); 4-70
• 71. /* dezactiveaza sistemul de &#xEE;ntreruperi mascabile */ asm cli; /* seteaza noii vectori de &#xEE;ntrerupere */ setvect(INTR_8, ceas); setvect(INTR_23,ctrl_brk); /*salveaza masca pentru primul 8259*/ oldmask_1=inportb(0x21); /*demascheaza &#xEE;ntreruperea 0*/ outportb(0x21,oldmask_1 &amp; 0x0fe); /* activeaza sistemul de &#xEE;ntreruperi mascabile */ asm sti; /* bucla de prelucrare a programului principal */ clrscr(); while ((count&lt;1000)&amp;&amp;(!ctrl_bk)){ if(count!=oldcount) if((count % 10)==0) { printf("A&#x201D;); oldcount=count; } } /* dezactiveaza sistemul de &#xEE;ntreruperi mascabile */ asm cli; /* seteaza vechii vectori de &#xEE;ntrerupere */ setvect(INTR_8, oldint8); setvect(INTR_23,oldint23); /*seteaza vechea masca pentru primul 8259*/ outportb(0x21,oldmask_1); /* activeaza sistemul de &#xEE;ntreruperi mascabile */ asm sti; } Se remarc&#x103;: &#x2022; utilizarea cuv&#xE2;ntului cheie interrupt, care indic&#x103; compilatorului s&#x103; genereze automat secven e de salvare/restaurare registre &#x15F;i execu ie iret la ie&#x15F;ire; &#x2022; utilizare func ii getvect/setvect pentru salvare/capturare vector de &#xEE;ntrerupere; &#x2022; utilizare func ii inportb/outportb pentru citire/scriere din/&#xEE;n porturi pe un octet; &#x2022; pentru activarea/dezactivarea sistemului de &#xEE;ntreruperi s-au utilizat instruc iuni &#xEE;n limbajul de asamblare (asamblare in line); se pot &#xEE;ns&#x103; folosi &#xEE;n acest scop &#x15F;i func iile enable() pentru activare &#x15F;i disable() pentru dezactivare &#xEE;ntreruperi. 4-71
• 72. Probleme propuse 1. S&#x103; se modifice programul program_ceas astfel &#xEE;nc&#xE2;t oprirea s&#x103; se realizeze dup&#x103; 1000000 de &#xEE;ntreruperi de la ceas (timer pe 4 octe i). 2. S&#x103; se modifice programul program_ceas &#x15F;i rutina it_ceas astfel &#xEE;nc&#xE2;t la fiecare 10 &#xEE;ntreruperi de la ceasul de timp real programul s&#x103; afi&#x15F;eze &#x201E;tack&#x201D; iar rutina de tratare a &#xEE;ntreruperii de la ceas s&#x103; afi&#x15F;eze la fiecare apel &#x201E;tick&#x201D;. Indica ie: &#xCE;n programul utilizator se va folosi pentru afi&#x15F;area &#x15F;irului &#x201E;tack&#x201D; apelul sistem 9 al int21h, iar &#xEE;n rutina de tratare a &#xEE;ntreruperii de la ceas se va folosi subfunc ia 0eh de la int 10h (BIOS) pentru afi&#x15F;area caracterelor din &#x15F;irul &#x201E;tick&#x201D;. Aceasta, deoarece apelul la sistem prin int 21h nu este reentrant, utilizarea unor astfel de apeluri &#xEE;n rutinele de tratare a &#xEE;ntreruperilor put&#xE2;nd duce la blocarea calculatorului! 3. S&#x103; se rezolve problema utiliz&#xE2;nd pentru &#xEE;ntreruperea de la ceas vectorul 1ch (int 1ch) &#x2013; detalii despre int 1ch se g&#x103;sesc &#xEE;n programul HELP disponibil la laborator. 4. Program care implementeaz&#x103; intr&#x103;ri bufferate cu func iile: &#x2022; Rutina de tratare a &#xEE;ntreruperii de la ceas genereaz&#x103; &#xEE;ntr-un buffer de 1000 octe i (coad&#x103; circular&#x103;) o secven &#x103; de caractere ASCII 1,2,&#x2026;,9 format&#x103; dintr-un num&#x103;r de caractere egal cu modulo 10 al num&#x103;rului de &#xEE;ntreruperi care au ap&#x103;rut de la lansarea programului. &#x2022; Programul utilizator afi&#x15F;eaz&#x103; pe monitor caracterele noi, &#xEE;nso ite de nr. de &#xEE;ntreruperi memorate &#xEE;n contor. &#x2022; Programul utilizator &#x15F;i rutina de tratare a &#xEE;ntreruperii trebuie s&#x103; detecteze eventualele umpleri de buffer respectiv golire de buffer, &#xEE;n vederea sincroniz&#x103;rii. 5. Program pentru ie&#x15F;iri bufferate (buffer circular de 1000 octe i). Programul utilizator pune &#xEE;n buffer date citite dintr-un fi&#x15F;ier text linie cu linie, la intervale multiplu de aproximativ 0,1 sec. specificate interactiv de utilizator. Rutina de &#xEE;ntrerupere de la ceas afi&#x15F;eaz&#x103; liniile nou introduse. Programul utilizator trebuie s&#x103; detecteze umplerea de buffer &#x15F;i s&#x103; aten ioneze printr-un mesaj afi&#x15F;at pe ecran, iar rutina de &#xEE;ntrerupere trebuie s&#x103; detecteze golirea buffer-ului &#x15F;i s&#x103; aten ioneze sonor (beep). 6. Dezasambla i programul scris &#xEE;n limbajul C/C++; ce remarca i? 4.3 Dispozitive pentru generarea bazei de timp &#x15F;i num&#x103;rarea de evenimente 4.3.1 Dispozitivul mum&#x103;r&#x103;tor/periodizator I8254 I8254 con ine (figura 4.3.1-1): &#x2022; Magistrala de date bidirec ional&#x103;, tree-state pe 8 bi i.; &#x2022; Logica de citire/scriere (semnale: RD, WR, A0, A1, CS); &#x2022; Registru de control (numai de ie&#x15F;ire); &#x2022; 3 num&#x103;r&#x103;toare pe 16 bi i programabile s&#x103; func ioneze independent. Num&#x103;rarea se face descresc&#x103;tor. Oricare num&#x103;r&#x103;tor poate fi programat s&#x103; lucreze &#xEE;n unul dintre cele 6 moduri de lucru disponibile. Transferurile de date &#xEE;ntre dispozitiv &#x15F;i magistrala calculatorului se fac pe 8 bi i &#x15F;i depind de modul &#xEE;n care se face comanda scrierilor sau citirilor prin intermediul registrelor de control. &#x2022; Intr&#x103;rile/ie&#x15F;irile asociate num&#x103;r&#x103;toarelor sunt: 4-72
• 73. &#x2022; intr&#x103;ri de tact (clock) (CLKi , i &#x3B5; [0,2]); pe fiecare intrare de tact pot fi impulsuri cu frecven a maxim&#x103; de 8MHz; &#x2022; intr&#x103;ri de poart&#x103; GATEi , i &#x3B5; [0,2], utilizate pentru triggerarea intr&#x103;rilor de clock; &#x2022; ie&#x15F;iri OUTi , i &#x3B5; [0,2]. &#xCE;n figura 4.3.1-2 se prezint&#x103; schema bloc intern&#x103; a unui num&#x103;r&#x103;tor. Intern, dispozitivul con ine pentru fiecare DATA BUS CLK0 BUFFER CNT0 GATE0 OUT0 INTERNAL BUS RD CLK1 CNT1 WR R/W GATE1 A0 LOGIC OUT1 A1 CLK2 CS CNT2 GATE2 CONTROL WORD OUT2 REGISTER Fig. 4.3.1 &#x2013; 1 Schema bloc a dispozitivului I8254 (conform catalog Intel) num&#x103;r&#x103;tor 3 regi&#x15F;tri: &#x2022; registrul CR (Count Register) pe 16 bi i &#x2013; la programare datele sunt &#xEE;nscrise &#xEE;n acest registru, iar la startarea num&#x103;r&#x103;rii ele sunt &#xEE;nc&#x103;rcate &#xEE;n registrul CE &#xEE;n care efectueaz&#x103; num&#x103;rarea. CRM este pentru octetul MSB, iar CRL pentru octetul LSB; &#x2022; registrul CE (Counting Element) &#x2013; registrul de num&#x103;rare; &#x2022; OL (Output Latch) &#x2013; "Latch" &#xEE;n care se memoreaz&#x103; la o anumit&#x103; comand&#x103; valoarea curent&#x103; instantanee con inut&#x103; &#xEE;n registrul CE. Datele memorate pot fi citite ulterior. OLM este pentru octetul cel mai semnificativ, iar OLL pentru octetul cel mai pu in semnificativ. Fiecare num&#x103;r&#x103;tor se &#xEE;ncarc&#x103; ini ial, iar dup&#x103; startarea num&#x103;r&#x103;rii se decrementeaz&#x103; pe frontul descresc&#x103;tor al impulsului de tact. Triggerarea se face astfel: &#x2022; GATEi =1 &#x21D2; num&#x103;rarea autorizat&#x103; 4-73
• 74. &#x2022; GATEi =0 &#x21D2; num&#x103;rarea inhibat&#x103; Nivelul logic al ie&#x15F;irii OUT i depinde de modul de lucru ales. CWR CRM CRL Status Latch CE Status Control OLM OLL Logic CLK GATE OUT Fig. 4.2.1-2 &#x2013; Schema bloc intern&#x103; a unui num&#x103;r&#x103;tor (conform catalog Intel) Formatul cuv&#xE2;ntului de control este: SC1 SC0 RW1 RW0 M2 M1 M0 BCD Unde: BCD = 0 &#x21D2; num&#x103;rare binar&#x103; pe 16 bi i (0-65535 evenimente) = 1 &#x21D2; num&#x103;rare BCD (0 &#x2013; 9999 evenimente) M2 M1 M0 - selec ie mod de lucru: 0 0 0 &#x21D2; Mod 0 - oprire la sf&#xE2;r&#x15F;itul num&#x103;r&#x103;rii 0 0 1 &#x21D2; Mod 1 - monostabil programabil x 1 0 &#x21D2; Mod 2 - generator de impulsuri divizate cu N x 1 1 &#x21D2; Mod 3 - generator de impulsuri dreptunghiulare 1 0 0 &#x21D2; Mod 4 - strob comandat software 1 0 1 &#x21D2; Mod 5 - strob comandat hardware 4-74
• 75. RW1 RW0 - comand&#x103; citire / scriere 0 0 &#x21D2; buffer-are num&#x103;r&#x103;toare pentru citire 0 1 &#x21D2; R/W numai octetul LSB 1 0 &#x21D2; R/W numai octetul MSB 1 1 &#x21D2; R/W &#xEE;nt&#xE2;i octetul LSB &#x15F;i apoi imediat octetul MSB SC1 SC0 &#x2013; selec ie num&#x103;r&#x103;tor 0 0 &#x21D2; selec ie num&#x103;r&#x103;tor 0 0 1 &#x21D2; selec ie num&#x103;r&#x103;tor 1 1 0 &#x21D2; selec ie num&#x103;r&#x103;tor 2 1 1 &#x21D2; comand&#x103; de citire &#xEE;napoi (readback command) Programarea &#x15F;i apoi operarea se face independent pentru fiecare num&#x103;r&#x103;tor. Valorile oric&#x103;rui num&#x103;r&#x103;tor pot fi citite &#x201E;din mers&#x201D; (caz &#xEE;n care pot apare erori la tranzi iile de stare ale num&#x103;r&#x103;torului) sau pot fi buffer-ate &#x15F;i apoi citite. Opera ii de scriere: - se men ioneaz&#x103; urm&#x103;toarele conven ii: 1. Pentru oricare num&#x103;r&#x103;tor cuv&#xE2;ntul de control trebuie scris &#xEE;naintea scrierii valorii ini iale a num&#x103;r&#x103;torului. 2. Valoarea ini ial&#x103; a num&#x103;r&#x103;torului se &#xEE;nscrie &#xEE;n conformitate cu combina ia RW1 RW0. &#xCE;n cazul &#xEE;n care RW1 RW0 = 11, &#xEE;n program nu trebuie s&#x103; se mai fac&#x103; alt&#x103; opera ie cu I8254 &#xEE;ntre cele dou&#x103; opera ii de scriere succesive. Dac&#x103; exist&#x103; acest pericol (datorit&#x103; apari iei &#xEE;ntreruperilor de exemplu), atunci opera iile de scriere se vor face &#xEE;ncadrate de cli &#x15F;i sti. Opera iile de citire: 1. Num&#x103;r&#x103;toarele pot fi citite f&#x103;r&#x103; a afecta num&#x103;rarea; citirea direct&#x103; poate fi eronat&#x103; dac&#x103; CE este &#xEE;n tranzi ie de stare. De aceea, este de preferat ca &#xEE;nainte de citire s&#x103; se scrie un cuv&#xE2;nt de control corespunz&#x103;tor num&#x103;r&#x103;torului care urmeaz&#x103; a fi citit &#xEE;n care RW1 RW0=00. Dup&#x103; aceast&#x103; comand&#x103;, valoarea buffer-at&#x103; poate fi citit&#x103; &#xEE;n orice moment; dac&#x103; se reprogrameaz&#x103; num&#x103;r&#x103;torul, valoarea memorat&#x103; este pierdut&#x103;. 2. Citirea &#xEE;napoi &#x2013; permite s&#x103; se citeasc&#x103; valoarea simultan&#x103; a tuturor num&#x103;r&#x103;toarelor, modul de lucru programat, starea curent&#x103; a ie&#x15F;irii OUTi etc. Alte detalii se g&#x103;sesc &#xEE;n filele de catalog ale I8254. 4.3.2 Utilizarea I8254 pentru num&#x103;rarea de evenimente Oricare din cele 3 num&#x103;r&#x103;toare pe 16 bi i opereaz&#x103; prin num&#x103;rarea impulsurilor de la intrare. Num&#x103;r&#x103;toarele num&#x103;r&#x103; prin decrementare pornind de la o valoare ini ial&#x103; &#xEE;nc&#x103;rcat&#x103; prin software. 4-75
• 76. Utiliz&#xE2;nd modul de lucru 0 &#xEE;n care valoarea ini ial&#x103; din num&#x103;r&#x103;tor este 0, oricare num&#x103;r&#x103;tor poate num&#x103;ra 65536 evenimente. Intrarea CLK a num&#x103;r&#x103;torului se conecteaz&#x103; la un generator de tact extern. Intrarea GATE a num&#x103;r&#x103;torului este utilizat&#x103; pentru a autoriza sau stopa num&#x103;rarea. Dac&#x103; nu se dore&#x15F;te utilizarea acestei facilit&#x103; i, atunci intrarea GATE se pune la +5V, caz &#xEE;n care se face permanent num&#x103;rarea. Pentru modul de lucru 0, ie&#x15F;irea OUTi nu este utilizat&#x103;. Dup&#x103; ce un num&#x103;r&#x103;tor a fost ini ializat prin software, orice impuls de pe intrarea de tact decrementeaz&#x103; num&#x103;r&#x103;torul cu 1 pe front descresc&#x103;tor. Primul impuls totu&#x15F;i nu decrementeaz&#x103; num&#x103;r&#x103;torul, el fiind utilizat pentru a &#xEE;nc&#x103;rca valoarea din CR in CE. Exemplu: dac&#x103; &#xEE;n num&#x103;r&#x103;tor se &#xEE;ncarc&#x103; valoarea ini ial&#x103; 0, num&#x103;rul evenimentelor num&#x103;rate este determinat sc&#x103;z&#xE2;nd valoarea curent&#x103; pe 16 bi i, citit&#x103; din num&#x103;r&#x103;tor, din 65536 &#x15F;i apoi adun&#xE2;nd 1 la rezultat pentru a considera impulsul de &#xEE;nc&#x103;rcare a valorii ini iale. Urm&#x103;torul subprogram exemplific&#x103; modul de utilizare a num&#x103;r&#x103;torului 0 pentru num&#x103;rarea de evenimente. &#xCE;n acest exemplu, intrarea GATE se presupune a fi la 5V, iar CA se consider&#x103; a fi adresa de baz&#x103; a dispozitivului. COUNT DW ? . . MOV DX,CA+3 MOV AL,30H;pentru NUM 0 citeste/scrie LSB urmat de MSB, mod lucru 0 OUT DX,AL NOP ;introduce o &#x201C;intarziere&#x201D; MOV DX,CA XOR AL,AL OUT DX,AL ; scrie 0 in LSB (valoare initiala) NOP OUT DX,AL ; scrie 0 in MSB . . ; in orice moment se poate citi numarul curent de evenimente astfel: MOV DX,CA+3 XOR AL,AL OUT DX,AL ; buffer-area numaratorului pentru a putea fi citit NOP MOV DX,CA IN AL,DX MOV BYTE PTR COUNT,AL ; memoreaza LSB IN AL,DX MOV BYTE PTR COUNT +1, AL ;memoreaza MSB 4.3.3 Utilizarea lui I8254 pentru generarea de &#xEE;ntreruperi Modurile de lucru 2 &#x15F;i 3 ale lui I8254A pot fi utilizate pentru generarea bazei de timp &#xEE;n cadrul sistemelor de achizi ie de date &#x15F;i control. &#xCE;n astfel de aplica ii, &#xEE;ntreruperea de la I8254 va ap&#x103;rea periodic, &#xEE;n func ie de intrarea CLK &#x15F;i de programarea num&#x103;r&#x103;torului, iar &#xEE;n cadrul rutinei de tratare a &#xEE;ntreruperii se va face achizi ia efectiv&#x103; a datelor utiliz&#xE2;nd tehnicile cunoscute (de obicei, tehnica intr&#x103;ri buffer-ate). Astfel, se cunoa&#x15F;te cu o bun&#x103; precizie intervalul de timp dintre dou&#x103; e&#x15F;antioane succesive din buffer-ul de achizi ie. 4-76
• 78. Ca intrare CLKi (i=0,2) se utilizeaz&#x103; semnalul XTAL de 5 MHz sau se poate utiliza o intrare de tact extern&#x103;. Dac&#x103; GATE nu se utilizeaz&#x103; pentru triggerare, atunci se pune la +5 V. Ie&#x15F;irea OUT se poate conecta prin jump- eri la un nivel de &#xEE;ntrerupere (IRQ 2 &#xF7; IRQ 7) al calculatorului. Programarea num&#x103;r&#x103;torului &#x15F;i startarea gener&#x103;rii de &#xEE;ntreruperi se face astfel: 1. Se calculeaz&#x103; num&#x103;rul ce trebuie &#xEE;nc&#x103;rcat &#xEE;n num&#x103;r&#x103;tor 2. Se &#xEE;ncarc&#x103; cuv&#xE2;ntul de control pentru num&#x103;r&#x103;torul selectat (modul 2 de lucru) 3. Se &#xEE;ncarc&#x103; num&#x103;rul &#xEE;n num&#x103;r&#x103;tor 4. Num&#x103;rarea evenimentelor se starteaz&#x103; automat la primul impuls pe intrarea clock de dup&#x103; &#xEE;nc&#x103;rcarea num&#x103;rului &#xEE;n num&#x103;r&#x103;tor. Oprirea se poate face trec&#xE2;nd intrarea GATE la 0 sau reprogram&#xE2;nd num&#x103;r&#x103;torul sau oprind calculatorul. Urm&#x103;toarea secven &#x103; de program programeaz&#x103; num&#x103;r&#x103;torul 0 s&#x103; genereze &#xEE;ntreruperi la 51 &#xB5;s, consider&#xE2;nd intrarea de clock la 5 MHz, adresa de baz&#x103; CA iar GATE este pus&#x103; la +5 V. Num&#x103;rul care se &#xEE;ncarc&#x103; &#xEE;n contor este 51/0.2 = 255. MOV DX,CA+3 MOV AL,14H ; num&#x103;r&#x103;tor 0, MOD 2, R/W numai LSB OUT DX,AL MOV AL,0FFH MOV DX,CA OUT DX,AL ; &#xEE;ncarc&#x103; nr. 255 &#xEE;n num&#x103;r&#x103;torul 0 Frecven a &#xEE;ntreruperii este 1/51&#xB5;s = 19,5 KHz. Exemplul 2: Generarea de &#xEE;ntreruperi cu perioade mai mari ca 13,1072 ms (frecven a&lt; 76 Hz). Se cascadeaz&#x103; 2 sau 3 num&#x103;r&#x103;toare, toate programate &#xEE;n modul 2. Ie&#x15F;irea OUTi-1 se leag&#x103; la intrarea CLKi, i=1,2. Se folosesc cele 3 num&#x103;r&#x103;toare cascadate pentru ADA2100, unde: CLK0 &#x2192; 5 MHz OUT0 &#x2192; CLK1 OUT1 &#x2192; CLK2 OUT2 &#x2192; IRQn (n &#x2208; {2, 3, &#x2026;, 7}) Programarea num&#x103;r&#x103;toarelor &#x15F;i startarea gener&#x103;rii de &#xEE;ntreruperi se face astfel: 1. Se calculeaz&#x103; valoarea ce se depune &#xEE;n fiecare num&#x103;r&#x103;tor. 2. Se programeaz&#x103; num&#x103;r&#x103;toarele &#xEE;n modul 2. 3. Se &#xEE;ncarc&#x103; succesiv num&#x103;r&#x103;toarele &#xEE;ncep&#xE2;nd cu ultimul din cascad&#x103; &#x15F;i termin&#xE2;nd cu primul din cascad&#x103;. &#xCE;n aceste condi ii startarea se va face dup&#x103; &#xEE;nc&#x103;rcarea primului num&#x103;r&#x103;tor, ce are intrarea CLK activ&#x103;. Intr&#x103;rile GATE ale fiec&#x103;rui num&#x103;r&#x103;tor sunt puse la +5 V. &#xCE;n exemplul de mai jos, se dore&#x15F;te generarea de &#xEE;ntreruperi la 1s, utiliz&#xE2;nd cele 3 num&#x103;r&#x103;toare ale I8254, intrarea CLK0 a primului num&#x103;r&#x103;tor este la 5Mhz Mod de calcul : 1s = 109 ns; 4-78
• 79. o perioad&#x103; a intr&#x103;rii CLK este = 200 ns=0.200&#xB5;s Num&#x103;rul de impulsuri CLK necesare este 109 ns/ 200ns = 5 x 106 = 5.000.000. Se distribuie de exemplu acest num&#x103;r pe cele 3 num&#x103;r&#x103;toare astfel: 1000 &#xEE;n NUM2 1000 &#xEE;n NUM1 5 &#xEE;n NUM0 Programul este urm&#x103;torul: MOV DX, CA+3 MOV AL, 34H ; NUM0, MOD2, R/W LSB apoi MSB OUT DX, AL NOP MOV AL, 74H ; NUM1, MOD2, R/W LSB apoi MSB OUT DX, AL NOP MOV AL, 0B4H ; NUM2, MOD2, R/W apoi MSB OUT DX, AL DEC DX ; adresa NUM2 MOV AL, 0E8h ;1000 OUT DX, AL MOV AL, 03H OUT DX, AL DEC DX ; adresa NUM1 MOV AL, 0E8H ;1000 OUT DX, AL MOV AL, 03H OUT DX, AL DEC DX ;adresa NUM0 MOV AL, 5H ;5 OUT DX, AL XOR AL, AL OUT DX, AL . . . . 4.3.4 Exemplu de utilizare a dispozitivului I8254 pentru generarea bazei de timp Se cere implementarea controller-ului simplu PID prezentat la 2.2.2, consider&#xE2;nd rata de e&#x15F;antionare pentru calcule de 0.01 secunde (10 ms). Pentru generarea bazei de timp se va utiliza un I8254 cu spa iul de adresare &#xEE;ntre 214h &#x2013; 217h, intrarea GATE0 este la +5 V, intrarea de ceas de la NUM0 este conectat&#x103; la un generator de impulsuri cu frecven a 5MHz iar ie&#x15F;irea OUT0 este conectat&#x103; la intrarea IRQ5 de la primul controller I8259A al PC. Modul de lucru pentru num&#x103;r&#x103;torul 0 va fi 2 iar valoarea ini ial&#x103; care se va &#xEE;nc&#x103;rca &#xEE;n num&#x103;r&#x103;tor este 10 000 000ns /200ns = 50 000 = c350h. &#xCE;n programul prezentat &#xEE;n continuare, comunica ia &#xEE;ntre rutina de tratare &#x15F;i programul utilizator se face prin variabila partajat&#x103; contor: 4-79
• 80. &#x2022; rutina de tratare a &#xEE;ntreruperii incrementeaz&#x103; variabila; &#x2022; programul utilizator, a&#x15F;teapt&#x103; ca variabila s&#x103; fie diferit&#x103; de 0: dac&#x103; este 1 efectueaz&#x103; calculele (a trecut perioada T) &#x15F;i &#xEE;i atribuie valoarea 0; dac&#x103; este mai mare dec&#xE2;t 1 afi&#x15F;eaz&#x103; eroare &#x15F;i termin&#x103; programul deoarece programul principal nu se execut&#x103; suficient de rapid pentru a se sincroniza cu dispozitivul extern. #include &lt;stdio.h&gt; #include &lt;dos.h&gt; #include &lt;conio.h&gt; #define INTR_0d 0x0d/*&#xCE;ntreruperea IRQ5 de la I8254*/ #define CA 0x214 # define KPVAL 1.0 # define KIVAL 0.8 # define KDVAL 0.3 #ifdef __cplusplus #define __CPPARGS ... #else #define __CPPARGS #endif unsigned char oldmask_1=0; int count=0,oldcount=0; float s, kp, ki, kd, en, enold, mn; /*functia can achizitioneaza de la convertorul analog numeric, calculeaza si returneaza valoarea erorii e; este dependenta de hardware utilizat &#x2013; de exemplu poate fi scrisa pentru ADA2100*/ extern float can(void); /*functia cna care primeste la intrare corectia (valoarea de actionare) si o transmite la convertorul numeric &#x2013; analogic; este dependenta de hardware utilizat &#x2013; de exemplu poate fi scrisa pentru ADA2100 */ extern void cna(float mn); void interrupt ( *oldint0d)(__CPPARGS); void InitNum0 (void){ outportb (CA+3, 0x34); outportb (CA,0x50); outportb (CA,0xc3); } /* rutina de tratare a &#xEE;ntreruperii de la contorul 0 al I8254*/ void interrupt irq5(__CPPARGS){ /* incrementeaza contorul */ count++; /* achitarea &#xEE;ntreruperii */ outportb(0x20,0x20); } void main(void){ s = 0.0; kp = KPVAL; ki = KIVAL; kd = KDVAL; /* salveaza vechiul vector de &#xEE;ntrerupere */ oldint0d = getvect(INTR_0d); 4-80
• 81. /* dezactiveaza sistemul de &#xEE;ntreruperi mascabile*/ disable(); /* seteaza noul vector de &#xEE;ntrerupere */ setvect(INTR_0d, irq5); /*salveaza masca pentru primul 8259*/ oldmask_1=inportb(0x21); /*demascheaza &#xEE;ntreruperea 0*/ outportb(0x21,oldmask_1 &amp; 0x0df); /* activeaza sistemul de &#xEE;ntreruperi mascabile */ enable(); clrscr(); enold = can(); InitNum0(); /* bucla de prelucrare a programului principal */ while (!kbhit()){/*se opreste la apasarea oricareai taste*/ if(count){ disable(); oldcount = count; count = 0; enable(); if (oldcount == 1){ en = can(); s = s+en; mn = kp*en + ki*s + kd * (en - enold); cna(mn); enold = en; } else{ printf (&#x201C;Eroare, lipsa sincronizare&#x201D;); break; } } } /* dezactiveaza sistemul de &#xEE;ntreruperi mascabile */ disable(); /* seteaza vechii vectori de &#xEE;ntrerupere */ setvect(INTR_0d, oldint0d); /*seteaza vechea masca pentru primul 8259*/ outportb(0x21,oldmask_1); /* activeaza sistemul de &#xEE;ntreruperi mascabile*/ enable(); } Probleme propuse: 1. I8254 are spa iul de adresare &#xEE;ntre 214h si 217h. Intrarea GATE0 este la +5 V, iar intrarea de CLK0 este legat&#x103; la un circuit formator de impulsuri de la un comutator ac ionat manual. S&#x103; se elaboreze un program care s&#x103; afi&#x15F;eze pe display un mesaj la fiecare zece ac ion&#x103;ri ale comutatorului &#x15F;i care s&#x103; se opreasc&#x103; dup&#x103; 200 ac ion&#x103;ri ale acestuia. Programul se va scrie astfel &#xEE;nc&#xE2;t num&#x103;rarea impulsurilor s&#x103; 4-81
• 82. se fac&#x103; de c&#x103;tre o rutin&#x103; de tratare a &#xEE;ntreruperilor de la ceasul sistem, iar afi&#x15F;area mesajului s&#x103; se fac&#x103; &#xEE;n programul principal. 2. I8254 are spa iul de adresare &#xEE;ntre 214h &#x2013; 217h. Intr&#x103;rile GATE pentru num&#x103;r&#x103;toare sunt la +5 V iar intrarea de ceas de la NUM0 este legat&#x103; la un generator de impulsuri cu frecven a 5MHz. Presupunem c&#x103; orice ie&#x15F;ire OUTi poate fi conectat&#x103; la oricare dintre canalele de &#xEE;ntreruperi ale circuitului I8259 &#x15F;i de asemenea la intrarea CLK a urm&#x103;torului num&#x103;r&#x103;tor. &#xCE;ntr-o aplica ie de achizi ie de date este necesar ca o intrare analogic&#x103; s&#x103; fie e&#x15F;antionat&#x103; la 10ms, a doua intrare analogic&#x103; la aproximativ 200 ms iar a treia la 1000s. S&#x103; se elaboreze un program care programeaz&#x103; I8254 astfel &#xEE;nc&#xE2;t s&#x103; genereze &#xEE;ntreruperi pe nivelurile 10, 11 &#x15F;i 15 (al doilea circuit I8259 de la un calculator compatibil IBM PC/AT), fiec&#x103;rui num&#x103;r&#x103;tor corespunz&#xE2;ndu-i una din &#xEE;ntreruperile de mai sus. Simularea achizi iei de date la intervalele specificate se va face afi&#x15F;&#xE2;nd caracterul * la primul interval de timp, \$ la al doilea interval de timp &#x15F;i @ la al treilea interval de timp. Programul poate fi oprit prin CTRL-BREAK. S&#x103; se deseneze schema de cascadare a num&#x103;r&#x103;toarelor &#x15F;i de conectare la canalele de &#xEE;ntrerupere. 3. Elabora i o schem&#x103; bloc de m&#x103;sur&#x103; &#x15F;i un program pentru determinarea &#x15F;i afi&#x15F;area vitezei de rota ie instantanee a unui motor care are max. 3000 rot/min, utiliz&#xE2;nd I8254. Pe axul motorului exist&#x103; un disc cu 10 fante echidistante &#x15F;i un dispozitiv optic care genereaz&#x103; un impuls c&#x103;tre calculator la trecerea unei fante prin dreptul s&#x103;u. 4.3.5 Reprogramarea ceasului sistem Placa de baz&#x103; a calculatorului PC con ine un dispozitiv I8254A, care ocup&#x103; spa iul de adrese de I/E de la 40h la 43h. Intrarea CLK0 este la 1,193187 MHz iar ie&#x15F;irea OUT0 este conectat&#x103; la intrarea IRQ0 a primului controller I8259A. BIOS programeaz&#x103; NUM0 &#xEE;n modul de lucru 3 &#x15F;i cu valoarea 0, gener&#xE2;ndu-se astfel &#xEE;ntreruperi cu o perioad&#x103; de timp de aprox. 54.92517 ms (aprox. 18.206588 Hz). Aceast&#x103; &#xEE;ntrerupere este utilizat&#x103; de SO DOS pentru ceasul sistem &#x15F;i alte opera ii (precum oprirea motorului discului flexibil atunci c&#xE2;nd acesta nu mai este utilizat). &#xCE;n tabela vectorilor de &#xEE;ntrerupere, adresa rutinei de tratare a IRQ0 se g&#x103;se&#x15F;te la adresa 20H (corespunde la int 8). Dac&#x103; aplica ia necesit&#x103; &#xEE;ntreruperi cu frecven &#x103; diferit&#x103; de aprox. 18,2 Hz &#x15F;i dac&#x103; &#xEE;n calculator nu exist&#x103; un dispozitiv suplimentar I8254, se poate utiliza num&#x103;r&#x103;torul 0 al circuitului I8254 de pe placa de baz&#x103;. Urm&#x103;toarea secven &#x103; va reprograma ceasul pentru a da &#xEE;ntreruperi la o nou&#x103; perioad&#x103; de timp: MOV AL, 36H ; MOD3, R/W MSB apoi LSB binar pentru NUM0 OUT 43H,AL MOV AX, timer_count ; in AX noua valoare a NUM OUT 40H, AL MOV AL,AH OUT 40H, AL La sf&#xE2;r&#x15F;itul programului utilizator este necesar s&#x103; se restaureze ceasul sistem la rata de &#xEE;ntrerupere ini ial&#x103; astfel: MOV AL, 36H OUT 43H, AL XOR AL, AL OUT 40H, AL OUT 40H, AL Valoarea care se scrie &#xEE;n NUM0 se calculeaz&#x103; astfel: Timer_count = Ti * F0 Unde F0 este frecven a &#xEE;n Hz a semnalului de tact pentru num&#x103;r&#x103;tor (1.193.187 Hz) iar Ti este perioada &#xEE;ntreruperilor (intervalul de timp dintre dou&#x103; &#xEE;ntreruperi succesive). Exemplu: pentru generarea de &#xEE;ntreruperi la 10 ms rezult&#x103; timer_count = 10/1000 * 1.193.187 &#x2248; 11932. 4-82
• 83. Dup&#x103; cum se &#x15F;tie in num&#x103;r&#x103;tor se pot depune valori &#xEE;ntre 0 si 65535, 0 corespunz&#xE2;nd la 65536 de impulsuri. Dac&#x103; se dore&#x15F;te o valoare mai mare, atunci se &#xEE;mparte valoarea respectiv&#x103; printr-un num&#x103;r astfel &#xEE;nc&#xE2;t valoarea care se introduce &#xEE;n num&#x103;r&#x103;tor s&#x103; fie &#xEE;ntre 0 &#x15F;i 65535. Not&#x103;m acest num&#x103;r NDIV. Rutina de tratare a &#xEE;ntreruperilor va gestiona un num&#x103;r&#x103;tor soft &#xEE;ntr-o loca ie de memorie, ce este &#xEE;nc&#x103;rcat&#x103; ini ial cu NDIV &#x15F;i care se decrementeaz&#x103; prin program cu 1 la fiecare &#xEE;ntrerupere. C&#xE2;nd ajunge la 0, rutina de tratare a &#xEE;ntreruperii &#xEE;l re&#xEE;ncarc&#x103; cu NDIV &#x15F;i apoi apeleaz&#x103; rutina de achizi ie. Exemplu: dac&#x103; se dore&#x15F;te achizi ie la fiecare secund&#x103;, atunci timer_count = 1 * 1.193.187 &#x2248; 20 x 59659 rezult&#x103; c&#x103; NDIV = 20 &#x15F;i timer_count = 59659. Dac&#x103; se dore&#x15F;te men inerea datei &#x15F;i orei sistem, care &#xEE;n mod curent sunt gestionate de rutina de tratare BIOS pentru int 8, trebuie s&#x103; se apeleze din rutina de tratare utilizator, atunci c&#xE2;nd este cazul (la perioade de timp de aprox. 55ms), rutina BIOS de pe nivelul 8 din tabela vectorilor de &#xEE;ntreruperi. Urm&#x103;toarea rutin&#x103; poate fi considerat&#x103; ca o schi &#x103; pentru o rutin&#x103; de tratare a &#xEE;ntreruperii prin reprogramarea ceasului sistem. PC_INT8 Label DWORD PC_OFF8 DW ? ; IP PC_SEG8 DW ? ; CS DSEG DW ? ; rezervat pentru memorarea reg. DS MY_INT8: PUSH DS PUSH AX ; &#x2026;&#x2026; eventual alte salvari MOV AX, CS:DSEG ;incarca ds cu valoarea corecta MOV DS,AX ;Urmatoarea secventa este ceruta numai dac&#x103; se utilizeaza numaratoare mai ;mari dec&#xE2;t 65536: DEC NDIV_CT;decrementare contor soft JNZ NOT_ZERO MOV AX,NDIV MOV NDIV_CT,AX CALL achizitie ;apelare rutina ce face efectiv achizitia : NOT-ZERO: ;&#x2026;.. eventual alte restaurari POP AX POP DS Se poate insera &#xEE;n acest loc instruc iunea JMP CS: PC _INT8 pentru apelul rutinei originale de tratare a &#xEE;ntreruperilor de ceas la 18,2 Hz; dac&#x103; nu execut&#x103; saltul prin JMP la rutina de ceas, &#xEE;n acest loc trebuie s&#x103; existe instruc iunea iret. Problem&#x103; propus&#x103; Scrie i func ia delay_ms(unsigned int t) care realizeaz&#x103; o &#xEE;nt&#xE2;rziere de aproximativ t milisecunde, indiferent de procesorul PC-ului, f&#x103;r&#x103; a reprograma ceasul sistem. Indica ie: se va utiliza num&#x103;r&#x103;torul 0, care este preprogramat de c&#x103;tre BIOS, citind periodic valoarea din contor, f&#x103;c&#xE2;nd diferen ele &#xEE;ntre citiri succesive &#x15F;i calcul&#xE2;nd num&#x103;rul de milisecunde. 4-83
• 84. 4.4 Exemplu de sistem de achizi ie de date Not&#x103; : Paragraful 4.4 con ine detalii tehnice necesare pentru instalarea, calibrarea &#x15F;i programarea achizi iei de date cu modulul ADA2100. Pentru rezolvarea problemelor la examen, se va studia 4.4.11. Ca alternativ&#x103; pentru rezolvarea problemelor la examen, informa iile din curs pot fi completate cu documenta iile tehnice ale modulelor PCM 3718, PCM 3780 &#x15F;i PCM 3712 precum &#x15F;i ale dispozitivelor I8254 &#x15F;i I8255 studiate la laborator: &#x2022; "PCM-3718 Series, PC/104 12-bit DAS Module with Programmable Gain - User Manual", prezentat in documentul PCM-3718-Ed3.pdf , . &#x2022; "PCM-3780, 2-ch Counter/Timer with 24-ch TTL DIO Module - User Manual" prezentat &#xEE;n documentul PCM-3780_Manual_Ed1.1.pdf &#x2022; Subsistemul ie&#x15F;irilor analogice pentru sistemul PC104 de la laborator, prezentat &#xEE;n documentul PCM- 3712-ed1.pdf &#x2022; 8255_datasheet.pdf - capitolele "Functional description", "Operational description" &#x15F;i "Operating modes". &#x2022; I8254_data_sheet.pdf - capitolele "Functional description", "Operational description". 4.4.1 ADA 2100 - date generale &#x15F;i prezentarea resurselor Interfa a: &#x2022; compatibil IBM PC /XT/AT &#x2022; adresa de baz&#x103; selectabil&#x103; prin jumper, mapat&#x103; I/E &#x2022; &#xEE;ntreruperi selectabile prin jumperi Intr&#x103;ri analogice: &#x2022; 4 intr&#x103;ri diferen iale sau 8 simple, selectabile prin switch &#x2022; impedan a de intrare: &gt;10 Mohmi &#x2022; c&#xE2;&#x15F;tig, selectiv soft: 1,2,4,8,16 &#x2022; eroare c&#xE2;&#x15F;tig.: 0,5% tipic, max. 1% &#x2022; op iuni intrare: domeniu 10V: bipolar+/-5V; liniaritate garantat&#x103; -5V...+5V domeniu 10V: unipolar 0-10V; liniaritate garantat&#x103; 0...9,5V domeniu 20V . . bipolar +/-10V; liniaritate garantat&#x103; -9,5V...+9,5V &#x2022; Domeniul: selectabil cu jumper &#x2022; Polaritatea: selectabil&#x103; cu switch &#x2022; timp de stabilizare: max 3 &#xB5;s &#x2022; tensiune de intrare mod comun : +/-10V &#x2022; protec ie la supratensiuni +/-35Vdc 4-84
• 85. Convertor A/N &#x2022; tip: aprox. succesive &#x2022; rezolu ie: 12 bi i (domeniul 10V -2.44mV/bit, domeniul 20 V - 4.88 mV/bit) &#x2022; viteza de conversie . tipic 20 usec &#x2022; liniaritate : +/-1 bit &#x2022; timp total de r&#x103;spuns S/H: max 6 usec &#x2022; rata maxima de e&#x15F;antionare: 38 KHz &#x2022; Convertor N/A &#x2022; ie&#x15F;iri analogice: 2 &#x2022; rezolu ie: 12 bi i &#x2022; precizie relativ&#x103;: +/-1 bit max &#x2022; precizie cap&#x103;t de scal&#x103;: +/-3 bit max &#x2022; neliniaritate: +/-1 bit max &#x2022; izolare canal-la-canal: tipic 84 dB Ie&#x15F;irea analogic&#x103; &#x2022; gama de ie&#x15F;ire, chip selectabil&#x103;: op iunea 1: 0 la +5V selectabil&#x103; cu jumper +/-5V op iunea 2: 0 la 10 V selectabil&#x103; cu jumper la +/-10V &#x2022; timp de stabilizare la 0,01%FSR: 1.8ms tipic; 3.3 ms max &#x2022; eroare de zero: +/-1/2 bit &#x2022; crosstalk....................90 dB tipic Aliment&#x103;ri: +/- 12V,+5V de la PC, mas&#x103; de la PC Contor/Periodizator: -3 num&#x103;r&#x103;toare de 8 MHz, pe 16 bi i fiecare Linii I/E numerice:16 compatibile TTL/CMOS, porturile A &#x15F;i C de la I8255 Cerin e de alimentare &#x2022; +5V: 240 mA &#x2022; +12V: 30 mA &#x2022; -12V: 35 mA Conectori I/E conector frontal de 40 pini Condi ii de mediu &#x2022; temp. de lucru : 0 ... +70 grd C &#x2022; temp. &#xEE;nmagazinare : -40 ... +85 grd C &#x2022; umiditate : 0 ... 90 % Dimensiuni: 4-85
• 86. &#x2022; &#xEE;n&#x103;l ime : 99 mm &#x2022; l&#x103; ime: 165 mm 4.4.2 Generalit&#x103; i ADA 2100 reprezint&#x103; un modul complex compatibil IBM PC-Bus, "Short-Size" ce poate fi introdus direct &#xEE;n orice slot neutilizat dintr-un calculator compatibil PC/XT/AT. Este compus din urm&#x103;toarele blocuri: &#x2022; convertor analog-numeric (de 12 bi i) de &#xEE;nalt&#x103; rezolu ie; &#x2022; convertor numeric-analogic (12 bi i) dublu; &#x2022; circuit interfa &#x103; paralel&#x103; (PPI - I8255); &#x2022; circuit num&#x103;r&#x103;tor/periodizator (PIT - I8254); toate asigur&#xE2;nd flexibilitatea interfe ei pentru multe aplica ii. Se caracterizeaz&#x103; printr-o construc ie &#xEE;n 6 planuri (straturi) incluz&#xE2;nd planuri separate pentru mas&#x103; &#x15F;i alimentare ceea ce conduce la caracteristici de zgomot redus. ADA 2100 asigur&#x103; o conversie pe 12 bi i analog-numeric&#x103; multicanal at&#xE2;t pentru semnale diferen iale c&#xE2;t &#x15F;i SE (single - ended). Aceast&#x103; facilitate confer&#x103; calculatorului compatibil IBM PC/XT/AT &#x201E;gazd&#x103;&#x201D; posibilitatea achizi iei de date &#x15F;i controlul &#xEE;n timp real put&#xE2;nd genera &#x15F;i analiza semnale analogice numerice. Viteza &#x15F;i rezolu ia sunt caracteristicile principale luate &#xEE;n calcul la un convertor A/N. Pentru majoritatea aplica iilor o rezolu ie de 12 bi i este suficient&#x103;. Aceasta asigur&#x103; incremen i de tensiune de 1.22 mV pentru o gam&#x103; de 5 V, 2.44 mV pentru o gam&#x103; de 10 V &#x15F;i 4.88 mV pentru o gam&#x103; de 20 V. O conversie pe 8 bi i este mai pu in precis&#x103; dar mai rapid&#x103;. Prin programare (S) &#x15F;i/sau setare de switch-uri (H) de pe plac&#x103; se pot: &#x2022; selecta adresa I/E de baza (H); &#x2022; alege 4 canale de intrare analogice diferen iale sau 8 simple (SE) (H); &#x2022; selecta canalul activ (S); &#x2022; selecta c&#xE2;&#x15F;tigul canalului (S); &#x2022; selecta gama &#x15F;i polaritatea tensiunii analogice de intrare (H); &#x2022; selecta polaritatea tensiunilor analogice de ie&#x15F;ire (H); &#x2022; controla 16 linii I/E TTL/CMOS (S); &#x2022; controla 3 circuite num&#x103;r&#x103;tor/periodizator pe 16 bi i de 8 MHz (S); &#x2022; monitoriza conversia A/N folosind semnalul EOC (End-Of-Convert) (S,H); &#x2022; genera semnale de &#xEE;ntrerupere (H). 4.4.3 Setarea adresei de baz&#x103; Interfa a fiind introdus&#x103; &#xEE;n canalul I/E adresa sa va fi configurat&#x103; &#xEE;n spa iul 200H...3FFH. Not&#x103;m cu BA adresa de baz&#x103; a modulului. ADA 2100 utilizeaz&#x103; 24 loca ii de adres&#x103; &#xEE;n spa iul I/E al calculatorului &#xEE;ncep&#xE2;nd cu BA. 4.4.4 Harta I/E pentru ADA 2100 4-86
• 87. Func ie A4 A3 A2 A1 A0 R/W BA+Hex 1. PPI 8255 Port A 0 0 0 0 0 R/W 0 Port B (sel.canal+c&#xE2;&#x15F;tig) 0 0 0 0 1 W 1 Port C 0 0 0 1 0 R/W 2 Cuv&#xE2;nt de control 0 0 0 1 1 W 3 2. Circuit conversie A/N Start conversie 12 bi i 0 0 1 x 0 W 4 sau 6 Start conversie 8 bi i 0 0 1 x 1 W 5 sau 7 Citire MSB 0 0 1 x 0 R 4 sau 6 Citire LSB 0 0 1 x 1 R 5 sau 7 3. Circuit conversie N/A Program AOUT1 LSB 0 1 0 0 0 W 8 Program AOUT1 MSB 0 1 0 0 1 W 9 Program AOUT2 LSB 0 1 0 1 0 W A Program AOUT2 MSB 0 1 0 1 1 W B Conversie/actualizare AOUT1/AOUT 0 1 1 x x W C, D, E sau F Clear AOUT1/AOUT2 1 0 0 x x W 10,11,12 sau 13 4.PIT 8254 NUM 0 1 0 1 0 0 R/W 14 NUM 1 1 0 1 0 1 R/W 15 NUM 2 1 0 1 1 0 R/W 16 Cuv&#xE2;nt de control 1 0 1 1 1 W 17 ----------------------------------------------------------------- cu x s-a notat un bit a c&#x103;rui valoare nu conteaz&#x103; pentru respectiva combina ie. Este important de subliniat c&#x103; unele din loca iile de adres&#x103; din spa iul I/E al calculatorului sunt deja ocupate de porturile interne &#x15F;i alte periferice. Dac&#x103; modulul ADA 2100 &#xEE;ncearc&#x103; s&#x103; utilizeze loca iile de adres&#x103; I/E deja folosite de un alt dispozitiv din sistem va rezulta un conflict de adresare. De aceea modulul nu va mai fi opera ional sau va opera defectuos. Pentru a evita aceast&#x103; situa ie se folose&#x15F;te un circuit de selec ie a adresei de baz&#x103; cu &#x201E;jumper&#x201D;. Prin schimbarea pozi iei acestuia la conectorul notat P2, se poate selecta adresa de baz&#x103; I/E (BA) la oricare din cele 8 loca ii de mai jos: 200 240 280 2C0 300 340 380 3C0 4-87
• 88. Modulele livrate de firma sunt selectate de la adresa de baz&#x103; 200H. 4.4.5 Modul de configurare al modulului &#xCE;n tabelul de mai jos se prezint&#x103; func iile configurabile ale modulului &#x15F;i modul cum sunt setate de firm&#x103;: Func ie | Setare de firma ----------------------------------------------------------------------------------------------- 1.Adresa de baz&#x103; I/E | 200 hex 2.Tip canal de intrare analogic | 4 canale diferen iale 3.Selec ia canalului analogic de intrare | Controlabil&#x103; prin software 4.Selec ia c&#xE2;&#x15F;tigului intr&#x103;rii analogice | Controlabil&#x103; prin software 5.Domeniul &#x15F;i polaritatea tensi | Este specificat&#x103; de utilizator unii analogice de intrare | la comandarea interfe ei 6.Monitorizarea semnalului EOC | Conectat la bit A7 PPI 7. Polaritatea tensiunilor ana | Domeniu unipolar pozitiv logice de ie&#x15F;ire 8.16 linii I/E de la PPI &#x15F;i circu it num&#x103;r&#x103;tor/periodizator pro gramabil (PIT) | Controlabile prin software 9.Moduri de lucru | Controlabile prin software 10.Configura ie I/E PIT | Intrare ceas: 5 MHz | Intrare GATE: +5 V 11.&#xCE;ntreruperi | Dezactivate ----------------------------------------------------------------- 4.4.6 Descriere la nivel de schem&#x103; bloc Modulul ADA 2100 are 4 blocuri mari func ionale: &#x2022; lan ul de conversie analog-numeric&#x103; (A/N) &#x2022; lan ul de conversie numeric-analogic&#x103; (N/A) &#x2022; circuitul interfa &#x103; paralel&#x103; programabil&#x103; (PPI) &#x2022; circuitul num&#x103;r&#x103;tor/periodizator programabil (PIT) 4.4.6.1 Lan ul de conversie analog-numeric&#x103; Principala func ie a modulului ADA 2100 este de a asigura facilit&#x103; i de conversie analog-numeric&#x103; de mare vitez&#x103; pentru achizi ia de date. Circuitele de conversie analog-numerice primesc intr&#x103;ri de la 4 canale analogice diferen iale sau 8 canale simple, selecteaz&#x103; un canal activ &#x15F;i realizeaz&#x103; conversia analog-numeric&#x103; a valorii tensiunii citite pe acel canal. Viteza de conversie este tipic de 38 KHz. Multiplexoarele Este folosit un multiplexor analogic de 8 bi i pentru a conecta fie unul din cele 8 canale SE fie unul din cele 4 4-88
• 89. diferen iale la circuitul de c&#xE2;&#x15F;tig. Cele 3 comutatoare S1 cele mai din st&#xE2;nga modulului programeaz&#x103; multiplexorul s&#x103; primeasc&#x103; intr&#x103;ri diferen iale sau SE a&#x15F;a cum a fost descris anterior. Selec ia unuia din canale se face prin program scriind num&#x103;rul de canal (0,1,2 3&#x2026;) &#xEE;n cei 4 bi i LSB ai portului B al PPI (BA+1). C&#xE2;nd cele 3 switch-uri sunt sus, multiplexorul este programat SE, iar c&#xE2;nd sunt jos, este configurat diferen ial. Circuitele de control al c&#xE2;&#x15F;tigului (amplificarea) Circuitele de control al c&#xE2;&#x15F;tigului programabil pot oferi un factor de c&#xE2;&#x15F;tig de 1, 2, 4, 8 sau 16. Selec ia c&#xE2;&#x15F;tigului se face prin scrierea &#xEE;n registrul B al PPI (adresa BA + 1), tetrada MSB (tetrada are valorile 0 c&#xE2;&#x15F;tig 1, 1 c&#xE2;&#x15F;tig 2, 2 c&#xE2;&#x15F;tig 4, 4 c&#xE2;&#x15F;tig 8, 8 c&#xE2;&#x15F;tig 16). Factorul de c&#xE2;&#x15F;tig este controlat prin setarea a 4 comutatoare analogice. Pentru un c&#xE2;&#x15F;tig de 2, 4, 8 sau 16 aceast&#x103; opera ie de scriere va &#xEE;nchide unul din cele 4 comutatoare; &#xEE;n cazul c&#xE2;&#x15F;tigului unitar toate comutatoarele sunt deschise. Nu se recomand&#x103; programarea altor factori de c&#xE2;&#x15F;tig dec&#xE2;t cei 5 ar&#x103;ta i mai sus. Circuitele de e&#x15F;antionare-memorare (S/H) Un circuit de e&#x15F;antionare &#x15F;i memorare (S/H - sample and hold) este folosit &#xEE;ntre ie&#x15F;irea circuitelor de control al c&#xE2;&#x15F;tigului &#x15F;i intrarea A/N pentru a asigura ca semnalele analogice dinamice s&#x103; fie digitizate precis de c&#x103;tre convertorul A/N. Se folose&#x15F;te un condensator de 0.001 mF ce minimizeaz&#x103; timpul de achizi ie (6 microsec. tipic). Timpul &#x15F;i viteza de e&#x15F;antionare &#x15F;i memorare sunt determinate de semnalul EOC generat de convertorul A/N. C&#xE2;nd EOC este 1, logic amplificatorul e&#x15F;antioneaz&#x103; intrarea analogic&#x103;; c&#xE2;nd EOC este 0 amplificatorul memoreaz&#x103; intrarea. Convertorul A/N (HI 574) Convertorul A/N este un circuit integrat ce realizeaz&#x103; o conversie de mare vitez&#x103; pe 12 bi i c&#x103;ruia &#xEE;i corespunde o conversie &#xEE;n aproximativ 20 microsec. Se pot efectua de asemenea conversii pe 8 bi i &#xEE;n aplica iile &#xEE;n care viteza este mai critic&#x103; dec&#xE2;t rezolu ia. Conversiile pe 8 bi i dureaz&#x103; aproximativ 13 microsec., permi &#xE2;nd conversii rapide a intr&#x103;rilor analogice dinamice. Convertorul suport&#x103; semnale de intrare analogice de 10 sau 20 V; &#xEE;ns&#x103; nu poate suporta domeniu de intrare unipolar de 20 V deoarece tensiunea de alimentare &#xEE;n aplica iile cu ADA 2100 este de numai +12 V. O conversie pe 8 sau 12 bi i este ini iat&#x103; printr-o opera ie de scriere la adresa I/E corespunz&#x103;toare. O dat&#x103; ce o conversie a &#xEE;nceput, starea acesteia poate fi urm&#x103;rit&#x103; prin citirea semnalului de stare al convertorului A/N (STS) care este o ie&#x15F;ire a circuitului convertor A/N &#x15F;i inversat &#xEE;nainte de a fi folosit de alte circuite de pe interfa &#x103; ca semnal EOC (End-Of-Convert). Semnalul EOC este 0 logic &#xEE;n timpul unei conversii. 4.4.6.2 Realizarea unei citiri A/N Dup&#x103; ce s-a selectat o intrare analogic&#x103; &#x15F;i s-a setat c&#xE2;&#x15F;tigul, se poate efectua o citire A/N. De notat c&#x103; odat&#x103; c&#xE2;&#x15F;tigul &#x15F;i canalul setate, ele r&#x103;m&#xE2;n la aceste valori p&#xE2;n&#x103; ce utilizatorul le modific&#x103;. Deci nu trebuie setate la fiecare citire A/N. De fiecare dat&#x103; c&#xE2;nd se termin&#x103; o conversie A/N, se genereaz&#x103; un semnal EOC. Se poate monitoriza starea conversiei A/N cu acest semnal prin configurarea bit 7 al port A sau port C ca linii de intrare &#x15F;i conectarea semnalului EOC pe aceast&#x103; linie. Pentru o conversie pe 12 bi i, data A/N citit&#x103; este aliniat&#x103; la st&#xE2;nga &#xEE;ntr-un cuv&#xE2;nt pe 16 bi i cu cei mai pu in semnificativi 4 bi i egali cu 0 a&#x15F;a cum se observ&#x103; mai jos: MSB D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 DB12 DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 0 0 0 0 4.4.6.3 Circuitele de conversie numeric-analogic&#x103; Dou&#x103; ie&#x15F;iri analogice ob inute de c&#x103;tre un convertor N/A pe 12 bi i sunt disponibile &#xEE;n conectorul de I/E . Tensiunea de referin &#x103; (de 10 V) se ob ine cu ajutorul circuitului integrat REF01. Conversia numeric-analogic&#x103; (N/A) de 12 bi i este realizat&#x103; cu ajutorul convertorului dublu de tip AD 7537. Tensiunile de ie&#x15F;ire sunt disponibile prin intermediul unor amplificatoare opera ionale de tip AD 712, care 4-89
• 90. realizeaz&#x103; scalarea semnalelor. 4.4.6.4 Interfa a paralel&#x103; programabil&#x103; (PPI - I8255) PPI ofer&#x103; 16 linii numerice I/E TTL/CMOS care pot fi configurate &#xEE;n func ie de necesit&#x103; i. Liniile disponibile pentru intr&#x103;ri/ie&#x15F;iri numerice sunt porturile A &#x15F;i C. PPI 8255 are &#xEE;n total 24 linii I/E numerice, dintre care 8 sunt folosite pentru a controla selec ia canalului A/N &#x15F;i circuitul de c&#xE2;&#x15F;tig (port B). Celelalte 16 linii sunt disponibile pentru exterior la conectorul P15. Portul C este subdivizat &#xEE;n 2 porturi de 4 bi i port C low (CL) (PC0-PC3) &#x15F;i port C high (CH) (PC4-PC7). Portul B este &#xEE;ntotdeauna &#xEE;n mod 0 ie&#x15F;ire, fiind rezervat. Foile de catalog pentru PPI 8255 prezint&#x103; detaliile necesare pentru programare. 4.4.6.5 PIT num&#x103;r&#x103;tor/periodizator programabil (I8254) Acest circuit integrat con ine 3 num&#x103;r&#x103;toare/periodizatoare pe 16 bi i independente TC0, TC1, TC2 care realizeaz&#x103; func ia de num&#x103;rare &#xEE;napoi. Aceste num&#x103;r&#x103;toare pot lucra cu incremen i de timp p&#xE2;n&#x103; la 125 nsec. Cea mai uzual&#x103; folosire este de a programa intervale de timp precise. Cele 3 circuite num&#x103;r&#x103;tor/periodizator sunt independente, ele put&#xE2;nd fi cascadate pentru num&#x103;r&#x103;ri inverse mai mari dec&#xE2;t capacitatea de 16 bi i. De exemplu semnalul OUT al TC0 se poate conecta la CLK pentru TC1 &#x15F;i OUT de la TC1 la CLK de la TC2. Oricare din ie&#x15F;irile OUT0 - OUT2 poate fi utilizat&#x103; la &#xEE;ntrerupere pentru PC. Foile de catalog pentru 8254 prezint&#x103; detaliile necesare pentru programare. 4.4.7 Prezentarea comutatoarelor &#x15F;i a programatoarelor hardware S1 - selec ie tip semnal de intrare analogic S1 reprezint&#x103; un set de 4 comutatoare (switch-uri) ce au rolul de a configura multiplexoarele pentru intr&#x103;ri SE sau diferen iale &#x15F;i selecteaz&#x103; o gam&#x103; de tensiuni de intrare unipolare sau bipolare. Primele 3 comutatoare ale lui S1 opereaz&#x103; ca un grup. C&#xE2;nd ele sunt &#xEE;n pozi ia superioar&#x103; multiplexoarele sunt configurate pentru intr&#x103;ri simple. C&#xE2;nd toate sunt &#xEE;n pozi ie inferioar&#x103; multiplexoarele sunt configurate pentru intr&#x103;ri diferen iale. Pentru ca multiplexoarele s&#x103; func ioneze corect este obligatoriu ca toate comutatoarele 1...3 s&#x103; fie &#xEE;n aceea&#x15F;i pozi ie. Cel de-al patrulea controleaz&#x103; polaritatea tensiunii de intrare. C&#xE2;nd switch-ul e &#xEE;n pozi ie superioar&#x103; gama tensiunii de intrare este unipolar&#x103;; pozi iei sale inferioare &#xEE;i corespunde o gam&#x103; bipolar&#x103;. Acest comutator, &#xEE;n conjunc ie cu selec ia gamei tensiunii, setat&#x103; la conectorul P9, determin&#x103; tensiunile de intrare analogice suportate de convertorul A/N. De subliniat c&#x103; &#xEE;n cazul oric&#x103;rei schimb&#x103;ri a polarit&#x103; ii, trebuie calibrat circuitul de conversie A/N. P2 - conector pentru fixarea adresei de baz&#x103; Modul de selectare a adresei de baz&#x103; a fost prezentat anterior. P3 - conector I/E pentru circuitul num&#x103;r&#x103;tor/periodizator (PIT) PIT con ine 3 circuite num&#x103;r&#x103;tor/periodizator independente de 16 bi i fiind un modul de tip I8254. Fiecare din aceste circuite are 3 semnale I/E asociate cu: ceas (CLK), poart&#x103; (GATE) &#x15F;i ie&#x15F;ire (OUT). Fiecare dintre num&#x103;r&#x103;toare este setat de firm&#x103; astfel: - intrare ceas (CLKi) - XTAL (generator intern de 5 MHz) - poart&#x103; (GTi) - la +5V - ie&#x15F;ire (OUTi) - COi unde i = 0, 1, 2 Conectorul P3 este pozi ionat &#xEE;n 3 grupuri func ionale TC0, TC1 &#x15F;i TC2 ce corespund celor 3 timere. Pentru TC0 corespund semnalele CK0, GT0 &#x15F;i OUT0 &#xEE;n dreapta P3 cele 3 corespunz&#xE2;nd num&#x103;r&#x103;torului 0 &#x15F;i &#xEE;n st&#xE2;nga XTAL, ECO, +5 V, EG0, CO0 &#x15F;i CO0 negat; unde: EC0 = External Clock - ceas extern EG0 = External Gate 4-90
• 91. CO0, CO0 negat = Clock Output - ie&#x15F;ire num&#x103;r&#x103;tor Deci ceasul poate fi conectat la XTAL sau EC0 (sursa extern&#x103;), validarea num&#x103;r&#x103;torului (prin intrarea GATE) la +5V sau EG0 (validare extern&#x103;) oferindu-se &#x15F;i ie&#x15F;irea negat&#x103; (CO0 negat). Analog pentru TC1 si TC2 &#xEE;n cazul celorlalte timere. Se pot cascada cele 3 timere prin legarea ie&#x15F;irii unuia la intrarea celuilalt. ECi sunt legate &#xEE;mpreun&#x103; la pinul 33 al conectorului P8 de I/E, EGi sunt legate la pinul 35 al conectorului P8, iar una dintre cele 3 ie&#x15F;iri OUTi se poate lega prin jumper la pinul 36 din conectorul P8. P5, P7 - conectori pentru &#xEE;ntreruperi Conectorii P5, P7 sunt utiliza i pentru a conecta diversele semnale generate de ADA2100 la canalele de &#xEE;ntreruperi ale calculatorului. Canalele de &#xEE;ntrerupere disponibile pe modul sunt IRQ2...IRQ7. De notat c&#x103; la un moment dat &#xEE;n calculator o singur&#x103; &#xEE;ntrerupere poate fi conectat&#x103; la un canal de &#xEE;ntrerupere. Trebuie evitate conflictele la selectarea canalelor de &#xEE;ntrerupere at&#xE2;t cu semnalele ADA 2100 c&#xE2;t &#x15F;i cu alte dispozitive din calculator. Sursele de &#xEE;ntrerupere la ADA2100 sunt ie&#x15F;iri de tip TTL totem-pole &#x15F;i nu open-collector, deci nu se vor conecta &#xEE;mpreun&#x103; 2 astfel de surse de &#xEE;ntrerupere. P5 - &#xEE;ntreruperile de la ie&#x15F;irile PIT Conectorul P5 prezentat &#xEE;n figura de mai jos este folosit pentru a conecta una din ie&#x15F;irile OUT0, OUT1 sau OUT2 la unul din canalele de &#xEE;ntrerupere IRQ2...IRQ7 ale calculatorului. Selec ia se face tot cu 2 jumperi (unul selecteaz&#x103; &#xEE;ntreruperea, cel&#x103;lalt ie&#x15F;irea). &#xCE;n figura de mai jos se arat&#x103; modul de plasare al jumperilor astfel &#xEE;nc&#xE2;t OUT2 s&#x103; fie conectat la IRQ3. P5 |---- | | | IRQ7 | | IRQ6 | | IRQ5 | | IRQ4 | - - | IRQ3 | | IRQ2 | | OUT0 | | OUT1 | - - | OUT2 |---- | P7 - &#xEE;ntrerupere generat&#x103; de A/N End-Of-Convert (EOC) Conectorul P7 prezentat mai jos este folosit pentru a conecta semnalul Sf&#xE2;r&#x15F;it de Conversie (EOC) al convertorului A/N la una din liniile de &#xEE;ntrerupere IRQ2...IRQ7. Semnalul EOC este conectat la canalul IRQ prin instalarea unui singur jumper orizontal peste pinii canalului IRQ selectat. &#xCE;n exemplul de mai jos se arat&#x103; modul de conectare al semnalului EOC la IRQ4. P7 |----| | | IRQ7 | | IRQ6 | | IRQ5 | -- | IRQ4 | | IRQ3 | | IRQ2 4-91
• 92. |--- | P6 - conector pentru monitorizarea EOC A&#x15F;a cum s-a amintit mai sus, semnalul EOC poate fi utilizat pentru a genera o &#xEE;ntrerupere. Dac&#x103; acest semnal nu este utilizat ca o &#xEE;ntrerupere, el poate fi utilizat pentru urm&#x103;rirea prin polling a st&#x103;rii procesului de conversie A/N. Conectorul P6 ofer&#x103; 2 linii prin care EOC poate fi monitorizat de la PPI, PA7 sau PC7. Una din aceste 2 linii I/E digitale este selectat&#x103; pentru monitorizarea EOC prin instalarea unui jumper orizontal peste perechea de pini corespunz&#x103;toare. Linia numeric&#x103; I/E selectat&#x103;, PA7 sau PC7, trebuie s&#x103; fie configurat&#x103; ca intrare &#xEE;n mod 0 la programarea PPI. &#xCE;n figura de mai jos se prezint&#x103; P6 cu un jumper instalat &#xEE;n pozi ia setat&#x103; de firm&#x103; pentru monitorizarea EOC prin PA7: P6 |----| | | PC7 | -- | PA7 |----| P9 - Conector pentru selec ia domeniului tensiunii convertorului A/N Conectorul P9 ilustrat &#xEE;n figura de mai jos este folosit pentru a selecta tensiuni de intrare analogice a convertorului analog-numeric. Un jumper este instalat vertical peste pinii marca i &#x201E;10V&#x201D; pentru a suporta un domeniu de 10 V (0 la 10 V, fie -5 la +5 V) sau peste pinii marca i 20 V pentru a suporta un domeniu de 20 V (-10 la +10 V). Fixarea acestui jumper &#xEE;n conjunc ie cu fixarea comutatorului DIP S1-4 care selecteaz&#x103; un domeniu unipolar sau bipolar, determin&#x103; domeniul tensiunii de intrare al convertorului A/N. P9 este configurat de firm&#x103; &#xEE;n concordan &#x103; cu specifica iile clientului pentru domeniul tensiunii de intrare. Combina iile valide ale P9 &#x15F;i S1-4 sunt ilustrate mai jos: Domeniu Setare P9 Setare S1-4 -5 V la +5 V 10 V (dreapta) jos (bipolar) 0 V la +10 V 10 V (dreapta) sus (unipolar) -10 V la +10 V 20 V (st&#xE2;nga) jos (bipolar) |-----| P9 20 V| | | 10 V |-----| P10 - conector pentru fixarea polarit&#x103; ii tensiunilor de ie&#x15F;ire Este utilizat pentru a selecta polaritatea tensiunilor de ie&#x15F;ire pe cele dou&#x103; ie&#x15F;iri analogice AOUT1 &#x15F;i AOUT2. Fiecare canal poate fi ie&#x15F;ire unipolar&#x103; (+) sau bipolar&#x103; (-/+). Selec ia se face cu jumpere instalate vertical ca &#xEE;n figura de mai jos. AOUT1 AOUT2 ----- ----- ----------- P10 | | | | | | | | ----------- ++ ++ / / - - 4-92
• 93. Asignarea pinilor la conectorul P8 Nr. pin Nume semnal Nr. pin Nume semnal SE/DIFF 1 AN1/AN1+ 2 GND 3 AN5/AN1- 4 GND 5 AN2/AN2+ 6 GND 7 AN6/AN1- 8 GND 9 AN3/AN3+ 10 GND 11 AN7/AN1- 12 GND 13 AN4/AN4+ 14 GND 15 AN8/AN1- 16 GND 17 GND 18 GND 19 AOUT1 20 GND 21 AOUT2 22 GND 23 GND 24 GND 25 PC7 26 PC6 27 PC5 28 PC4 29 PC3 30 PC2 31 PC1 22 PC0 33 EXTCLK 34 GND 35 EXTGATE 36 CLKOUT 37 +12V 38 +5V 39 -12V 40 GND 4.4.8 Proceduri de calibrare Se prezint&#x103; procedurile de calibrare pentru domeniul tensiunii de intrare a convertorului A/N &#x15F;i c&#xE2;&#x15F;tigul acestuia. &#xCE;n func ie de comanda specific&#x103; a utilizatorului performan ele ADA2100: offsetul &#x15F;i cap&#x103;tul de scal&#x103; pentru convertor sunt calibrate de firm&#x103;. Circuitul de c&#xE2;&#x15F;tig este de asemenea calibrat &#xEE;nainte de trimitere. Urm&#x103;toarea procedur&#x103; permite o verificare rapid&#x103; a preciziei acestor circuite. Dup&#x103; calibrare se alimenteaz&#x103; calculatorul &#x15F;i se permite ADA2100 un interval de 15 min. pentru stabilizare. Echipament necesar pentru calibrare - surse de tensiune de precizie: 0 - +(-)10 V - voltmetru digital: 5 - 1/2 digi i - &#x15F;urubelni &#x103; mic&#x103; (pentru ajustare poten iometre) Calibrarea A/N &#xCE;n timpul acestei proceduri trebuie f&#x103;cute conexiuni la c&#xE2;teva din intr&#x103;rile analogice pe conectorul I/E extern P8. Sunt necesare 2 ajust&#x103;ri pentru a calibra complet convertorul A/N pentru opera ii unipolare sau bipolare. Acestea afecteaz&#x103; offset-ul &#x15F;i cap&#x103;tul de scal&#x103;. Ambii pa&#x15F;i ai calibr&#x103;rii se efectueaz&#x103; folosind poten iometrele TR5 &#x15F;i TR6 sau TR6 &#x15F;i TR7. TR5 sau TR7 se folosesc pentru a aduce la zero eroarea de offset a convertorului A/N &#x15F;i TR6 se folose&#x15F;te pentru ajustarea cap&#x103;tului de scal&#x103;. &#xCE;n urm&#x103;toarea procedur&#x103; se folose&#x15F;te canalul analogic 1 de intrare &#x15F;i se alege c&#xE2;&#x15F;tigul 1 pentru el. Aceasta se realizeaz&#x103; prin scrierea de zerouri la loca ia de adres&#x103; I/E BA+1. Trebuie s&#x103; v&#x103; asigura i c&#x103; sec iunea 4 a comutatorului S1 este setat&#x103; pentru polaritatea dorit&#x103; &#x15F;i jumperul de pe conectorul P9 este &#xEE;n pozi ia 10V. Calibrarea unipolar&#x103; 4-93
• 94. Sunt necesare dou&#x103; ajust&#x103;ri pentru a calibra convertorul A/N pentru domeniul unipolar de 0...+10V, una pentru offset &#x15F;i cealalt&#x103; pentru cap&#x103;tul de scal&#x103;. Pentru a ajusta offset-ul, o tensiune analogic&#x103; de intrare foarte mic&#x103;, ar&#x103;tat&#x103; sub rubrica &#x201E;Offset&#x201D; &#xEE;n tabelul de mai jos, este aplicat&#x103; la canalul 1 al multiplexorului (P8-1). La P8-2 se conecteaz&#x103; referin a pentru mas&#x103;. Afi&#x15F;&#xE2;nd continuu conversiile analog/digitale se ajusteaz&#x103; TR7 p&#xE2;n&#x103; c&#xE2;nd datele oscileaz&#x103; &#xEE;ntre cele dou&#x103; valori specificate &#xEE;n tabel la rubrica &#x201E;Offset&#x201D;. Dup&#x103; aceea se folose&#x15F;te TR6 pentru ajustarea valorii cap&#x103;tului de scal&#x103;. De&#x15F;i tensiunile de intrare pentru cap&#x103;tul de scal&#x103; specificate &#xEE;n tabel nu reprezint&#x103; de fapt cap&#x103;tul de scal&#x103; pentru un domeniu ideal de 0...+10V, ele reprezint&#x103; tensiunile maxime pentru care conversia analog digital&#x103; este garantat&#x103; a fi liniar&#x103;. Orice valoare peste aceast&#x103; limit&#x103; dep&#x103;&#x15F;e&#x15F;te domeniul liniar &#x15F;i afecteaz&#x103; calibrarea corect&#x103;. Dup&#x103; conectarea tensiunii de cap&#x103;t de scal&#x103; la canalul 1 de intrare, se ajusteaz&#x103; TR6 p&#xE2;n&#x103; c&#xE2;nd datele vor oscila &#xEE;ntre cele dou&#x103; valori din rubrica &#x201E;Cap de scal&#x103;&#x201D;. Calibrare unipolar&#x103; ( domeniul 0...+10V ) | Offset ( TR7 ) | Cap de scal&#x103; ( TR6 ) --------------------------------------------------------------- Tensiune de | | intrare | +1,22070 mV | +9,49829 --------------------------------------------------------------- Date A/N | 0000 0000 0000 | 1111 0011 0010 | 0000 0000 0001 | 1111 0011 0011 Calibrare bipolar&#x103; Dac&#x103; se selecteaz&#x103; un domeniu de intrare pentru tensiuni de la -5V la +5V sau -10V la +10V procedura de calibrare este aceea&#x15F;i. Deci jumperul pe conectorul P9 va fi instalat &#xEE;n pozi ia 10V. Dac&#x103; se lucreaz&#x103; cu gama de tensiuni -10V...+10V, se va repozi iona jumperul pe pozi ia 20V numai dup&#x103; efectuarea procedurilor de calibrare de mai jos. Sunt necesare dou&#x103; ajust&#x103;ri pentru a calibra convertorul, una pentru offset iar cealalt&#x103; pentru cap&#x103;t de scal&#x103;. Pentru a ajusta offsetul se conecteaz&#x103; o tensiune ca cea afi&#x15F;at&#x103; &#xEE;n rubrica &#x201E;Offset&#x201D; din tabelul de mai jos la canalul 1 al multiplexorului. &#xCE;n timp ce se afi&#x15F;eaz&#x103; rezultatul conversiei pe 12 bi i, se ajusteaz&#x103; TR5 p&#xE2;n&#x103; c&#xE2;nd data va lua una din valorile din rubrica &#x201E;Offset&#x201D;. Dup&#x103; aceea se conecteaz&#x103; tensiunea de cap&#x103;t de scal&#x103; din tabel la canalul 1 &#x15F;i se ajusteaz&#x103; TR6 p&#xE2;n&#x103; c&#xE2;nd data ia valoare &#xEE;ntre cele dou&#x103; limite din tabel &#xEE;n rubrica &#x201E;Cap&#x103;t de scal&#x103;&#x201D;. Calibrare bipolara ( domeniul -5V...+5V sau -10V...+10V ) | Offset ( TR5 ) | Cap de scala ( TR6 ) --------------------------------------------------------------- Tensiune de | | intrare | -4,99878 V | +4,99634 V --------------------------------------------------------------- Date A/N | 0000 0000 0000 | 1111 1111 1110 | 0000 0000 0001 | 1111 1111 1111 Tabelul de mai jos ofer&#x103; o referin &#x103; pentru tensiunea de intrare ideal&#x103; pentru convertorul A/N pentru ponderea fiec&#x103;rui bit &#xEE;n fiecare domeniu de tensiuni. Tabelul arat&#x103; cap&#x103;tul ideal de scal&#x103; (toate pozi iile 1) &#xEE;n prima linie &#x15F;i apoi c&#xE2;te un zero &#xEE;n liniile urm&#x103;toare corespunz&#x103;tor unor bi i. Valorile tensiunilor sunt date &#xEE;n mV. 4-94
• 95. Ponderea bi ilor pentru convertorul A/N Pondere bit | Tensiune de intrare ideala (mV) A/N | ----------------------------------------------- | -5V...+5V | -10V...+10V | 0...+10V --------------------|-----------------|-------------------|---------------- 4095-Cap scal&#x103; | +4997,6 | +9995,1 | +9997,6 2048 | 0000,0 | 0000,0 | +5000,0 256 | -4375,0 | -8750,0 | +625,0 32 | -4921,9 | -9843,8 | +78,125 4 | -4990,2 | -9980,5 | +9,7656 0 | -5000,0 | -10000,0 | 0,0000 ---------------------------------------------------------------- Calibrarea circuitului de c&#xE2;&#x15F;tig Pentru ajustarea circuitului de c&#xE2;&#x15F;tig se folosesc poten iometrele TR1-TR4, c&#xE2;te unul pentru c&#xE2;&#x15F;tigurile de 2, 4, 8 &#x15F;i respectiv 16. Pentru a calibra acest circuit se aplic&#x103; o tensiune de 39,063 mV la intrarea canalului 1. Dup&#x103; aceea, prin scrierea cuv&#xE2;ntului corect la loca ia BA+1, se seteaz&#x103; c&#xE2;&#x15F;tigul la 2 &#x15F;i se ajusteaz&#x103; poten iometrul TR1 pentru a ob ine ie&#x15F;irea convertorului A/N pe 12 bi i pentru gama tensiunilor pe modul a&#x15F;a cum se prezint&#x103; &#xEE;n tabelul de mai jos. Se repet&#x103; dup&#x103; aceea procedura pentru celelalte 3 c&#xE2;&#x15F;tiguri ajust&#xE2;nd poten iometrul corespunz&#x103;tor p&#xE2;n&#x103; se ating valorile corecte din tabelul de mai jos: C&#xE2;&#x15F;tig | Poten i- | Domeniul tensiunii de intrare | ometrul | -5V...+5V | -10V...+10V | 0...+10V ----------|------------|--------------------|----------------------|------------- 2 | TR1 | 100000100000 | 100000010000 | 000000100000 4 | TR2 | 100001000000 | 100000100000 | 000001000000 8 | TR3 | 100010000000 | 100001000000 | 000010000000 16 | TR4 | 100100000000 | 100010000000 | 000100000000 ----------------------------------------------------------------- 4.4.9 Conectarea modulului la proces Legarea la proces se face prin intermediul unui conector de 40 de pini montat pe modul (P8). &#xCE;n conector se introduc panglicile cu conectoare pereche ale celor de pe modul, acestea fiind livrate o dat&#x103; cu modulul &#x15F;i etichetate la cap&#x103;tul dinspre proces. Panglica pentru semnale analogice este realizat&#x103; &#xEE;ntr-un mod adecvat semnalelor analogice, av&#xE2;nd fiecare intrare torsadat&#x103; cu c&#xE2;te un fir de masa. Legarea efectiv&#x103; la proces se face prin intermediul conectoarelor originale ale panglicilor. 4.4.10 Programe de test Exist&#x103; programe de test pe disc flexibil realizate de firma "RTD" Inc &#x2013; vezi laborator. 4.4.11 Programarea modulului ADA 2100 &#xCE;n acest paragraf se prezint&#x103; modul de programare a modulului ADA2100 pentru achizi ia pe canalele analogice de intrare; programarea interfe elor PPI I8255 &#x15F;i PIT I8254 este prezentat&#x103; &#xEE;n foile de catalog. Ini ializarea ADA2100 &#xCE;nainte de a utiliza &#xEE;n program ADA2100, modulul trebuie ini ializat. Acest lucru trebuie f&#x103;cut ori de c&#xE2;te ori calculatorul este pornit sau resetat. Prin ini ializare se programeaz&#x103; PPI astfel &#xEE;nc&#xE2;t s&#x103; comunice cu circuitele de conversie analog/numeric&#x103;. Dac&#x103; nu se face ini ializarea, modulul nu va r&#x103;spunde corect la comenzi, iar 4-95
• 96. efectele sunt imprevizibile. A&#x15F;a cum s-a ar&#x103;tat anterior, ADA2100 ocup&#x103; &#xEE;n spa iul de I/E al calculatorului 17h loca ii de adres&#x103;, &#xEE;ncep&#xE2;nd cu o loca ie care constituie baza; se va utiliza pentru aceast&#x103; loca ie denumirea simbolic&#x103; BA. Deci spa iul I/E pentru ADA2100 este &#xEE;ntre BA &#x15F;i BA+17h. Ini ializarea modulului se face simplu, scriind cuv&#xE2;ntul de control pentru PPI la loca ia BA+3. Cuv&#xE2;ntul de control pentru PPI I8255 este: 4-96
• 97. D7 D6 D5 D4 D3 D2 D1 D0 | | | | | | | | __________________ | - | | | | | | GROUP B | | | | | | | | ---------------------------- | | | | | | |-&gt;| PORT C (LOWER) | | | | | | | |1=INPUT,0=OUTPUT| | | | | | | ---------------------------- | | | | | |-------&gt; | PORT B | | | | | | |1=INPUT,0=OUTPUT| | | | | | ----------------------------- | | | | |-------------&gt; | MODE SELECTION | | | | | | 0=MODE 0 | | | | | | 1=MODE 1 | | | | | ---------------------------- | | | | __________________ | | | | | GROUP A | | | | | ----------------------------- | | | |-------------------&gt; | PORT C (UPPER) | | | | | 1=INPUT,0=OUTPUT| | | | ----------------------------- | | |-----------------------&gt; | PORT A | | | | 1=INPUT,0=OUTPUT | | | ------------------------------ | |---------------------------&gt; | MODE SELECTION | | | 00=MODE 0 | | | 01=MODE 1 | | | 1x=MODE 2 | | ------------------------------ | __________________ |-----------------------------------&gt; | MODE SET FLAG | | 1=ACTIVE | --------------------------- Cuv&#xE2;ntul de control pentru ini ializarea ADA2100 trebuie s&#x103; aib&#x103; forma general&#x103; 1xxxx00x, unde x poate lua orice valoare 1 sau 0. Acest cuv&#xE2;nt de control asigur&#x103; c&#x103; cele 8 linii ale portului B s&#x103; fie programate ca ie&#x15F;iri, pentru a fi utilizate s&#x103; controleze multiplexorul analogic &#x15F;i circuitele de amplificare (gain). Prin bi ii care sunt simboliza i cu x &#xEE;n cuv&#xE2;ntul de control, se poate face programarea celorlalte 16 canale binare de I/E (porturile A &#x15F;i C) &#xEE;n orice mod de lucru posibil. De exemplu pentru cuv&#xE2;ntul de control 10000000 (128 &#xEE;n zecimal) ini ializarea se face cu instruc iunile &#xEE;n asamblare mov dx,BA+3 mov al,128 out dx,al 4-97
• 98. &#xCE;n acest caz, &#x15F;i porturile C &#x15F;i A sunt programate ca ie&#x15F;iri, put&#xE2;nd fi disponibile pentru comenzi &#xEE;n proces la conectorul P8. Dac&#x103; ini ializarea se face cu 10001001 (137 zecimal), portul C este programat ca intr&#x103;ri numerice. De notat c&#x103; portul A bitul 7 (PA7), poate fi configurat s&#x103; permit&#x103; monitorizarea semnalului EOC de la convertorul analog-numeric. &#xCE;n acest caz, trebuie ca portul A s&#x103; fie programat ca intr&#x103;ri numerice, cuv&#xE2;ntul de control av&#xE2;nd forma general&#x103; 1xx1x00x. Portul B este dedicat pentru selec ia canalului analogic de intrare &#x15F;i a amplific&#x103;rii. Cei mai pu in semnificativi 4 bi i ai portului B (PB0-:-PB3) controleaz&#x103; selec ia canalului, iar cei mai semnificativi 4 bi i controleaz&#x103; selec ia amplific&#x103;rii. Asignarea bi ilor &#xEE;n port este: MSBs LSBs 7654 3210 PPI port B (BA + 1) ___^____/ ___^____/ gain select channel select 0000 = 1x 0000=channel 1 0001 = 2x 0001=channel 2 0010 = 4x 0010=channel 3 0100 = 8x 0011=channel 4 1000 = 16x 0100=channel 5 0101=channel 6 0110=channel 7 0111=channel 8 Imediat dup&#x103; ini ializare, portul B se &#xEE;ncarc&#x103; cu valoarea 0, corespunz&#x103;tor canal 1, amplificare 1x. Pentru a schimba aceast&#x103; programare, de exemplu pentru canal 8 amplificare 2x, se scrie secven a de program mov dx,BA+1 mov al,00010111b out dx,al Selectarea unui canal analogic de intrare Canalul analogic de intrare se selecteaz&#x103; cu cei mai pu in semnificativi 4 bi i din portul B al PPI, care se g&#x103;se&#x15F;te la adresa BA+1. Algoritmul general de selectare a canalului este: 1. Cite&#x15F;te starea curent&#x103; a portului B 2. Re ine cei mai semnificativi 4 bi i, pentru a p&#x103;stra amplificarea 3. Depune num&#x103;rul de canal &#xEE;n cei mai pu in semnificativi bi i 4. Scrie noua valoare &#xEE;n portul B. O secven &#x103; de program &#xEE;n asamblare pentru selec ia canalului 6 (de exemplu) este: mov dx,BA+1 in al,dx and al,0f0h or al,6-1 out dx,al 4-98
• 99. Setarea amplific&#x103;rii pe intr&#x103;rile analogice Configura ia celor mai semnificativi 4 bi i ai portului B pentru setarea amplific&#x103;rii a fost prezentat&#x103; mai sus. Algoritmul general pentru setarea amplific&#x103;rii este: 1. Cite&#x15F;te starea curent&#x103; a portului B 2. P&#x103;streaz&#x103; cei mai pu in semnificativi 4 bi i, pentru a nu schimba canalul 3. Seteaz&#x103; noua amplificare cu una din valorile (&#xEE;n zecimal): pentru 1x ---- 0 pentru 2x ---- 16 pentru 4x ---- 32 pentru 8x ---- 64 pentru 16x ---- 128 4. Scrie noua valoare &#xEE;n portul B. Secven a de program &#xEE;n asamblare pentru setarea amplific&#x103;rii 8x (de exemplu) este: mov dx,BA+1 in al,dx and al,0fh or al,64 out dx,al Programarea &#x15F;i citirea convertorului analog-numeric Dup&#x103; ce s-a f&#x103;cut selec ia canalului &#x15F;i setarea amplific&#x103;rii, se poate face citirea valorii convertit&#x103;, ori de c&#xE2;te ori este nevoie. Schimbarea canalului &#x15F;i/sau amplific&#x103;rii se face numai atunci c&#xE2;nd este nevoie de alte valori pentru ele, nu la fiecare citire din convertor. Ori de c&#xE2;te ori o conversie analog-numeric&#x103; este complet&#x103;, se genereaz&#x103; semnalul end-of-convert (EOC) pentru a specifica sf&#xE2;r&#x15F;itul conversiei. Acest semnal poate fi utilizat &#xEE;n mai multe feluri: &#x2022; conectat la bitul 7 din portul A al PPI (PA7) &#x2022; conectat la bitul 7 din portul C al PPI (PC7) &#x2022; conectat la una din &#xEE;ntreruperile IRQ2-:-IRQ7. Conectarea la PA7 sau PC7 se face &#xEE;n conectorul P6, iar la una dintre &#xEE;ntreruperi &#xEE;n conectorul P7. Algoritmul general pentru controlul conversiei analog-numerice pe 12 bi i &#x15F;i citirea valorii convertite este: 1. Starteaz&#x103; o conversie pe 12 bi i, execut&#xE2;nd o instruc iune OUT la BA+4 (sau BA+6); nu conteaz&#x103; valoarea care se scrie &#xEE;n port 2. A&#x15F;teapt&#x103; 20 microsecunde sau testeaz&#x103; prin polling starea semnalului EOC pe PA7 (sau PC7) 3. Cite&#x15F;te octetul cel mai pu in semnificativ al valorii convertite, de la BA+5 (sau BA+7) 4. Cite&#x15F;te octetul cel mai semnificativ al valorii convertite, de la BA+4 (sau BA+6) 5. Combin&#x103; cei doi octe i &#xEE;ntr-o valoare pe 12 bi i, utiliz&#xE2;nd rela ia: rezultat=(MSB*16)+(LSB div 16) Este nevoie de ajustarea valorii citite (pasul 5), deoarece modulul ofer&#x103; o valoare pe 12 bi i prin intermediul a dou&#x103; porturi pe 8 bi i; acestea constituie un cuv&#xE2;nt pe 16 bi i, &#xEE;n care cei 12 bi i ai valorii convertite sunt cadrari la st&#xE2;nga, ca &#xEE;n figura de mai jos: MSB LSB D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 4-99
• 100. DB12 DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 0 0 0 0 Formatul cuv&#xE2;ntului de conversie A/N Dup&#x103; ce se cite&#x15F;te &#x15F;i ajusteaz&#x103; valoarea, aceasta trebuie scalat&#x103; &#xEE;n func ie de domeniul &#x15F;i polaritatea tensiunii de intrare: Domeniu de intrare Factor de scalare Greutatea pe bit ------------------ ----------------- ----------------- +/- 5V Scade 2048 2.4414 mV +/- 10V Scade 2048 4.8828 mV 0 la 10V NU 2.4414 mV De exemplu, dac&#x103; valoarea citit&#x103; este 1024 iar domeniul de intrare este +/-5V, tensiunea analogic&#x103; de intrare este calculat&#x103; astfel: (1024-2048)*2.4414mV/bit=-2.49999 V. Pentru +/-10V la intrare, aceast&#x103; tensiune se calculeaz&#x103; astfel: (1024-2048)*4.8828mV/bit=-4.9999V. Pentru 0 -:- 10V la intrare, nu se face scalare, &#x15F;i tensiunea se calculeaz&#x103; astfel: 1024*2.4414mV/bit=2.49999 V. Pentru conversia din vol i &#xEE;n unit&#x103; i inginere&#x15F;ti corespunz&#x103;toare m&#x103;rimii achizi ionate (atm, bari, Amperi, m/s etc), se ine cont dac&#x103; traductorul de intrare are sau nu caracteristica de intrare/ie&#x15F;ire liniar&#x103;. Dac&#x103; da, se poate face translatarea de domeniu din vol i &#xEE;n valori inginere&#x15F;ti, &#xEE;n caz contrar urm&#xE2;nd a se consulta cartea tehnic&#x103; a traductorului. De notat c&#x103; ADA2100 efectueaz&#x103; &#x15F;i conversii pe 8 bi i. Startul conversiei se d&#x103; cu o instruc iune OUT la adresa BA+5 (sau BA+7). De&#x15F;i are o rezolu ie mai proast&#x103;, conversia pe 8 bi i este uneori preferat&#x103;, datorit&#x103; vitezei mai mari a ciclului de conversie (13&#xB5;s &#xEE;n loc de 20&#xB5;s c&#xE2;t este la conversia pe 20bi i). Observa ii: 1. &#xCE;n aplica ii, este bine ca chiar dac&#x103; programarea conversiei &#x15F;i citirea datelor se fac &#xEE;n limbaj de asamblare, conversia &#xEE;n vol i &#x15F;i &#xEE;n unit&#x103; i inginere&#x15F;ti s&#x103; se fac&#x103; &#xEE;n limbaj evoluat (C, PASCAL, BASIC etc.). Limbajele evoluate con in de regul&#x103; &#x15F;i func ii de I/E care permit programarea porturilor. 2. Pentru aprofundarea modului de programare a modulului ADA2100 &#xEE;n diverse limbaje, se vor studia programele sursa livrate de firma produc&#x103;toare. Acestea con in exemple care prezint&#x103; diverse moduri de utilizare a modulului ADA2100 pentru achizi ia de date. Problem&#x103; propus&#x103; S&#x103; se adapteze programul de prezentat la 4.3.4 &#x15F;i s&#x103; se scrie func iile can()&#x15F;i cna()pentru cazul &#xEE;n care sistemul de achizi ie de date &#x15F;i control este realizat cu ADA2100. 4-100
• 101. 5 SISTEME DE OPERARE TIMP - REAL MULTITASKING 5.1 Introducere O metod&#x103; uzual&#x103; de a structura o aplica ie timp - real este aceea de a realiza un num&#x103;r de task-uri cooperante care se execut&#x103; concurent (pentru task vezi &#x15F;i 6.1). &#xCE;n mod uzual, proiectarea &#x15F;i implementarea aplica iei timp - real se poate face mai u&#x15F;or dac&#x103; sistemul de operare (SO) utilizat suport&#x103; prelucr&#x103;ri multitasking. Este cunoscut c&#x103; SO tradi ionale se bazeaz&#x103; pe aceea c&#x103; toate aplica iile sau task-urile din sistem sunt executate concurent pe o singur&#x103; UC cu un singur procesor. &#xCE;n contrast, procesarea paralel&#x103; presupune ca mai multe procesoare s&#x103; lucreze &#xEE;n paralel, fiecare dintre ele execut&#xE2;nd concurent task-uri. Sistemele cu procesare paralel&#x103; au un cost ridicat &#x15F;i &#xEE;n majoritatea aplica iilor timp - real raportul performan &#x103;/cost determin&#x103; utilizarea unui sistem cu un singur procesor &#x15F;i cu SO adecvat pentru execu ia concurent&#x103; a task-urilor. Pentru &#xEE;ncep&#x103;tori, o confuzie poate ap&#x103;rea &#xEE;ntre propriet&#x103; ile multiuser &#x15F;i multitasking ale SO. Proprietatea multiuser a SO asigur&#x103; c&#x103; fiecare utilizator execut&#x103; propria aplica ie ca &#x15F;i c&#xE2;nd ar avea la dispozi ie toate resursele calculatorului: Utilizator 1 Utilizator i Program 1 Program i Date 1 Date i SO Hardware Fig. 5.1-1 Execu ia multiuser 5-101
• 111. atunci c&#xE2;nd din diferite motive un task nu se poate executa (exemplu: suspendat pe o resurs&#x103; critic&#x103;) chiar dac&#x103; a trecut num&#x103;rul de tick-uri, bitul corespunz&#x103;tor &#xEE;n masc&#x103; se seteaz&#x103; la &#x201C;0&#x201D;. Se face &#x201E;&#x15F;i logic&#x201D; &#xEE;ntre cuv&#xE2;ntul extras din tabel&#x103; &#x15F;i masc&#x103;, iar task-urile &#xEE;n a c&#x103;ror pozi ie &#xEE;n cuv&#xE2;nt este &#x201C;1&#x201D; sunt trecute &#xEE;n lista task-urilor gata de execu ie. Ele vor fi apoi lansate &#xEE;n execu ie &#xEE;n conformitate cu prioritatea, care poate fi asociat&#x103; cu pozi ia bitului asociat task-ului &#xEE;n cuv&#xE2;nt. Pentru exemplificarea modului &#xEE;n care func ioneaz&#x103; tehnica descris&#x103; anterior, presupunem 6 task-uri la nivel de ceas cu intervale de invocare la 1, 2, 4, 5, 10, 20 de tick-uri. Cel mai mic multiplu comun este 20 &#x15F;i prin urmare este necesar&#x103; o tabel&#x103; cu 20 de intr&#x103;ri. Se presupune c&#x103; s-a cerut ca toate task-urile s&#x103; se poat&#x103; executa la tick-ul 0 (task-urile sunt fazate, care este cel mai defavorabil caz), deci &#xEE;n primul cuv&#xE2;nt to i bi ii sunt seta i. Determinarea task-urilor ce urmeaz&#x103; a fi trecute &#xEE;n starea gata de execu ie precum &#x15F;i modul de planificare pentru cazul &#xEE;n care num&#x103;r&#x103;torul de tick-uri are la un moment dat valoarea 4, este prezentat&#x103; &#xEE;n figura 5.2.3.2.- 4. 5-111
• 112. Task A B C D E F Masca de activare Tick 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 2 1 1 0 0 0 0 Cuv&#xE2;ntul de control 3 1 0 0 0 0 0 al execu iei 4 1 1 1 0 0 0 5 1 0 0 1 0 0 6 1 1 0 0 0 0 7 1 0 0 0 0 0 8 1 1 1 0 0 0 9 1 0 0 0 0 0 10 1 1 0 1 1 0 11 1 0 0 0 0 0 12 1 1 1 0 0 0 13 1 0 0 0 0 0 14 1 1 0 0 0 0 15 1 0 0 1 0 0 16 1 1 1 0 0 0 17 1 0 0 0 0 0 18 1 1 1 0 0 0 19 1 0 0 0 0 0 Figura 5.2.3.2.-4 Tabela de planificare la nivel de ceas Num&#x103;r&#x103;torul modulo 20 este incrementat la fiecare tick. Valoarea sa este utilizat&#x103; ca index &#xEE;n tabel&#x103;. De exemplu, la tick-ul al patrulea se selecteaz&#x103; cuv&#xE2;ntul 4 care are marcate pentru execu ie task-urile A, B, C; totu&#x15F;i pentru c&#x103; task-ul C are bitul 0 &#xEE;n masc&#x103; (este suspendat) numai task-urile A &#x15F;i B vor putea fi trecute &#xEE;n starea gata de execu ie. 5-112
• 115. Intrarea A: Intrarea B: IRQ ceas TR A B Suspendare pt. IRQ I/E &#xEE;nt&#xE2;rziere, a&#x15F;teptare transfer Salvare stare Salvare stare task activ task activ Nivel prioritate Nivel prioritate = -1 = prioritatea curent&#x103; Incrementarea niv.de prioritate DA Nivel prioritate &gt; max (a ie&#x15F;it din domeniul priorit&#x103; ilor alocate) NU Task &#xEE;n NU lista ready ? Cerere de transfer &#xEE;n memorie DA Task &#xEE;n NU memorie ? DA Restaurare stare task Ie&#x15F;ire &#xEE;n task Fig. 5.2.4-1 - Apelul la dispecer 5-115
• 117. exits iready activate preempted ready idle exitt dispecer dispecer IRQi exits exits create suspended running exits inexistent IRQi wait aqio sdat aqmsg rdat exits unlock qio lock Fif. 5.2.5 -1 Automatul de tranzi ie a starilor la SOTRM REX St&#x103;rile pot fi modificate de c&#x103;tre planificatorul executivului la ini iativa task-urilor prin apel de directive, sau ca urmare a unor evenimente. Evenimentele externe sunt generate de c&#x103;tre &#xEE;ntreruperile externe; IRQi din figur&#x103; se refer&#x103; la rutinele de tratare a acestor &#xEE;ntreruperi. 5.2.6.2 Directivele implicate &#xEE;n tranzi ia st&#x103;rilor Directivele SOTRM REX implicate &#xEE;n tranzi ia st&#x103;rilor task-urilor sunt: &#x2022; wait &#x2013; a&#x15F;teptare eveniment sau &#xEE;nt&#xE2;rziere; &#x2022; activate &#x2013; activeaz&#x103; un task aflat &#xEE;n starea idle; &#x2022; create &#x2013; creeaz&#x103; un descriptor de task &#x15F;i trece task-ul &#xEE;n starea idle; &#x2022; destroy &#x2013; distruge un task; &#x2022; exitt &#x2013; termin&#x103; execu ia unui task; 5-117
• 119. } 5.2.6.4 Dispecerul Dispecerul realizeaz&#x103; comutarea contextului, prin suspendarea task-ului running la intrarea &#xEE;n dispecer &#x15F;i respectiv prin activarea task-ului running la ie&#x15F;irea din acesta. Deoarece intrarea &#xEE;n dispecer &#x15F;i ie&#x15F;irea din acesta se realizeaz&#x103; prin secven e de program unice la nivel de sistem, se poate realiza un controlul riguros al instruc iunilor ma&#x15F;in&#x103; din aceste secven e &#x15F;i se pot determina performan e timp - real pe o ma&#x15F;in&#x103; dat&#x103;. Func ia de Suspendare Intrarea &#xEE;n dispecer este precedat&#x103; de salvarea contextului de execu ie al task-ului &#xEE;n curs de execu ie. Aceast&#x103; ac iune se realizeaz&#x103; la fiecare apel de directiv&#x103; care implic&#x103; suspendarea execu iei task-ului curent: ... Mascarea &#xEE;ntreruperilor [Stiva].Running &lt;- RegistreleleProcesorului RegistreleProcesorului &lt;- [Stiva].Kernel ... Un exemplu de directiv&#x103; care for eaz&#x103; intrarea &#xEE;n dispecer este directiva wait: extern int tkrun; // ID-ul task-ului in starea running int far wait(unsigned int n_int,unsigned int n_cuante){ register unsigned int i; unsigned int *pntr; register unsigned int c; asm cli; asm push bp asm push bx asm push cx asm push dx c=_SP; pntr=&amp;td_ram[tkrun].ret_wait; if((n_int&lt;wtqio)&amp;&amp;(*pntr!=0)){ /*o irq externa a aparut &#xEE;ntre timp*/ i=*pntr; *pntr=0; asm pop dx asm pop cx asm pop bx asm pop bp asm sti; return(i); } . . . *pntr=0; td_ram[tkrun].top_stack=c; push_delay(n_int,n_cuante); _SP=rex_sp; return(dspatch());// intrarea in dispecer } Func ia de Activare: Ie&#x15F;irea din dispecer este precedat&#x103; de refacerea contextului de execu ie al task-ului care este lansat &#xEE;n execu ie. Aceast&#x103; ac iune se realizeaz&#x103; la terminarea execu iei unei directive care implic&#x103; lansarea &#xEE;n execu ie a unui task. 5-119
• 126. Exemplul 6-1 &#xCE;n figura 6-1 avem T1 T2 T4 T3 T6 T5 T7 Figura 6-1 Exemplu de graf de preceden &#x103;. T8 &#x2190;(1)=&#x2205; &#x2190;(2)={1} &#x2190;(3)={1} &#x2190;(4)={1} &#x2190;(5)={1,2,3} &#x2190;(6)={1,3,4} &#x2190;(7)={1,3,4,6} &#x2190;(8)={1,3,4,6,7} De asemenea se poate scrie i&#x2190;j pentru a indica faptul c&#x103; taskul Ti precede taskul Tj, acest lucru fiind echivalent cu j &#x2192; i (Tj este precedat de Ti). Operatorul de preceden &#x103; este tranzitiv, adic&#x103; dac&#x103; i&#x2190;j si j&#x2190;k &#x21D2;i&#x2190;k Prin urmare, pentru comoditatea reprezent&#x103;rii, se pot specifica numai str&#x103;mo&#x15F;ii imediat anteriori &#xEE;n mul imea precedent&#x103;; de exemplu, se poate scrie &#x2190;(5)={2,3} deoarece &#x2190;(2)={1}. &#xCE;n unele cazuri, operatorii &#x2192; &#x15F;i &#x2190; sunt folosi i pentru a nota care task are prioritate mai mare: i&#x2192;j poate s&#x103; &#xEE;nsemne c&#x103; Ti are prioritate mai mare dec&#xE2;t Tj. 6-126
• 129. A1 B1 A2 B1 C1 A3 C1 A4 C2 0 1 2 3 4 5 6 7 8 Timp Figura 6-2 Exemplu de algoritm RM; Xj denota a j-a itera ie a task-ului TX. ei / Pi este utilizarea resursei de c&#x103;tre task-ul Ti. Limita utiliz&#x103;rii, n(21/n-1), converge rapid c&#x103;tre ln2 = 0.69 c&#xE2;nd n este suficient de mare. Limitarea dat&#x103; mai sus este pesimist&#x103;, deoarece se presupune setul de task-uri &#xEE;n cazul cel mai defavorabil, pu in probabil de &#xEE;nt&#xE2;lnit &#xEE;n practic&#x103;. Condi ia din teorem&#x103; este suficient&#x103; dar nu &#x15F;i necesar&#x103;. Altfel spus, pot fi seturi de task-uri cu o utilizare mai mare dec&#xE2;t n(21/n &#x2013;1) &#x15F;i care pot fi planificate de algoritmul RM. Timpul r&#x103;mas poate fi utilizat pentru task-uri de fond de prioritate mai mic&#x103;. Limita n(21/n &#x2013;1) este prezentat&#x103; &#xEE;n figura 6-3. Se &#xEE;ncearc&#x103; &#xEE;n continuare s&#x103; se determine condi ia necesar&#x103; &#x15F;i suficient&#x103; pentru planificabilitatea RM ([LSD89]). &#xCE;n acest sens, pentru a determina dac&#x103; un set de task-uri cu utilizare mai mare dec&#xE2;t limita din 1.0 0.9 Limita 0.8 0.7 0.6 0 2 4 6 8 10 12 14 16 Numar de task-uri Figura 6-3 Limita de utilizare pentru algoritmul RM. teorema 1 poate s&#x103;-&#x15F;i respecte timpii limit&#x103;, se poate utiliza un test de planificabilitate exact&#x103; bazat pe teorema zonei critice (reformulare a teoremei din [LL73]): Teorema 6-2 Pentru un set de task-uri periodice independente, dac&#x103; un task Ti &#xEE;&#x15F;i respect&#x103; primul s&#x103;u timp limit&#x103; di &#x2264; Ti, c&#xE2;nd toate task-urile de prioritate mai mare sunt startate la acela&#x15F;i timp, atunci Ti &#xEE;&#x15F;i poate respecta to i timpii limita viitori, pentru orice timpi de lansare. Este important de notat c&#x103; teorema 2 se poate aplica la orice tip de asignare a priorit&#x103; ilor, nu numai pentru asignarea asociat&#x103; cu algoritmul RM. 6-129
• 130. Pentru demonstrarea teoremei 2, relu&#x103;m exemplul 6-2 pentru trei task-uri. Se presupune c&#x103; faz&#x103;rile task-urilor sunt toate 0 (prima itera ie a fiec&#x103;rui task este la timpul 0). Se consider&#x103; pentru &#xEE;nceput prima itera ie. T1 care este cel mai prioritar se starteaz&#x103; primul &#x15F;i nu poate fi &#xEE;nt&#xE2;rziat de nici un alt task din sistem. Deoarece la lansarea task-ului T1 procesorul &#xEE;ntrerupe orice alt&#x103; activitate, singura condi ie pentru planificarea fezabil&#x103; a T1 este e1 &#x2264; P1. Este clar c&#x103; aceasta este o condi ie necesar&#x103; &#x15F;i suficient&#x103;. Task-ul T2 va fi executat cu succes dac&#x103; pentru prima sa itera ie exist&#x103; timp suficient pentru execu ie &#xEE;n intervalul [0,P2]. Fie t momentul la care T2 &#xEE;&#x15F;i termin&#x103; execu ia. Num&#x103;rul total de itera ii ale task-ului T1 care a fost reluat &#xEE;n intervalul [0,t] este &#xF8EE;t/P1&#xF8F9; . Pentru ca T2 s&#x103; se termine la t fiecare dintre itera iile lui T1 reluat&#x103; &#xEE;n intervalul [0,t] trebuie s&#x103; fie completat&#x103; &#x15F;i &#xEE;n plus trebuie s&#x103; fie un timp e2 suficient pentru execu ia T2. Altfel spus trebuie s&#x103; fie satisf&#x103;cut&#x103; condi ia: &#xF8EE;t&#xF8F9; t = &#xF8EF; &#xF8FA; e1 + e2 &#xF8EF;P &#xF8FA; 1 Prin urmare, este suficient s&#x103; se g&#x103;seasc&#x103; un timp t &#x2208; [0,P2] care s&#x103; satisfac&#x103; condi ia de mai sus. &#xCE;ntrebarea practic&#x103; este cum se poate verifica c&#x103; acest t exist&#x103;. Deoarece fiecare interval are un num&#x103;r infinit de puncte, nu se poate verifica condi ia pentru fiecare posibil t. Solu ia poate fi g&#x103;sit&#x103; dac&#x103; se ine cont de faptul c&#x103; &#xF8EE;t / P1&#xF8F9; reprezint&#x103; de c&#xE2;te ori task-ul T1 a sosit &#xEE;n intervalul [0,t] (la multiplii de P1 cu salturi de e1). Din acest motiv, &#xF8EE; t/ P1&#xF8F9;e1 reprezint&#x103; necesarul de timp de execu ie pentru T1 &#xEE;n intervalul [0,t]. Prin urmare, dac&#x103; se g&#x103;se&#x15F;te un &#xEE;ntreg k astfel &#xEE;nc&#xE2;t kP1 &#x2265; ke1+e2 &#x15F;i kP1 &#x2264; P2, atunci s-a g&#x103;sit condi ia necesar&#x103; &#x15F;i suficient&#x103; pentru ca T2 s&#x103; fie planificabil cu algoritmul RM. Astfel, este nevoie s&#x103; se verifice numai dac&#x103; t &#x2265; &#xF8EE; t / P1&#xF8F9;e1 + e2 pentru valori ale lui t multiplu de P1, astfel ca t &#x2264; P2. Deoarece exist&#x103; un num&#x103;r finit de multipli pentru P1 care sunt mai mici sau egali cu P2, verificarea este finit&#x103;. &#xCE;n final se consider&#x103; task-ul T3. Din nou este suficient de ar&#x103;tat c&#x103; prima itera ie se termin&#x103; &#xEE;nainte de P3. Dac&#x103; T3 &#xEE;&#x15F;i termin&#x103; execu ia la t, cu acelea&#x15F;i argumente ca pentru T2 avem: &#xF8EE;t &#xF8F9; &#xF8EE;t &#xF8F9; t = &#xF8EF; &#xF8FA;e1 + &#xF8EF; &#xF8FA;e2 + e3 &#xF8EF;P1 &#xF8FA; &#xF8EF;P2 &#xF8FA; T3 este planificabil dac&#x103; exist&#x103; un timp t &#x2208; [0,P3] care s&#x103; satisfac&#x103; condi ia de mai sus. Dar partea dreapt&#x103; a ecua iei de mai sus are salturi numai la multiplii de P1 &#x15F;i P2. Este a&#x15F;adar suficient s&#x103; se verifice dac&#x103; inegalitatea: &#xF8EE;t &#xF8F9; &#xF8EE;t &#xF8F9; t &#x2265; &#xF8EF; &#xF8FA;e1 + &#xF8EF; &#xF8FA;e2 + e3 &#xF8EF;P1 &#xF8FA; &#xF8EF;P2 &#xF8FA; este satisfacut&#x103; pentru t multiplu de P1 &#x15F;i/sau P2, astfel ca t &#x2264; P3. Se poate prezenta acum condi ia necesar&#x103; &#x15F;i suficient&#x103; pentru planificabilitatea RM. Pentru aceasta, se fac urm&#x103;toarele nota ii suplimentare: i &#xF8EE;t &#xF8F9; Wi(t) = &#x2211; P ej &#xF8EF; &#xF8FA; j=1 &#xF8EF; j&#xF8FA; Wi( ) t Li( ) = t t Li = min Li( ) t 0 &lt; t &lt; Pi 6-130
• 132. &#xCE;n termeni algebrici se poate scrie: &#x2022; Task-ul T1 este RM planificabil dac&#x103; e1 &#x2264; 100 &#x2022; Task-ul T2 este RM planificabil dac&#x103; e1 + e2 &#x2264; 100 sau 2e1 + e2 &#x2264; 150 &#x2022; Task-ul T3 este RM planificabil dac&#x103; e1 + e2 + e3 &#x2264; 100 sau 2e1 + e2 + e3 &#x2264; 150 sau 2e1 + 2e2 + e3 &#x2264; 200 sau 3e1 + 2e2 + e3 &#x2264; 210 &#x2022; Task-ul T4 este RM planificabil dac&#x103; e1 + e2 + e3 + e4 &#x2264; 100 sau 2e1 + e2 + e3 + e4 &#x2264; 150 sau 2e1 + 2e2 + e3 + e4 &#x2264; 200 sau 3e1 + 2e2 + e3 + e4 &#x2264; 210 sau 3e1 + 2e2 + 2e3 + e4 &#x2264; 300 sau 4e1 + 3e2 + 2e3 + e4 &#x2264; 400 6-132
• 133. W1 W2 100 70 50 50 100 50 100 150 Timp Timp W4 W3 430 210 380 190 330 170 280 150 230 130 100 200 300 400 50 100 150 200 Timp Timp Figura 6-4 Wi (t) pentru Exemplul 6-3: linia punctata indica Wi(t) = t Din Figura 6-4 &#x15F;i ecua iile de mai sus, se observ&#x103; c&#x103; task-urile T1 , T2 &#x15F;i T3 sunt RM planificabile iar task-ul T4 nu este. Un algoritm pentru testul timpului de completare a task-ului Ti (timpul minim t pentru care Wi(t) = t) este urm&#x103;torul: &#x2190; &#x2211;j = 1 ej i Atribuie t0 ; t1 &#x2190; Wi( 0) t ; ... ; tk &#x2190; Wi( k &#x2212; 1) t ; Stop cand Wi( k) = tk. t . 6-133
• 139. i &#x2212;1 &#xF8EE;t &#xF8F9; t = &#x2211; ej&#xF8EF;P &#xF8FA; + kei j=1 &#xF8EF; j&#xF8FA; Aceast&#x103; a k-a ini ializare va respecta limita de timp dac&#x103; t(k, i) &lt; (k - 1)Pi + di Este suficient a se verifica respectarea limitelor de timp pentru itera iile de la 1 la li, unde l i = min{ m | mPi &gt; t(m,i)}. Task-ul Ti este astfel RM planificabil dac&#x103; &#x15F;i numai dac&#x103;: t(k, i) &lt; (k - 1) Pi + di, pentru oricare k &#x2264; li iar setul de task-uri este &#xEE;n totalitate planificabil RM dac&#x103; toate task-urile din el sunt planificabile RM. &#xCE;n literatura de specialitate sunt cunoscute pu ine rezultate care s&#x103; afirme planificabilitatea RM generalizat&#x103;. Este de re inut totu&#x15F;i urm&#x103;toarea teorem&#x103; ([KS97]): Teorema 6-5 Orice set de n task-uri periodice care utilizeaz&#x103; complet procesorul sub RM trebuie s&#x103; aib&#x103; o utilizare a procesorului de cel pu in: &#xF8F1; 1 &#xF8F4; n 2n &#x2212; 1 ( ) daca &#x3B3; = 1 &#xF8F4; &#xF8EE; 1 &#xF8F9; &#xF8F4; &#xF8EF; &#xF8EB; &#x3B3; + 1 &#xF8F6; (n &#x2212; 1) U = &#xF8F2;&#x3B3;(n &#x2212; 1 &#xF8EF;&#xF8EC; &#x3B3; &#xF8F7; )&#xF8EC; &#xF8F7; &#x2212; 1&#xF8FA; daca &#x3B3; = 2, ... 3 &#xF8ED; &#xF8F8; &#xF8FA; &#xF8F4; &#xF8F0; &#xF8FB; &#xF8F4; &#x3B3; daca 0 &#x2264; &#x3B3; &#x2264; 0.5 &#xF8F4; &#xF8F3;loge(2&#x3B3; ) + 1 &#x2212; &#x3B3; daca 0.5 &#x2264; &#x3B3; &#x2264; 1 6.2.5 Considerarea &#xEE;ntreruperilor Laten a &#xEE;ntreruperii este intervalul de timp dintre apari ia unei &#xEE;ntreruperi hardware &#x15F;i execu ia primei instruc iuni din rutina de tratare a acesteia. Pentru anumite por iuni critice de cod se impune ca &#xEE;ntreruperile s&#x103; fie temporar dezactivate. Timpul maxim de dezactivare define&#x15F;te cel mai nefavorabil caz de laten &#x103; a &#xEE;ntreruperii. &#xCE;n Figura 6-8 se arat&#x103; timpii implica i &#xEE;n calculul duratei unei prelucr&#x103;ri a &#xEE;ntreruperii care se termin&#x103; simplu (eveniment nesemnificativ) ([QNX93]): 6-139
• 140. Apari ie Tratare Terminare Revenire el eiret et Figura 6-8: Tratarea &#xEE;ntreruperii care se termin&#x103; simplu el &#x2013; laten a &#xEE;ntreruperii et &#x2013; timpul de tratare a &#xEE;ntreruperii eiret &#x2013; timpul de terminare a &#xEE;ntreruperii Rutina de tratare se poate termina simplu sau poate declan&#x15F;a planificarea, pentru a activa task-uri care de regul&#x103; sunt asociate cu &#xEE;ntreruperea. el in diagrama de mai sus reprezint&#x103; laten a minim&#x103; dintre momentul apari iei &#xEE;ntreruperii &#x15F;i declan&#x15F;area trat&#x103;rii, dat&#x103; pentru cazul &#xEE;n care &#xEE;ntreruperile sunt deja activate &#xEE;n momentul apari iei &#xEE;ntreruperii. Cel mai nefavorabil caz de laten &#x103; a &#xEE;ntreruperii este acest timp plus timpul maxim c&#xE2;t planificatorul sau alt task ine &#xEE;ntreruperile dezactivate. &#xCE;n unele cazuri rutina de tratare &#xEE;ntrerupere de nivel sc&#x103;zut trebuie s&#x103; planifice execu ia unui task care efectueaz&#x103; prelucr&#x103;ri suplimentare. Pentru aceasta, rutina de tratare se termin&#x103; declan&#x15F;&#xE2;nd planificarea. Aceasta introduce a doua form&#x103; de laten &#x103; &#x2013; laten a de planificare - care trebuie luat&#x103; &#xEE;n calcul - Figura 6-9. Laten a de planificare reprezint&#x103; timpul dintre terminarea unei rutine de tratare de &#xEE;ntrerupere &#x15F;i execu ia primei instruc iuni din task-ul care continua execu ia. Aceasta presupune de obicei timpul necesar pentru a salva contextul procesului care se execut&#x103; curent &#x15F;i refacerea contextului procesului cel mai prioritar. Apari ie Tratare Terminare IRQ Execu ie IRQ IRQ &#x15F;i planificare task selectat el ep et Figura 6-9: Timpii pentru o rutin&#x103; care se termin&#x103; cu declan&#x15F;are planificare el &#x2013; laten a &#xEE;ntreruperii et &#x2013; timpul de tratare a &#xEE;ntreruperii ep &#x2013; laten a de planificare Este foarte important faptul c&#x103; cele mai multe &#xEE;ntreruperi se termin&#x103; simplu, f&#x103;r&#x103; declan&#x15F;are planificare. De cele mai multe ori, prelucrarea evenimentului se face &#xEE;n interiorul rutinei de tratare a &#xEE;ntreruperii, declan&#x15F;area planific&#x103;rii f&#x103;c&#xE2;ndu-se numai c&#xE2;nd apar evenimente care trebuie anun ate &#xEE;n exterior. De exemplu, umplerea unui tampon cu 6-140