comanda mpp implement at a pe calculator

Upload: computerengineer-universitatea-petru-maior

Post on 22-Jul-2015

344 views

Category:

Documents


2 download

TRANSCRIPT

Universitatea Petru Maior Trgu MureFacultatea de InginerieSpecializarea Calculatoare

SISTEM DE COMAND A MPP BIFAZAT N BUCL DESCHIS IMPLEMENTAT PE CALCULATOR

Conductorul temei: Prof. univ. dr. ing. ALEXANDRU MORAR

Candidat: Anul absolvirii: 2008

2008CUPRINS INTRODUCERE .....4 CAPITOLUL 1 COMANDA MOTOARELOR PAS CU PAS, ASPECTE TEORETICE ....7 1.1 Particulariti constructive ale motoarelor pas cu pas ...7 1.2 Comanda i alimentarea motoarelor pas cu pas implementat cu circuite integrate specializate ....9 1.3 Interfaa specializat pentru comanda in timp real a acionrilor electrice cu motoare pas cu pas ....17 1.3.1 Circuitul PIT 8253 ...20 1.3.2 Circuitul PPI I8255 ...24 1.3.3 Circuitul integrat driver SAA1027 ..27 1.4 Interconectarea modulelor la cel de interfa condus de calculator ...27 CAPITOLUL 2 FUNDAMENTARE TEORETIC ...31 2.1 Faciliti i restricii ale sistemul de operare Windows n controlul

proceselor ......31 2.1.1 Windows ca mediu de programare ..31 2.1.2 Elemente de grafic, faciliti folosite din modulul grafic GDI ..32 2.1.3 Sistemul de mesaje sub Windows ...32 2.2 Concepte de programare orientate pe obiect folosite n realizarea proiectului ...33 2.2.1 Programarea obiectual n contextul aplicaiilor de control ....33 2.2.2 Mediul de programare Microsoft Visual C++ 6 ..37 CAPITOLUL 3 MODELUL SISTEMULUI DE COMAND ...39 3.1 Prezentare general a aplicaiei ..39

2

3.2 Operarea interfeei .......42 3.2.1 Fereastra de start ......42 3.2.2 Meniul principal ..43 3.2.3 Comanda cu frecven constant .44 3.2.4 Comanda cu profil impus de vitez .45 3.2.5 Parametrii profil de vitez ...47 3.2.6 Testare porturi .50 CAPITOLUL 4 IMPLEMENTAREA APLICAIEI......53 4.1 Structura aplicaiei ..........................................................................................53 4.1.1 Elemente necesare programului ..........................................................53 4.1.2 Diagrama claselor ................................................................................58 4.2 Structura claselor .............................................................................................62 4.1.1 Clase speciale incluse ..........................................................................62 4.1.2 Clase standard MFC, structur i legturi ...........................................63 CONCLUZII ..............77 BIBLIOGRAFIE ................78

3

INTRODUCERE Apariia microprocesoarelor, microcontrolerelor i a calculatoarelor personale a deschis noi posibiliti controlului i comenzii in timp real a acionrilor electrice cu motoare pas cu pas. Prin utilizarea acestora, tehnologia acionrilor cu MPP a fcut un mare pas inainte. Principala direcie a cercetrilor actuale o constituie mbuntirea comenzii acionarilor prin ncorporarea inteligenei. Introducerea ei n comanda acionrilor cu MPP permite implementarea n timp real a unor algoritmi sofisticai de reglare avndu-se n vedere obinerea unor performane dinamice superioare chiar n prezena variaiei parametrilor i sarcinii, situaii care apar in mod frecvent n aplicaiile industriale complexe. Prin introducerea inteligenei in comanda acionrilor electrice cu MPP, aceasta va prelua anumite funcii complexe efectuate manual de ctre factorul uman. n prezent, chiar i n acionrile electrice de nalt tehnologie, exist operatori care trebuie s fac anumite reglri ale echipamentului de comand, n acelai timp fiind necesare vizite periodice din partea personalului de ntreinere pentru verificarea funcionrii corecte a echipamentului mecanic i electric. Scopul introducerii inteligenei n sistemele de acionare electric este preluarea acestor sarcini, inclusiv a celor de supraveghere de ctre microcalculator, microprocesor sau microcontroler, care funcioneaz n mod continuu i care pot rspunde oricrei modificri. Aceste sisteme nu numai c primesc informaii din proces dar totodat au capacitatea de a lua anumite decizii pe baza informaiilor primite i de a iniia aciuni noi. Din punctul de vedere al modului de prelucrare a informaiei binare se deosebesc dou clase de sisteme logice: cablate, respectiv programate. Sistemele logice cablate prelucreaza informaia exclusiv la nivel de bit, rezultatul prelucrrii fiind direct legat de structura sa fizic sau legturile existente ntre circuitele logice componente, adic de cablajul existent. Sistemele logice programate prelucreaz informaia la nivel de cuvnt stocat ntr-o memorie. Fa de sistemele cablate, cele programate sunt conceptual diferite pentru a reduce dependena funciunilor sistemului de tipul componentelor i de legturile existente ntre acestea, n favoarea dependenei de coninutul unei memorii. Logica programat cuprinde diferite nivele de complexitate. Dac accesul utilizatorului la memoria program este intermediata de un limbaj de nivel inferior, n conformitate cu codurile alese de proiectant sau impuse de fabricantul de sistem, avem de-a face cu o microprogramare, iar sistemele 4

logice pe care se aplica acestea se numesc sisteme microprogramate. Caracteristic sistemelor microprogramate este faptul c programarea unei aplicaii nu se poate separa de cunoaterea structurii fizice a sistemului (arhitectura interna) i de partea de legatur cu procesul (interfaa). Din acest motiv microprogramarea, sau logica microprogramat, implic cunotine de circuite logice (hardware) si de programare (software). Dac programarea depete nivelul inferior, efectundu-se cu limbaj de nivel inalt, utilizatorul se ndeparteaz de structura sistemului logic (partea hardware), ntrand n domeniul clasic al programrii calculatoarelor (partea software). Alegerea ntre logica de cablaj, logica programat si nivelul ei trebuie s aib n vedere tipul, complexitatea aplicaiei i viteza de execuie. Factorul complexitate trebuie interpretat n special n sensul volumului de proiectare si al cantitaii de cablaj care rezult. Viteza de execuie intra n discuie cnd procesul de condus este foarte rapid (are constante de timp foarte mici, specific acionrilor electrice). Circuitele logice cablate cu componente TTL, de exemplu, sunt mult mai rapide in ceea ce privete execuia unui algoritm de comand dect sistemele programate. Factorul viteza de execuie este contraargumentul logicii cablate fa de complexitatea implementarii. In aplicaii complexe care reclama i viteza mare de execuie, se poate lua in discuie o implementare combinat, n care partea programat rezolv problemele de logic complex prin soft, iar partea cablat rezolv problemele care necesit timp de raspuns foarte rapid : achiziia i filtrarea datelor, conversii de cod, etc. i care implic i hardul adiional. n concluzie, un sistem de conducere n logica programat este delimitat de structurile cablate, pe de o parte, i de sistemele consacrate de calcul numeric (calculatoarele), pe de alt parte. In aceste condiii, alegerea alternativei utilizrii microcalculatorului apare justificat i oportun din urmatoarele considerente fundamentale: motorul pas cu pas permite interfaarea direct la microprocesor (microcalculator) datorit structurii sale de convertor numeric analogic (impuls de comand pas de deplasare); microprocesorul asigur realizarea simpl prin software a algoritmilor de comand a motorului pas cu pas, cu un necesar minimal de hardware; sistemul cu microprocesor are o remarcabil flexibilitate conferit de posibilitatea modificrii secvenei de lucru, n funcie de aplicaia concret, fr schimbri n structura standard a hardware-ului; implementarea sistemului cu microprocesor se face uor i rapid;

5

raportul performan/pre de cost al unui asemenea sistem de poziionare este deosebit de favorabil. Utilizarea sistemelor cu microprocesor n domeniul acionrilor electrice cu motoare pas cu pas se justific nu numai din punct de vedere al complexitii operaiilor i comenzilor necesare ci i dintr-o serie de ali factori cum sunt: micorarea timpului de rspuns a circuitelor de comand, ntruct viteza de lucru a microprocesorului permite acest fapt i realizarea de circuite de acionare rapide; creterea preciziei i siguranei de lucru, prin folosirea unui sistem de calcul ca circuit de comand; flexibilitatea posibilitatea extinderii numrului de elemente controlate, a efecturii de modificri sau corecii asupra funciei de comand prin simpla schimbare a unui program i meninerea neschimbat a structurii hardware; interfaarea mult mai uoar cu semnale numerice; asigurarea operaiilor de diagnosticare a funcionrii echipamentului (se pot include i programe de test i autodepanare) graie controlului prefuncional n cazul unor mrimi importante; reducerea numrului de componente din circuitele de comand, n situaia n care preul de cost al circuitelor integrate VLSI a sczut simitor; mbuntirea fiabilitii i asigurarea unei mai bune insensibiliti la perturbaii pentru circuitele de comand; scderea consumului de energie; implementarea unor algoritmi evoluai de reglare i conducere numeric.

6

CAPITOLUL 1 - COMANDA MOTOARELOR PAS CU PAS, ASPECTE TEORETICE 1.1 Particulariti constructive ale motoarelor pas cu pas M.P.P este un convertor electromecanic care realizeaz transformarea unui tren de impulsuri digitale ntr-o micare proportional a axului su. Micarea rotorului MPP const din deplasri unghiulare discrete, succesive, de mrimi egale i care reprezint paii motorului. Numrul pailor efectuai trebuie s corespund cu numrul impulsurilor de comand aplicate fazelor motorului. Deplasarea unghiular total, constituit dintr-un numr de pai egal cu numrul de impulsuri de comand aplicat pe fazele motorului, determin poziia final a rotorului. Aceast poziie se pastreaz (este memorat) pan la aplicarea unui nou impuls de comand. Univocitatea conversiei impulsuri deplasare, asociat cu memorarea poziiei, fac din MPP un bun element de execuie, integrat in sistemele de reglare a poziiei in circuit deschis. MPP mai prezint proprietatea de a putea intra in sincronism fa de impulsurile de comand chiar din stare de repaus, funcionnd fr alunecare iar frnarea se efectueaz, de asemenea, fr ieirea din sincronism. Datorit acestui fapt se asigur porniri, opriri si reversri brute fr pierderi de pai pe tot domeniul de lucru [1][3]. Se disting n general trei mari categorii de motoare pas cu pas, clasificarea fcndu-se dup principiul lor de funionare: motoare pas cu pas cu reluctan variabil; motoare pas cu pas cu magnet permanent; motoare pas cu pas hibride (cu magnet permanent i reluctan variabil). Motorul pas cu pas care combin att trsturile celui cu magnet permanent, ct i ale celui cu reluctan variabil, este cunoscut i sub denumirea de motor pas cu pas hibrid (MPPH). Acest tip de motor este caracterizat de existena rotorului dublu, care se compune din dou seciuni dinate decalate una fa de alta cu jumatate de pas dentar, acestea fiind montate pe un magnet permanent ce produce o magnetizare radial. n figura 1.1 se prezint o vedere secionat a motorului pas cu pas hibrid, prile componente putndu-se identifica uor.

7

Fig.1.1. Vedere secionat a MPP hibrid. Principal, fazele MPP se alimenteaz cu impulsuri de curent de amplitudine constant, care se comut de pe o faz pe alta, n ritmul unui semnal de tact de comand. Exist mai multe modaliti de alimentare a fazelor MPP: comand potenial sau prin impulsuri; comand monopolar sau bipolar; comand simetric (simpl sau dubl) sau nesimetric (mixt). Un circuit concret de alimentare a fazelor unui MPP asigur realizarea simultan a 3 cte una de tip 1, una de tip 2 i una de tip 3 dintre cele ase modaliti de comand prezentate mai sus. Comanda potenial se refer la durata alimentrii unei faze, n raport cu durata ntre cele dou tacturi de comand 1/f, fiind frecvena de comand a MPP. Dac durata alimentrii unei faze este cel puin egal cu 1/f, atunci comanda este potenial. n acest caz, durata aplicrii tensiunii pe o faza variaz invers proporional cu frecvena. Dac durata alimentrii este constant i ntotdeauna mai mic dect 1/f, atunci este vorba de o comand prin impulsuri. Dei majoritatea schemelor de comutaie a fazelor MPP sunt cu comand potenial, s-a consacrat denumirea de comand prin impulsuri, probabil datorit formei de variaie n timp a tensiunilor de alimentare. Comanda monopolar asigur un singur sens al curentului prin fiecare nfurare a motorului, n tot timpul funionrii.

8

Comanda bipolar determin ca, pe parcursul unui ciclu complet de comenzi aplicate nfurrilor, sensul curentului prin fiecare nfurare s se schimbe succesiv. MPP efectueaz un pas in momentul n care se schimb sensul curentului, nversndu-se sensul fluxului. n figura 1.2 se prezint schimbarea sensului curentului dup principiul comenzii unipolare i a celei bipolare.

Fig. 1.2. Principiile comenzilor unipolare i bipolare. 1.2 Comanda i alimentarea motoarelor pas cu pas implementat cu circuite integrate specializate Circuitele integrate dedicate simplific mult comanda i alimentarea unui motor pas cu pas. Comanda acestuia cere mai multe semnale digitale de comand separate. n 95% din aplicaii, aceste comenzi digitale se genereaz cu sisteme cu microprocesor. n cel mai simplu caz, o secven de control cu pas ntreg consta din numai dou semnale dreptunghiulare n cuadratur. Situaia devine mai complicat n cazul comenzii pe jumtate de pas sau n micropire. Deoarece toate semnalele de comand, n fiecare mod de operare sunt n relaii de interdependen, le putem genera de la un mod de operare la altul ct mai simplu i eficient, implementarea poate fi scump i voluminoas, de aceea n zilele de azi, soluia este utilzarea circuitelor integrate dedicate (specializate)[1][2].

9

Un circuit tipic care satisface aceste cerine este controllerul L297 (SGS-Thomson). Circuitul L297 genereaz semnale de comand pentru un motor bipolar cu dou faze sau unipolar cu patru faze. Motorul poate fi comandat cu secven simpl, dubl sau mixt. El are ncorporat dou choppere PWM, care permit controlul curentului n nfurrile motorului. Avantajul utlizrii acestui circuit este c necesit din exterior numai semnalele de TACT, SENS i MOD. Deoarece semnalele de comand ale fazelor motorului sunt generate intern, sarcina microprocesorului i a programatorului este mult uurat. Montat ntr-o capsul de plastic cu 20 de pini, poate fi utilizat n configuraii cu etaje de putere, n general n circuite monolitice de comand n punte H ca L298N; L293E; L6201; L6202; L6203 sau tranzistoare discrete (asigur 20mA n acest scop la ieire). Combinaia L297 + driver confer avantaje ca: sunt necesare foarte puine componente externe (astfel costul de asamblare este mic), fiabilitate ridicat, spaiul mic ocupat, softul utilizat pentru comand mai simplificat. n figura 1.3 se prezint capsula circuitului L297, iar semnificaia pinilor este urmatoarea:

Fig.1.3. Capsula controlerului L297. SYNC ieirea oscilatorului chopper intern. Pentru a sincroniza toate

circuitele L297 din schem pinii SYNC se leag mpreun, iar componentele externe ale oscilatorului se monteaz numai pentru un circuit. Dac se

10

utilizeaz un generator de tact extern, semnalul de tact extern se aplic la acest pin; C, D; Vs pin de alimentare +5V; SENS2 intrare pentru sesizarea curentului din fazele C i D de la SENS1 intrare pentru sesizarea curentului din fazele A i B de la Vref tensiune de referin pentru circuitul chopper. Tensiunea aplicat OSC o reea RC (R la Vcc, C la mas) conectat la acest terminal GND pin de mas; HOME ieire open collector care indic starea iniial

(ABCD=0101); A semnal de comand a fazei A pentru etajul de putere; INH1 semnal de inhibare a fazelor A i B; B semnal de comand a fazei B pentru etajul de putere; C semnal de comand a fazei C pentru etajul de putere; INH2 semnal de inhibare a fazelor C i D; D semnal de comand a fazei D pentru etajul de putere; ENABLE validare circuit. Cnd este zero INH1, INH2, A, B, C, D CONTROL intrare care stabilete aciunea chopperului. Cnd este n

sunt puse la zero; zero se choppeaz INH1, INH2, cnd este n unu se choppeaz pe liniile A, B,

etajul de putere; etajul de putere; pe acest terminal determin curentul de vrf; determin frecvena de choppare. n cazul in care avem mai multe circuite L297 se utilizeaz terminalul de la un singur circuit, restul se pun la mas. Frecvena circuitului oscilant se calculeaz cu relaia: f=1/(0,69RC), R>10K; CW/CCW selecie sens de rotaie (CW orar, CCW - antiorar). Sensul fizic de rotaie depinde i de modul de conectare a nfurrilor. Sensul poate fi schimbat i din mers deoarece este sincronizat intern;

11

CLOCK semnal de tact. La trecerea acestui semnal din zero n unu HALF/FULL selecie secven de comand. Pentru 1 avem

(frontul cresctor) motorul va avansa un increment; secven mixt (de semipas); pentru 0 putem avea secven simpl sau dubl (de pas ntreg), depinznd de starea circuitului translator (generatorului de secven). Pentru secvena simpl translatorul trebuie s fie la numr impar. Pentru secven dubl translatorul trebuie s fie la numr par; RESET intrare de resetare, 0 aplicat la aceast intrare readuce translatorul n starea iniial. Schema bloc a controlerului L297 se prezint n figura 1.4:

Fig. 1.4. Schema bloc a controlerului L297. Inima schemei bloc a controlerului L297N, este blocul denumit TRANSLATOR, care genereaz trei secvene corespunztoare de comand: secven simp (4S) WAVE DRIVE MODE 1 phase on; secven dubl (4D) NORMAL FULL STEP DRIVE 2 phases on; secven mixt (8M) HALF STEP MODE 1&2 phases on. Acest bloc este controlat de semnalele de intrare SENS (CW-CCW), MOD DE LUCRU (HALF/FULL) (SEMI.PAS/PAS.INTREG) i un semnal de TACT (CLOCK). Translatorul are patru ieiri, care sunt prelucrate n blocul logic de ieire, care implementeaz

12

funciile de inhibare i chopper. Intern translatorul conine un numrtor pe 3 bii, plus cteva circuite combinaionale care genereaz o secven de baz de 8 pai cod Gray. Toate cele trei tipuri de secvene de comand pot fi generate uor din secvena de baz. Aceast secven corespunde direct cu modul de comand semipas (secven mixt), selectat de un nivel logic 1 (high) la intrarea HALF/FULL. Reprezentarea formelor de und pentru aceast secven se prezint n figura 1.5:

Fig. 1.5. Secven de comand mixt. Modurile de comand pentru pas ntreg (secven simpl i secven dubl), sunt ambele obinute din secvena de baz, omind (srind) strile alternante n secvena de 8 pai. Rezult c tactul trece peste primul etaj din numrtorul de 3 bii din translator. Cel mai puin semnificativ bit din numrtor nu este afectat, astfel c secvena generat depinde de starea translatorului cnd este selectat modul de lucru pas ntreg (HALF/FULL)=0. Dac modul pas ntreg este selectat cnd translatorul este n oricare din strile impare, se va selecta o secven de comand cu pas ntreg cu 2 faze comandate, aa cum se prezint n figura 1.6.

13

Fig. 1.6. Secven de comand dubl. Dac se selecteaz modul pas ntreg cnd translatorul este ntr-o stare par, se obine comanda cu pas ntreg cu o singur faz comandat, aa um se prezint n figura 1.7.

Fig. 1.7. Secven de comand simpl. L297 asigur controlul curentului de sarcin sub forma a dou choppere PWM, cte unul pentru fiecare faz a unui motor bipolar sau unul pentru fiecare pereche de nfurri, pentru un motor unipolar. ntr-un motor unipolar nfurrile Ai B nu sunt niciodat

14

energizate alimentate mpreun, astfel c pot utiliza acelai chopper, acelai lucru se aplic la C i D. Fiecare chopper const dintr-un comparator, un bistabil i un rezistor extern ca traductor de curent. Un oscilator comun de pe chip furnizeaz impulsuri la frecvena de choppare aleas (cu componente externe RC). n fiecare chopper (figura 1.8), bistabilul este setat la fiecare impuls de la oscilatorul chopper, validnd ieirea i permind creterea curentului de sarcin.

Fig. 1.8. Principiul funionrii chopperului.

15

Pe masur ce crete curentul, crete i tensiunea pe rezistorul Rs i cnd aceasta ajunge la Vref, bistabilul este resetat, invalidnd ieirea pn la sosirea urmtorului impuls de la oscilator. Ieirea Q a bistabilului este astfel un semnal PWM de rat constant. De remarcat c Vref determin curentul de vrf de sarcin. Chopperul poate aciona fie asupra liniilor de ieire A, B, C, D (figura 1.9a), fie asupra liniilor de inhibare INH1 i INH2 (figura 1.9b). O intrare numit CONTROL, decide tipul chopprii.

Fig. 1.9a. Principiul chopprii liniilor de ieire.

Fig. 1.9b. Principiul chopprii liniilor de inhibare.

16

1.3 Interfaa specializat pentru comanda in timp real a acionrilor electrice cu motoare pas cu pas (MPP). Interfaa necesar comenzii cu un calculator a unui MPP a fost realizat pe o aanumit plac prototip (figura 1.10) pentru care exist prevzut conector pe placa de baza a calculatorului i cuprinde elementele necesare att pentru comanda n circuit deschis ct i pentru comanda n circuit nchis [1][2].

Fig. 1.10. Vedere de ansamblu asupra plcii prototip i a conectorului magistralei ISA. Schema electronic desfurat a modulului de interfa se prezint n figura 1.11a respectiv 1.11b.

17

Fig. 1.11a. Schema electronic desfurat a modulului de interfa

18

Fig. 1.11b. Schema electronic desfurat a modulului de interfa 19

Tabelul 1.1 PERIFERIC ADRES (hexa) Port A (IN) 0300 Port B (OUT) 0301 Interfa paralel programabil I8255 Port C (CLOW=OUT, 0302 CHIGH=IN) Registru de comand 0303 Canal 0 0304 Canal 1 0305 Temporizator programabil I8253 Canal 2 0306 Registru de comand 0307 Comanda motorului pas cu pas (semnalele de tact T, sens R i set S) necesare driverului SAA1027, respectiv (TACT, SENS, CONTROL, ENABLE, Vref, MOD) cesare controlerului L297, sunt generate prin intermediul unui temporizator programabil (CI11 I8253) i al unui circuit de interfaare paralel programabil (CI10 I8255). 1.3.1 Circuitul PIT 8253 Circuitul PIT 8253 (Programmable Interval Timer) rezolv problemele de numrare temporizare n sistemele cu P. El este organizat sub forma a trei contoare independente de cte 16 bii, avnd asociat logica corespunztoare pentru comunicaia cu unitatea central de prelucrare i cu mediul exterior. Circuitul este vzut, de unitatea central de prelucrare, sub forma unui tablou de porturi I/E i poate fi folosit ca: generator programabil de semnale dreptunghiulare, contor de evenimente, ceas de timp real, monostabil numeric, element pentru generarea comenzilor unor motoare pas cu pas. Folosirea lui n sistemele cu microprocesor, n aplicaiile privind prelucrarea unor semnale sub form de trenuri de impulsuri, simplific n mod considerabil software+ul necesar acestor prelucrri. Dup cum se poate observa in figura 1.12, schema bloc a circuitului I8253 const din mai multe componente: tamponul magistralei de date, logica scrie/citete, registrul de comand i a celor trei contoare 0, 1 i 2.

20

Fig. 1.12. Schema bloc a circuitului PIT I8253. Tamponul magistralei de date este bidirecional, organizat pe 8 bii cu elemente cu trei stri, realizeaz interfaa circuitului 8253 cu magistrala de date a unitii centrale de prelucrare. Datele sunt transmise sau recepionate de tampon, la execuia instruciunilor IN i OUT de ctre unitatea central de prelucrare. Prin intermediul acestui tampon se realizeaz: programarea modurilor de lucru pentru 8253, ncrcarea contorilor, citirea valorilor datelor din contori. Logica scrie/citete, pe baza semnalelor CS, RD, WR, A0, A1, primite de la magistrala de legtur cu unitatea central de prelucrare, genereaz semnalele de comand pentru buna funionare a ntregului circuit. Semnalul CS, activ pe nivelul cobort, activeaz/dezactiveaz circuitul astfel ncat, dac circuitul nu este selectat (CS=1), funcionarea lui nu este influenat. Semnalul RD activ comand citirea datelor de la contorii circuitului, n timp de semnalul WR activ asigur ncrcarea registrului de comand sau a datelor de la contori. Liniile A0 i A1 sunt conectate la magistrala de adrese i servesc la selectarea unuia dintre contori sau a registrului de comand. n tabelul 1.2 se prezint efectele semnalelor amintite mai sus asupra funcionrii circuitului.

21

Tabelul 1.2 CS 0 0 0 0 0 0 0 0 1 0 RD 1 1 1 1 0 0 0 0 x 1 WR 0 0 0 0 1 1 1 1 x 1 A1 0 0 1 1 0 0 1 1 x x A0 0 1 0 1 0 1 0 1 x x FUNCIA ncarc contor 0 ncarc contor 1 ncarc contor 2 ncarc registrul de comand Citete contor 0 Citete contor 1 Citete contor 2 Neoperaional (Starea Z) Circuit neselectat (Starea Z) Neoperaional (Starea Z)

Registrul cuvntului de comand primete, de la magistral, informaia prin care se comand modul de lucru al fiecrui contor. Acest registru se selecteaz prin adresa A1A0=11. Coninutul su nu poate fi citit. Contorii 0, 1 i 2 sunt identici, fiind implementai prin numrtoare de 16 bii, al cror coninut poate fi prestabilit, numrarea efectundu-se n sens descresctor. Contorii sunt independeni i pot fi programai s opereze n modul binar sau BCD. Modul de funionare poate fi stabilit complet prin software, ncrcnd registrul de comand cu un cuvnt corespunztor. Fiecare contor este decrementat cu o unitate, pe fiecare front cztor al semnalului aplicat la intrarea de ceas. Intrarea pe poarta G poate activa sau bloca funcionarea contorului respectiv. Ieirea fiecrui contor, n funcie de modul de programare, poate fi folosit ca impuls singular, cerere de ntrerupere sau ca semnal simplu de comand. Coninutul cuvntului de comand este prezentat in figura 1.13 D7 D6 D5 Funcie 00 = Salv. Num. 01 = Scrie oct. L 10 = Scrie oct. H 11 = Scrie oct. L apoi oct. H D4 D3 D2 Mod 000 = Mod 0 001 = Mod 1 x10 = Mod 2 x11 = Mod 3 100 = Mod 4 101 = Mod 5 Fig. 1.13. Semnificaia biilor octeilor de comand. D1 D0 BCD/Binar 0 = Binar 1 = BCD

Numrtor 00 = Num. 0 01 = Num. 1 10 = Num. 2 11 = Interzis

22

Se constat c: biii D7, D6 sunt folosii pentru selctarea controlului la care se refer comanda respectiv, biii D5, D4 specific modalitile de manipulare ale coninuturilor octeilor inferiori i superiori, care formeaz contorul selectat, biii D3, D2, D1 indic modul de operare, n timp ce bitul D0 caracterizeaz funcionarea binar sau cod BCD. Programarea circuitului PIT, se face foarte simplu n dou etape: trimiterea ctre PIT a octetului de comand i apoi trimiterea constantei (de 1 sau 2 octei). Pentru citirea coninutului unui numrtor este necesar o salvare prealabil a acestuia ntr-un registru special al PIT-ului utiliznd un octet de comand (SAL) cu formatul: D7D600XXX, unde prin D7, D6 se selcteaz numrtorul dorit. n continuare se prezint modurile de funcionare ale circuitului 8253: Modul 0: numrtor cu decrementare. La primul front negativ al semnalului aplicat pe CK, dup nscrierea constantei n (certificat prin semnalul de scriere W), numrtorul pune ieirea OUT pe zero logic. Apoi coninutul se decrementeaz de la n la zero, cnd ieirea OUT devine unu logic. Decrementarea se poate bloca prin punerea porii G pe zero. Dac n cursul decrementrii se ncarc o nu constant n, atunci aceast decrementare este blocat dup introducerea primului octet i apoi este reluat odat cu introducerea celui de-al doilea octet al constantei, de la aceast nou constant. Modul 1: monostabil redeclanabil prin poart. Ieirea OUT este pus pe zero (dup nscrierea constantei n), de ctre frontul pozitiv al semnalului aplicat pe G (ncepnd cu primul front negativ pe CK). Dup decrementarea a n impulsuri CK, ieirea OUT este pus pe unu, putnd fi repus la zero pe n perioade de ceas CK odat cu un nou front pozitiv pe G. Decrementarea cu n nu poate fi influenat de modificarea prealabil a constantei n, dect numai dup un nou front pozitiv pe G. Modul 2: divizor de frecven. Dup nscrierea constantei n, numrtorul se decrementeaz de n-1 ori, dup care pune OUT pe zero pe o perioad de ceas CK i apoi se reia decrementarea de la aceeai constant n. Perioada impulsurilor la ieirea OUT va fi n*TCK. Poarta G activat reiniializeaz decrementarea, prin urmare poate servi la sincronizarea divizorului de frecven cu un ceas extern aplicat pe G. Modul 3: generator de impulsuri dreptunghiulare. Este similar modulului 2, cu deosebirea c ieirea OUT este pus pe zero pe n/2 (n par) sau (n-1)/2 (n impar) perioade de ceas. Modul 4: strobe declanat prin soft. Foreaz la ieirea OUT un zero scurt (o perioad CK), dup n perioade de la nscrierea constantei. Decrementarea se poate bloca prin semnal zero pe poarta G. 23

Modul 5: strobe declanat prin hard. Similar modulului 4, cu deosebirea c decrementarea este declanat prin semnal G, dup nscrierea constantei n n numrtor. i n acest caz decrementarea se poate bloca prin poarta corespunztoare G pus la zero. 1.3.2 Circuitul PPI I8255 Circuitul PPI I8255 (Programmable Peripheral Interface), interfa paralel programabil cu echipamente periferice (cititoare i perforatoare de band, uniti de disc, imprimante paralele, etc.) este extrem de util i n conectarea proceselor industriale la microsistem. PPI dispune de 3 porturi bidirecionale de 8 bii, selectate prin liniile A1, A0, a cror funcionare este impus printr-un octet de comand cnd A1=A0=1. n figura 1.14 se prezint schema se prezint schema bloc a circuitului PPI8255, care const din: modulul de interfa cu magistrala, interfa cu periferia i logica intern. Modulul de interfa cu magistrala microsistemului conine tamponul bidirecional, care face legtura ntre magistrala bidirecional de date a microprocesorului i magistrala intern a interfeei paralele, precum i logica de comand pentru operaiile de scriere/citire. Acesta din urm are ca intrri semnalele de RESET, selecie a circuitului (CS), scriere (WR), citire (RD) i selecie a porturilor i a registrului cuvntului de comand (A0, A1). Semnalul RESETAT anuleaz coninuturile tuturor registrelor din circuitul 8255. Semnalul CS, activeaz comunicaia ntre magistrala microsistemului i circuitul 8255. n tabelul 1.3 se prezint efectul semnalelor CS, A0, A1 privind selectarea porturilor i a registrului cuvntului de comand. Tabelul 1.3 CS 0 0 0 0 1 A1 0 0 1 1 x A0 0 1 0 1 x Se selecteaz Port de I/E A Port de I/E B Port de I/E C Registrul de cuvnt de comand (Nu se selecteaz)

24

Fig. 1.14. Schema bloc a circuitului PPI I8255. Semnificaia biilor octetului de comand se d in figura 1.15: Grupa A Grupa B

D7

D6

D5

D4 PA

D3 PC7-4

D2 Selecie mod B

D1 PB

D0 PC3-0 1 = intr. 0 = ie.

Selecie mod A 1 = com. 0 = dat 00 = Mod 0 01 = Mod 1 1x = Mod 2

1 = intr. 1 = intr. 0 = ie. 0 = ie.

0 = Mod 0 1 = intr. 1 = Mod 1 0 = ie.

Fig. 1.15. Semnificaia biilor octetului de comand.

25

PPI 8255 poate funciona n 3 moduri, selectate prin octetul de comand sub controlul software-ului: Modul 0: denumit modul de baz de intrare/ieire asigur: dou porturi de cte 8 bii (PA7 PA0, PB7 PB0); dou porturi de cte 4 bii (PC3 PC0, PC7 PC4) cu capabilitate de poziionare individual n unu sau zero. Modul 1: denumit intrare/ieire strobat, astfel unul sau dou porturi, organizate pe 11 bii, conin 8 bii de date, 3 bii de comand i logic de suport pentru ntrerupere. Porturile A i B sunt pentru transferul datelor pe octei, iar portul C ii definete liniile sale individuale ca semnale de control; Modul 2: magistrala de I/E bidirecional. Se folosete portul A pentru transfer octet, mpreun cu portul C (PC2 PC7) ca semnale de control al transferului. Portul B nu poate lucra in modul 2. Exceptnd puterile mari, distribuitoarele i driverele pentru motare pas cu pas, sunt astzi aproape toate integrate. Pentru eperimentri, pe placa prototip s-a utilizat circuitul integrat specializat SAA1027, care ofer n plus siguran i fiabilitate crescute (imunitate la zgomote, chiar i n medii puternic perturbate, avnd o tensiune de alimentare cuprins ntre 9,518V i ieiri de tip colector n gol). Circuitul asigur o comand direct, simpl a motoarelor pas cu pas unipolare cu patru faze, etajul su fiind capabil s furnizeze cureni n faze de maxim 300mA. Din acest motiv aplicaia conine un motor pas cu pas hibrid de fabricaie japonez (STH 39D107), avnd urmtoarele caracteristici: puterea absorbit: 3,8W; numrul de faze: 4; tensiunea de alimentare: 12Vcc; rezisten unei faze: 75; curentul nominal n faz: 160mA; unghiul de pas: 1,8; cuplul maxim sincronizat: 50mN*m; ineria rotorului: 1,5*10-6Kg*m2.

26

1.3.3 Circuitul integrat driver SAA1027 Circuitul integrat driver SAA1027 asigur comanda unipolar a MPP cu patru faze n secven la alimentare dubl (vezi figura 1.11b). Semnalele de comand ale circuitului SAA1027 (TACT, SENS, SET) provin de la I8253 OUT2 (TACT), I8255 PC1 (SENS) i I8255 PB6 (SET). Interfaa a fost dotat cu un oscilator sub forma unui modul ncapsulat pilotat cu un cristal de cuar, pe frecvena de 10Mhz, n urma divizrii prin 10 (74LS90), se obine tactul microsistemului de 1Mhz. 1.4 Interconectarea modulelor la cel de interfa condus de calculator Pentru comanda motoarelor pas cu pas de puteri mai mari (cureni de faze de pn la 4A), s-au utilizat echipamentele de comand ce au la baz ansamblul de circuite integrate specializate L297+L298 sau L297+2XL6203, produse de firma SGS Thomson. Schemele electronice de interconectare a celor dou module, la modulul de interfa condus de calculator personal se prezint n figura 1.16a respectiv 1.16b.

27

Fig. 1.16a. Modul de conectare a echipamentului de comand MPPH cu L297 + L298, la modulul de interfa. 28

Fig. 1.16b. Modul de conectare a echipamentului de comand MPPH cu L297 + L6203 la modulul de interfa.

29

Elementul principal este controlerul programabil L297 care genereaz semnalele de comand necesare motoarelor bipolare bifazate sau a celor unipolare tetrafazate. mpreun cu driverul L298 sau 2XL6203, reprezint soluia optim pentru comanda cu calculatorul. Dintre facilitile oferite de L297 amintim: - genereaz semnale de comand corespunztoare secvenelor uzuale de lucru simpl, dubl (pas ntreg) i mixt (semipas), modul de funcionare se selecteaz cu ajutorul intrrii HALF/FULL; - conine dou choppere PWM (frecvena de choppare se impune printr-un grup RT, CT extern) necesare forrii pantei curenilor n faze; n plus circuitul genereaz dou semnale de inhibare (INH1; INH2) destinate driverului pentru a nlesni descreterea rapid a curentului n faza deconectat. Semnalele de comand cecesare controlerului L297 sunt generate prin intermediul portului B al circuitului I8255 (vezi figura 1.11a). Cu ajutorul intrrii PC4 a portului C al aceluiai circuit I8255 se citete starea semnalului HOME furnizat de controlerul L297, acest lucru simplificnd modificarea secvenei de lucru. Semnalul de tact pentru comanda motorului este furnizat de numrtorul 2 al circuitului I8253.

30

CAPITOLUL 2 FUNDAMENTARE TEORETIC 2.1 Facilitti i restricii ale sistemului de operare Windows n controlul proceselor 2.1.1 Windows ca mediu de programare n cazul interfeelor grafice comandarea se face cu ajutorul mouse-ului, sau a tastelor speciale. Interfeele grafice ofer posibilitatea personalizrii obiectelor grafice pentru fiecare utilizator n parte [4]. Acest sistem de operare pune la dispoziie o interfa foarte prietenoas i un nou mod de lansare i execuie a aplicailor. Programele n execuie devin ram-rezidente ceea ce nseamn c programele pot fi vizualizate i n momentul execuiei lor. Fiecare aplicaie Windows conine cel puin o fereastr; aceast interfa grafic este bazat pe lucrul cu ferestre. Din punct de vedere a programatorului, programele Windows trebuie proiectate i implementate ntr-un mod care corespunde caracteristicilor cerinelor acestuia. Programele Windows trebuie s aib un impact ct mai mic asupra altor programe ct i asupra mediului Windows nsui. Dac mai multe aplicaii se afl n execuie la un moment dat i dac fiecare aplicaie ncearc s foloseasc aceeai resurse, n mod sigur va aprea un caz de conflict. Din acest motiv resursele trebuie s fie partajabile. La sistemele cu un singur procesor cea mai important resurs este timpul acestuia. n sistemele de operare care nu au faciliti de multitasking ruleaz la un moment dat numai o singur aplicaie, care poate s ocupe toate resursele, nefiind alt aplicaie care s aib nevoie de aceste resurse. Programele scrise ca s ruleze sub Windows trebuie s aib o mare flexibilitate din punct de vedere a manevrri resurselor, ca s se integreaze n filozofia mediului Windows. Nu toate versiunile de Windows pot fi folosite n vederea implementrii programelor pentru sistemele de control. Versiunea Windows 2000 i versiunile implementate special pentru reele de calculatoare cum ar fi Windows NT nu dau voie la scrierea i citirea n mod direct a porturilor de intrare/ieire. Exist posibiliti de folosire a acestor sisteme n implementarea sistemelor de control, dar sunt foarte complicate i n nici un caz nu dau voie la scrierea sau citirea porturilor de intrare/ieire, acest lucru fiind fcut la cererea programatorului de ctre sistemul de operare, ceea ce poate s duc la micorarea determinismului i la scderea fiabilitii sistemului de control. Soluia o reprezint folosirea unor versiuni de Windows care dau voie la citirea i 31

scrierea n mod direct a porturilor de intrare/ieire. Versiunile de Windows 95 i 98 permit acest lucru. 2.1.2 Elemente de grafic, faciliti folosite din modulul grafic GDI (Interfa cu Dispozitive Grafice) n Windows programele nu necesit o nsoire cu drivere, acestea fiind instalate mpreun cu sistemul de operare sau pot fi instalate oricnd [6]. Programele Windows pot folosi facilitile grafice independent de dispozitiv, ceea ce nseamn ca programele pot s utilizeze aceste faciliti fr a accesa hardware-ul dispozitivului respectiv. Acest concept se numete Interfa cu Dispozitive Grafice (GDI). Interfaa cu Dispozitive Grafice este de fapt un limbaj de programare nglobat n sistemul de operare Windows. Interfaa cu Dispozitive Grafice permite direcionarea ieirilor spre oricare dispozitiv grafic instalat. Majoritatea funciilor grafice aparine modulului GDI. GDI trece apelurile ce sunt independente de dispozitiv, de la aplicaie spre driverul dispozitivului, care convertete aceste apeluri n operaii cunoscute de dispozitiv. Modulul GDI lucreaz i gestioneaz nite structuri de date asociate unui tip de dispozitiv i definesc anumite caracteristici ale acestuia. Pentru utilizarea unei funcii grafice este necesar obinerea unui handler la un context de dispozitiv. 2.1.3 Sistemul de mesaje sub Windows Mesajele sunt rezultatul unui eveniment generat de aplicaie sau de aciunile generate de utilizator. Sistemul de mesaje face posibil partajarea proceselor ntre diferite aplicaii care ruleaz la un moment dat n mod concurent. Cnd o aplicaie primete un mesaj de la Windows, nseamn c procesul respectiv este executat de sistemul de operare. Mesajul anun aplicaia i d posibilitatea ca aplicaia s rspund la evenimente. Fiecare mesaj este dedicat pentru o anumit fereastr i nu pentru toate aplicaiile. Aceste mesaje sunt plasate n coada de mesaje, unde ateapt s fie tratate. Exist dou tipuri de cozi de mesaje, una aparine aplicaiei, iar cealalt aparine sistemului de operare Windows. Coada de mesaje a aplicaiei conine mesajele trimise tuturor ferestrelor, care compun aplicaia respectiv, iar n coada de mesaje a sistemului sunt puse mesajele utilizator. Dup plasarea mesajelor n coada de mesaje urmeaz procesarea acestora [5].

32

2.2 Concepte de programare orientate obiect folosite n realizarea proiectului 2.2.1 Programarea obiectual n contextul aplicaiilor de control Metodele convenionale de ingineria programrii trateaz problema dezvoltrii produselor software din perspectiva algoritmic. n aceast abordare, blocul structural principal este considerat procedura sau funcia, iar eforturile de dezvoltare se concentreaz asupra controlului i asupra modului de descompunere a algoritmilor. Principala problem care apare n abordarea algoritmic este lipsa de flexibilitate a programelor rezultate [4][6]. n prezent, abordarea dominant este cea orientat spre obiecte. n aceast abordare principalul bloc structural este obiectul sau clasa. O clas abstractizeaz proprietile comune ale unui set de obiecte. Fiecare obiect are identitate (care l distinge de alte obiecte), stare (obiectele ncorporeaz date care se pot modifica n timp) i comportament (se pot efectua operaii asupra obiectelor, acestea la rndul lor pot s acioneze asupra altor obiecte). n paradigma programrii orientate spre obiecte starea unui obiect nu este accesibil direct altor obiecte. Obiectele pot interaciona numai prin mesaje. Prin transmiterea unui mesaj, obiectul transmitor cere obiectului receptor s execute o procedur sau o metod. Popularitatea programrii obiectuale se datoreaz n mare msur i relaiilor ce se pot stabili ntre clase i obiecte. Cea mai cunoscut i poate i cea mai folosit relaie, ce se poate stabili ntre obiecte, este relaia de motenire, relaie care permite crearea i ntreinerea de ierarhii de generalizare/specializare, extensibilitate a programelor i reutilizarea codului. Programarea orientat spre obiecte nu elimin programarea procedural ci o mbogete. Programele orientate spre obiecte utilizeaz la rndul lor proceduri, dar acestea sunt ncapsulate n obiecte mpreun cu datele manipulate de proceduri. n abordarea orientat spre obiecte principalul bloc structurat este obiectul sau clasa. Obiectele sunt entiti preluate din domeniul problemei sau din domeniul soluiei tehnice. Un obiect este caracterizat prin stare, comportament i identitate. Starea obiectului este caracterizat prin atribute (variabile de stare) care au nume i valori asociate. Comportamentul unui obiect este modul n care acesta reacioneaz la mesajele, pe care le recepioneaz prin metodele (procedurile) pe care le furnizeaz. O proprietate esenial a unui obiect este identitatea. Identitatea este proprietatea unui obiect care l distinge de orice alt obiect. ntr-un sistem orientat pe obiecte, orice obiect este de fapt o instan a unei clase. O clas abstractizeaz proprietile comune (date i comportament) ale unui set de obiecte. O clas descrie i implementeaz toate metodele care descriu 33

comportamentul instanelor (obiectelor) sale. Conceptele de baz a programrii orientate spre obiecte sunt urmtoarele: abstractizarea datelor, ncapsularea, comunicarea prin mesaje, motenirea, polimorfizmul i identitatea obiectelor. n programarea structural dezvoltarea unui progarm se realizeaz prin descompunerea n blocuri funcionale, care sunt rafinate pn la nivelul procedurilor de calcul. n acest abordare efortul de dezvoltare revine la conceperea unui algoritm alctuit dintr-un set de proceduri. Un dezavantaj major al abordrii procedurale const n modul inadecvat de reprezentare a datelor. Soluia oferit de programarea orientat spre obiecte la aceast problem are la baz conceptul de tip abstract de date. Un tip de date descrie un set de obiecte cu aceeai reprezentare. Exist un set de operaii asociate fiecrui tip de date. Conceptul de tip abstract de date extinde noiunea de tip de date prin ascundera detaliilor de implementare pentru operaiile asociate tipului. n programarea orientat spre obiecte conceptele de baz sunt cele de clas i respectiv de obiect. Este deosebit de important faptul c o clas poate fi ntr-adevr privit ca o implementare a unui tip abstract de date, deoarece obiectele calsei ncapsuleaz date i comportament. Un tip de date este o descriere abstract a unui grup de entiti asemntoare i nu implic consideraii de implementare. Noiunea de clas se refer la implementarea tipului, avnd nevoie n acest scop de informaia structural specific implementrii. n general un tip poate fi implementat n mai multe moduri. Programarea prin abstractizarea datelor furnizeaz avantaje semnificative pentru ingineria programrii. Avantajele principale ar fi: mbuntirea posibilitilor de reprezentare, modelarea lumii reale, clasificarea i ntreinerea componentelor program; separarea implementrii de specificaie; mbuntirea facilitilor de extensibilitate i reutilizare a codului program i sporirea robusteei sistemelor software. Programarea orientat spre obiecte poate fi privit drept o rafinare a programrii cu tipuri abstracte de date, acest aspect reprezentnd o contribuie important a programrii orientate spre obiecte. Conceptul de ncapsulare sau ascundere a informaiei, este fundamental n programarea orientat spre obiecte. n accepiunea programrii orientate spre obiecte un obiect este o entitate independent, ntreaga stare i reprezentare a informaiei fiind plasat (ncapsulat) n obiectul nsui. Acest lucru face imposibil utilizarea sau modificarea accidental a datelor coninute ntr-un obiect. Aceast abordare revine la eliminarea datelor partajate, comunicarea ntre obiecte realizndu-se numai prin mesaje. Prin transmiterea unui mesaj, obiectul transmitor cere obiectului receptor s execute o anumit metod sau 34

procedur. Orice modificare sau interogare a strii unui obiect se poate realiza numai prin invocarea metodelor furnizate de obiectul nsui. Dei majoritatea limbajelor de programare orientate spre obiecte sunt secveniale, obiectele pot fi distribuite i se pot executa att secvenial ct i paralel. n abordarea orientat spre obiecte, ncapsularea, sau ascunderea informaiei, revine la implementarea abstraciilor de calcul prin intermediul claselor. Prin ncapsulare, se interzice clienilor obiectelor instaniate din clase s cunoasc detaliile de implementare a clasei. Aceast abordare conduce la reducerea gradului de cuplare ntre componentele sistemului sofrware i permite o mbuntire a coeziunii semantice n interiorul componentelor. n implementarea unui sistem prin intermediul claselor, ncapsularea furnizeaz o barier explicit ntre abstraciile sistemului. Sistemele de programare orientate obiectual furnizeaz mecanisme specifice pentru realizarea ncapsulrii. Astfel, definirea unei clase se realizeaz prin seciuni separate de implementare i respectiv de interfa. Interfaa clasei reprezint o vedere extern asupra clasei, vedere ce este transmis tuturor obiectelor instan. Implementarea cuprinde reprezentarea intern a clasei: date locale i implementarea algoritmilor utilizai de metodele din interfa. Popularitatea programrii orientate spre obiecte se datoreaz n mare msur conceptului de motenire, care exprim posibilitatea de a crea i ntreine ierarhii de generalizare/specializare a conceptelor reprezentate prin clase. Prin ele nile, tipurile abstracte de date reprezint un instrument oarecum inflexibil n dezvoltarea i structurarea programelor de dimensiuni mari. Motenirea permite realizarea de relaii ntre clase n sensul partajrii informaiei n cadrul unor structuri ierarhice. npreun cu abstractizarea datelor, motenirea furnizeaz mecanisme deosebit de puternice pentru: modelarea lumii reale prin abstractizare i clasificare, construirea de programe extensibile i dezvoltarea de componente software reutilizabile. Prin motenire proiectantul poate construi clase noi peste o ierahie existent. Clasele nou construite pot motenii att comportament (operaii/metode) ct i reprezentare (atribute/variabile de stare) de la calsele deja existente. Motenirea comportamentului permite partajarea (i deci reutilizarea) codului deja existent ntre modulele software. Motenirea reprezentrii permite partajarea structurii ntre obiecte. Pentru exprimarea relaiei de motenire ntre clase se utilizeaz noiunile de subclas i respectiv superclas. Noiunea de subclas se refer la modalitatea de construcie a unei clase derivate dintr-o clas de baz. Clasa de baz se mai numeste i superclas sau clas printe, iar clasa care motenete se numete clas derivat sau subclas. Relaia de motenire aranjeaz setul de clase ntr-o

35

structur ierarhic, furniznd suport direct pentru exprimarea a diverse tipuri de relaii cum ar fi: clasificare, generalizare, specializare. n anumite cazuri este conveneabil motenirea de la mai mult dect o clas printe. Acest tip de relaie se numete motenire multipl, i ea induce o structur de graf aciclic peste setul de clase. Dac o subclas motenete comportament i reprezentare de la o singur clas printe vorbim de motenire simpl. Motenirea simpl induce o structur de arbore peste ierarhia de clase. Motenirea multipl poate induce conflicte atunci cnd o clas motenete metode sau variabile instan cu acelai nume dar cu semantic distinct de la superclase diferite. Pentru evitarea conflictelor de acest gen cel mai simplu este s se cear programatorului s redenumeasc metodele care au condus la conflict sau s se prefixeze numele metodei cu numele clasei. Dac variabilele instan ale unei superclase sunt accesate direct prin motenire dintr-o cals derivat atunci exist de fapt un conflict ntre motenire i ncapsulate. De asemenea dac se permite redefinirea arbitrar a variabilelor instan i a metodelor n subclase atunci instanele unei subclase nu mai pot fi utilizate liber n orice context n care se ateapt o instan a unei superclase i deci se pierde semantica de specializare/generalizare. n ceea ce privete posibilitaea de a redefini variabile instan prin motenire n subclas exist mai multe soluii: fr definire, cu posibilitatea de redefinire arbitrar, cu redefinire constrns sau cu ascundera atributelor. n ceea ce privete posibilitatea de a redefini metodele prin motenire n subclas se pot lua n considerare urmtoarele variante: motenirea cu redefinire arbitrar i respectiv motenirea cu redefinire constrns. n prima variant o subclas poate furniza o implementare complet diferit pentu metod. La recepionarea unui mesaj de ctre un obiect instan a subclasei se va executa metoda cea mai specializat. n cazul redefinirii constrnse metodele din subclas trebuie s aib semnturi care sunt obinute pe baza relaiei tip-subtip din metodele corespunztoare din superclas. Este posibil i o schem de motenire cu excluderea unor metode. Limbajele orientate spre obiecte furmizeaz abordri diverse n ceea ce privete strategia de motenire. Limbajul C++ permite calificarea variabilelor instan i a metodelor unei clase drept publice, privat sau protejate. Zona declarat public este accesibil liber din interiorul i din exteriorul clasei, n timp ce zona declarat privat nu este accesibil din exteriorul clasei. Atributele i metodele declarate protejate au particularitatea de a fi accesibile prin derivare. Astfel, o clas derivat poate moteni numai ceea ce s-a declarat public sau protejat. La nivelul limbajelor de programare, conceptul de polimorfism se refer la posibilitatea ca una i aceeai construcie de limbaj s manipuleze obiecte de tipuri diferite. Exist mai multe tipuri de polimorfism. Polimorfismul parametric are avantajul c permite 36

partajarea codului. Polimorfismul de suprancrcare, prin care fiecare metod se apeleaz n funcie de semntura sa, este prezent i n limbajele orientate spre obiecte. n limbajele orientate spre obiecte este posibil ca o metod s opereze asupra unui set de tipuri (clase) determinate prin relaii tip subtip n cadrul ierarhiilor de motenire. Acest tip de polimorfism se numete polimorfism de incluziune. n acest caz, o metod definit pentru o clas de baz poate opera i pe instane aparinnd subclaselor sale. Unul dintre cele mai cunoscute avantaje oferite de programarea orientat spre obiecte este posibilitatea de prelucrare uniform a coleciilor heterogene de obiecte care are la baz facilitatea de legare dinamic. Legarea dinamic revine la determinarea metodei de executat n funcie de tipul (clasa) obiectului care recepioneaz mesajul abia n faza de execuie. ntr-un sistem orientat spre obiecte fiecare obiect are identitate. Identitatea unui obiect este o proprietate intern care l distinge de alte obiecte. Identitatea permite reprezentarea individualitii obiectului, independent de modul n care este acesta, de locul n care se afl la un anumit moment, sau de transformrile structurale sau de stare la care este supus. Conceptul de identitate a obiectelor ncearc s aduc asemenea aspecte inspirate din lumea real n universul limbajelor de programare orientate spre obiecte. n baza identitii lor, obiectele unei aplicaii pot fi organizate n structuri arbitrare de tip graf i i pstreaz individualitatea independent de modificrile suferite n timp. 2.2.2 Mediul de programare Microsoft Visual C++ 6 Mediul de programare Visual C++ 6 este una dintre versiunile cele mai bune a compilatorului Microsoft Visual C/C++. Mediul a devenit mult mai mult dect un simplu compilator. n acest produs sunt incluse clasele fundamentale Microsoft (Microsoft Foundation Classes), care simplific i acceleraz dezvoltarea aplicaiilor Windows. Sunt incluse editoare sofisticate de resurse n scopul proiectrii casetelor de dialog complexe, a meniurilor, barelor cu instrumente, imaginilor i a multor alte elemente ce compun aplicaile Windows moderne. Toate elementele grafice ale interfeei, cum sunt i ferestrele, au asociate o clas MFC (Microsoft Foundation Class Library). Windows este un sistem orientat pe mesaje, de aceea MFC pune la dispoziie un mecanism prin care fiecrui mesaj i se asocieaz o funcie membru a clasei din care face parte. Toate contoarele interfeei grafice sunt obiecte. Un buton un control list-box sau orice alt control este o fereastr. Exist o ierarhie a ferestrelor aceast ierarhie este construit cu ajutorul conceptelor fundamentale a programrii orientate spre obiecte [5]. 37

A fost ales mediul de programare Microsoft Visual C++ 6 pentru realizarea acestui proiect datorit faptului c sub acest mediu de programare realizarea elementelor grafice este mult mai uor de realizat.

CAPITOLUL 3 MODELUL SISTEMULUI DE COMAND 3.1 Prezentare general a aplicaiei 38

Programul pentru comanda n circuit deschis a unui sistem de acionare electric cu motor pas cu pas, se utilizeaz placa prototip de interfa, prezentat n capitolul 1, subcapitolul 1.3 i echipamentul electronic de comand i alimentare realizat cu controlerul L297. Cu ajutorul acestui program sunt generate semnale de comand necesare controlerului L297. n diagrama UML din figura 3.1 este prezentat sistemul general din punct de vedere al utilizatorului su.

Rulare Program

Comanda motor cu frecventa constanta

Testeaza Porturi

Comanda motor cu profil impus de viteza Utilizator Comanda motor

Introducere parametrii profil

Testare detaliata porturi

Fig. 3.1. Diagrama cazurilor de utilizare Cazurile de utilizare sunt interaciuni dintre mediul exterior i sistem. Pentru ca diagrama s nu fie prea complex, cteva conexiuni nu au fost fcute(cazurile de utilizare interacioneaz cu sistemul, aceste interaciuni le considerm secundare, urmnd a fi

39

discutate mai detaliat n subcapitolele urmtoare). Conform diagramei observam un singur actor care este Utilizatorul ce poate executa un set de aciuni. El nu are responsabiliti, dup rulare are acces la toate datele programului. Programul ofer posibilitatea prescrierii parametrilor de comand (frecven, numr de pai, caracteristicile profilului), a sensului de acionare (orar, antiorar), a secvenei de comand (simpl, dubl, mixt), a modului de choppare (prin semnalele de faze A, B, C, D sau prin semnalele de inhibare INH1, INH2), prescrierea curentului maxim n fazele motorului. Aciuni specifice utilizatorului: Comand mpp: Comanda motorului pas cu pas bifazat se poate realiza prin: frecven constant sau cu profil impus de vitez (liniar sau exponenial); Sens: Sensul fizic de rotaie depinde i de modul de conectare a nfurrilor. Sensul poate fi schimbat i din mers deoarece este sincronizat intern. Dac vrem un sens de rotatie invers trigonometric se alege sensul orar, iar dac dorim o rotaie trigonometric vom alege sens antiorar; Secven de lucru: Inima schemei bloc a controlerului L297N, este blocul denumit TRANSLATOR, care genereaz trei secvene corespunztoare de comand: 1. Secvena mixt ce presupune alternarea alimentrii unei faze cu alimentarea unei faze succesive: una din cele dou faze este cea care a fost alimentat individual la momentul anterior. Distingem urmatoarele cazuri: sensul orar (S=1) determin succesiunea: A, AB, B, BC, C, CD, D, DA, A, ; iar sensul antiorar (S=0) determin succesiunea: A, AD, D, CD, C, BC, B, AB, A, 2. Secvena dubl prin care se alimenteaz dou faze simultan. Deosebim astfel situaiile: sensul orar (S=1) determin succesiunea: AB, BC, CD, DA, AB, ; iar sensul antiorar (S=0) determin succesiunea: AB, AD, CD, BC, AB, 3. Secvena simpl n care la un moment dat este alimentat o singur faz. Sensul orar (S=1) determin succesiunea: A, B, C, D, A, ; iar sensul antiorar (S=0) determin succesiunea: A, D, C, B, A, ;

40

Mod de choppare: comanda tip chopper este soluia cea mai bun pentru controlul curentului. Aceast metod asigur creterea i inversarea rapid a curentului. Utilizeaz o surs de tensiune de alimentare de cteva ori mai mare dect tensiunea nominal de alimentare a motorului. Astfel viteza de cretere a curentului se mrete substanial. Comanda chopper asigur o tensiune i un curent mediu egal cu tensiunea i curentul nominal al motorului. Putem alege chopparea liniilor de ieire A, B, C, D ns scderea curentului prin aceast cale este destul de lent din cauza tensiunii de pe nfurare, care este mai mic. Prin alegerea chopprii liniilor de inhibare INH1,INH2, obinem o cale asigurat de decresterea mult mai rapid a curentului; Frecvena de comand: pentru comanda cu frecven constant se introduce frecvena care poate fi de minim 16 Hz i maxim 5000 Hz. Bara pentru fixarea acestei valori nu permite introducerea unei valori mai mici dect 16 Hz sau mai mari de 5000 Hz; Motor: fazele motorului pot fi deconectate de la tensiunea de alimentare prin alegerea unei optiuni Alimentat/Nealimentat; Curentul maxim prin faze: poate fi de minim 0A i maxim 5A. Se folosete din nou o bar pentru alegerea valorii, ce nu permite introducerea a mai puin de 0A sau mai mult de 5A. Stare sistem: comand starea motorului pas cu pas care poate fi Oprit: curentul este la jumtate din valoarea nominal, Pornit: curentul este la valoarea nominal i Resetat: resetare curent; Parametrii profil de vitez: pentru comanda cu profil impus se pot introduce mai muli parametrii: Fmax: frecven maxim, Fstart: frecven de pornire-oprire, Ta: timpul de accelerare, Tb: timpul de mers la vitez constant, Tc: timpul de decelerare, Liniar: afiaj grafic liniar dup parametrii de lucru prescrii profilului de vitez, Exponenial: afiaj grafic exponenial dup parametrii de lucru prescrii profilului de vitez. 3.2 Operarea interfeei

41

Imediat dup rularea programului va aparea o interfa cu mai multe ferestre si opiuni. n continuare se vor prezenta posibilitile de operare, semnificaiile lor precum i utilitile interfeei programului. 3.2.1 Fereastra de start nainte de a intra in meniul principal, apare o fereastr cu titlul programului ca in figura 3.2 insoit de o bar de incrcare i cteva opiuni.

Fig. 3.2. Fereastra de pornire. n momentul incrcrii se face o testare de porturi de comunicare prin scrierea pe porturi si citirea datelor trimise. Pentru afiarea detaliilor exist un buton care permite vizualizarea ntregului proces. Putem accesa butonul ajutor pentru mai multe detalii, sau puteam chiar salva testul porturilor intr-un fiier cu extensia *.cod apsnd butonul salveaz. De asemenea este prevzut un buton de ieire pentru inchiderea aplicaiei. 3.2.2 Meniul principal

42

Dup ncrcarea barei de start apare un nou buton, de pornire, prin care deschidem o noua fereastr a programului de comand motor. Aceasta fereastr de meniu principal conine o serie de opiuni ce pot fi accesate foarte uor (figura 3.3)

Fig. 3.3. Meniul principal. n chenarul din dreapta se afieaz ferestrele accesate din meniul tip arbore mpreun cu opiunile lor. Mai este prevzut un chenar care ne ofer posibilitatea de a memora toate opiunile parcurse de utilizator. Pentru a terge istoricul comenzilor fcute este prevzut un buton sterge lista, sau dac sunt salvate 99 de linii de comand programul va terge automat datele. Dac nu, se vor afia comenzi ca Deschide fereastra . Pentru salvarea acestora exist un nou buton save care red coninutul ntr-un fiier cu extensia *.mes. Din meniul de tip arbore putem accesa ferestrele de comand a motorului pas cu pas. De aici se vor executa procesele principale introduse de utilizator. Sub acest meniu putem accesa opiunea de ajutor pentru descrierea comenzilor i butonul de ieire din program. 3.2.3 Comanda cu frecven constant Accesnd acest subprogram avem posibilitatea de a comanda motorul pas cu pas printr-o frecven constant prin introducerea valorilor dorite de utilizator (figura 3.5). Se pot

43

accesa astfel sensul de rotaie a motorului, secvena de lucru, modul de choppare, sistemul de comand, alimentarea/nealimentarea fazelor, introducerea valorii frecvenei de comand i a curentului maxim prin faze, toate fiind descrise n capitolul 2.1. n diagrama UML din figura 3.4 este prezentat sistemul din punct de vedere al utilizatorului su, pentru comanda sensului de roataie a motorului.

Initial [Rulare program]

Acces Meniu Principal

Accesare Comanda Frecventa Constanta

Setare sens rotatie

Final

Fig. 3.4. Diagrama de stare pentru setarea sensului de rotaie. Pentru alegerea frecvenei de comand precum i a curentului maxim prin faze sunt prevzute 2 bare ce nu permit introducerea altor valori decat a celor admise de sistem, valori cuprinse ntre 16Hz 5000Hz, respectiv 0A 5A.

44

Fig. 3.5. Comanda cu frecven constant. 3.2.4 Comanda cu profil impus de vitez Comanda unui motor pas cu pas pentur deplasri mari, necesit utilizarea de legi complexe, pentru a mpiedica pierderea de pai. n bucl deschis aceasta nseamn pornirea motorului de la o frecvem sczut a tactului de intrare, dup care frecvena aceluiai tact crete n mod gradat pn ce este atins viteza de rotaie dorit (viteza de mers). Pentru oprire, motorul trebuie decelerat la o vitez din domeniul su de viteze pornire oprire (domeniu n care el poate fi oprit direct prin suprimarea tactului, fr pierdere de pai). Avnd n vedere cele de mai sus, subprogramul de comand cu profil prescris realizeaz acest deziderat. Pentru alegerea opiunii cu profil impus avem din nou mai multe comenzi pentru motor (figura 3.6).

45

Fig. 3.6. Comanda cu profil impus de vitez Ca i la comanda prin frecven constant putem alege din nou sensul de rotaie, secvena de lucru, modul de choppare, sistemul de comand, alimentarea/nealimentarea fazelor motorului, introducerea valorii curentului maxim prin faze. Din nou este folosit bara cu valori cuprinse ntre 0 i 5 Amperi pentru curentul maxim prin faze. Se mai pot accesa i parametrii profilului de vitez pentru o comand mai complex a motorului prin alegerea opiunii Parametrii profil de vitez. Diagrama UML de stare pentru alegerea secvenei de lucru din punct de vedere al utilizatorului, este prezentat n figura 3.7. Se prezint strile parcurse pentru a putea seta opiunea dorit.

46

Initial [Rulare program]

Acces Meniu Principal

Accesare Comanda Cu Profil Impus

Setare secventa de lucru

Final

Fig. 3.7. Diagrama de stare pentru setarea secvenei de lucru. 3.2.5 Parametrii profil de vitez Subprogramul dup cum observm i in figura 3.8a respectiv 3.8b, permite prescrierea unui profil liniar sau exponenial de vitez pentru o tahogram model sau prescris. Din curbele limit ale motorului rezult punctele succesive de funionare sigur (fr pierdere de pai).

47

Fig. 3.8a. Tahograma liniar model. n cazul tahogramei model parametrii profilului sunt inactivi (figura 3.8a) Pentru tahograma prescris, subprogramul stabilete ntr-o manier conversaional cu ajutorul unei interfee grafice prietenoase, parametrii de lucru prescrii de utilizator: fMax (frecven maxim), fStart (frecvena de pornire/oprire), ta (timpul de accelerare), tb (timpul de mers cu vitez maxim), tc (timpul de decelerare) prezentai in capitolul 2.1.

48

Fig. 3.8b. Tahograma exponenial prescris. n figura 3.9 sunt descrise etapele parcurse de utilizator pentru setarea unui profil liniar n cadrul seciunii parametrii profil de vitez.

49

Initial [Rulare program]

Acces Meniu Principal

Accesare Parametrii Profil Viteza

Setare Legea de miscare

Final

Fig. 3.9. Diagrama de stare pentru setarea legii de micare. 3.2.6 Testare porturi Pentru a fi sigur de funcionalitatea programului i a legturilor dintre calculator i motor, subprogramul de testare verific porturile de comunicaie. Fereastra de testare (figura 3.10) prevede scrierea respectiv citirea datelor de pe porturi. Se poate alege o testare individual sau automat a porturilor de comunicare. Pentru cea individual putem alege testarea portului dorit i introducerea unei valori pentru citire, iar pentru testarea automat avem posibilitatea de a salva comenzile intr-un fiier cu extensia *.mes.

50

Fig. 3.10. Testarea porturilor de comunicare. Testarea portului din punct de vedere al utilizatorului este prezentat pe stri in diagrama UML din figura 3.11. Se scrie valoarea pe un anumit port, apoi se citete. Dac valoarea scris este introdus greit, se va afia un text de date eronate.

51

Initial [Rulare program]

Acces Meniu Principal

Accesare Test

Introducere valoare pentru scriere pe port

[Date incorecte]

Afiseaza eroare

[Date corecte]

Final

Fig. 3.11. Diagrama de stare pentru scrierea valorii pe port.

52

CAPITOLUL 4 IMPLEMENTAREA APLICAIEI Aplicaia este scris n limbajul Visual C++ i rulez pe platforme Windows. Interfaa dintre utilizator i sistem a fost scris utiliznd clasele puse la dispoziie de Microsoft n pachetul MFC (Microsoft Foundation Classes) [7]. 4.1 Structura aplicaiei 4.1.1 Elemente necesare programului Pentru adugarea de noi clase sau funcii la proiectul existent, putem folosi pachetul MFC ClassWizard (figura 4.1) pentru o implementare mai rapid i mai sigur ce nu necesit modificare pe parcursul dezvoltrii aplicaiei.

Fig. 4.1. MFC Class Wizard. ClassWizard poate fi accesat din meniu->View, iar pentru a crea o clas nou accesm Add Class... Se introduce numele clasei care pentru C++ trebuie s inceap cu C

53

astfel o clas CComFrecvena devine ComFrecvena.cpp. ClassWizard este un program ce genereaz cod pentru o nou clas sau funcie i care scrie prototipurile, corpurile funciilor i codul pentru a conecta mesajele de scheletul aplicaiei. Putem aduga o variabil membru la o clas folosind cmpul de lucru ClassView. Dnd click dreapta pe clasa la care dorim sa adugm variabila, selectm Add Member Variable dup care apare fereastra de setri ca n figura 4.2.

Fig. 4.2. Adugare variabil membru. Se introduce tipul variabilei membru i numele ei. Tipic acestea ncep cu caracterele m_. Apoi categoria de Access seteaz accesul pe care l au celelalte clase la variabila membru. La final se introduce automat definiia i codul de implementare la proiect.

54

Versiunile mai noi de Windows nu permit accesul direct la hardware din motive de securitate [8]. Din acest motiv s-a folosit un fiier inpout32.dll care poate trimite date la portul paralel i s returneze datele de la portul paralel. Pentru funcionare accesui fiier trebuie introdus urmtoarea secven de cod: short _stdcall Inp32(short portaddr); void _stdcall Out32(short portaddr, short datum); Aceste 2 funcii sunt folosite pentru scrierea i citirea de pe porturi. Inp32() are ca parametru portul de citire, iar funcia Out32() are ca parametrii portul de scriere i data ce va fi scris. De asemenea se vor aduga adresele regitrilor portului paralel, DATA i CONTROL: #define DATA 0x378 #define CONTROL 0x37a Fiierul inpout32.dll mpreun cu inpout32.lib obinut prin compilare sunt copiate n directorul proiectului. Pentru a fi incluse se adaug din meniu, inpout32.lib de la Project-> Settings-> Link-> Object/library modules (figura 4.3).

Fig. 4.3. Adugare inpout32.lib.

55

n cadrul aplicaiei, se poate accesa din mai multe pri un fiier M_CONTROL de tip help ce conine date despre comanda motorului pas cu pas. Acesta a fost creat trecnd prin mai multe etape, cu un program DocToHelp.

Fig. 4.4. Compilare. Se ncarc un document de tip rich text cu extensia .rtf, se compileaz obinnd un fiier .hpj (figura 4.4), iar apoi cu programul se creaz efectiv fiierul .hlp (figura 4.5) dat prin denumirea lui de la opiuni, unde se mai pot efectua diferite setri.

Fig. 4.5. Creare fiier hlp. 56

Pentru testarea porturilor de comunicare s-a folosit o list de tip List Control ca n figura 4.6. Asupra ei se pot face diferite setri pentru a avea o vizualizare ct mai eficient fa de aplicaie. Folosind opiunea Styles, putem alege ordonarea ascendent sau descendent a textului, alinierea sau modul de afiare. Se poate opta pentru auto aranjare, lipsa scroolului i altele.

Fig. 4.6. Folosirea List Controlului. Diagramele de clase prezint structura i legturile dintre clase precum i coninutul format din variabile i metode. Prima diagram din figura 4.7 prezint clasele principale folosite pentru funionarea aplicaiei, iar n figura 4.8(a, b, c) este prezentat diagrama detaliat de clase, mpreun cu metodele i variabilele lor.

57

4.1.2 Diagrama claselor

Fig. 4.7. Diagrama de clase.

58

Fig. 4.8a. Diagrama de clase.

59

60

Fig. 4.8b. Diagrama de clase.

Fig. 4.8c. Diagrama de clase.

61

4.2 Structura claselor 4.2.1 Clase speciale incluse Aplicaia folosete o serie de clase speciale importate n proiect pentru a reda programului o interfa mai animat i mai util [9]. Astfel, clasa CXPGroupBox ofer GroupBox-ului standard MFC o animaie stil XP (figura 4.9) precum i clasa CXPStyleButtonST care d butoanelor o imagine mai plcut.

Fig. 4.9. Grupare opiuni. Dup cum se observ s-a derivat groupBox-ul standard clasei CXPgroupBox prin variabila membru m_GroupBox1. Aceast clas conine mai multe metode printre care i metoda SetAlignment(SS_CENTER) care centreaz titlul GroupBox-ului. Pentru a face software-ul ct mai prezentabil s-au mai folosit clasele CKCSideBannerWnd ce permite ataarea la meniu a unui titlu lateral (figura 3.3), CProSliderCtrl care introduce o bar de progres pentru ncrcare (figura 3.2), CButtonST prin care s-au aplicat o serie de icoane. Clasa CXTabControl este folosit pentru a putea introduce n meniul principal alte ferestre tip child care au posibilitatea de a scoate bara de titlu i a se ataa meniului tab. Ferestrele standard MFC nu accept acest gen de ferestre prin urmare clasa importat devine foarte util. Clasa CAboutDlg deschide accesnd butonul despre, o fereastr modal dialog cu titlul aplicaiei, ndrumtorul i studentul (figura 4.10). Aceasta se nchide de la butonul stil XP, ce conine icoana de ieire DLL_IDI_EXIT2 din fiierul iconsST.dll.

62

Fig. 4.10. Despre. 4.2.2 Clase standard MFC, structur i legturi Clasa CMainWindow (figura 4.11) conine lucrul cu meniul principal al programului. Aici sunt definite metodele pentru tergere mesaje, salvarea help-ului variabilele i inchiderea mesajelor, altele. De m_FrecvWin, programului, deschiderea asemenea

m_ImpWin, m_DiagWin i m_Test fac legtura cu alte clase. n continuare sut prezentate cteva dintre aceste metode mpreun cu imagini explicative.

Fig. 4.11. Clasa CMainWindow.

63

Fig. 4.12. Folosirea icoanelor n aplicaie. Icoanele din cadrul programului au fost aplicate cu ajutorul fiierului IconsST.dll (figura 4.12). Acesta a fost copiat n directorul proiectului i este ncrcat prin funcia Load. Dac fiierul nu a fost gsit, se afieaz eroarea: Nu s-a gsit IconsST.dllError! mpreun cu o icoan de stop MB_ICONSTOP. Funcia are ca parametru o variabil boolean i dac este apelat cu parametrul FALSE, se descarc din regitrii icoanele folosite. Tot n cadrul acestei clase, este tratat mesajul selectchange printr-o fereastr de tip meniu tree (arbore) (figura 4.13). Prin selectarea unei opiuni din acest meniu se va ncrca ntr-un ID o valoare care caracterizeaz comanda efectuat i se vor executa instruciunile specifice.

64

Fig. 4.13. Meniul Tree. Funcia OnSavButton() se apeleaz apasnd butonul salveaza din cadrul meniului principal. Cu ajutorul funciei CFileDialog se va deschide o fereastr modal standard MFC unde putem introduce numele fiierului i extensia dorit (figura 4.14). Dac operaia a avut succes se creaz o variabil temp de tip CString i se scrie n ea pas cu pas mesajele listei. Apoi se creaz fiierul fileConf de tipul Cfile i se adaug la inceputul lui, variabila temp cu coninutul mesajelor. Dac apare o eroare la salvarea fiierului se va afia pe ecran un mesaj de tip MessageBox mpreun cu o icoan de stop.

Fig. 4.14. Salvare fiier.

65

Clasa CMotorControlDlg (figura 4.15) conine diferite metode ce pot fi accesate nainte de a intra n meniul principal. Astfel, metoda OnButtonhelp() va executa deschiderea salveaz help-ului, fiier OnSaveFile() ntr-un

mesajele testului de porturi, TestPort() verific dac porturile sunt funcionale.

Fig. 4.15. Clasa CmotorDlg. n cadrul acestei clase s-a folosit un timer de 100 de milisecunde

SetTimer(001,100,NULL). Firul de execuie apeleaz metoda OnTimer() la fiecare 100 ms, genereaz codul dup care ruleaz n continuare timerul. n aceast metod (figura 4.16) s-a folosit o variabil de tip ntreg m_iTimer care se mrete cu 10 la fiecare apelare de funcie, pentru a face o verificare a porturilor de comunicare. Odat cu aceast verificare, este afiat o bar de ncrcare ce arat progresul timerului m_progres._SetPos(m_iTimer), i totodat testarea porturilor. Cnd bara de progres ajunge la sfrit i implicit variabila m_iTimer la valoarea 70, timerul 1 se autonchide i se afieaz butonul tip sgeat de intrare n meniu.

66

Fig. 4.16. Metoda OnTimer. Funcia OnArataDetalii() face trimitere la meniul principal iar butonul stil XP are un afiaj de detaliu in momentul focalizrii pe el (figura 4.17). Dac butonul nu e apsat, se incarc din clasa CXPStyleButtonST cu ajutorul variabilei m_ButtonSageata i se seteaz textul ce apare la focalizare.

Fig. 4.17. Arat detalii. Opiunea Afiseaza detalii este de tip Check Box iar funcia ei denumit OnAfiseazaCheck arat ca n figura 4.18. Aceast funcie de tip void aparine de clasa CMotorControlDlg i este apelat automat n momentul apsrii butonului Afiseaza detalii. Dac variabila boolean m_CheckAfis este 1 se vor afia butoanele de Save i Help mpreun cu Edit Boxul ce va afia detaliile testrii porturilor. Dac Afiseaza detalii nu este bifat, 67

variabila membru m_CheckAfis va avea valoarea 0 prin urmare butoanele i lista devin inactive. Iniial, la pornire, ele sunt invizibile i devin vizibile doar la bifarea Check Boxului.

Fig. 4.18. Afiare detalii pentru testarea porturilor. CTest este o clas de testare a porturilor de comunicare. n ea gsim diferite metode (figura 4.19) de verificare ca OnButtonTestAutomat() unde se face o verificare automat i n care se apeleaz pentru fiecare port, funcia OnAutoTest(). Mai avem fuuncia OnButtonTest(), pentru o verificare manual. De aici se apeleaz OnTestPort() pentru portul selectat i mai departe funcia TestPort() care lucreaz efectiv cu porturile.

Fig. 4.19. Clasa Ctest.

68

n partea de testare porturi din meniul principal s-a folosit o list pentru afiarea detaliilor. n figura 4.20 este prezentat momentul adugrii unui mesaj in aceast list printro schem ce conine fereastra i funcia de adugare OnAddMessage(). Aceasta aparine de clasa CTest i este apelat la apsarea butonului Pornete test automat. m_ListMess este o variabil membru de tip CListCtrl. Se face o verificare a dimensiunii liniilor n list cu ajutorul metodei GetItemCount(). Dac funcia returneaz o valoare mai mare dect 99, se apeleaz funcia OnButtonClean() pentru tergerea mesajelor. n cellalt caz se reine dimensiunea cu m_ListMess.InsertItem(m_ListMess.GetItemCount()+1,mes) i se face un scrool automat dup noile mesaje cu ajutorul funciei m_ListMess.Scroll(size).

Fig. 4.20. Adugare mesaj n list.

69

Fig. 4.21. Clasele CComFrecventa, CComImpuls. Aceste dou clase din figura 4.21, trateaz comenzile date de utilizator prin folosirea metodelor similare ntre cele dou clase. Ele motenesc clasa CMainWindow, unde prin selectarea meniului tree se face legtura la clasa CComFrecventa printr-o variabil membru m_FrecWin i la clasa CComImpuls prin variabila m_ImpWin. Una dintre metode este OnSelchangeMotor() ce execut comanda de alimentare a motorului sau nealimentare. Declaraiile funciilor clasei CComFrecventa se gsesc n figura 4.22 printre care i cea a metodei OnSelchangeMotor(). Dup cum se vede s-a folosit un

70

editor ComboBox n care se pot introduce elementele necesare selectrii comenzii motorului, prin meniul de proprieti.

Fig. 4.22. Proprieti Combo Box. Alte 2 metode ce aparin de clasa CComFrecventa sunt OnHScroll() i OnVScroll() i sunt prezentate n figura 4.23 OnVScroll() este similar cu funcia OnHScroll() din cadrul clasei CComImpuls deoarece ambele preiau valoarea introdus de pe scroll i o afieaz ntrun EditBox printr-o variabil ntreag m_CurentEdit, respectiv m_CurrentEdit. Ca i la funcia OnHScroll(), valoarea de pe poziia fixat pe scroll se ia cu ajutorul funciei GetPos(). Apoi se apas butonul Aplica pentru execuia metodelor OnAplicaCurent() respectiv OnAplicaFrec() ce trimit datele ctre placa prototip.

71

Fig. 4.23. Folosire Scroll. Clasa CDiagrama (figura 4.24) conine metode legate de interfaa i setarea parametrilor profilului de vitez. Ea motenete clasa CMainWindow prin variabila membru m_DiagWin ncrcat n momentul selectrii opiunii parametrii profil de viteza din cadrul meniului tip tree. Funcia OnSelchangeComboTaho() activeaz sau inactiveaz seciunea de introducere a parametrilor n funcie de tahograma dorit de utilizator. Dac se alege introducerea tahogramei model, (m_TahoCombo.GetCurSel() Fig. 4.24 Clasa CDiagrama. parametrul FALSE ce inactiveaz introducerea valorilor Ta, Tb, Tc, Fstart, Fmax, iar pentru tahograma prescris se apeleaz din nou OnActivWin() fr parametrul TRUE deoarece este = 0) se apeleaz funcia OnActivWin() cu

72

setat implicit. Metoda OnPaint() deseneaz chenarul pentru grafic mpreun cu coordonatele lui. Metodele OnButtonExp() respectiv OnButtonLin() dau comenzi plcii prototip i afieaz graficul n funcie de opiunea aleas. Pentru alegerea tahogramei model se apeleaz funcia OnDraw() avnd ca parametrii un numr ntreg ales pentru fiecare profil (0 pentru profil liniar i 1 pentru profil exponenial). n figura 4.25 este afiat codul funciei OnDraw() mpreun cu graficul, pentru tahograma model cu un profil liniar.

Fig. 4.25. Tahograma model pentru profil liniar. Obiectul penBlack1 de tip CPen, traseaz liniile continue pentru coordonate i profilul liniar, iar penBlack2 traseaz liniile punctate pentru afiarea punctelor exacte a parametrilor. Dac este aleas metoda prescris, se apeleaz din nou funcia OnDraw(), de aceast dat cu parametrii 2 pentru profil liniar sau 3 pentru profil exponenial. Cel exponenial este prezentat prin cod i grafic in figura 4.26

73

Fig. 4.26. Tahograma prescris a profilului exponenial. Mai nti se traseaz coordonatele graficului fiind selectat obiectul penBlack1 cu funciile LineTo i MoveTo mpreun cu textele punctului (0,0) i a parametrilor de intrare. Apoi cu ajutorul metodei PolyBezier() se traseaz cele 2 linii curbe. Pentru a trasa cele 2 arce, avem nevoie de cte 4 puncte: punctul 1 este introdus avnd coordonatele x = 70, y = fStart, punctul 4 are x = Ta i y = 50 iar celelalte 2 puncte sunt puncte de referin pentru funcia PolyBezier(), astfel pentru punctul 2 se face o seciune de 30 de uniti i se ia x ca fiind prima unitate, iar y se ia poziia de mijloc ntre fStart i fMax. La fel pentru al 3-lea punct se ia x la jumtate i y prima unitate a celor 30 de seciuni. Se traseaz linia de la Ta la Tb, dup care se traseaz din nou arc prin aceai metod enumarat mai sus [10].

74

Clasa CProfilPlaca (figura 4.27) realizeaz lucrul cu placa prototip, scrie i trimite datele la porturile de comunicare selectare. Clasa conine i un timer ce controleaz o bar de progres la fiecare opiune selectat pentru schimbarea setrilor motorului pas cu pas. Funcia de calcul a constantelor de timp calcul_ct() pentru accelerare i decelerare este prezentat n organigrama din figura 4.28.

Fig. 4.27. Clasa CProfilPlaca.

Fig.4.28 Organigrama subrutinei de generare a constantelor de timp pentru accelerare, respectiv decelerare.

75

La alegerea secvenei de lucru mixt (figura 4.29), se deschide bara de progres, se apeleaz funcia de Operare() cu ajutorul instanei pl i se execut instruciunile pentru caracterul M ce definete secvena.

Fig. 4.29 Secvena de lucru mixt. La sfrit se verific dac a fost selectat o aciune, n cazul acesta se salveaz modificrile intr-o variabil de tip byte i se trimit datele la porturile respective prezentate n capitolul 1.3, prin octetul de comand apelnd funcia scrieport(). Pentru secvenele de lucru simpla i dubla se apeleaz funcia modif_secv() pentru a realiza modul de comand n funcie de starea circuitului translator (generator de secven). Pentru profilul prescris liniar sau exponenial se calculeaz constanta de timp i se scrie pe placa prototip la portul my_8253c2.

76

CONCLUZII Obiectivul principal urmrit n elaborarea prezentei lucrri a fost: studiul, conceperea i realizarea practic a unui sistem de comand i alimentare a motoarelor pas cu pas bifazate n bucl deschis. Se abordeaz tehnica implementrii pe calculatoare personale n scopul optimizrii sistemului din punct de vedere constructiv i funcional. Conceperea i realizarea practic a unor astfel de sisteme de acionare moderne reprezint o sarcin dificil, deoarece presupune cunotine din mai multe domenii distincte (cercetare teoretic, operaii matematice complexe, acionri electrice, maini electrice, electronic digital i industrial, controlul sistemelor, sisteme numerice hardware i software, programare Visual C++). Lucrarea abordeaz n mod unitar comanda i alimentarea motoarelor pas cu pas pentru c, de fapt, aceste domenii sunt inseparabile.

77

BIBLIOGRAFIE 1. Alexandru Morar Echipamente de comand a motoarelor pas cu pas implementate pe calculatoare personale; Editura Universitii Petru Maior Trgu Mure 2002. 2. 3. 4. 5. 6. 7. 8. 9. Alexandru Morar Comanda inteligent a acionrilor electrice cu motoare pas cu pas; Editura Mediamira Cluj-Napoca 2007. Kelemen A., Crivii M. Motoare electrice pas cu pas; Editura Tehnic, Bucureti 1982. Liviu Negrescu Limbajele MicroInformatica Cluj-Napoca 2001. Jon Bates, Tim Tompkins Utilizare Visual C++6; Editura Teora Bucureti 2001. Cristian George Savu Ghidul programatorului Visual C++ 5.0; Editura Alleducational Bucureti 1998. http://msdn.microsoft.com/ro-ro/default(en-us).aspx. http://electrosofts.com/parallel/parallelwin.html. http://www.codeproject.com/. C i C++ pentru nceptori; Editura

10. http://www.functionx.com/visualc/gdi/curves.htm.

78