KONICA MINOLTA

Aktuální vydání

celé číslo

11

2019

Využití robotů, dopravníků a manipulační techniky ve výrobních linkách

Průmyslové a servisní roboty

celé číslo

Inspiromat pro výuku a Tecomat: logika (nejenom) pro programátory – Díl druhý

Zadání logické funkce, tabulka, mapy

Funkce (algoritmus) logického systému lze popsat různými způsoby. Obvyklý je slovní popis požadovaného chování. Rizikem je možnost nepřesného nebo neúplného zadání, popř. jeho chybného pochopení řešitelem. Zadavatel obvykle není schopen postihnout celou šíři úlohy a formulovat ji se všemi detaily. Obyčejně formuluje jen požadované funkce a chování systému v očekávaných situacích. Většinou jej ani nenapadne popsat chování v neobvyklých situacích nebo při chybách. Mnohdy opomene formulovat požadavky, které považuje za samozřejmé, ale řešitel o nich neví. Výhodné je, je-li k dispozici zadání logických funkcí v algebraické formě, tedy jako soubor booleovských výrazů (nesprávně označovaných jako rovnice). Při renovaci (retrofitu) starších strojů lze využít podklady pro nahrazovaný řídicí systém, např. jeho reléové nebo logické schéma. Podobně je možné použít i dokumentaci programu pro vysloužilý systém PLC. Problémem je skutečnost, že tímto způsobem se kopíruje chování původního systému (i s případnými chybami) a „konzervuje“ jeho historická úroveň i pro současnost. Nová technika poskytuje daleko víc možností než stará a bylo by škoda je nevyužít. Přesné a úplné zadání poskytuje pravdivostní tabulka, popř. transformovaná do pravdivostní mapy.

Pravdivostní tabulka zobrazuje hodnoty zadané logické funkce pro všechny kombinace jejich operandů. Pro n proměnných obsahuje 2n položek (4, 8, 16, 32, 64, 128, 256 pro 2, 3, 4, 5, 6, 7 a 8 proměnných). Ukázky tabulek pro dvě až čtyři proměnné jsou na obr. 2. Levá část tabulky obsahuje kombinace hodnot operandů. Pro jednoduchost jsme je zde pojmenovali jednoduchými písmeny a, b, c, d. V praxi je vhodné je pojmenovat tak, aby názvy krátce vyjadřovaly význam operandu. Pro přehlednost bývají kombinace operandů uspořádány ve shodném pořadí jako u narůstající řady dvojkových čísel (ve dvojkovém kódu), které tak určují pořadové číslo položky – index. Někdy se v samostatném sloupci ještě uvádí jeho ekvivalent v desítkové, popř. šestnáctkové soustavě (sloupec označený i v tabulkách na obr. 2a, obr. 2b nebo dihi v tabulce na obr. 2c).

Tabulku vytváříme tak, že nejprve vypíšeme její levou část. Můžeme k tomu použít jednoduchou rutinu: hodnoty operandu se v pravém sloupci střídají v pořadí 0, 1, 0, 1…, ve sloupci vlevo od něj v pořadí 0, 0, 1, 1, 0, 0…, v dalším v pořadí 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0… a podobně dál. Do sloupce vpravo pro každou kombinaci operandů vpisujeme odpovídající pravdivostní hodnotu zadávané funkce. Tabulky na obr. 2 navíc obsahují další sloupec se součinovými členy (mintermy) – ty běžně neuvádíme, zde jsou použity jen pro usnadnění pozdějšího výkladu. Definujeme-li skupinu funkcí stejných operandů, lze použít sdruženou pravdivostní tabulku, která pro stejné kombinace operandů definuje pravdivostní hodnoty jednotlivých funkcí (obr. 3). Předností pravdivostní tabulky je úplnost zadání. Nutí nás, abychom se zamysleli nad pravdivostními hodnotami pro všechny kombinace operandů (i ty zdánlivě nemožné) a stanovili pro ně pravdivostní hodnotu zadávané funkce. V případě, že se některé kombinace v praxi nemohou vyskytnout (např. pro nedostupnou kombinaci stavů senzorů), může být funkční hodnota libovolná. Pak ji můžeme označit zvláštním symbolem (např. X), jehož hodnotu je možné dodefinovat při optimalizaci logického výrazu. Můžeme ale přidat nové funkce, které indikují tyto neobvyklé nebo chybové stavy. Platí pravidlo, že i nejnemožnější kombinace se v praxi vyskytnou – a to v nejméně vhodné situaci. Tímto způsobem lze nenásilně řešit základní diagnostiku. 

Úloha 1

Analyzujte funkce řešené programy na obr. 6obr. 12 z předchozího dílu seriálu a vytvořte pro ně pravdivostní tabulky.

Délka pravdivostní tabulky exponenciálně roste s počtem operandů a tím se zhoršuje i její názornost. V praxi se proto používají tabulky pro nevelký počet operandů (obvykle do 4 až 6, výjimečně více). Názornější jsou pravdivostní mapy. Jsou to dvojrozměrné útvary podobné maticím. Svobodova mapa nebo též S-mapa nebo Veichtova vznikne rozdělením sloupce hodnot pravdivostní tabulky a sestavením segmentů do rovinného útvaru. Různé varianty uspořádání Svobodovy mapy pro tři proměnné jsou na obr. 4. Krajním případem je uspořádání do jednoduchého sloupce nebo řádku (tedy jiné formy pravdivostní tabulky – obr. 4a, obr. 4d). Na obr. 4bobr. 4c je zobrazena mapa ve formě obdélníku o formátu 4 × 2 nebo 2 × 4 políček. Pro zobrazení hodnot operandů jsou použity vodorovné a svislé pruhy při okrajích mapy. V řádku nebo sloupci pod pruhem nebo vedle něj je operand jedničkový, jinde je nulový. Pro snazší pochopení výkladu jsou v okrajích rámečku vepsána čísla indexu pravdivostní tabulky.

V praxi se častěji používá Karnaughova mapa, stručněji označovaná jako K-mapa. Od S-mapy se liší jiným uspořádáním řádků a sloupců – nikoliv v přirozeném pořadí dvojkového kódu, ale v pořadí hodnot Grayova kódu (obr. 5). Bývají v něm vytvořeny obrazce v absolutních snímačích polohy (ARC). Využívá se zde skutečnost, že každé dvě sousední polohy se liší jen v jedné hodnotě kódu. Tato vlastnost je i důvodem pro používání K-mapy v praxi – sousední políčka se liší jen v jedné hodnotě operandů. To se využívá při minimalizaci logického výrazu logické funkce. Výhodnost a použití K-mapy budou popsány a zdůvodněny dále. Různé varianty uspořádání K-mapy pro tři proměnné jsou na obr. 6. Uspořádání mapy ve formě jednoduchého řádku nebo sloupce (obr. 6a, obr. 6d) nepřináší žádné výhody, pro praxi je účelné uspořádání do tvaru obdélníku o formátu 4 × 2 nebo 2 × 4 políček (obr. 6b, obr. 6c). Příklad K-mapy pro čtyři proměnné je na obr. 7

Úloha 2

Pravdivostní tabulky funkcí podle programů na obr. 6obr. 12 z předchozího dílu seriálu (úloha 1) zobrazte ve formě K-mapy. 

Booleovské operátory

Booleova algebra používá k tvorbě logických výrazů jen trojici operátorů, kterými lze realizovat libovolnou logickou funkci – logický součin (AND), logický součet (OR) a negace (NOT). K-mapy operátorů AND a OR pro dvě, tři a čtyři proměnné jsou na obr. 8obr. 9. Pro zvýraznění jsou zde jedničkové hodnoty zobrazovány jako plné znaky (někde se zase používá znak I nebo 1), nulovým hodnotám odpovídají prázdná políčka.

Operátor AND provádí operaci logického součinu proměnných, které spojuje. V češtině jej lze interpretovat spojkou „a“ („a současně“). Výsledek je pravdivý, jsou-li pravdivé všechny operandy. Pokud je alespoň jeden z operandů nepravdivý, je nepravdivý i výsledek. Obecně platí, že

           X AND 1 = X,

           X AND 0 = 0,

kde X je „cokoliv“.

Místo symbolu AND lze v logických výrazech jazyka ST rovnocenně používat znak „&“. Ukázka programu je v příkladu 5 v předchozím dílu seriálu, programy v grafických jazycích LD a SFC jsou v něm na obr. 10.

Operátor OR provádí operaci logického součtu (inkluzivního) proměnných, které spojuje. V češtině jej lze interpretovat jako spojku „nebo“. Výsledek je pravdivý, je-li pravdivý alespoň jeden z operandů, popř. všechny. Obecně platí, že

           X OR 0 = X,

           X OR 1 = 1.

Ukázka programu je v příkladu 4 v předchozím dílu seriálu, programy v grafických jazycích LD a SFC jsou v tomto dílu na obr. 9.

Operátor NOT mění hodnotu proměnné na opačnou. K pochopení lze použít mnemotechnickou pomůcku: logický součin AND dává stejný výsledek jako aritmetické násobení dvouhodnotových operandů (a AND b = a * b). Logický součet OR lze interpretovat jako aritmetické sčítání s omezením – jestliže je výsledek větší než 1, je omezen na hodnotě 1 (a OR b = min( a + b, 1). Negaci lze interpretovat jako doplněk k hodnotě 1 (NOT a = 1 – a). 

Logika a množiny

Množina je soubor objektů, u kterých lze rozhodnout, zda do množiny patří, nebo nepatří. Jejich prvky mohou být např. čísla, výroky a jejich kombinace, logické proměnné a logické funkce. Ke grafickému zobrazení množin operací s nimi se často využívají Vennovy diagramy. Na obr. 10 jsou ve Vennových diagramech množiny zobrazeny jako grafické útvary nepravidelného tvaru. Mohou to být ale i K-mapy nebo jejich části. Existuje přímá souvislost mezi výrokovou logikou a teorií množin. Tu je možné využít i při řešení logických systémů. Například logický součin AND lze interpretovat jako průnik množin. Grafické znázornění operace AND pro dvě množiny ve formě Vennových diagramů je na obr. 10a. Operaci logického součtu OR odpovídá sjednocení množin (obr. 10b). Negaci odpovídá doplněk množiny k univerzu (množině všech prvků) – obr. 10c. Uvedenou grafickou interpretaci logických operací lze využít i při práci s K-mapami. Například v mapě logického součinu AND na obr. 8a odpovídá proměnné a pravý sloupec a proměnné b spodní řádek – jejich průniku (operaci AND) odpovídá pravé dolní políčko s jedničkovou hodnotou. Podobně na obr. 9a jsou pro operaci OR jedničkové hodnoty na ploše odpovídající sjednocení sloupce proměnné a a řádku proměnné b. Podobně lze graficky odvodit pravdivost pro operace AND a OR pro více proměnných. V systémech s pevnou logikou se často používají operátory NAND (negace AND) a NOR (negace OR). Jejich K-mapa je tvořena obrazcem doplňkovým k obrazci AND a OR z obr. 10aobr. 10b. Podobně je možné postupovat i v jiných situacích. 

Booleova algebra

Booleova algebra operuje s dvouhodnotovými logickými proměnnými a používá operátory AND, OR a NOT. Přitom platí deset základních pravidel. Někdy se uvádějí ještě tři doplňková. Všechna jsou uvedena v graficky odlišeném bloku. V zájmu přehlednosti zde ustupujeme od zavedeného způsobu psaní logických vztahů v duchu syntaxe programů v textových jazycích a používáme zde zvyklosti z tradiční literatury o logice. Logický součin AND zde symbolizuje „·“ (tečka) nebo je vypuštěn, logický součet OR představuje „+“, negace je označována pruhem nad proměnnou. Tuto zjednodušenou formu lze doporučit i při ručním zápisu poznámek nebo konceptů řešení. Jednotlivá pravidla jsou uváděna ve dvojicích, protože operátory AND a OR jsou duální (doplňkové) – jestliže v jednom pravidle zaměníme operátor AND za OR a naopak OR za AND a navzájem zaměníme konstanty 0 a 1, dostaneme druhé pravidlo. 

Užitečné funkce

Na obr. 11, obr. 12, obr. 13 a obr. 14 jsou uvedeny K-mapy logických funkcí, s nimiž se lze setkat v praxi. Výlučný součet (Exclusive OR, XOR) lze interpretovat slovním spojením buď – nebo – buď je pravdivý jeden operand, nebo druhý, nikoliv oba současně (Pozn. red.: podle pravidel české gramatiky stačí napsat před „nebo“ čárku a tím se z OR stane XOR. Jenže takového detailu si málokdo všimne, proto je lépe používat spojení buď – nebo. Je dobré se vyvarovat, alespoň v logice, matoucích spojek a zvláštních konstrukcí: a nebo, anebo, a/nebo.). Použitý symbol XOR vyjadřuje tuto skutečnost a současně je binárním operátorem (spojuje dvě proměnné) používaným v programovacích jazycích. Pro dva operandy je shodný s funkcemi nonekvivalence (neshody), liché parity, součtu modulo 2 a schodišťového vypínače. Neplatí to však pro více proměnných, jak je zřejmé z uvedených K-map. Funkci výlučného součtu (exclusive OR) lze obecně interpretovat jako výběrovou funkci „právě 1 z n“ (S1_n), která je pravdivá jen tehdy, je-li jediný operand jedničkový (obr. 11). Funkce ekvivalence (shody, EQ) je jedničková, jsou-li všechny její operandy shodné – buď jsou všechny jedničkové, nebo nulové (obr. 12). Nonekvialence (neshoda, NEQ) je její negace (obr. 13). Funkce liché parity (parity odd, PO) má jedničkovou hodnotu, je-li počet operandů lichý. Je (pro libovolný počet proměnných) shodná s funkcí součtu modulo 2 (M2, výsledek dvojkového sčítání bez přenosu) a s funkcí vícenásobného schodišťového vypínače (obr. 14). Funkce sudé parity (parity even, PE) je její negací.

(Dokončení příště.)

 

Ing. Ladislav Šmejkal, CSc., Teco, a. s., a externí redaktor Automa

Obr. 2. Ukázky pravdivostních tabulek: a) pro dvě proměnné (funkce ekvivalence, EQ), b) pro tři proměnné (funkce majorita ze tří, M3), c) pro čtyři proměnné (funkce alespoň dva ze čtyř, P2_4)

Obr. 3. Ukázka sdružené pravdivostní tabulky pro skupinu funkcí dvou proměnných

Obr. 4. Různé formáty Svobodovy mapy (S-mapy) pro tři proměnné (funkce M3) 

Obr. 5. Pravdivostní tabulka čtyřmístného Grayova kódu (a) a zobrazení grafického obrazce pětimístných kódů – přirozeného binárního a Grayova (b)

Obr. 6. Různé formáty Karnaughovy mapy (K-mapy) pro tři proměnné (M3)

Obr. 7. K-mapa pro čtyři proměnné (funkce alspoň dva ze čtyř P2,4)

Obr. 8. K-mapy logického součinu AND pro fvě, tři a čtyři proměnné

Obr. 9. K- mapy logického součtu OR pro dvě, tři a čtyři proměnné

Obr. 10. Zobrazení logického součinu AND jako průniku množin (a), logického součtu OR jako sjednocení množin (b) a negace jako doplňku množiny k univerzu (c)

Obr. 11. K-mapy funkce výlučného součtu (právě jedna) pro dvě, tři a čtyři proměnné

Obr. 12. K-mapy funkce ekvivalence (shody, EQ) pro dvě, tři a čtyři proměnné

Obr. 13. K-mapy funkce nonekvivalence (neshody, NEQ) pro dvě, tři a čtyři proměnné

Obr. 14. K-mapy funkce liché parity pro dvě, tři a čtyři proměnné