kontrola brzine jednosmernog motora korišćenjem ... filemeđutim, u velikom broju uređaja koji se...
TRANSCRIPT
Opis laboratorijske vežbe za studente treće godine na Univerzitetu
Politehnika u Madridu
Kontrola brzine jednosmernog motora korišćenjem
mikroprocesora MCF5272
1. Uvod
Cilj laboratorijskih vežbi iz predmeta Digitalni Elektronski Sistemi je da
student kroz praktičan rad primeni i utvrdi znanje stečeno na predmetima Digitalni
Elektronski Sistemi i Laboratorijske vežbe iz predmeta Digitalni elektronski sistemi
sa treće godine, oslanjajući se na osnovno znanje programiranja stečeno na
predmetima Osnove programiranja i Laboratorijske vežbe iz programiranja. Potrebno
je pratiti uputstva koja obuhvataju različite faze dizajna, analize, implementacije i
predložena merenja u kolima i programima. Poseban naglasak je na sticanju
praktičnog pogleda na problem u kome student treba da implementira hardver (HW) i
softver (SW) elektronskog sistema. Usvojen je minimum specifikacija koje
implementirani uređaj treba da zadovolji što nosi maksimalno 8 poena. Kao dodatak
specifikacijama dati su i predlozi za moguća poboljšanja dizajna pri čemu se i
studentima ostavlja sloboda da dodaju nova poboljšanja ili alternativne šeme. Sa
mogućim poboljšanjima i dodacima na osnovni prototip, u zavisnosti od postignute
težine problema, moguće je osvojiti maksimalnih 10 poena. Dodatno poboljšanje ne
garantuje da će ocena biti iznad 8, samo nudi mogućnost dodatnih poena. Studenti
koji žele da naprave specijalan dizajn zasnovan na sopstvenoj ideji (ili predloženoj od
strane profesora) moraju da ga prezentuju nekom od predmetnih profesora (i da dobiju
odobrenje od istog) na 2-3 strane u kojima opisuju cilj predloženog sistema, koji
resursi su potrebni, kao i predložene arhitekture hardvera i softvera za rešenje
problema.
2
2. Specifikacija zahteva sistema
2.1. Uvod
U svakodnevnom životu veliki broj uređaja se zasniva na radu motora.
Ukoliko se ne želi širok opseg brzina rada uređaja ili uređaj nije prenosiv, poželjnije
je koristiti motor sa neizmeničnom strujom. U velikom broju uređaja motor se napaja
direktno naizmeničnom strujom, s obzirom da većina kućnih uređaja na struju radi sa
konstantnom brzinom i male varijacije ove brzine neće uticati na ispravan rad uređaja.
Međutim, u velikom broju uređaja koji se svakodnevno sreću mogu se naći motori
koji se napajaju jednosmernom strujom. To omogućava prenosivost uređaja (zbog
prenosivosti izvora jednosmerne struje), ali je dobijeni uređaj manje snage. Jedna od
najvećih prednosti jednosmernih motora je laka kontrola brzine njegovog obrtanja
promenom vrednosti napona na njegovim krajevima.
Studentima se predlaže praktična implementacija sistema koji radi unutar
ventilacionog sistema ili air-condition uređaja koji prihvata ručnu kontrolu
(podešavanje brzine obrtanja ventilatora) i kontrolu brzine obrtanja jednosmernog
motora baziranu na automatskoj kontroli korišćenjem mikroprocesora MCF5272 koji
pokušava da kompenzuje promene temperature promenom brzine obrtanja. S obzirom
da je glavna namera edukacija studenata sa akcentom na interakciju hardvera i
softvera u zahtevima za rad u realnom vremenu, neće biti implementiran kompletan
realan sistem.
2.2. Glavni zadatak
Cilj praktičnog rada je pokazivanje izvodljivosti ideje osnovnog dizajna.
Program koji izvršava mikrokontroler će biti napisan na asembleru ili C-u (razvijena
je softverska podrška za programiranje na oba jezika), kao i digitalni sistem baziran
na mikroprocesoru MCF5272.
3
Glavni zadatak rada se može rezimirati na sledeći način: Razviti digitalni
sistem baziran na mikroprocesoru koji omogućava:
merenje brzine obrtanja motora i njeno periodično prikazivanje na
LCD displeju
merenje sobne temperature i njeno periodično prikazivanje na LCD
displeju; na taj način će biti prikazano proporcionalno pravilo: što je
veća sobna brzina, veća je i brzina obrtanja motora
detektovanje i dekodovanje pritisaka korisnika na tastaturi koja ima 16
tastera i prikazivanje na displeju; interperetiranje pritiska kao:
sekvenca cifara koja se završava pritiskom na Intro (čime se
brzina obrtanja zadaje ručno)
promena između ručnog i automatskog zadavanja brzine
ručno povećanje ili smanjenje trenutne brzine
prikazivanje statističkih podataka:
srednja vrednost brzine od trenutka uključivanja sistema
srednja vrednost greške, tj. razlike izmeđi željene i merene
brzine
vreme rada
obrtanje motora u skladu sa željenom brzinom i korišćenje PI i PID
regulatora u povratnoj sprezi za kontrolu brzine obrtanja
Procesiranje će biti neodređeno, tj. program neće prestati sa izvršavanjem dok
se sistem ne ugasi.
Prototip koji će biti implementiran bazira se na naponskoj kontroli brzine
obrtanja motora korišćenjem PWM signala. Kontrola će biti izvršena korišćenjem
povratne sprege gde se kao povratni signal šalje izmerena brzina obrtanja motora. U
zavisnosti od razlike između željene brzine programirane ručno ili automatski i
izmerene brzine primeniće se manji ili veći napon na krajeve motora dok se brzine
ne izjednače koristeći izlazni stepen sposoban da pobudi motor.
4
U konačnoj verziji ispis na ekran ne sme da uspori automatsku kontrolu brzine
(zahtev konkurentnosti i primene u realnom vremenu).
Sistem mora da prepozna pritiske na sledeće tastere (u minimalnoj verziji):
cifre od 0 do 9
taster za početak (Intro) F
taster za promenu moda C
tastere za povećanje (+) i smanjenje (-) željene brzine
taster za prikazivanje statističkih podataka E
U nadležnosti softverskog sistema će biti generisanje i procesiranje signala
potrebnih za upravljanje eksternim hardveskim uređajima: tastaturom, LCD
displejom, motorom, temperaturnim senzorom i meračem brzine.
2.2.1 Različiti slučajevi primene
U sistemu će biti nekoliko spoljašnjih učesnika:
tastatura, preko koje korisnik može da podešava različite operacije sistema
HW motora, sa različitim stepenima snage
HW za detekciju brzine obrtanja, uglavnom elektro-optički
HW za merenje temperature, baziran na kolu senzora
Mogući slučajevi upotrebe softvera bili bi:
debaunsiranje tastature
ako je sistem u manualnom režimu rada, svaki pritisak na taster treba da
izazove prikazivanje odgovarajuće cifre na displeju; željena brzina se ne
menja dok se ne pritisne neki od specijalnih tastera: F, +, - , C
pritiskom na taster I u manualnom režimu rada menja se željena brzina rada u
skladu sa pritisnutim tasterom
5
nije dozvoljeno da broj pritisnutih cifara pređe veličinu unutrašnjeg bafera (s
obzirom da je maksimalni broj obrtaja motora 150, dovoljne su 3 cifre);
ukoliko se pritisne više tastera bez ijednog pritiska na taster I, sistem će
nastaviti ispisivanje; u trenutku kada se pritisne Intro taster, sistem se vraća u
normalan rad
odabiranje vrednosti temperature će se vršiti svake dve sekunde i ispisivati na
displeju
u automatskom modu željena brzina bazirana na temperaturi će se prikazivati
svake dve sekunde
Funkcije tastera na tastaturi (Slika 1) su:
0-9 - cifre 0-9
A - + (povećanje brzine)
B - − (smanjenje brzine)
C - promena moda
D – ne koristi se
E – prikazivanje na displeju,
F - Intro
Slika 1
Moguće je razlikovati 3 različita stanja funkcionisanja sistema zajedno sa
pridruženim tasterima koji omogućavaju promenu iz jednog stanja u drugo (slika 2):
6
Ručna kontrola; sistem dozvoljava zadavanje brzine obrtanja sa maksimalno 3
cifre koje predstavljaju broj obrtaja u sekundi; dok ni jedan taster nije pritisnut
na LCD displeju se prikazuje željena brzina i izmerena brzina motora;
Automatska kontrola; sistem meri trenutnu temperaturu i na osnovu tih
merenja modifikuje željenu brzinu; na LCD displeju se prikazuju željena i
izmerena brzina
Predstavljanje statističkih podataka; na LCD displeju treba prikazati sračunate
statističke vrednosti: srednju brzinu obrtanja motora, srednju vrednost greške
kao i proteklo vreme.
Slika 2:Grafički prikaz funkcionisanja sistema
3. Softverski podsistem
3.1. Model zahteva
U ovim vežbama student nije u potpunosti zadužen za analizu i modelovanje
zahteva, već su mu delimično pružene informacije kako bi ispunio svoj zadatak.
7
3.2. Model objekata ili promenljivih
Rad na otkrivanju koji objekti ili strukture podataka su potrebni u projektu je
sistematičan samo do određene tačke. Posle analize zahteva potrebno je utvrditi da
glavni objekti moraju biti sledeći:
1) Taster
Predstavlja svaki simbol pritisnut od strane korisnika. To je aktivan objekat
koji zahteva brisanje matrične tastature.
2) Bafer ulaznih cifara
Predstavlja bafer pritisnutih cifara bez pritisaka na specijalne tastere. Pritisak
na taster Intro znači prelazak na manualni mod gde sadržaj bafera predstavlja željenu
brzinu obrtanja motora. Za implementaciju je potreban bafer odgovarajuće veličine,
deo za računanje ili krajnja tačka koja dozvoljava prolazak kroz bafer (bez izlaska van
granica bafera) i upisivanje simbola koji će se kasnije prikazati. Ne sme se dozvoliti
unošenje više od tri cifre s obzirom da bi to dovelo do brzine koju je nemoguće postići
i potrebe za obradom greške.
3) Bafer izlaznih cifara
Kao i ulazni bafer, imaćemo i bafer izlaznih cifara gde će biti smeštene po 3
cifre svake brzine (merene, željene, srednje...) koje će biti prikazane na LCD displeju.
To je aktivan objekat koji deluje preko LCD-a za prikazivanje izlaznih veličina.
4) Željena brzina
Ovaj objekat sadrži željenu brzinu motora prikazanu kao broj obrtaja po
sekundi. Željena brzina se može postići na dva načina:
Ručno, preko cifara koje je zadao korisnik i koje se nalaze u ulaznom
baferu
8
Automatski, modifikovanjem prethodne na osnovu izmerenih
temperaturnih varijacija i prethodno izmerene temperature
5) Merena brzina
Brzina motora (takođe prikazana kao broj obrtaja u sekundi) dobijena od broja
obrtaja motora (koje je detektovao par optokaplera) u konstantnom periodu vremena.
Razlika između izmerene i željene brzine će se iskoristiti za korekciju aktivnog
perioda u PWM signalu primenjenom na motor. To je aktivan objekat koji sadrži skup
spoljašnjih prekida i kontrolu sporadičnih prekida.
6) Merena temperatura
Ovaj objekat sadrži vrednost temperature dobijene od hardverskog sistema za
merenje temperature. Kada sistem radi u automatskom modu, smanjenje ili povećanje
temperature će biti korišćeno za korekciju željene brzine motora. To je aktivan
objekat koji sadrži periodične prekide i kontrolu analogno-digitalnog konvertora.
7) Statistički podaci
Ovaj objekat sadrži statističke podatke kao što je prosečna brzina motora,
srednja vrednost greške između izmerene i željene brzine i vreme rada motora.
8) Sat
U prethodno opisanim objektima potrebno je računati vreme kako bi se neke
od operacija izvršile korektno (na primer za merenje trenutne brzine motora). Zbog
toga je potrebno imati jedan ili više objekata koji obavljaju funkcije računanja
vremena.
Implementacija različitih kašnjenja ili merenja vremena može dovesti do
potrebe za nekoliko naprava za računanje vremena. U ovoj vežbi će biti potrebne bar
dve. U prvom je potrebno ustanoviti vreme za koje je potrebno izračunati izmerenu
brzinu motora i izvršti korekciju aktivnog vremena PWM signala kako bi se približilo
9
željenoj brzini. U drugom se definiše vreme u kome se meri temperatura da bi se
delovalo na željenu brzinu u automatskom modu.
3.2.1. Rutine ili generalne metode o objektima iz sistema
Svi objekti (ili strukture podataka) mogu da imaju pridružene bar 2 ili 3
generalne funkcije (ili metode) koje njima manipulišu:
Inicijalizacija (inic): Daje inicijalne vrednosti članovima objekta ili strukture
podataka. U C-simulacijama obično otvara fajl za čišćenje gde će svi događaji
i vrednosti objekta tokom vremena biti upisani, tako da omogućava kasniju
detaljnu analizu rada.
Reinicijalizacija (reset): Vraća početne vrednosti objektima
Finalizacija (fin): U slučaju koji nas zanima njeno postojanje nema smisla
zato što objekti ne nestaju dok se ne završi rad njihovog sistema i to nisu
postojani objekti čije je vrednosti potrebno čuvati radi inicijalizacije kasnijih
izvršavanja sistema.
3.3. Model dizajna
U modelu dizajna adaptiramo svoj model objekata da bismo uzeli u obzir:
dobijene vremenske zahteve u modelu zahteva
hardver kojim raspolažemo (njegova brzina, arhitektura. . .)
prethodni softver koji želimo da ponovo koristimo
3.3.1. Arhitektura softverskog sistema
Arhitektura sistema je skelet ili šema na kojoj je sistem baziran i koja se vrlo
malo menja tokom vremena, iako dozvoljava razvoj ostatka nearhitekturalnih modula.
10
Utvrđuje podelu sistema na podsisteme i reguliše njihove veze, njihovu lokaciju i
sinhronizam. To je prvi element svakog dobrog dizajna i mora biti prisutan od prvog
prototipa. Često se počinje sa dizajniranjem sistema tako što se implementira prototip
koji sadrži predloženu arhitekturu kompletnog sistema, iako podsistemi imaju
propuste u radu (ili im je elementarna funkcionalnost vrlo različita od krajnje potrebne
funkcionalnosti).
Da bi se utvrdili podsistemi (i sa njima i arhitektura), možemo koristiti:
intuiciju: da rukovodi našim odlukama koje elemente da grupišemo, a koje ne
minimizaciju međuzavisnosti i veza: da bi se utvrdili podsistemi koji su vrlo
nezavisni i čiji interfejs je minimalan
formiranje funkcionalnih grupa: skup objekata koji formiraju zajedničku
funkciju ili uslugu moraju pripadati istom podsistemu
uzeti u obzir znanje o hardveru: ako je naš sistem napravljen od različitih
hardverskih i softverskih delova, bilo bi logično ne grupisati softverske
elemente koji se ne izvršavaju na istom hardveru i za koje bi bio potreban
komunikacioni protokol
iskustvo ili prethodna bibliografija: na osnovu njih se utvrđuju šabloni ili
modeli arhitekture koji su prethodno rešili mnogo sličnih problema i mogu
nam poslužiti kao referenca. Neke arhitekture su tako poznate i klasične, kao
što je klijent-server (česta u komunikacijama), arhitektura sa slojevima
(kao kula OSI) i kaskadno procesiranje (tipično u sistemima za digitalnu
obradu signala).
Nastavljajući sa primerom koji komentarišemo, naša analiza glavnih objekata
nam skoro direktno daje arhitekturu, iako se u određenim sistemima ovo ne dešava
zbog čega je potrebno koristiti različite ranije pomenute kriterijume grupisanja. Ipak,
nije strano da, za svaku od veza sistema sa spoljašnjim agentima, postoji podsistemski
interfejs za takvu konekciju na takav način da su procesori oslobođeni načina razmene
podataka sa spoljašnošću (što olakšava simulaciju i povećava portabilnost, na primer).
Arhitektura mora biti u stanju da podrži:
zahteve dizajna nametnute od strane klijenta: kao što je u našem slučaju
sinhrono procesiranje u realnom vremenu
11
zahteve nametnute od strane hardvera: na primer, imamo izlaze PWM-a i
osetljive ulaze koji olakšavaju naš zadatak
softver na raspolaganju: u našem slučaju za manipulaciju ekranom je potrebno
proći kroz Trap #15, da se ne bi reprogramirale veze i trošilo vreme, ili
tutorijali o tastaturi, LCD-u ili A/D i D/A konvertorima.
Slika 1:Arhitektura softvera
12
3.3.2. Dinamički model
Da bi se opisao razvoj objekata ili podsistema tokom vremena i u funkciji
proizvedenih događaja, potrebno je koristiti dijagram promene stanja. Jednom stanju
objekta je pridružena vrednost ili kombinacija vrednosti njegovih promenljivih
relevantnih u vreme opisivanja njegovog objekta tokom vremena. Promena stanja se
dešava usled pojave sinhronih ili asinhronih događaja sa dodatnim izvršavanjem jedne
ili više funkcija objekata. Dinamički model formira deo dizajna.
Objekti Taster, Izlazni bafer, Merena brzina i Merena temperatura koji
direktno intereaguju sa hardverom imaju specijalnu dinamiku upravljanu mašinama
stanja koje će biti opisane.
3.3.2.1. Dinamički model objekta taster
Brisanje: Inicijalno, potrebno je brisati tastaturu dok se ne detektuje pritisak
tastera; to je moguće modelovati upotrebom sledećih pod-automata:
Pobuditi jednu vrstu ili kolonu
Sačekati propagaciju eksitacije i odgovarajućeg odziva
Analizirajući odgovor, detektovati da li je neki taster pritisnut u
određenoj vrsti ili koloni
Ako još uvek nismo naišli na sve pritisnute tastere, potrebno je vratiti se
na tačku 1 (ali sa promenom vrste ili kolone; ako se došlo do kraja,
potrebno je vratiti se na početak)
Debaunsiranje: ukoliko je detektovan određen pritisak na taster potrebno ga
je prikazati i sačekati određeno vreme da bi se smirile mehaničke pulsacije
tastera
Sačekati da se smire pulsacije tastera: kada prođe određeno vreme potrebno
je sačekati da korisnik prestane sa pritiskom tastera (da bi se izbeglo
interpretiranje dugog pritiska kao nekoliko manjih)
13
Debaunsiranje: ukoliko je detektovano puštanje tastera, potrebno je sačekati
određeno vreme da bi se smirile mehaničke pulsacije
3.3.2.2. Dinamički model objekta Izlazni bafer
Kao što je rečeno, objekat Izlazni bafer sadrži po tri cifre brzine ili greške za
prikazivanje na displeju. Prikazivanje se sastoji iz tri koraka: jedan za svaku cifru.
Prikazivanje cifre traje odgovarajuće vreme koje je dato u specifikacijama za LCD
displej.
3.3.2.3. Dinamički model objekta Merena Brzina
Merenje brzine motora se sastoji u brojanju pulseva koje produkuje
detektorski par optokaplera tokom određenog vremena. U našem slučaju vreme će biti
250ms.
3.3.2.4. Dinamički model objekta merena temperatura
U slučaju merenja temperature koristi se takt sa periodom od 2s da bi se
odredili momenti očitavanja vrednosti temperature preko analognog ulaza 1. Da bi se
očitale vrednosti sa analognog ulaza 1 koristi se A/D konvertor koji je na raspolaganju
na platformi ENT2004CF koja se koristi u vežbi. Studentima se predlaže da pročitaju
specifikacije A/D konvertora koji se koristi u vežbi.
3.3.2.5. Dinamički model objekta Sat
Odgovornost za inkrementiranje ili dekrementiranje ovog objekta ili objekata
računskog tipa će imati periodični prekid. Ponašanje objekta je veoma prosto
(inkrementira se ili se dekrementira u svakom prekidu) i konsultovan je od strane
14
procesa koji su u vezi sa objektima taster, merena brzina i merena temperatura da bi
se proizvela kašnjenja ili usporavanja. Kao na primer, ako se primenjuje
debaunsiranje, ovaj sat ili satovi mogu da služe za odbrojavanje perioda nečitanja
tastature tokom vremena baunsiranja tastera.
3.3.3. Procesi
Često digitalni elektronski procesi moraju da izvršavaju različite zadatke
paraleleno (konkurentno na nekoliko procesora) ili prividno paraleleno (sve akcije se
izvršavaju isprepletano proizvodeći tako privid paralelnosti ako je frekvencija
promene dovoljno visoka). To je ono što zovemo procesima. Stvaranje, izvršavanje,
sinhronizacija i uništenje procesa je obično postignuto preko operativnog sistema
koristeći različite primitive. Ali čak i u tom slučaju dizajner mora da definiše koje
zadaci ili rutine će biti konkurentni, da izabere mehanizam komunikacije među njima,
vreme života itd.
Mogu se definisati tri različita procesa koristeći periodične prekide, spoljašnje
prekide, kao što je prikazano na Slici 4. Ova šema procesa je obavezna.
Slika 2:Vremenska reprezentacija tri procesa: glavni program, spoljšnji prekid i periodični prekid
15
Može se primetiti da funkcije pridružene istom objektu ne moraju biti
izvršavane u istom procesu. U ovom slučaju problem konkurentnosti između procesa
je uprošćen zato što, kao što ćemo kasnije otkriti, u ovom dizajnu ne postoji
pristupanje istom resursu u modu pisanja. Na primer, glavni program može da pristupi
upisivanju vrednosti promenljive koja sadrži vrednost željene brzine (npr. promeniti
vrednost željene brzine u manualnom modu) kada joj priodični prekid pristupa u
režimu čitanja (npr. kada je potrebno sračunati razliku između merene i željene
brzine).
3.3.3.1. Glavni proces
Uvek postoji i mora da inicijalizije objekte sistema, da inicijalizuje hardver,
omogući pojavu spoljašnjih prekida i inicijalizuje proces periodičnog prekida (_init).
Embeded sistemi koji rade u realnom vremenu obično sadrže beskonačnu petlju
(bucleMain) koja sprovodi zadatke bez strogih vremenskih zahteva, kao što u našem
slučaju može biti čitanje tastature i prikazivanje podataka na LCD displej.
U našem slučaju petlja glavnog programa bila bi:
BucleMain: if (tecladoConsultar ()) –- ako je pritisnit taster { teclaProcesar() -- izvršiti procesiranje } teclaProcesar() -- procesiranje tastera { LCDimprimir() -- prikazivanje na ekran velocidadActualizar() -- aktualizacija brzine }
gde, kada se detektuje pritisak na taster, vrši se njegovo ispisivanje na ekran, menjaju
se vrednosti brzinskih promenljivih, režim rada itd.
Glavna rutina za inicijalizaciju bila bi slična sledećem:
Init: swInit() * inicijalizuje software objetosInit() * inicijalizuje promenljive hwInit() * inicijalizuje prekide i portove
16
Ovaj proces je najmanjeg prioriteta od sva tri zato što brisanje tastature ili
ispisivanje na LCD displej nisu akcije sa kritičnim vremenom izvršavanja.
3.3.3.2. Periodični prekidi
Sadržaće funkcije sa kritičnim vremenom izvršavanja; u našem slučaju to su
funkcije koje odbrojavaju vreme i deluju na motor kada se izmeri nova brzina (svakih
250ms) i kada se izmeri temperatura (svakih 2s). Njihovo izvršavanje je periodično,
diskontinualno i dešava se u jednakim vremenskim intervalima; konkurentan je sa
glavnim procesom koji može da prekine (ali od strane kog ne može biti prekinut). To
je proces da najvišim prioritetom od sva tri. Ovaj proces je zadužen za vremensku
kontrolu sistema i od njega zavisi ispravno funkcionisanje celog sistema. Zbog toga
ovaj proces mora imati najviši prioritet.
U našem sistemu prekidna rutina bi bila: InterrupcionPeriodica:
GuardarRegistros() --sačuvati vrednosti registara interrReset() ... if (tiempo1==250ms){ -- ako je izmereno vreme 250ms tiempo1=0; VelocidadMedir() -- izmeriti brzinu ActuarSobreMotor() -- delovati na motor } ... if(tiempo2==2seg)&&(Modo==automatico){ -- ako je izmereno
vreme tiempo2=0; 2s i sistem je u automatskom
modu TemperaturaMedir() -- izmeriti temperaturu ActuarSobreMotor() -- delovati na motor } ... relojesActualizar() -- aktualizovati vrednost sata RestaurarRegistros() -- povratiti vrednosti registara RTE External interrupt -- dozvoliti spoljašnje prekide
3.3.3.3. Spoljašnji prekid
Ovaj prekid treba da se dogodi kad god motor završi pun krug obrtanja. U
našem sistemu prekidna rutina treba samo da broj obrtaja motora poveća za jedan:
17
InterrupcionExterna: GuardarRegistros() interrReset() ContadorVueltas=ContadorVueltas+1; ... RestaurarRegistros() RTE
Ovaj proces treba da ima veći prioritet od glavnog programa da bi se
realizovalo merenje broja obrtaja motora iako se tastatura briše ili se vrši ispisivanje
an displej, ali mora da ima manji prioritet od periodičnog prekida koji vrši vremenske
kontrole čitavog sistema.
3.4. Model implementacije
3.4.1. Programiranje
Kada, posle dizajniranja, budemo imali statičke i dinamičke modele, dolazi
deo kada treba pretvoriti ideje u modele u obliku izvodljivog koda, tako da je
zavisnost od programskog jezika kompletirana?.
U vreme programiranja u asembleru moraju se uzeti u obzir kriterijumi
kvaliteta usvojeni usvojeni u predmetu:
Svaki potprogram mora da ima jedinstvenu tačku početka i jedinstvenu tačku
završetka i ne sme se preplitati sa drugim potprogramima
Potrebno je imati odgovarajući broj potprograma (koje pomažu podelom
problema na potprobleme) koje nisu obimne (čime bi bile kompilikovane za
razumevanje i popravku). Neki od preporučenih potprograma su dati kroz ovo
izlaganje.
Moraju se koristiti definisane konstante (direktiva EQU) kako bi se sistem
lako rekonfigurisao. Tipičan primer mogu biti:
Konstanta koja omogućava laku promenu frekvencije vremenskih
prekida (FREQ_INT EQU...)
18
Konstanta koja modifikuje vreme čekanja između faza eksitacije i
čekanja odgovora od tastature (RET_TECL EQU...)
Treba koristiti različite i odgovarajuće vrste adresiranja (indeksno, indirektno,
sa post-inkrementom…) i koristiti strukture podataka koje grupišu povezane
podatke i olakšavaju implementaciju (baferi, tabele sa vrednostima…).
Upotreba ovih tehnika obično dovodi do kompaktnijeg i elegantnijeg koda.
Odgovarajući komentari moraju biti uneseni u kod (komentari koji doprinose
boljoj čitljivosti koda, ne samo parafraziranje koda). Jedan loš primer
komentara bio bi:
ADD.L #1,D0 * inkrementira vrednost registra
3.4.2. Optimizacija
Iako se optimizacija koda (kao i potrošnja memorije i CPU vremena) ne može
izvršiti pre faze implementacije, loš dizajn ili loša arhitektura mogu ovaj rad učiniti
nemogućim u fazi implementacije, zahtevajući ponovno razmotravanje dizajna. Tako
da ako je naša arhitektura realizovala regulaciju brzine u glavnom programu, bilo bi
vrlo teško ispuniti vremenske zahteve ovog zadatka i može doći do neregularne
kontrole: kada postoji strukturni defekt, bilo koja optimizacija bi bila osuđena na
neuspeh ako ponovo ne razmotrimo arhitekturu.
Iako to nije naš slučaj (predložena arhitektura može da zadovolji zahteve
sistema), s obzirom da se u laboratoriji vežbe odnose na realno vreme, moguće je da
će student morati da koristi jednu ili više strategija optimizacije da bi bio u stanju da
reši problem zadat u ovom izlaganju.
4. Potrebno znanje pre dolaska u laboratoriju
Iako u početku može biti zamorno, predlaže se studentu da odvoji vreme za
upoznavanje sa knjigama koje predstavljaju podršku radu u laboratoriji.
19
Takođe student treba da pronađe i upozna se sa softverskim alatom
EDColdFire (koji sadrži asembler za MCF5272 i takođe GCC kompajler za vežbe i
razvoj jezika C) i da se kod kuće upozna sa njim.
Sa svrhom ostvarivanja maksimuma na vežbama u laboratoriji, gde su resursi
vrlo ograničeni, student bi trebalo da ima programe napisane kod kuće i asemblirane
upotrebom EDColdFire softvera radi provere da kod ne sadrži sintaksne greške.
Tokom termina u laboratoriji, student će izvršiti program na platformi ENT2004CF
radi pronalaženja grešaka u radu i njihovog ispravljanja u laboratoriji.
Student takođe mora da poznaje arhitekturu i set instrukcija procesora
MCF5272.
5. Detaljan opis prvog časa u laboratoriji
Pre pristupanja praktičnim vežbama, studenti će imati prvi čas u laboratoriji
namenjen upoznavanju sa hardversim razvojnim okruženjem (platforma ENT2004CF
- zbog sigurnosnih razloga student ne povezuje svoj sistem direktno na MCF5272 već
preko kartice za interfejs koja se sastoji od digitalnog bafera na početku, seta LED
dioda, stepena optokaplera i digitalnog bafera na kraju) i završavanju sticanja
sposobnosti za rad u softverskom razvojnom okruženju (EDColdFire) koje bi trebalo
da je poznato pre dolaska u laboratoriju. Prvi čas u laboratoriji se sastoji iz sledećih
delova:
Realizacija određenog broja tutorijala koji su namenjeni upoznavanju
studenta sa hardverom
Isvršavanje, debagovanje i modifikovanje prvog programa; to je
program kojim se sa tastature učitava broj od 3 cifre i prikazuje na
displeju i zatim se prikazuje vrednost tog broja podeljenog sa 4;
student mora da počne sa realizacijom ovog programa na prvom času i
da bude u stanju da završi do početka drugog časa. Konačni izveštaj o
vežbama mora da sadrži i taj kod.
20
5.1. Metode rada
Na računaru u laboratoriji student mora da napravi svoj folder u kome
će se nalaziti urađen rad u toku svakog termina u laboratoriji u
posebnim direktorijumima pod nazivima termin_1, termin_2, itd.
Na kraju rada, student treba da snimi svoje programe na disketu ili
flash memoriju i da obriše sa kompjutera sve što je urađeno u tom
terminu kako bi se izbegli problemi neželjenog kopiranja. Na kraju
celog rada svi programi se predaju u elektronskoj formi radi provere.
Računari u laboratoriji su povezani na Internet ukoliko student želi da
prenese podatke na drugu mašinu ili ih pošalje na e-mail.
5.2. Dizajn, implementacija i testiranje prvog programa
Kada završi sa uvodnim tutorijalima, student mora da razvije jednostavan
program koji omogućava čitanje trocifrenog broja sa tastature i njegovo prikazivanje
na displeju, a zatim i prikazivanje tog broja podeljenog sa 4. Ovaj jednostavan
program će poslužiti kao prva verzija ulaznog i izlaznog modula koji će se razvijati
tokom perioda od četiri meseca.
S obzirom da je većina programa urđena, od studenta se zahteva da uradi dva
nova potprograma:
Konvertovanje trocifrenog ASCII simbola (dobijenog sa tastature) u
decimalan ili haksadecimalan broj sa kojim može da se operiše (u
našem slučaju deli sa 4);
Proces suprotan prethodnom, tj. konvertovanje decimalnog ili
heksadecimalnog broja u trocifreni ASCII simbol radi njegovog
prikazivanja na LCD displeju.
Student mora da počne sa realizacijom ovog programa na prvom času i da
bude u stanju da završi do početka drugog časa.
21
5.3. Osnovna struktura programa
Sledeće što uključujemo je skelet programa koji treba da se razvije i koji
sadrži pet delova. Simbolom <…> se prikazuje nešto što može ostati prazno ili
predstavljati instrukciju ili grupu instrukcija koje su izostavljene.
************************************************* * ZONE OF CONSTANTS <... > ORG < value > * ZONE OF GLOBAL VARIABLES <... > **************************************************** * MAIN PROGRAM **************************************************** PPAL <... > * Supervisor mode. disqualifies interruptions <... > * Moves the stack pointer to a valid region BSR swInit * Subrutina complete configuration of SW BSR hwInit * Subrutina complete configuration of the HW <... > * Qualifies the interruptions CPU LOOP BSR bucleMain * loop of main program. BRA LOOP END PPAL ************************************************* * ZONE OF SUBRUTIES <... > * Subrutine of complete configuration of the hardware hwInit: <... > RTS * Subrutina of boot of the variables that need swInit: <... > RTS * Subrutina that contains the main program * whose execution is typically periodic in the LSED bucleMain: <... > BRA FIN_MAIN ERROR:<...> FIN_MAIN RTS **************************************************** * ZONE OF ROUTINES OF ATTENTION To the INTERRUPTIONS **************************************************** * Routine of attention to the interruptions in the case of * that they are necessary INTERR: <...> FININTER RTE
22
5.3.1. Potprogram za konfiguraciju hardvera (hwInit)
U ovom potprogramu je potrebno uključiti sve akcije koje će koristiti
hardverski resurursi: prekide, PWM, A/D konvertor, LCD… Potrebno je posebnu
pažnju obratiti na konfiguracije resursa koje koriste iste registre: na primer periodični
i spoljšnji prekidi. Treba biti posebno pažljiv pri inicijalizaciji ovih registara.
U vezi sa frekvencijom periodičnih prekida preporučuje se konfiguracija sa
višom frekvencijom od koje se lako mogu dobiti niže frekvencije potrebne za
implementaciju takt signala koji se koriste u dizajnu.
6. Predlog daljeg rada
U ovom delu je data orijentativna podela rada u laboratoriji. Na početku su
dati glavni ciljevi koje treba ostvariti i mogući red kako im pristupiti. Glavni ciljevi
su:
1. Razvoj ulazno/izlaznog modula korišćenjem TL04. Za razvoj ovog
modula predlaže se studentu da razvije program koji učitava tri cifre sa
tastature i prikazivanje na LCD displeju vrednost koja je jednaka
unetoj vrednosti podeljenoj sa 4. (Objekti koje sadrži: Taster, Ulazni i
Izlazni bafer i Željena brzina).
2. Implementacija modula koji deluje na motor, kako hardverski tako i
softverski. (Objekti koje sadrži: Željena brzina)
3. Modul za očitavanje broja obrtaja motora u određenom vremenu i
sračunavanje brzine motora izražene u broju obrtaja po sekundi.
(Objekti koje sadrži: Merena brzina i Satovi).
4. Programiranje algoritma koji kontroliše brzinu obrtanja motora.
(Objekti koje sadrži: Željena i Merena brzina).
5. Modul za merenje temperature: postavljanje hardvera i razvoj
potrebnog programa. (Objekti koje sadrži: Merena temperatura i
Satovi).
23
6. Implementacija modula za modifikaciju željene brzine na osnovu
izmerene temperature (ukoliko radi u automatskom modu) i
programiranje korisničkog interfejsa koji omogućava izbor moda rada:
manualni ili automatski. (Objekti koje sadrži: Željena brzina, Merena
brzina, Merena temperatura, Satovi).
7. Implementacija modula za računanje statističkih veličina: srednje
brzine, srednje vrednosti greške, vreme rada i priljučenje
funkcionalnosti potrebne za prikazivanje statističkih veličina na LCD
displeju. (Objekti koje sadrži: Željena brzina, Merena Brzina i
Statističke vrednosti).
8. Postizanje mogućih poboljšanja.
U vezi sa pisanjem završnog izveštaja, predlaže se dopunjavanje izveštaja posle
svakog ispunjenog cilja.
Sledi moguće planiranje za postizanje ciljeva organizovano po terminima (u
Tabeli 1 je data veza između termina i ciljeva koje treba postići u određenom
terminu):
Termin Cilj koji treba postignuti
1 2 1 3 4 2 5 3 6 4 7 5 8 6 9 7 10 8
Tabela 1: Veza između tremina i cilja koji treba postignuti
6.1. Termin 0
Pre dolaska na prvi termin u laboratoriji potrebno je pripremiti rad van
laboratorije kao što je rečeno u prethodnoj sekciji.
24
6.2. Termini 1 i 2
Student ostvaruje prvi kontakt sa hardverom i softverom koji je na
rasoplaganju u laboratoriji. U delu posvećenom prvom terminu su opisani koraci koje
treba pratiti. Zapamtite da se ispunjenje prvog programa (CILJ 1) mora početi u
prvom terminu, ali može biti završen u drugom.
6.3. Termin 3
U ovom terminu student mora da izvrši CILJ 2. Za to je potrebno da nauči da
programira neki od PWM signala koji su na raspolaganju na platformi ENT2004CF.
Frekvencija PWM signala mora biti oko 2KHz.
6.4. Termini 4 i 5
U ovim terminima student mora da razvije modul za merenje brzine (CILJ 3)
zbog čega mora softverski da implementira dva procesa vezana za periodične prekide
(svaki 250ms) i spoljšnji prekid respektivno. Spoljšnji prekid omogućava merenje
broja obrtaja motora, dok periodični utvrđuje vremena kada kada se procenjuje brzina
motora u broju obrtaja po sekundi (Merena brzina). Perioda od 250ms se može
adaptirati.
6.5. Termin 6
Kada se razviju moduli za delovanje na motor i za merenje brzine, u ovom
terminu se mora programirati algoritam za kontrolu motora (CILJ 4). Sa ispunjenim
ciljem 4 student ima na raspolaganju osnovnu funkcionalnost sistema, tj. rad u
manualnom modu.
25
6.6. Termin 7
U ovom terminu treba proširiti funkcionalnost procesa periodičnih prekida
tako da obavlja merenje temperature u određenim trenucima vremena (2s bi bio
veoma dobar period). U ovom termiminu treba implementirati potreban hardver i
razviti potreban softver koji vraća 12-bitni kod dobijen sa analognog ulaza 1 (CILJ 5).
6.7. Termin 8
Jednom kada je poznata izmerena temperatura, moguće je implementirati
strategiju za modifikovanje željene brzine motora (automatska kontrola) i dodati
korisnički interfejs koji pruža mogućnost promene moda rada (CILJ 6).
6.8. Termin 9
U ovom terminu se pristupa razvoju algoritma za izračunavanje statističkih
veličina: srednje brzine, srednje greške i vreme rada i implementaciji potrebnih
funkcionalnosti za predstavljanje ovih vrednosti na displeju kada korisnik pritisne
odgovarajući taster (CILJ 7).
6.9. Termin 10
Pristupiti implementaciji mogućih poboljšanja koja su prethodno proučena
(CILJ 8).
7. Poboljšanja
Poboljšanja u ovom poglavlju imaju uglavnom orijentativni karakter. Radi se o
modifikacijama osnovnih specifikacija koje pružaju mogućnost studentu da dobije
26
veću ocenu od 8. U svakom slučaju, ocena će zavisiti i od faktora kao što je
orginalnost i kvalitet rada. Sva predložena poboljšanja (i ona koja predloži student) se
mogu izvesti na različite načine i sa različitim stepenima perfekcije i težine (dizajna i
implementacije), što je razlog zašto je procenjena težina vrlo orijentativna.
7.1. Proširenje funkcionalnosti softvera
Moguće je dodati nove mogućnosti u sistem:
vreme potrebno za uspostavljanje programirane brzine (vreme odziva)
nove statističke veličine
programirati paljenje i gašenje motora u odgovarajuće vreme tokom
dana
modifikovati osetljivost sistema na temperaturu: da ista varijacija
temperature može da proizvodi manje ili veće varijacije brzine
. . . . .
Procenjana težina: NISKA
7.2. Daljinsko upravljanje korišćenjem radio-frekvencijskog opsega
Postoje razni proizvođači (Aurel, itd) koji pružaju hibridna kola laka za
rukovanje, koja mogu da odašilju, primaju i regenerišu digitalne signale direktno,
kako u AM tako i u FM opsegu (otporniji na šum, ali sa većom cenom) sa dometom
od nekoliko desetina metara u otvorenom prostoru ako je opremljen antenom (prost
bakarni provodnik) odgovarajuće dužine. Zbog ovoga je potrebno modifikovati
hardverski podsistem tastaturu.
Procenjena težina: SREDNJA
27
7.3. Daljinsko upravljanje korišćenjem infracrvenih zraka
Ovo takođe zahteva modifikaciju hardverskog podsistema tastature. Da bi
mogla da se dosegne određena daljina, podrebno je dovoditi odgovarajuću struju na
LED diodu (uvek unutar specifikacija dobijenim od proizvođača) i imati odgovarajuće
pojačanje i filtriranje u prijemniku.
Procenjena težina: SREDNJA
7.4. Proširenje sistema za vizualizaciju
Uzimaće se u obzir detalji kao što je:
uključenje simbola koje je razvio student korišćenjem mogućnosti
koje nudi LCD
implementirati scroll korišćenjem bafera koji čuva nekoliko poslednjih
prikazanih linija (LCD može da prikaže samo dve linije teksta)
. . .
Procenjena težina: NISKA - SREDNJA
7.5. Konstrukcija prototipa hardvera u PCB-u
Ostavlja se studentima koje interesuje ova oblast.
Procenjena težina: NISKA - SREDNJA
7.6. Komunikacija sa komercijalnim digitalnim sistemom
S obzirom da na datoj platformi postoji serijski asinhroni RS-232 port,
možemo slati naredbe sa komercijalnog hardvera i gledati ih na istom (osim što ih
28
šaljemo na LCD). Takođe možemo da koristimo i programiramo programabilni HP
kalkulator, PDA ili laptop.
Zbog toga se mora adekvatno programirati serijski port MCF5272 prateći
uputstva proizvođača i povezati serijske portove oba digitalna sistema korišćenjem
kabla null modem.
Procenjena težina: SREDNJA
7.7. Prepoznavanje glasa
Ovo poboljšanje podrazumeva rad na izlaznom audio stepenu (stepen za
adaptaciju nivoa i impedansi, filtri - propusnik opsega, niskopropusnik opsega,
antialiasing...).
Procenjena težina: VISOKA
7.8. Reprodukcija glasa
S obzirom da platforma ENT20004CF sadrži D/A konvertor, može se
iskoristiti DRAM memorija koja je na raspolaganju u sistemu za čuvanje glasovnih
poruka koje informišu korisnika o promenama u sistemu: promeni moda, promeni
željene brzine…
Procenjena težina: SREDNJA
Ovo poboljšanje reprodukcije glasa bi bilo kompletnije ako bi se ostvarilo
korišćenjem spoljašnjeg hardvera (spoljšnja EEPROM memorija u koju se upisuju
podaci korišćenjem EEPROM rekordera). Takt za operacije pristupanja memoriji
može biti generisan korišćenjem posebnog mikroprocesora. Kako imamo na
raspolaganju mali broj slobodnih digitalnih izlaza, bilo bi potrebno obezbediti
eksterne registre i sisteme za računanje da bi se pristupilo takođe spoljašnjoj
memoriji.
29
Procenjena težina: MAKSIMALNA
8. Ocenjivanje
Kao što je rečeno u uvodu, osim ako se drugačije ne napomene, predložene
standardne vežbe sadrže minimum koji je obavezno ispuniti i koje će biti ocenjene sa
maksimalnom ocenom 8. Orijentativno, može se reći da će u konačnom ocenjivanju:
3 poena (maksimalno) doći ako:
razvijeni prototip u potpunosti odgovara specifikacijama zadatim u
uvodu
student tačno odgovori na pitanja koja mu postavi profesor u usmenom
ispitivanju
Završni izveštaj nosi maksimalno 2 poena od konačne ocene:
kvalitet pisanja, struktura i prezentacija dokumenta
tehnička ispravnost i dobijenih vrednosti i usvojenih odluka
jasnoća i kompletnost tehničkih objašnjenja hardverskog i softverskog
modula
itd…
Kvalitet razvijenog, objašnjenog i dokumentovanog softvera nosi maksimalno
2.5 poena:
generalna struktura programa
struktura svakog potprograma sa jedinstvenom tačkom početka i kraja
često korišćenje potprograma koji nisu veliki
korišćenje potprograma koji se međusobno ne prepliću
korišćenje konstanti i direktive EQU koja omogućava lako
rekonfigurisanje programa
korišćenje različitih i odgovarajućih načina adresiranja (indeksno,
indirektno, sa post - inkrementom…) i korišćenje struktura podataka
30
koje grupišu elemente koji su u vezi čime se olakšava njihova
implementacija (baferi, tabele sa vrednostima…).
optimizacija koda (ako je potrebna)
uvođenje odgovarajućih komentara u kod
itd.
Kvalitet hardvera nosi maksimalno 0.5 poena:
struktura
prisutan nivo šuma
itd.
Treba primetiti da studenti mogu biti suspendovani kada napravljeni sistem
funkcioniše, ali postoje ozbiljni nedostaci u ostalim delovima rada. Malo je verovatno
da će se to dogoditi paru studenata koji su odradili vežbe i izveštaj zasnovan na
sopstvenom trudu i znanju; ali treba imati u vidu da je u praktičnim vežbama vrlo
važno kako stvari izgledaju i na koji način rade.