Obsah
Vymezení použitých pojmů
Základní pravidla pro svazování kvadrantů v Karnaughových mapách
Základní pravidla pro tvorbu rovnic
Postup při zápisu rovnice z Karnaughovy mapy
Příklady řešení
Vymezení použitých pojmů
Kvadrant
- Jeden ze 8 čtverců v Karnaughovy mapy
Vazba
- Několik kvadrantů Karnaughovy mapy svázaných podle určených pravidel
Sektor
- Vodorovná nebo svislá část Karnaughovy mapy
Člen
- Jedna proměnná v rovnici
Programovatelné automaty – řešení pro 3 proměnné
Základní pravidla pro svazování kvadrantů v Karnaughových mapách
1.1
Svazujeme pouze ty kvadranty, které spolu bezprostředně sousedí, to znamená, že mají
spolu shodnou aspoň jednu stranu kvadrantu.
Musíme počítat i s tím, že protilehlé krajní kvadranty (v ose x, nikoliv protilehlé
křížem) spolu také sousedí, protože Karnaughovu mapu si můžeme představit nejenom
jako plochu ale i jako válec stočený kolem osy „x“.
Svazujeme spolu vždy pouze takový počet kvadrantů, který se rovná mocnině čísla 2.
To znamená, že můžeme svazovat pouze 20 = 1 kvadrant nebo 21 = 2 kvadranty nebo
22 = 4 kvadranty (mocnina 23 a vyšší nás v tomto případě nezajímají neboť 23 = 8 což
znamená, že by byly zaplněny všechny kvadranty požadovanou hodnotou „1“)
Při svazování kvadrantů se snažíme vždy svázat co největší počet kvadrantů, protože
čím větší je počet svázaných kvadrantů tím kratší je výsledná rovnice (viz. kapitola
„Základní pravidla pro tvorbu rovnic“).
Při svazování kvadrantů můžeme svazovat i kvadranty, které byly již byly použity pro
svázání s jinými kvadranty, takže některé kvadranty mohou být svázány i několikrát.
1.2
1.3
1.4
1.5
Příklady možného svazování kvadrantů
4 kvadranty krajní
1
1
1
1
4 kvadranty vodorovné
1
2 kvadranty (protilehlé)
1
1
1
1
1
1
1
1
2 a 2 kvadranty
1
1
1
1
4 a 4 kvadranty
1
2 a 2 a 2 kvadranty
1
1
4 a 2 kvadranty
1
1
1
4 kvadranty
1
1
1
1
1
1
1
2 a 2 a 1 kvadrant
1
1
1
1
1
1
1
1
Základní pravidla pro tvorbu rovnic
2.1
Každý kvadrant Karnaughovy mapy odpovídá jednomu řádku v minimalizační tabulce.
c
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
2.2
2.3
Kvadranty v jedné vazbě se mezi sebou násobí a jednotlivé vazby se mezi sebou sčítají.
Pro ověření správnosti zápisu výsledné rovnice platí následující počty proměnných pro
jednotlivé vazby:
a) pro vazbu 4 kvadrantů je výsledkem vždy 1 ze 3 proměnných
b) pro vazbu 2 kvadrantů je výsledkem vždy součin 2 ze 3 proměnných
c) pro vazbu 1 kvadrantů je výsledkem vždy součin všech 3 proměnných
a
0
1
0
1
0
1
0
1
y
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
Zobrazení příslušných řádku v Karnaughově mapě
000
(1)
010
(3)
011
(4)
001
(2)
100
(5)
110
(7)
111
(8)
101
(6)
Postup při zápisu rovnice z Karnaughovy mapy
Pro přehlednější orientaci v Karnaughově mapě je vhodné si nejprve označit jednotlivé
řádky a sloupce mapy – jednotlivé sektory, které odpovídají příslušným proměnným „a,b,c,d“.
Můžeme použít buď grafické znázornění nebo binární nebo můžeme použít oba způsoby.
Grafické znázornění
a
b
Binární znázornění
00
10
11
01 (b a)
0
1
c
(c)
Grafické i binární znázornění – s barevným odlišením
a
b
00
10
11
01
0
c
1
Do takto označené mapy můžeme zapsat data z minimalizační tabulky podle výše
uvedených pravidel (odstavec 2.1)
Příklad 1:
„y“ bude 1 pokud „a“ a zároveň „b“ bude vždy 1, nebo jenom „c“ bude vždy 1
c
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
a
0
1
0
1
0
1
0
1
y
0
0
0
1
1
1
1
1
0
0
1
0
1
1
1
1
Po zápisu do mapy provedeme nejvýhodnější svázání kvadrantů obsahujících „1“:
Vzniknou nám dvě vazby, jedna se 4 kvadranty
druhá se 2 kvadranty.
0
0
1
0
1
1
1
1
Podle pravidel (odst. 2.3) můžeme prohlásit,
že výsledná rovnice bude mít jeden + dva členy.
Červené šipky nám vymezují červenou
vazbu, obsahující 4 kvadranty.
Modré šipky nám vymezují modrou
vazbu, obsahující 2 kvadranty.
00
10
11
01
0
0
0
1
0
1
(c)
0
0
1
0
(b a)
Čtení z Karnaughovy mapy provedeme
pomocí binárního znázornění sektorů, ve kterých jsou jednotlivé vazby obsaženy. Každému
znaku v binárním zobrazení odpovídá jedna proměnná, u sloupcových sektorů zastupuje první
znak proměnnou „b“ a druhý proměnnou „a“; u řádkových sektorů zastupuje znak
proměnnou „c“.
1. Nejdříve provedeme zápis červené vazby obsahující 4 kvadranty. Postupujeme tak, že si
přečteme binární zápis sektorů, ve kterých se nachází tato vazba. Začneme například
zápisem binárního znázornění řádku, který je [1], což nám ukazuje, že c = 1. To znamená,
že ve výsledném zápisu rovnice této vazby bude proměnná „c“. Pak pokračujeme čtením
binárního znázornění řádků. Zde je vazba obsažena ve všech čtyřech sektorech, což
znamená, že proměnná „a“ a „b“ se nám navzájem vykrátí, neboť proměnná „a“ je
zastoupena stejným počtem 1 i 0 stejně jako proměnná „b“.
Důkaz: (přepis binárního znázornění sloupců)
00
ba
b=0
a=0
b=0
a=1
01
11
10 (první znak binárního čísla zastupuje „b“ druhý „a“)
ba
ba
ba
b=1 ⇒ b není obsaženo
a=1 ⇒ a není obsaženo
„b“ ani „a“ není obsaženo
v žádném sloupcovém sektoru.
b=1 ⇒ b není obsaženo
a=0 ⇒ a není obsaženo
Můžeme tedy konstatovat, že výslednou rovnicí pro červenou vazbu 4 kvadrantů je „ c “.
2. Pokračujeme zápisem modré vazby obsahující 2 kvadranty. Postupujeme stejně jako
v bodě 1 a začneme nejprve zápisem binárního znázornění řádků. Zde máme dva údaje,
protože vazba je obsažena ve dvou řádkových sektorech. První je [0] a druhý [1], to
znamená, že znaky, které zastupují proměnnou „c“, se vzájemně vykrátí, takže výsledná
rovnice nebude obsahovat tuto proměnnou.
Důkaz: (přepis binárního znázornění řádků)
0
c
1
c
c=0 c=1 ⇒ c není obsaženo
„c“ není obsaženo v žádném
řádkovém sektoru.
Pak pokračujeme čtením binárního znázornění sloupce. Zde je vazba obsažena v jednom
sektoru [11]. Na obou pozicích binárního čísla, které nám zastupují proměnné „b“ a „a“, je
jednička, což znamená, že výsledná rovnice této vazby bude obsahovat součin „ a . b “.
Můžeme tedy konstatovat, že výslednou rovnicí pro modrou vazbu 2 kvadrantů je součin
„ a . b “.
3. Sloučením obou vazeb (podle pravidel uvedených v odst. 2.2) dostaneme výslednou
rovnici celého zadání:
y = a.b + c
Poznámka:
Při tvorbě rovnice vždy zapisujeme součin před součet. Tím dosáhneme kratšího
programového kódu.
Důkaz:
y = c + a.b
y = a.b + c
LD c
LD a
AND b
OR
WR Y
LD a
AND b
OR c
WR Y
Příklad 2:
Podmínky, kdy na výstupu „y“ bude vždy 1 jsou zadány přímo v minimalizační tabulce:
c
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
a
0
1
0
1
0
1
0
1
y
0
0
1
1
1
1
1
0
0
1
1
0
1
1
0
1
Po zápisu do mapy provedeme nejvýhodnější svázání kvadrantů obsahujících „1“:
Vzniknou nám tři vazby se 2 kvadranty.
00
10
11
01
0
0
1
1
0
1
1
1
0
1
ba
c
1
Nejdříve provedeme zápis modré vazby obsahující 2 kvadranty. Postupujeme tak, že si
přečteme binární zápis sektorů, ve kterých se nachází tato vazba. Začneme nejprve
zápisem binárního znázornění sloupců. Zde máme dva údaje, protože vazba je obsažena
ve dvou sloupcových sektorech. První je [10] a druhý [11], to znamená, že na první pozici
obou binárních čísel je 1 a na druhé pozici je v prvním případě 0 a ve druhém 1. Z toho
vyplývá, že znaky na druhé pozici obou binárních čísel, které zastupují proměnnou „a“, se
vzájemně vykrátí, takže výsledná rovnice této vazby bude obsahovat proměnnou „b“,
která je zastoupena v obou binárních číslech jedničkou na první pozici.
Důkaz: (přepis binárního znázornění sloupců)
10
ba
11
ba
b=1 b=1 ⇒ b je obsaženo
a=0 a=1 ⇒ a není obsaženo
Pouze „b“ je obsažena v daných
sloupcových sektorech.
Pak pokračujeme čtením binárního znázornění řádku. Zde je vazba obsažena
v sektoru [0]. Z toho vyplývá, že výsledná rovnice bude obsahovat proměnnou „c“.
Pokud nastane takový případ, kdy proměnná je v binármím čísle zastoupena pouze
nulami, jedná se o tzv. „negaci výrazu“. V tomto případě zapisujeme proměnnou jako
negovanou, což se značí jako proměnná s nadtržítkem „ c“ nebo textovým vyjádřením
„(NOT c)“.
Výsledná rovnice této vazby bude „b . (NOT c)“
2. Pokračujeme zápisem červené vazby, která je obsažena v jednom řádkovém a dvou
sloupcových sektorech. V řádkovém sektoru je vazba znázorněna pouze binárním zápisem
[1], což znamená, že vazba je obsahuje proměnnou „c“. Výsledná rovnice této vazby bude
tedy obsahovat proměnnou „c“.
Ve sloupcových sektorech je první binární zápis [00] a druhý [10], takže proměnná „b“,
která je zastoupena v prvním binárním čísle nulou a ve druhém jedničkou se nám
vzájemně vykrátí. Zůstává proměnná „a“, která je v odou binárních číslech zastoupena
nulou, proto bude výsledná rovnice obsahovat negaci proměnné „a“.
Důkaz: (přepis binárního znázornění sloupců)
00
ba
10
ba
b=0 b=1 ⇒ b není obsaženo
a=0 a=0 ⇒ a je obsaženo
Pouze „a“ je obsaženo v daných
sloupcových sektorech v nule.
Výsledná rovnice této vazby bude „(NOT a) . c“
3. Při zápisu hnědé vazby postupujeme stejně jako u předchozí vazby. Opět je vazba
obsažena v jednom řádkovém a dvou sloupcových sektorech. U řádkového sektoru je
binární zápis [1], což znamená, že vazba bude obsahovat proměnnou „c“.
Ve sloupcových sektorech je první binární zápis [00] a druhý [01], takže proměnná „a“,
která je zastoupena v prvním binárním čísle nulou a ve druhém jedničkou se nám
vzájemně vykrátí. Zůstává proměnná „b“, která je v odou binárních číslech zastoupena
nulou, proto bude výsledná rovnice obsahovat negaci proměnné „b“ tedy „(NOT b)“.
Důkaz: (přepis binárního znázornění sloupců)
00
ba
01
ba
b=0 b=0 ⇒ b je obsaženo
a=0 a=1 ⇒ a není obsaženo
Pouze „b“ je obsaženo v daných
sloupcových sektorech v nule.
Výsledná rovnice této vazby bude „(NOT b) . c“
Rovnice celého zadání bude součtem všech tří vazeb a bude mít tento tvar:
y = b.(NOT c) + (NOT a).c + (NOT b).c
1. vazba
2 kvadranty
2. vazba
2 kvadranty
3. vazba
2 kvadranty
nebo pomocí negační značky (nadtržítka)
y = b.c + a.c + b.c
Rovnice po algebraické úpravě:
y = b.(NOT c) + c.{(NOT a) + (NOT b)}
Poznámka:
Pro programování PLC používáme takovou úpravu rovnice, aby výsledný program obsahoval
co nejmenší počet řádků. Proto je potřeba dodržovat při algebraických úpravých výsledných
rovnic tyto zásady:
¾ Vytknutou veličinu dáváme až za závorku a v závorce zapisujeme součin před součet.
¾ Pokud závorka obsahuje dva součiny, zapisujeme v závorce součin s větším počtem
proměnných před součin s menším počtem proměnných.
¾ Pokud vytýkáme v rovnici více jak jednou, zapisujeme vždy závorku s větším počtem
proměnných před závoku s menším počtem proměnných.
Podle uvedených zásad bude mít výsledná rovnice tento tvar:
y = {(NOT a) + (NOT b)}.c + b.(NOT c)
Pro názornost srovnejme počty řádků základního těla programu pro PLC u stejné rovnice
v různých tvarech:
y = b.(NOT c) + (NOT a).c + (NOT b).c
y = {(NOT a) + (NOT b)}.c + b.(NOT c)
9 řádků programového kódu
7 řádků programového kódu
Důkaz:
y = b.(NOT c) + (NOT a).c + (NOT b).c
y = {(NOT a) + (NOT b)}.c + b.(NOT c)
LD b
ANC c
LDC a
AND c
OR
LDC b
AND c
OR
WR Y
LDC a
ORC b
AND c
LD b
ANC c
OR
WR Y
Download

3 proměnné