Automaty Modelování chování systému pomocí automatu Automat vyjádený grafem Prostedek k programování složitjších, víceúlohových aplikací
Automaty Nezávislý na použitým hardwaru i softwaru Jednoduchý popis Srozumitelný i laikovy Používají se jednoduché výrazy Sepnuto asova Skládá se ze STAV, PODMÍNEK a AKCÍ
Stav Stabilní stav Pi každém vstupu podobné vlastnosti = stav procesoru poítae Zmna = splnní podmínky pechodu
Pechod Orientovaná ára s podmínkou Spojuje DVA stavy Mže se zmnit ve smyku kolem jednoho stavu Specialita Reset Podmínka pechodu u výchozího stavu v oválku Podmínka 1 Podmínka 3 Podmínka 2
Akce = dj Pouze pi pechodu Vykoná se pouze pi splnní podmínky píslušného pechodu Neplatí: pechod akce Platí : akce prechod Podmínka Akce
Píklad Blikání K poítai je pipojena žárovka. Pi stisku tlaítka se rozsvítí.
Píklad - Další blikání asova 1s asova = 0 asova 1s asova <> 0 asova 1s asova = 0 asova <> 0 K poítai je pipojena žárovka. Pravideln bliká s periodou 2 s (1s svití 1s nesvítí)
Píklad Oddálené vypnutí K poítai je pipojeno tlaítko a žárovka. Po stisku tlaítka se žárovka ihned rozsvítí. Žárovka se vypne 2 s po rozepnutí tlaítka. V em se liší uvedená ešení? T1 2s T1 2s Sepnuto
Píklad Chvíli svítí K poítai je pipojeno tlaítko a žárovka. Po stisku tlaítka se žárovka na 2 s rozsvítí, pak zhasne a eká se na další stisk tlaítka. asova T1 2s asova asova T1 2s V em se liší uvedená ešení? asova
Píklad Chvíli svítí A4 asova asova asova T1 2s K poítai je pipojeno tlaítko a žárovka. Po stisku tlaítka se žárovka na 2 s rozsvítí, pak zhasne a eká se na další stisk tlaítka.
Píklad Jezdící svtélko jen žárovku 1 jen žárovku 2 A4 A5 jen žárovku 3 A6 A7 jen žárovku 4 A8 ATD Moc práce! K poítai je pipojeno tlaítko a osm žárovek. Po stisku tlaítka se rozsvítí další žárovka zleva a pedchozí zhasne.
Píklad Jezdící svtélko jen žárovku Ž Ž = 1 Ž = 9 Ž < 9 Ž+1 Málo práce! K poítai je pipojeno tlaítko a osm žárovek. Po stisku tlaítka se rozsvítí další žárovka zleva a pedchozí zhasne.
Píklad Blikání : mov stav,#1 A_start: ;1 stav A_1: cjne stav,#1,a_2 ;cteni portu jnc A_konec ;rozsviceni mov A,#1 ;dalsi stav mov stav,#2 K poítai je pipojena žárovka. Pi stisku tlaítka se rozsvítí. ;2 stav A_2: cjne stav,#2,a_konec ;cteni portu jc A_konec ;rozsviceni mov A,#0 ;dalsi stav mov stav,#1 A_konec: jmp A_start
Píklad - Další blikání asova 1s asova = 0 asova 1s asova 1s asova = 0 : mov stav,#1 mov T1,#1000000 A_start: A_1: cjne stav,#1,a_2 cjne T1,0,A_konec mov T1,#1000000 mov A,#0 mov stav,#2 A_2: cjne stav,#2,a_konec cjne T1,0,A_konec mov T1,#1000000 mov A,#0 K poítai je pipojena žárovka. Pravideln bliká s periodou 2 s (1s svití 1s nesvítí) mov jmp A_konec: jmp stav,#1 A_konec A_start
Píklad Oddálené vypnutí K poítai je pipojeno tlaítko a žárovka. Po stisku tlaítka se žárovka ihned rozsvítí. Žárovka se vypne 2 s po rozepnutí tlaítka. V em se liší uvedená ešení? T1 2s T1 2s Sepnuto
Píklad Oddálené vypnutí K poítai je pipojeno tlaítko a žárovka. Po stisku tlaítka se žárovka ihned rozsvítí. Žárovka se vypne 2 s po rozepnutí tlaítka. Sepnuto T1 2s : mov stav,#1 A_start: A_1: cjne stav,#1,a_2 jnc A_konec mov A,#1 mov stav,#2 A_2: cjne stav,#2,a_konec jc A_konec mov A,#0 mov T1,#2000000 mov stav,#3 A_3: cjne stav,#3,a_konec cjne T1,0,A_3b mov A,#0 mov stav,#1 A_3b: jnc A_konec mov stav,#2 A_konec: jmp A_start
Píklad Chvíli svítí K poítai je pipojeno tlaítko a žárovka. Po stisku tlaítka se žárovka na 2 s rozsvítí, pak zhasne a eká se na další stisk tlaítka. asova T1 2s asova asova T1 2s V em se liší uvedená ešení? asova
asova asova T1 2s asova Píklad Chvíli svítí A4 : mov stav,#1 A_start: A_1: cjne stav,#1,a_2 jnc A_konec mov stav,#2 A_2: cjne stav,#2,a_konec jc A_konec mov A,#1 mov T1,#2000000 mov stav,#3 A_3: cjne stav,#3,a_4 cjne T1,0,A_3b mov A,#0 mov stav,#1 A_3b: jnc A_konec mov stav,#4 A_4: cjne stav,#4,a_konec cjne T1,#0,A_4b mov stav,#4 A_4b: jc A_konec mov stav,#3 A_konec: jmp A_start
Píklad Jezdící svtélko jen žárovku 1 jen žárovku 2 A4 A5 jen žárovku 3 A6 A7 jen žárovku 4 A8 ATD Moc práce! K poítai je pipojeno tlaítko a osm žárovek. Po stisku tlaítka se rozsvítí další žárovka zleva a pedchozí zhasne.
Píklad Jezdící svtélko Ž = 9 Ž < 9 jen žárovku Ž Ž+1 K poítai je pipojeno tlaítko a osm žárovek. Po stisku tlaítka se rozsvítí další žárovka zleva a pedchozí zhasne. : mov stav,#1 A_start: A_1: cjne stav,#1,a_2 jnc A_konec mov A,#1 mov R0,Ž A_1rot: rl A djnz R0,A_1rot mov stav,#2 A_2: cjne stav,#2,a_konec jc A_konec inc Ž mov stav,#1 A_3: cjne stav,#3,a_konec cjne Ž,#9,A_3B mov Ž,#1 A_3B: mov stav,#1 A_konec: jmp A_start
Píklad Nespi! : mov A,#0 mov T1,#2000000 mov stav,#1 A_start: A_1: cjne stav,#1,a_2 jnc A_1B mov T1,#2000000 mov stav,#2 A_1B: cjne T1,#0,A_konec T1 2s mov A,#1 mov stav,#3 A_2: cjne stav,#2,a_3 jc A_2B mov T1,#2000000 mov stav,#1 A_2B: cnje T1,#0,A_konec mov A,#1 mov stav,#3 A_3: cjne stav,#3,a_konec A_konec: jmp A_start K poítai je pipojeno tlaítko a houkaka. Pokud je po zapnutí poítae stídav zmaknuto a uvolnno tlaítko, žárovka nesvítí. Je-li nkterý ze stav tlaítka delší než 2 s, žárovka zane svítit. T1 2s T1 2s
TLA 0 Píklad Ošetení Tlaítka T1 0.1s TLA 1 TLA 0 : mov mov A4 T1 0.1s TLA,#0 stav,#1 K poítai A_start: je pipojeno nekvalitní tlaítko se zákmity rrc pi spínání A_1: a rozpínání. cjne Úkolem stav,#1,a_2 je potlait tyto pechodové jnc mov jevy. Pedpokládá rrc se, že jsou A kratší než 0.1s. Místo fyzického jmp tlaítka se pak jnc v aplikaci A_konec používá píznak (flag) A_konec: TLA. jmp mov T1,#100000 mov stav,#2 Ideální A_2: cjne stav,#2,a_konec tlaítko cjne T1,0,A_2B mov TLA,#1 mov stav,#3 A_2B: Reálné tlaítko jc A_konec mov stav,#1 A_3: cjne stav,#3,a_4 jnc A_konec mov T1,#100000 mov jmp stav,#2 Ošetené A_konec tlaítko A_4: cjne stav,#4,a_konec cjne as T1,0,A_4B mov TLA,#0 mov stav,#1 A_4B: A A_konec stav,#3 A_konec A_start
Píklad Kódový zámek Ti tlaítka X,Y,Z, sekvence stisk X-Y-Z zpsobí otevení zámku, jiná sekvence zpsobí zablokování. Roz. X A4 Roz. Y A6 Roz. Z Otevi Zavi Stisk. X Stisk. Y Stisk. Y Stisk. Z Stisk. X Stisk. Y A5 Stisk. Z Stisk. Z Stisk. X A7
Píklad Kódový zámek : mov A,#0 mov stav,#1 A_start: A_1: cjne stav,#1,a_2 cjne A,#1,A_1B mov stav,#2 A_1B: cjne A,#2,A_1C mov stav,#7 A_1C: cjne A,#4,A_konec mov stav,#7 A_2: cjne stav,#2,a_konec cjne A,#0,A_konec mov stav,#3 A_3: cjne stav,#3,a_4 cjne A,#1,A_3B mov stav,#7 A_3B: cjne A,#1,A_3C mov stav,#4 A_3C: cjne A,#0,A_konec mov stav,#7 A_4: cjne stav,#4,a_konec cjne A,#1,A_konec mov stav,#5 A_5: cjne stav,#5,a_4 cjne A,#1,A_3B mov stav,#7 A_5B: cjne A,#1,A_3C mov stav,#7 A_5C: cjne A,#1,A_konec mov stav,#6 A_6: cjne stav,#6,a_konec cjne A,#0,A_konec mov A,#1 mov stav,#7 A_7: cjne stav,#7,a_konec A_konec: jmp A_start
Píklad Kódový zámek lepší varianta Ti tlaítka X,Y,Z, sekvence stisk X-Y-Z zpsobí otevení zámku na dobu 1s, jiná sekvence zpsobí zablokování zámku na dlouhou dobu. Zavi Roz. X A4 Roz. Y A6 Roz. Z Stisk. X Stisk. Y Stisk. Y Stisk. Z Stisk. X Stisk. Y A5 Stisk. Z Stisk. Z Stisk. X Otevi T1 1s A8 A9 A7 T1 100000s
Píklad Kódový zámek lepší varianta : mov A,#0 mov stav,#1 A_start: A_1: cjne stav,#1,a_2 cjne A,#1,A_1B mov stav,#2 A_1B: cjne A,#2,A_1C mov stav,#7 A_1C: cjne A,#4,A_konec mov stav,#7 A_7: A_2: cjne cjne stav,#2,a_konec stav,#7,a_8 in mov A,0 T1,#1000000000000 jmp cjne A,#0,A_konec A_konec A_8: mov cjne stav,#8,a_9 stav,#3 cjne jmp T1,#0,A_konec A_konec A_3: cjne mov stav,#3,a_4 stav,#1 in jmp A,0 A_konec A_9: cjne cjne stav,#9,a_konec A,#1,A_3B mov cjne T1,#0,A_konec stav,#7 mov jmp stav,#1 A_konec A_3B: cjne jmp A,#1,A_3C A_konec A_konec: mov jmp stav,#4 A_start A_3C: cjne A,#0,A_konec mov stav,#7 A_4: cjne stav,#4,a_konec cjne A,#1,A_konec mov stav,#5 A_5: cjne stav,#5,a_4 cjne A,#1,A_3B mov stav,#7 A_5B: cjne A,#1,A_3C mov stav,#7 A_5C: cjne A,#1,A_konec mov stav,#6 A_6: cjne stav,#6,a_konec cjne A,#0,A_konec mov A,#1 mov T1,#1000000 mov stav,#8
Píklad 100 x blikni Po stisku tlaítka žárovka 100 x blikne T1 2s A4 T1 2s T1 2s T1 2s T1 2s A5 A6 T1 2s T1 2s A7 A8 T1 2s A9 ATD Moc práce!
T1 2s Píklad 100 x blikni Po stisku tlaítka žárovka 100 x blikne R100 Málo práce! : mov A,#0 mov stav,#1 A_start: A_1: cjne stav,#1,a_2 jnc A_1B T1 2s mov T1,#2000000 R R - 1 mov A,#1 mov R,#100 mov stav,#2 R = 0 jmp A_konec A_2: cjne stav,#2,a_3 cjne T1,#0,A_konec mov A,#0 mov T1,#2000000 T1 2s dec R mov stav,#3 A_3: cjne stav,#3,a_konec cjne R,#0,A_3B mov stav,#1 A_3B: cjne T1,#0,A_konec mov T1,#2000000 mov A,#1 A_konec: jmp A_start
Píklad Jezdící svtélko jen žárovku 1 jen žárovku 2 A4 A5 jen žárovku 3 A6 A7 jen žárovku 4 A8 ATD Moc práce! K poítai je pipojeno tlaítko a osm žárovek. Po stisku tlaítka se rozsvítí další žárovka zleva a pedchozí zhasne.
Píklad Jezdící svtélko Ž=1 Ž+1 jen žárovku Ž K poítai je pipojeno tlaítko a osm žárovek. Po stisku tlaítka se rozsvítí další žárovka zleva a pedchozí zhasne. Podmínka automatu: Ž < 9 : mov stav,#1 A_start: A_1: cjne stav,#1,a_2 jnc A_konec mov A,#128 mov R0,Ž A_1rot: rl A djnz R0,A_1rot mov stav,#2 A_2: cjne stav,#2,a_konec jc A_konec inc Ž mov stav,#1 A_konec: cjne Ž,#9,A_konec mov Ž,#1 jmp A_start
Píklad stroj 1 MOTOR SNÍMAE PIBLÍŽENÍ RE RS LS LE RUN L RUN R SLOW AUTOMAT Program pro AUTOMAT zajistí cyklický pohyb vozíku (ervený) mezi krajními polohami vedení se zpomalením na zpomalovacích snímaích, zastavením na zastavovacích snímaích a asovou prodlevou (1 s) ped optovným rozjezdem.
RUNR <- 0 RUNL <- 1 SLOW <- 1 RE 10.0 RS 10.1 RUN R 20.0 RUNL <- 0 T <- 1s LE=1 SLOW <- 1 SLOW 20.2 Píklad stroj 1 RUNR <- 1 RUNL <- 0 SLOW <- 0 T=0 LS=1 A6 LE 11.0 LS 11.1 RUN L 20.1 : mov stav,#1 mov A,#110b out 20,A A_start: A_1: cjne stav,#1,a_2 in A,11 RS=1 SLOW jnc <- 1 A_konec in A,20 A4 and A,#11111101b out 20,A RE=1mov T1,#1000000 mov stav,#2 RUNR <- 0 T <- 100 A_2: cjne stav,#2,a_3 cjne T1,#0,A_konec T=0 mov A,#001b A5mov stav,#3 RUNR <- 0 RUNL <- 1 A_3: cjne stav,#3,a_4 SLOW <- 0 in A,10 jnc A_konec in A,20 or A,#00000100b out 20,A mov stav,#4 A_konec: jmp A_start
Píklad stroj 2 Levý Stop Levý Pomalu Doprava Doleva Pomalu Pravý Pomalu Pravý Stop Pístnice Nahoru Podtlak Pístnice Nahoe Pístnice Dole Vakuum pítomno Stroj pekládá výrobky zprava do leva, uchopování výrobk pomocí savky. Cyklus: Vozík doprava, Pístnice dolu, Vakuum, Pístnice nahoru, Vozík doleva, Pístnice dolu, Vakuum zrušit, Pístnice nahoru.
Píklad stroj 2 Nahoru Zastavit Vakuum NE Zastavit Dolu Dole Nahoru A4 Nahoe 1 Nahoe Vakuum ANO Pisáto Doleva Rychle Doprava Pomalu Pravý Stop A5 Levý Pomalu Pomalu Dole A7 0 Pravý Pomalu Vakuum NE Zastavit Dolu Pomalu Levý Stop A6 Doprava Rychle NE Pisáto A8 Nahoe A9 Nahoru
Píklad stroj 3 Levý Stop Pravý Stop Za. mov R7, #0 A_0: cjne R7, #0, A_1 mov A, #1 out 20 mov R7, #1 jmp A_End Vpravo Vpravo=1 Pravý Stop = 1 Vpravo=1 Pravý Stop 10.0 Levý Stop 10.1 Vpravo 20.0 Vpravo=0 Levý Stop = 1 A_1: A_2: A_End: nop cjne R7, #1, A_2 in A, 10 jnc A_End mov A, #0 out 20 mov R7, #2 jmp A_End cjne R7, #2, A_End in A, 10 jnc A_End mov A, #1 out 20 mov R7, #1 jmp A_End