560 likes | 837 Views
Procesni sistemi vodenja. Prekinitve. Vsebina poglavja. Prekinitve in izjeme Procesi - opis Delovanje programa ob prekinitvi – Interrupt service routine Prioritete Maskiranje, omogočanje & onemogočanje Inicializacija Primer za realni sistem – vodenje DC motorja. Prekinitve in izjeme.
E N D
Procesni sistemi vodenja Prekinitve Procesni sistemi vodenja - Prekinitve
Vsebina poglavja • Prekinitve in izjeme • Procesi - opis • Delovanje programa ob prekinitvi – Interrupt service routine • Prioritete • Maskiranje, omogočanje & onemogočanje • Inicializacija • Primer za realni sistem – vodenje DC motorja Procesni sistemi vodenja - Prekinitve
Prekinitve in izjeme • Prekinitve • Prekinitve so asinhroni dogodki, ki niso povezani s tem, kar procesor trenutno izvaja. Prekinitve najpogosteje sprožijo vhodno/izhodne enote, ura..... Lahko so omogočene ali pa onemogočene. • Izjeme • so sinhroni dogodki, ki so povezani s trenutnim programom. Primeri izjem: deljenje z nič, kršenje pomnilniškega prostora.... Procesni sistemi vodenja - Prekinitve
Procesi - opis • Program, ki je naložen v pomnilnik in pripravljen za izvajanje, se ponavadi imenuje proces. • Računalnik lahko hkrati izvaja več procesov, vendar lahko procesor izvaja le eno opravilo hkrati. • Zgradba: • Programska sekcija • Podatkovna sekcija Procesni sistemi vodenja - Prekinitve
Stanja procesa • Aktivno (stanje pripravljenosti) • Proces je naložen v pomnilnik in pripravljen na izvajanje, a še čaka, da mu razvrščevalnik dodeli procesor. • Izvajanje • Procesor izvaja ukaze iz programske sekcije procesa. • Blokiranje oz. čakanje • Izvajanje procesa se je moralo začasno ustaviti, ker je treba počakati na dogodek, ki je pogoj za nadaljevanje izvajanja. Procesni sistemi vodenja - Prekinitve
Prehajanja stanj procesov nov proces Konec ali izločitev izločitev kreiranje prekinitev konec ali napaka aktiven izvajanje dodelitev procesorja V/I ali čakanje na drug dogodek dogodek se je zgodil čakanje Procesni sistemi vodenja - Prekinitve
Procesi - primer Procesni sistemi vodenja - Prekinitve
Prekinitve • Prekinitve so nizkonivojske funkcije CPE • Zahteva po prekinitvi (Interrupt Request, IRQ) povzroči zaustavitev izvajanja trenutnega procesa in skok na določen naslov, ki je podan v vektorju prekinitev (Interrupt Vector) • Tavektor kaže na sekcijo programske kode, ki izvede akcijo, kot jo zahteva določena zahteva po prekinitvi. To funkcijo imenujemo rokovalnik (handler, Interrupt Service Routine, ISR) • Po zaključku ISR CPE nadaljuje izvajanje predhodnega programa na mestu, kjer je bil prekinjen. Procesni sistemi vodenja - Prekinitve
Prekinitve - preklopi • Pojavi se IRQ, kako se izvede preklop med procesi? • Procesor premakne delovne registre in programski števec v RAM (sklad!). • Izvede se prekinitveni program (ISR). • Po zaključku ISR se obnovi stanje pred skokom v ISR, procesor obnovi delovne registre in programski števec iz RAM (sklada!). • Nadaljujese izvajanje predhodnega procesa. Procesni sistemi vodenja - Prekinitve
Izvajanje prekinitev Proces Prekinitvena rutina Prekinitev Shrani status Shrani programski števec Obnovi programski števec Obnovi status Procesni sistemi vodenja - Prekinitve
Viri prekinitev • Notranji časovniki procesorja (primerjava z določeno vrednostjo, 0, overflow, ...) • Zunanja zahteva po prekinitvi (posebni priključek integriranega vezja procesorja • Druga periferija (UART, ADC, komparator, ...) Procesni sistemi vodenja - Prekinitve
Smisel prekinitev • Zagotavljajo določen odzivni čas. • Omogočijo odzive na redko nastopajoče vendar kljub temu pomembne dogodke (zaščite, ...). • Periodične prekinitve so uporabne za zajemanje podatkov in vodenje (regulacijski algoritmi). • Mogoča je uporaba za vmesno shranjevanje V/I podatkov. Procesni sistemi vodenja - Prekinitve
Rokovalnik prekinitev in izjem Procesni sistemi vodenja - Prekinitve
Delovanje prekinitev in izjem • Distributor prekinitev, ki je del rokovalnika pasti se odziva na prekinitve. Distibutor najprej ugotovi izvor prekinitve in potem prenese nadzor v zunanjo rutino ki potem servisira prekinitev ali pa v notranjo kernel rutino. Zunanjo rutino morajo zagotavljati gonilniki naprave, notranje rutine pa zagotavlja kernel sam. • Različni procesorji prepoznajo različno veliko in raazlične tipe prekinitev. Kernel definira tabelo IRQL (interrupt request level). V tej tabeli so urejene prekinitve po prioriteti. Višja prekinitev ima višjo prioriteto. Procesor ima svoj kazalec IRQL, ki kaže v to tabelo in se spreminja glede na prekinitve. Prekinitve, ki ležijo pod tem kazalcem so onemogočene, dokler se kazalec IRQL ne pomakne navzdol. Procesni sistemi vodenja - Prekinitve
Prioritete prekinitev - prikaz Rokovalnik prekinitev nivoja 3 Proces Rokovalnik prekinitev nivoja 2 Rokovalnik prekinitev nivoja 1 Prekinitev nivoja 2 Prekinitev nivoja 1 Prekinitev nivoja 3 Procesni sistemi vodenja - Prekinitve
Izjeme (tabela vektorjev): Procesni sistemi vodenja - Prekinitve
Prioritete prekinitev Procesni sistemi vodenja - Prekinitve
TMS320LF2407 – izvajanje prekinitev TMS320LF2407 Procesni sistemi vodenja - Prekinitve
TMS320LF2407 – maskiranje prekinitev Interrupt Flag Register (IFR) Interrupt Mask Register (IMR) TMS320LF2407 Procesni sistemi vodenja - Prekinitve
TMS320LF2407 – registri • Peripheral Interrupt Vector Register (PIVR) • Peripheral Interrupt Request Registers (PIRQR0, 1, 2) • Peripheral Interrupt Acknowledge Register (PIACKR0, 1, 2) TMS320LF2407 Procesni sistemi vodenja - Prekinitve
Freescale DSP560x – zakasnitev (Latency) Zajemanje iz pomnilnika Procesni sistemi vodenja - Prekinitve
Freescale DSP560x – zakasnitev (Latency) Izvajanje v procesorju Procesni sistemi vodenja - Prekinitve
Primer za realni sistem – vodenje DC motorja • opis problema • definicija procesov • določitev prioritet Procesni sistemi vodenja - Prekinitve
Sistem za vodenje DCM – blokovna shema Procesni sistemi vodenja - Prekinitve
Osnovni princip delovanja DC motorja Procesni sistemi vodenja - Prekinitve
Pulzno širinsko modulirani krmilni signal Procesni sistemi vodenja - Prekinitve
PWM za DC motor Vezje unipolarnega pulzno širinskega modulatorja Vezje bipolarnega pulzno širinskega modulatorja Procesni sistemi vodenja - Prekinitve
Meritev položaja in hitrosti Inkrementalni dajalnik Procesni sistemi vodenja - Prekinitve
Vsebina • Programska oprema • Režimi delovanja • Prehajanja • Opis • Prekinitvene rutine Procesni sistemi vodenja - Prekinitve
Režimi delovanja - prehajanja Procesni sistemi vodenja - Prekinitve
Režimi delovanja - INIT • pogon (pretvornik) onemogočen • PWM onemogočen • preverja Fault Procesni sistemi vodenja - Prekinitve
Režimi delovanja - INIT • inicializacija procesorja • inicializacija modula PWM • inicializacija ADC modula • definicija časovnikov in njihovih kanalov • inicializacija prekinitev IRQA in IRQB • prioritete prekinitev • inicializacija algoritma vodenja • vodenje = ROČNO • stanje = STOP • določitev uporabljenih kanalov ADC • inicializacija meritve hitrosti z inkrementalnega dajalnika • sinhronizacija PWM in ADC • inicialzacija krmilnih stikal • inicializacija prekinitvene rutine za PWM fault • inicializacija vodenja zavore • inicializacija pretvornika • omogočitev prekinitev Procesni sistemi vodenja - Prekinitve
Režimi delovanja - STOP • pogon (pretvornik) onemogočen • PWM onemogočen • v rutini za strežbo ob periodni prekinitvi se izvaja algoritem vodenja: • analogna meritev in korekcija, • inicializacija pogona, • omogočitev ponovnega tipanja ADC signalov • čaka na Start • preverja Fault Procesni sistemi vodenja - Prekinitve
Režimi delovanja - RUN • pogon (pretvornik) omogočen • PWM omogočen • v ADC End of Scan prekinitvi se izvaja algoritem vodenja: • analogna meritev in korekcija, • algoritem vodenja v strogem realnem času, • PŠM, • omogočitev ponovnega tipanja ADC signalov • preverja Fault Procesni sistemi vodenja - Prekinitve
Režimi delovanja - FAULT • pogon (pretvornik) onemogočen • PWM onemogočen • čaka na Start, Reset, ... Procesni sistemi vodenja - Prekinitve
Prekinitvene rutine Procesni sistemi vodenja - Prekinitve
Prekinitvene rutine - nivoji • Level 1: IRQA, IRQB • Level 0: • Priority 6: PWM Fault, AD High/Low Limit • Priority 4: ADC End of Scan • Priority 3: Quadtimer • Priority 1: SCI, GPIO Procesni sistemi vodenja - Prekinitve
Glavni program inicializirajprocesor inicializirajmost onemogočimost inicializirajADC inicializirajkonstantealgoritma meritevoffsetovADC stanje = INIT stanje_RUN = RUN_Magnetize Procesni sistemi vodenja - Prekinitve
Glavni program while (1){ test_mosta(); switch(stanje) { case INIT: // stanje - INIT break; case STOP: // stanje - STOP break; case RUN: // stanje - RUN break; case FAULT: // stanje - FAULT break; default: // stanje ni definirano pravilno // se obravnava kot FAULT stanje = FAULT; break; } } Procesni sistemi vodenja - Prekinitve
Glavni program – režim INIT case INIT: // stanje - INIT inicializiraj_algoritem_vodenja(); inicializiraj_algoritem_observerja(); cakaj_Udc(); // čakaj, da je Udc dovolj velika omogočitev_prekinitev(); stanje = STOP; stanje_RUN = RUN_Magnetize; INIT_DONE = 1; break; // end - stanje - INIT Procesni sistemi vodenja - Prekinitve
Glavni program – režim STOP case STOP: // stanje - STOP onemogoči_most(); if(Stikalo_RUN == ON) { stanje = RUN; stanje_RUN = RUN_Magnetize; } break; // end - stanje - STOP Procesni sistemi vodenja - Prekinitve
Glavni program – režim RUN case RUN: // stanje - RUN if(Most_Error == OFF) omogoči_most(); if(Stikalo_STOP == ON) želena hitrost = 0; break; // end - stanje - RUN Procesni sistemi vodenja - Prekinitve
Glavni program – režim FAULT case FAULT: // stanje - FAULT onemogoči_most(); onemogočitev_prekinitev(); omogočitev_prekinitev_najnižjega_nivoja(); if (fault_cleared) stanje = INIT; INIT_DONE = 0; break; // end - stanje - FAULT Procesni sistemi vodenja - Prekinitve
IRQA in IRQB • IRQA – nižanje hitrosti • IRQB – višanje hitrosti Procesni sistemi vodenja - Prekinitve
Zaščite: PWM Fault, AD High/Low Limit • Napaka na PWM modulu (signal z mosta) • Prekoračene omejitve ADC: • Toki • Napetost UDC Procesni sistemi vodenja - Prekinitve
ADC End of Scan void irq_hitri_reg() { omogoči_irq_višje_prioritete(); onemogoči_irq_nižje_prioritete(); meritev_tokov(); meritev_udc(); test_mosta(); switch(stanje) { // Detekcija in posluževanje stanj } } Procesni sistemi vodenja - Prekinitve
ADC End of Scan – Režim STOP case STOP: onemogoči_most(); usa = 0; usb=0; usd = 0; usq=0; isd_ref = 0; isq_ref = 0; int_PIreg_isd = 0; int_PIreg_isq = 0; observer_v_realnem_casu(); break; Procesni sistemi vodenja - Prekinitve
ADC End of Scan – Režim RUN case RUN: if(stanje_RUN == RUN_Magnetize){ isd_ref = magnetilni tok; isq_ref = 0; if(isd > isd_min) stanje_RUN = RUN_Spin; } if(stanje_RUN == RUN_Spin){ isd_ref = magnetilni tok; isq_ref = navorni tok; } if(stanje_RUN == RUN_Demagnetize){ isd_ref = 0; isq_ref = 0; if(isd < isd_0) stanje = STOP; } hitri_regulator_v_realnem_casu(); observer_v_realnem_casu(); space_vector_modulation(); break; Procesni sistemi vodenja - Prekinitve
ADC End of Scan – Režim FAULT case FAULT: onemogoči_most(); zavora(); break; Procesni sistemi vodenja - Prekinitve
Quadtimer void irq_pocasni_reg() { omogoči_irq_višje_prioritete(); onemogoči_irq_nižje_prioritete(); test_mosta(); meritev_hitrosti(); switch(stanje) {// detekcija in posluževanje stanj } } Procesni sistemi vodenja - Prekinitve