ÅBO AKADEMI TEKNISKA FAKULTETEN Laboratoriet för reglerteknik DEPARTMENT OF ENGINEERING Process Control Laboratory LOGIKSTYRNING Hannu Toivonen Jari Böling Augusti 202 Biskopsgatan 8 FIN 20500 Åbo Finland
Innehåll 0 Inledning 5 0. Litteratur.................................... 8 Klassisk logik och boolesk algebra 9. Insignaler, utsignaler och tillstånd....................... 9.2 Propositionskalkyl................................3 Boolesk algebra................................. 2.4 Något om implementeringen av logiska funktioner.............. 4 2 Booleska funktioner 7 2. Disjunktiv och konjunktiv normalform.................... 7 2.2 Förenkling av booleska uttryck........................ 8 2.2. Karnaugh-diagram........................... 9 2.2.2 QMC-metoden............................. 24 2.2.3 System med flera utsignaler...................... 29 2.2.4 Konjunktiv minimalform........................ 3 2.3 Kombinatoriska automationsproblem..................... 33 3 Sekvensstyrningsproblem 35 3. Syntes av sekventiella system......................... 36 3.2 Deterministiska sekvensstyrningsproblem................... 4 4 Programmerbar logik 45 4. Funktionssättet hos en PLC.......................... 46 4.2 Programmering av en PLC........................... 47 4.2. Låg-nivå programmeringsspråk (IL)................. 48 4.2.2 Kontaktdiagram (LD)......................... 49 4.2.3 Function Block Diagram (FBD).................... 5 5 Petri nät 53 6 Planering av säkerhet för styrsystem 59 3
4 INNEHÅLL
Kapitel 0 Inledning Man kan dela in regler- och styrproblem i tre grupper:. Reglering och styrning av procesesser som kan beskrivas med hjälp av differential- eller differensekvationer. Ingående variabler beskrivs av reella tal. T.ex. temperatur, spänning, position och dylikt. r + - u Gk G p y 2. Styrning av sekventiella processer, vars dynamiska egenskaper karakteriseras av diskreta händelser. Ingående variabler beskrivs av logiska tal eller heltal. T.ex. en ventil som kan vara öppen eller stängd, en behållare som kan vara tom, halvfull eller full. 3. Hybrida system, blandning av ovanstående typer. I samtliga fall så önskar man styra processessen så att önskad funktion uppnås. Kursen logikstyrning är inriktad på grupp 2. Exempel på logikstyrningsproblem Processindustrin: Start och nedkörning av processer Byte av driftstillstånd Säkerhetssystem, åtgärder vid felsituationer Operation av batch-processer Styckegodsindsutrin Operation av verktyg Robotar Vardagen Tjuvlarm Bankomater All slags elektronik Telefonväxlar 5
6 KAPITEL 0. INLEDNING Angränsande områden: Digitalteknik och elektronik Datateknik: Realtidssystem Denna kurs fokuserar på industriella sekvensstyrningsproblem och implementering med hjälp av programmerbar logik. Exempel 0. Blandningsprocess A B V A V B Reaktor V R Önskad funktion för blandningsprocessen: Reaktorna skall fyllas med innehållen i behållarna A och B, reaktorns innehåll skall omröras och uppvärmas till 80 o C, varefter reaktorn skall tömmas.
7 Schematiskt: Reaktorn tom V R stängd Öppna V A och V B A töms B töms Stäng V A då A tom Stäng V B då B tom A tömd B tömd Slå på uppvärming Uppvärming Slå av uppvärming och öppna V R då T 80 o C Reaktorn töms Stäng V R då reaktorn tom Slut Problemet att styra sekventiella processer av denna typ är ett exempel på logikstyrning: styrningen kan realiseras med hjälp av logiska funktioner av typen Utför aktionen A ifall premissen P är uppfylld Logikstyrning implementerades tidigare med hjälp av reläer, och numera oftast med programmerbar logik. Små sekvensstyrningsproblem kräver ingen djupare analys, utan implementeringen kan vanligen baseras på enkel boolesk algebra. Större system är däremot inte så lätta att överblicka, utan fordrar systematiska analysmetoder.
8 KAPITEL 0. INLEDNING 0. Litteratur Litteratururvalet på detta område är inte särskilt stort, och det finns egentligen ingen bok som skulle vara riktigt lämplig som kursbok. Följande böcker kan dock nämnas som bredvidläsning för den intresserade:. L. Alm: Styrteknik. Studentlitteratur 99. Fokuserar på verkstads- och styckegodsprocesser. 2. W. Bolton: Programmable logic controllers. Newnes, fjärde upplagan, 2006. 3. G.C. Cassandras och S Lafortune: Introduction to discrete event systems. Kluwer 999 och Springer 2007. Ganska teoretisk, behandlar Petri-nät utförligt. 4. M. Costanza: Programmable logic controllers - The industrisl computer. Arnold 997. 5. A.J Crispin: Programmable logic controllers and their engineering applications. McGraw-Hill 997. Innehåller IEC-standarden för programmering av PLC:n. 6. K.H. Fasol: Binäre steuerungstechnik. Springer 988. 7. T. Floyd: Digital fundamentals. Prentice-Hall 997. 8. S. Friedman: Logical design of automation systems. Prentice-Hall 980. 9. B. Haag: Industriell systemteknik Ellära, elektronik och automation. Studentlitteratur 998. 0. T.R. McCalla: Digital logic and computer design. MacMillan 992.. E.W. Kamen: Industrial controls and manufacturing. Academic Press 999. 2. J. Palmer och D. Perlman: Introduction to digital systems (Schaum s outline). McGraw-Hill 993. 3. M. Treseler: Designing state machine controllers using programmable logic. Prentice Hall 992.
Kapitel Klassisk logik och boolesk algebra. Insignaler, utsignaler och tillstånd Ett sekvensstyrsystem kan schematiskt framställas i form av följande diagram: Insignaler (från process) Utsignaler(till process) u y u 2 Logisk. y 2. funktion. u. n y m.. Nytt tillstånd Tillstånd..x x p x +,..., x+ p. Minne. Insignaler, utsignaler och tillstånd antas i denna kurs ha logiska värden. Utsignalernas Y = {y i } och det interna tillståndens X + = {x + i } nya värden bestäms som funktioner av insignalerna U = {u i} och de tidigare tillstånden X = {x i }. Dessa funktioner kan i praktiken beskrivas med hjälp av klassisk logik eller, analogt, med boolesk algebra. Exempel. Transportör A B Insignaler: U = {u i }. Gå till vänster ( -knapp) 2. Gå till höger ( -knapp) 3. Stopp (STOP-knapp) 4. Lägessensor vid A (A) 5. Lägessensor vid B (B) 9
0 KAPITEL. KLASSISK LOGIK OCH BOOLESK ALGEBRA Tillstånd: X = {x i }. Stillastående vid A 2. Stillastående vid B 3. Stillastående mellan A och B 4. På väg mot höger (mot B) 5. På väg mot vänster (mot A) Utsignaler: Y = {y i }. Mot vänster (V) 2. Mot höger (H) 3. Stilla (S) Styrsystemets funktion kan representeras med hjälp av en graf, s.k. tillståndsgraf, där tillstånd representeras av noder, tillståndsövergångar representeras av riktade länkar mellan noderna, och insignal resp. utsignal associerade med tillståndsövergången anges vid länken. x i u n /y m x j Exempel.2 Tillståndsgraf för styrsystemet i exempel.. 4 /H A/S /H ST OP/S 3 2 3 2 /V ST OP/S A/S /V 5 I en tillståndstabell (Huffman-tabell) anges x s /y k = (följande tillstånd/utsignal) som funktion av insignaler och tillstånd i tabellform. Exempel.3 Tillståndstabell för styrsystemet i exempel.. Insignaler STOP A B Tillstånd 2 3 4 5. Vid A /S 4/H /S /S (/S) 2. Vid B 5/V 2/S 2/S (2/S) 2/S 3. Mellan A och B 5/V 4/H 3/S /S 2/S 4. Mot B 3/S 4/H 3/S 4/H 2/S 5. Mot A 5/V 3/S 3/S /S 5/V Vissa situationerna förekommer ej normalt (beteckna dessa med parentes), endast vid felsituationer. För att felsituationerna skall klaras av, bör man i praktiken definiera förnuftiga tillståndsövergångar och aktioner även för dessa situationer. I praktiken kan sekvensstyrningsproblem ofta leda till tämligen komplicerade operationer. Det krävs då systematiska metoder vid planeringen av systemet. Analys och syntes av sekventiella processer baserar sig i hög grad på klassisk logik och boolesk algebra. Vi skall därför börja med att behandla dessa.
.2. PROPOSITIONSKALKYL.2 Propositionskalkyl Propositionskalkylen eller propositionslogiken är en del av den formella logiken som kan härledas tillbaka till Aristoteles (382 322 f.kr.). I propositionskalkylen är grundbyggstenarna påståenden, eller propositioner. Ett påstående är antingen sant (S) eller falskt (F ). Exempel.4 Propositioner Tydligen gäller P = S, Q = F. P : Granen är ett finskt trädslag Q : Kokospalmen växer vild på Åland I propositionskalkylen sammansätts propositioner till nya propositioner med hjälp av de logiska konnektiven och, eller samt negationen icke. Man brukar använda beteckningarna eller (OR) och (AND) P icke P (NOT P) Propositionkalkylens konstanter är S (sann) och F (falsk). För dessa införs följande postulat, som är i enlighet med vardagens språkbruk och intuition: F F = F (P ) S S = S (P 2) S F = F S = S (P 3) S S = S (P 4) F F = F (P 5) F S = S F = F (P 6) F = S (P 7) S = F (P 8) Ur dessa postulat följer för en godtycklig proposition x (vars sanningshalt, S eller F, inte är given, dvs. en variabel) följande samband: x x = x (R) x x = S (R2) x S = S (R3) x F = x (R4) x x = x (R5) x x = F (R6) x F = F (R7) x S = x (R8) x = x (R9) Vidare kan logiska samband för uttryck som innehåller två eller flera propositioner härledas. Några av de viktigaste sambanden i propositionskalkylen kommer att diskuteras nedan i samband med den booleska algebran.
2 KAPITEL. KLASSISK LOGIK OCH BOOLESK ALGEBRA.3 Boolesk algebra Boole introducerade år 854 en tvåvärd algebra som är isomorf med propositionskalkylen. På detta sätt var det möjligt att beskriva den klassiska logiken matematiskt (i form av en tvåvärd algebra). I boolesk algebra antar variabler något av värdena (konstanterna) 0 eller. Operationerna i boolesk algebra är ELLER (OR), logisk summa (disjunktion), med beteckningen + (x + y) OCH (AND), logisk produkt (konjuktion), med beteckningen (x y eller xy) ICKE (NOT), logisk invers, med beteckningen x (= icke x). Beteckningarna x och x används även. Operationerna definieras med hjälp av följande postulat: Operationerna kan sammanfattas i form av en sanningstabell: 0 + 0 = 0 (P ) + = (P 2) 0 + = + 0 = (P 3) = (P 4) 0 0 = 0 (P 5) 0 = 0 = 0 (P 6) 0 = (P 7) = 0 (P 8) A B A A + B 0 0 0 0 0 0 0 0 0 0 Förutom ovannämnda operationer brukar man införa ytterligare ett antal operatationer: Dessa operationer beskrivs av sanningstabellen NOR (icke eller) A + B XOR (exklusivt eller) A B XNOR (exklusivt NOR) A B NAND (icke och) A B A + B A B A B 0 0 0 0 0 0 0 0 0 0 0 0 Den egenskap som gör boolesk algebra speciellt viktig är dess isomorfi med propositionskalkylen. Denna isomorfi ges enligt följande: isomorf = med samma struktur Boolesk algebra Propositionskalkyl S 0 F + x x
.3. BOOLESK ALGEBRA 3 Postulaten (P ) (P 8) för propositionskalkyl respektive boolesk algebra är ekvivalenta om man substituerar konstanter och operationer enligt ovan. Alla de lagar i logiken som följer ur propositionskalkylens postulat (P ) (P 8) har således sina exakta motsvarigheter i boolesk algebra. Den klassiska logiken (beskriven av propositionskalkyl) kan således representeras rent algebraiskt i form av den tvåvärda booleska algebran. Sambanden (R) (R9) givna tidigare för propositionskalkylen blir för boolesk algebra: x + x = x (R) x + x = (R2) x + = (R3) x + 0 = x (R4) x x = x (R5) x x = 0 (R6) x 0 = 0 (R7) x = x (R8) x = x (R9) I följande tabell anges några av de viktigaste räknereglerna för två och tre variabler, som kan härledas från postulaten (P ) (P 8). Associationslagar: (R0) x + (y + z) = (x + y) + z (R) x(yz) = (xy)z Kommutationslagar: (R2) x + y = y + x (R3) xy = yx Distributionslagar: (R4) x(y + z) = xy + xz (R5) x + yz = (x + y)(x + z) Absorptionslagar: (R6) x + xy = x (R7) x(x + y) = x Transivitetslagar (konsensus): (R8) xy + xz + yz = xy + xz (R9) (x + y)(x + z)(y + z) = (x + y)(x + z) de Morgans lagar: (R20) x + y = x y (R2) xy = x + y Lagarna kan direkt generaliseras till flera variabler. De Morgans lagar generaliseras t.ex. till (R20) x + x 2 +... + x n = x x 2... x n (R2) x x 2... x n = x + x 2 +... + x n Anm. Såsom nedan framgått, följer ur isomorfin mellan propositionskalkyl och boolesk algebra att alla lagar som kan härledas för den senare har sin motsvarighet i propositionskalkyl. Uppgift. Ange de Morgans lagar med hjälp av propositionskalkyl. Alla lagar i boolesk algebra följer ur postulaten (P ) (P 8). Lagarna kan visas och härledas, antingen genom att undersöka de ingående uttryckens värden för samtliga kombinationer av variabelvärden med hjälp av en sanningstabell, och konstaterande av ekvivalens (sk. perfekt induktion), eller genom algebraisk härledning och användning av redan bevisade lagar.
4 KAPITEL. KLASSISK LOGIK OCH BOOLESK ALGEBRA Vi skall illustrera procedurerna med exempel: Uppgift.2 Visa a) de Morgans lagar b) transivitetslagen (R8).4 Något om implementeringen av logiska funktioner C.E. Shannon visade år 938 (i sitt diplomarbete) att boolesk algebra kan användas för att beskriva funktionen hos vissa elektriska och elektroniska kretsar, t.ex. de som används i telefonväxlar. Omvänt kan varje logisk samband som kan beskrivas med boolesk algebra implementeras elektroniskt. Låt tillståndet hos en kontakt representera en variabel x, så att x = x = 0 då kontakten är sluten då kontakten är öppen och låt en spänningsnivå representera en variabel z, enligt z = då spänningen är hög (typiskt 2.4 5.5V ) z = 0 då spänningen är låg (typiskt 0 0.4V ) 5.5V 2.4V z = 0.4V 0 z = 0 Operationerna i den booleska algebran kan då implementeras med hjälp av s.k. logiska grindar. T.ex. x y z = xy (AND) x z = x + y (OR) y I praktiken är den elektroniska realiseringen av olika grindtyper betydligt mer komplicerad. Tabell. ger en sammanfattning av symbolerna för de enkla logiska grindarna.
.4. NÅGOT OM IMPLEMENTERINGEN AV LOGISKA FUNKTIONER 5 Tabell.: Symbolerna för de logiska grindarna (Källa: Sten Gustafsson) Grind Funktion IEC symbol Amerikansk symbol Buffert X = A A X A X Inverterare X = A A X A X OCH X = A. B A B & X A B X NAND X = A. B A B & X A B X ELLER X = A + B A B > X A B X NOR X = A + B A B > X A B X XOR X = A + B A B = X A B X Förutom symbolerna i tabell. anges invertering av insignalen symboliskt, t.ex.: x = A B: A & B x A B & x x = A + B: A B x A B x De enkla logiska grindarna kan användas för implementering av allmänna logiska funktioner, och kan således utnyttjas för processtyrningsproblem. Uppgift.3 Planera ett nät som med hjälp av logiska grindar realiserar den logiska funktionen x = + AC
6 KAPITEL. KLASSISK LOGIK OCH BOOLESK ALGEBRA Det är lätt att inse att de logiska grindarna också kan implementeras mekaniskt, hydrauliskt eller pneumatiskt. I den sistnämnda representeras variablerna av ventillägen (öppen/stängd) samt tryck (högt/lågt). Dessa metoder finns närmare beskrivna i speciallitteraturen. Figur.: Exempel på mekaniska logiska grindar Figur.2: Exempel på pneumatiska logiska grindar I praktiken implementeras åtminstone enklare logiska styrproblem ofta elektroniskt med hjälp av logiska grindar som baserar sig på halvledarteknik, vilken ersatt tidigare reläteknik. I omgivningar där elektroniska komponenter är olämpliga, t.ex. p.g.a. explosionsfara, används även pneumatiska logiska grindar. Mera komplicerade logikstyrningsproblem implementeras nuförtiden med hjälp av s.k. programmerbar logik. Dessa är små, billiga datorer speciellt konstruerade för sekvensstyrningsproblem i industriell miljö. Också vanliga mikrodatorer används. Realiseringen av sekvensstyrningsproblem med hjälp av programmerbara datorer tas upp i kapitel 4.
Kapitel 2 Booleska funktioner 2. Disjunktiv och konjunktiv normalform Låt x,..., x n vara booleska variabler. En boolesk funktion f(x,..., x n ) är då en funktion av variablerna x,..., x n som antar något av värdena 0 eller. Funktionen kan beskrivas fullständigt med en funktionstabell, i vilken funktionens värde anges för alla de olika kombinationer av variabelvärden. Följande exempel illustrerar hur funktionstabellen på ett helt naturligt sätt kan konstrueras på basen av specifikationerna för ett logikstyrningsproblem. Exempel 2. Funktionstabell Betrakta en konsol som styr en maskin. Maskinen kan startas och stoppas med en ON/OFF switch. Dessutom finns en nyckel utan vilken konsolen ej kan opereras. Styrsystemet har följande insignaler: A representerar ON/OFF switchen: A =, om switchen befinner sig i ON läget A = 0, om switchen befinner sig i OFF läget B representerar låset: B =, om nyckeln är i B = 0, om nyckeln inte är i C representerar maskinen: C =, om maskinen går C = 0, om maskinen står Utsignalen X från styrsystemet skall styra maskinen: X = anger att maskinen skall gå, X = 0 anger att maskinen skall stanna eller stå. Utsignalen X skall vara definierad för varje tänkbar kombination av insignalerna A,B och C. Detta kan sammanfattas i nedanstående funktionstabell. Observera att man kan ta bort nyckeln utan att motorn stängs av, men att ON/OFF switchen då slutar fungera. Funktionstabell Minterm Maxterm A B C X p i p i 0 0 0 0 A B C A + B + C 0 0 A BC A + B + C 0 0 0 C A + B + C 0 0 C A + B + C 0 0 0 C A + B + C 0 C A + B + C 0 C A + B + C C A + B + C 7
8 KAPITEL 2. BOOLESKA FUNKTIONER Funktionstabellen definierar X som en boolesk funktion X(A, B, C). Oberoende av sättet på vilket logikstyrningsproblemet realiseras bör den booleska funktionen X = X(A, B, C) uttryckas i form av ett explicit booleskt uttryck i variablerna A, B och C. Vi söker alltså ett funktionsuttryck som antar de värden som kolumnen för X anger för de olika variabelkombinationerna. Ett sådant kan enkelt konstrueras på följande sätt. För givna värden på variablerna A, B och C så finns enbart en term p i bestående av produkten av alla variabler (med eller utan icke) som tar värdet (nämligen det som finns angivet i motsvarande rad i tabellen), medan de övriga är 0. Vi kan ta en p i för varje situation vid vilken X skall bli, och uttrycka X som summan dessa termer (jmf. tabellen) X = A BC + C + C + C I uttrycket ovan kallas A BC, osv., termer, och uttrycket för X är ett exempel på disjunktiv form (summa av produkter). En disjunktiv form där varje variabel förekommer i varje term kallas disjunktiv normalform. En term där varje variabel förekommer kallas minterm (minimalpolynom, elementarprodukt). Termerna p i i tabellen är mintermer. Vi kan även konstruera termer p i som för givna värden på variablerna A, B och C är den enda summan av alla variabler (med eller utan icke) som är 0. Man kan på motsvarande sätt välja alla termer p i som motsvaras av variabelvärden för vilka X skall vara noll, och uttrycka X som produkten av dessa. I det här fallet fås X = (A + B + C) (A + B + C) (A + B + C) (A + B + C) Detta uttryck är ett exempel på konjunktiv form (produkt av summor). Faktorerna i en konjunktiv form kallas altermer. En konjunktiv form i vilken varje variabel förekommer i varje alterm kallas konjunktiv normalform. Altermerna i en konjunktiv normalform kallas maxtermer (maximalpolynom, elementarsummor). Termerna p i i tabellen är maxtermer. Ur konstruktionerna ovan är det uppenbart att vilken som helst boolesk funktion kan beskrivas med ett uttryck i disjunktiv form, eller alternativt ett uttryck i konjunktiv form (Shannons expansionsteorem). Dessa uttryck kan konstrueras direkt på basen av funktionstabellen. Detta resultat visar också att en godtycklig boolesk funktion alltid kan uttryckas med hjälp av ett algebraiskt uttryck i den booleska algebran, vilket inte är helt självklart på förhand. 2.2 Förenkling av booleska uttryck Då ett logikstyrningsproblem karakteriseras med hjälp av en eller flera booleska funktioner blir de erhållna booleska funktionsuttrycken ofta onödigt komplicerade. För att kunna realisera en funktion möjligast enkelt (minsta antalet logiska grindar, eller minsta antalet programsteg) är det av vikt att kunna förenkla booleska uttryck. Förenklingen kan alltid göras algebraiskt, genom att använda den booleska algebrans räknelagar. Uppgift 2. Hur många logiska grindar behövs att realisera den booleska funktionen i exempel 2.? Uppgift 2.2 Förenkla uttrycket x = (A + B)(B + C)(C + A)(C + A B C) Den algebraiska metoden har åtminstone följande nackdelar:. Klar systematik saknas 2. Metoden besvärlig i synnerhet då variablernas antal ökar 3. Metoden ger ingen garanti för att det uttryck som erhålls faktiskt är det enklaste, och ej kan förenklas vidare. Det har utvecklats systematiska metoder för förenkling av booleska funktionsuttryck, med vilka förenklingen kan göras effektivare, och vilka producerar det enklast möjliga uttrycken.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 9 2.2. Karnaugh-diagram En standard procedur för förenkling av booleska funktioner baserar sig egenskaperna hos s.k. Karnaughdiagram. I dessa anges funktionsvärdena i rutor i ett diagram. Varje ruta motsvarar en kombination av variabelvärden. Nedan ges exempel på Karnaugh-diagram (utan insatta funktionsvärden) för två, tre, fyra och fem variabler. Två variabler: Tre variabler: A 0 00 0 0 B 0 C 0 Fyra variabler: Fem variabler: C 00 0 0 000 00 0 00 00 0 0 00 00 CD 0 DE 0 0 0 Karnaugh-diagrammen är så konstruerade, att variabelvärdena för två avgränsande (närbelägna, adjacenta) rutor skiljer sig i en och endast en variabel. Omvänt skall två variabelkombinationer som skiljer sig i exakt en variabel finnas i närbelägna rutor. Härvid uppfattas radernas och kolumnernas ändrutor som angränsande. Diagrammet för fem variabler kan uppfattas som tredimensionell, så att den högra delen av diagrammet ligger bakom den vänstra. Förenklingen av booleska funktioner med hjälp av Karnaugh-diagram baserar sig på ovannämnda egenskaper hos närbelägna rutor, vilket illustreras av följande exempel. Exempel 2.2 Karnaugh-diagram Betrakta den booleska funktionen X = A BC + C + C + C från exempel 2.. Karnaugh-diagrammet får följande utseende (med endast ettorna insatta): 00 0 0 C 0 X = + BC Tack vare diagrammets konstruktion kan förenklingarna C + C = A BC + C = BC upptäckas direkt från diagrammet. Man ser ytterligare att förenklingen C + C = AC kan göras men detta leder ej till ett lika enkelt uttryck för X.
20 KAPITEL 2. BOOLESKA FUNKTIONER 00 0 0 C 0 X = A BC + C + AC Man kan formulera fem regler för förenklingsproceduren:. Varje ruta som inehåller en etta måste täckas av minst en cell (en ruta får täckas av flera celler). 2. Endast rutor med ettor får täckas av celler. 3. Cellerna måste vara rektangulära, och täcka en potens av 2 (, 2, 4, 8,...) antal rutor. 4. Antalet celler bör vara så litet som möjligt 5. Varje cell bör vara så stor som möjligt Av dessa är reglerna -3 ovillkorliga medan 4-5 strävar till att hitta den enklaste realisationen. Det faktum att man får täcka ettor med flera olika celler innebär i ovanstående exempel att användande av alla tre möjliga celler som täcker två rutor ger X = + BC + AC. Detta kan i sin tur förenklas till + BC, m.h.a. transivitetslagen (R8). Om vi följer regel 4 så kommer man direkt till detta uttryck Förenkling av booleska uttryck med hjälp av Karnaugh-diagram grundar sig således på att mintermer som kan kombineras till enklare termer upptar närbelägna rutor i diagrammet. Förenklingarna kan därmed ses direkt från diagrammet. För fyra variabler har vi fyra typer av termer:. Mintermer med alla fyra variabler, som täcker en ruta, och som ej kan kombineras med andra termer: 00 0 0 00 CD 0 CD 0 2. Termer med tre variabler, som täcker två rutor (två skilda exempel): 00 0 0 00 0 0 00 00 CD 0 CD 0 0 0 BCD B CD 3. Termer med två variabler, som täcker fyra rutor (tre skilda exempel):
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 2 00 0 0 00 0 0 00 0 0 00 00 00 CD 0 CD 0 CD 0 0 0 0 CD AD B D 4. Termer med en variabel, som täcker åtta rutor (två skilda exempel): 00 0 0 00 0 0 00 00 CD 0 CD 0 0 0 D D Karnaugh-diagrammen lämpar sig bäst för funktioner med högst fyra variabler. Det går emellertid att använda metoden även för funktioner med upp till åtta variabler. Exempel 2.3 Fem variabler C 000 00 0 00 00 0 0 00 DE 0 C + D 0 Exempel 2.4 Sex variabler CD 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 EF + BCDE F + A BCDE F + AC D EF + AC DEF + ACDE
22 KAPITEL 2. BOOLESKA FUNKTIONER Primimplikatorer En funktion f(x, x 2,..., x n ) säges inkludera en annan funktion g(x, x 2,..., x n ) om de värden för variablerna x, x 2,..., x n för vilka g =, också ger f =. Således inkluderar f t.ex. termerna i ett disjunktivt uttryck för f. En primimplikator π för en funktion f(x, x 2,..., x n ) definieras som en term i ett disjunktivt uttryck för f som har den egenskapen, att om någon av de i termen ingående variablerna avlägsnas, så inkluderar f inte den återstående produkten. Exempel 2.5 har primimplikatorerna f(x, x 2, x 3, x 4 ) = x x 2 x 4 + x 2 x 3 x 4 + x x 3 x 4 Obs. att x x 3 x 4 är inte en primimplikator. π = x x 2 x 4, π 2 = x 2 x 3 x 4, π 3 = x x 3 00 0 x 3 x 4 0 x x 2 00 0 0 Vid förenkling av en boolesk funktion är man i första hand intresserad av att uttrycka funktionen som en summa av primimplikatorer, ty man kan visa att detta resulterar i det i en viss mening enklaste uttrycket. I praktiken så skall man just följa reglerna 4 och 5 givna ovan, d.v.s. vi bör försöka täcka ettorna med möjligast få och möjligast stora celler. Och typiskt så är antalet viktigare än storleken vid minimiering av uttryck. Utvecklingen av en funktion i primimplikatorer behöver inte vara entydig. En väsentlig (essential) primimplikator är en primimplikator som alltid bör ingå i varje minimalform. En väsentlig primimplikator kännetecknas i ett Karnaugh-diagram av att den inkluderar åtminstone en ruta som ej kan ingå i någon annan primimplikator. Det är viktigt att man börjar med att ringa alla väsentliga primimplikatorer för att det minimala uttrycket skall erhållas. Exempel 2.6 anger rutor som definierar en väsentlig primimplikator. C + ACD + C + ACD CD 00 0 0 00 0 0 Notera att vi enbart introducerar en term till (BD) om vi introducerar den största möjliga cellen i det här fallet.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 23 Uppgift 2.3 Bestäm de väsentliga primimplikatorerna och den minimala formen för funktionen i diagrammet nedan. Tillåtet att lösa denna uppgift i kompendiet. CD 00 0 0 00 0 0 Sedan de väsentliga primimplikatorerna uttagits, kan de återstående oinringade rutorna med ettor inkluderas av primimplikatorer på ett antal alternativa sätt. Dessa skall väljas så att möjligast enkla termer fås. Exempel 2.7 Flera minimala uttryck CD 00 0 0 00 0 0 Väsentliga primimplikatorer: BD, A B D Termen C D kan inkluderas antingen i A C D eller i C (icke-väsentliga primimplikatorer). Detta ger två alternativa minimala uttryck: eller Ofullständigt specificerade funktioner BD + A B D + A C D BD + A B D + C De booleska funktioner som uppträder i praktiska logikstyrningsproblem är ofta ofullständigt specificerade, dvs. funktionens värde för vissa kombinationer av variabelvärden är likgiltig. Vissa kombinationer av variabelvärden kan t.ex. vara fysikaliskt omöjliga (jmf. Ex..), så att de aldrig förekommer. Funktionsvärdet för dessa omöjliga variabelkombinationer är då likgiltigt. Sådana likgiltiga funktionsvärden kallas don t care tillstånd. I ett Karnaugh-diagram anges de med ett streck,, och anger således att funktionsvärdet kan vara 0 eller. Detta kan utnyttjas för att konstruera ett möjligast enkelt funktionsuttryck. Exempel 2.8 Don t care tillstånden kan utnyttjas så att funktionen kan uttryckas i den minimala formen BD + AD + D CD 00 0 0 00 0 0 - - - - - -
24 KAPITEL 2. BOOLESKA FUNKTIONER 2.2.2 QMC-metoden Den grafiska metoden med Karnaugh-diagram blir givetvis oanvändbar då antalet variabler ökar. För större problem fordras algoritmer som kan programmeras. Den vanligaste algoritmen för förenkling av booleska funktioner är en metod enligt Quine och McClusky (QMC-metoden), som skall beskrivas nedan. Vi börjar med att numrera funktionstabellens rader i enlighet med det binära talsystemet. För tre variabler identifierar vi således de olika variabelkombinationerna enligt följande tabell. j A B C 0 0 0 0 0 0 2 0 0 3 0 4 0 0 5 0 6 0 7 (2 2 2 2 0 ) Proceduren är sedan följande. Först uppställs en funktionstabell med endast de rader för vilka funktionen antar värdet insatta. En funktion med Karnaugh-diagrammet nedan får således funktionstabellen i Tab. 2.. CD 00 0 0 00 0 0 Nästa steg är att undersöka vilka rader i tabellen som kan kombineras till en enklare term. Detta är möjligt då två rader överensstämmer så när som i en variabel. Raderna 0 och 2 i Tab. 2.(a) kombineras t.ex. till den nya raden 0 0 0 (Detta motsvarar kombination av termer enligt A B C D + A BCD = A B D) De på detta sätt konstruerade nya raderna samlas till en ny tabell, Tab. 2.(b). Proceduren upprepas tills ytterligare kombinationer inte mera kan göras i Tab. 2.(c). De termer som i denna procedur inte mera kan förenklas är primimplikatorer. Dessa har i Tabell 2. betecknats p, p 2,..., p 7. Såsom vi tidigare sett, ger en disjunktion av primimplikatorerna i allmänhet ej ett minimalt funktionsuttryck, eftersom alla primimplikatorer inte behöver medtas. För att finna vilka primimplikatorer som bör medtas uppgörs en primimplikatortabell, Tabell 2.2. I denna anger kolumnerna den ursprungliga funktionstabellens termer (Tab. 2. (a)), och raderna anger primimplikatorer. De termer som inkluderas av en primimplikator anges med x. Proceduren är sedan följande.. De kryss som förekommer ensamma i en kolumn omringas ( x ). Motsvarande primimplikator är en väsentlig primimplikator och bör medtas i funktionsuttrycket. De väsentliga primimplikatorerna anges med asterisk. 2. Alla kryss som förekommer i en rad med omringat x anges med klammer, [x]. 3. Ange alla de kryss som förekommer i en kolumn med [x] med parentes, (x). Detta anger att motsvarande term redan ingår i de primimplikatorer som medtagits och inte behöver beaktas i fortsättningen.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 25 Tabell 2.: Stegvis förenkling (a) (b) (c) {j} A B C D 0, 2 0 0-0 0, 8-0 0 0 2, 3 0 0 - p 2, 0-0 0 3, 7 0 - p 2 5, 7 0 - p 3 5, 3-0 p 4 8, 0 0-0 8, 2-0 0 0, 4-0 2, 3 0 - p 5 2, 4-0 j A B C D 0 0 0 0 0 2 0 0 0 3 0 0 5 0 0 7 0 8 0 0 0 0 0 0 2 0 0 3 0 4 0 {j} A B C D 0, 2, 8, 0-0 - 0 p 6 8, 0, 2, 4 - - 0 p 7 4. Välj från de återstående valbara primimplikatorerna (p p 5 ) ett antal så att de återstående kryssen medtas. Ange raderna med dubbel asterisk. Valet skall göras så att funktionsuttrycket blir minimalt, dvs. Antalet termer (primimplikatorer) är minimalt, Termerna (primimplikatorerna) är korta (av två primimplikatorer i tabellen är den vars rad innehåller de flesta kryssen den kortare). Tabell 2.2: Primimplikatortabell j 0 2 3 5 7 8 0 2 3 4 p (x) x p 2 x x p 3 x x p 4 x x p 5 (x) x p 6 x [x] [x] [x] p 7 [x] [x] [x] x I Tabell 2.2 är de valbara primimplikatorerna p p 5 alla lika långa. Det optimala valet är p 2 och p 4, ty alla andra val skulle kräva minst tre primimplikatorer. Enligt Tabell 2.2 ges det minimala funktionsuttrycket som en disjunktion av primimplikatorerna p 2, p 4, p 6 och p 7, av vilka p 6 och p 7 är väsentliga primimplikatorer. Uttrycket blir (jmf. Tab. 2.) B D + AD + ACD + BCD I exemplet i Tabell 2. var funktionen fullständigt specificerad. Proceduren kan emellertid enkelt anpassas för ofullständigt specificerade funktioner, med don t care funktionsvärden för vissa variabelkombinationer. Härvid inkluderar man de rader för vilka funktionsvärdet är ospecificerat ( don t care ) i funktionstabellen (Tab. 2.), och bildar primimplikatorerna såsom ovan. Vid uppställningen av primimplikatortabellen (Tab. 2.), lämnas emellertid motsvarande kolumner bort. (Då funktionens värde för dessa tillstånd inte spelar någon roll, behöver de ju ej beaktas då primimplikatorerna väljs ut. Däremot bör de beaktas i det första skedet då primimplikatorerna bildas, ty de kan endast leda till kortare primimplikatorer, ej längre.) Denna procedur leder till ett minimalt funktionsuttryck för ofullständigt specificerade funktioner.
26 KAPITEL 2. BOOLESKA FUNKTIONER Uppgift 2.4 Förenkla den logiska funktionen X med följande Karnoughdiagram (- motsvar don t care tillstånd): C 0 00 0 0 - - QMC-metoden kan enkelt programmeras. I Friedman Logical Design of Automation Systems (Prentice Hall, 990), ges ett Fortran-program primp, som förenklar booleska uttryck. På denna kurs hemsida så finns även en Matlab-implementering av QMC-metoden tillgänglig, och en Scilab-version är också under arbete. Nedan visas en exempelkörning där programmet tillämpats för funktionen i Tabell 2. (a). Funktionsvärdena läses in i ordningsföljd, och programmet ger en förteckning över primimplikatorerna (observera att numreringen ej överensstämmer med den i Tabellerna 2. och 2.2, primp sorterar primimplikatorerna, så de kommer i ordningen p 6, p, p 2, p 4, p 3, p 7, p 5 ), samt anger vilka som är väsentliga och vilka som väljs bland de valbara. I constraint table anges slutligen vilka mintermer de olika icke-väsentliga primimplikatorerna inkluderar (täcker). % ~jboling/sst/primp SIMPLIFICATION OF BOOLEN FUNCTIONS BY PRIME IMPLICANT ANALYSIS ************************************************************** NUMBER OF VARILES : 4 INPUT FUNCTION VALUES IN TRUTH TLE ( 6 VALUES: = TRUE / 0 = FALSE / - = DON T CARE ) : 0 0 0 0 0 0 *** BOOLEAN MINIMIZATION PROGRAM *** THIS FUNCTION CONTAINS 4 VARILES A LISTING OF THE INPUT DATA FOLLOWS TRUE MINTERMS = FALSE MINTERMS = 0 REDUNDANT MINTERMS (DON T CARES) = - 0 0 =, = 0, 2 =, 3 =, 4 = 0, 5 =, 6 = 0, 7 =, 8 =, 9 = 0, 0 =, = 0, 2 =, 3 =, 4 =, 5 = 0, 0 THE FOLLOWING IS A LIST OF THE PRIME IMPLICANTS OF THE MINIMIZED FUNCTION. ESSENTIAL PRIME IMPLICANTS ARE SO LELED, AND PRIME IMPLICANTS SELECTED FROM A CYCLIC CHART ARE LELED AS CHOSEN.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 27 NO. COST PRIME IMPLICANTS A B C D 2-0 - 0 ESSENTIAL 2 3 0 0-3 3 0 - CHOSEN 4 3-0 CHOSEN 5 3 0-6 2 - - 0 ESSENTIAL 7 3 0 - - INDICATES A MISSING VARILE, 0 INDICATES A COMPLEMENTED VARILE AND INDICATES A TRUE VARILE. THE FUNCTION IS REPRESENTED BY THE SUM OF BOTH THE ESSENTIAL AND THE CHOSEN PRIME IMPLICANTS. CONSTRAINT TLE ------------------ COVERED COVERING PRIME MINTERM IMPLICANTS. 3 2 3 5 4 5 7 3 5 3 4 7 Samma problem kan också lösas med matlab-rutinen qmc, hittas alltså på kursens hemsida: >> qmc Program for minimizing Boolean expressions with the QMC-method Either a truth table or a boolean expression should be given. Use standard MATL logical operators: AND = & OR = NOT = ~ Logical terms should be separated with parentesis: (A ~B) & (B ~C) & (C ~A) & ((A & B & C) (~A & ~B & ~C)) Logical expression (L) or truth table (T)): T Number of variables: 4 A B C D 0: 0 0 0 0 : 0 0 0 0 2: 0 0 0 3: 0 0 4: 0 0 0 0 5: 0 0 6: 0 0 0 7: 0 8: 0 0 0 9: 0 0 0 0: 0 0 : 0 0 2: 0 0 3: 0 4: 0 5: 0 Processing...
28 KAPITEL 2. BOOLESKA FUNKTIONER Truth table: i A B C D f ---------------- 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 4 0 0 0 0 5 0 0 6 0 0 0 7 0 8 0 0 0 9 0 0 0 0 0 0 0 0 2 0 0 3 0 4 0 5 0 Prime implicants: : 0 2 8 0 2: 8 0 2 4 3: 2 3 - - 4: 3 7 - - 5: 5 7 - - 6: 5 3 - - 7: 2 3 - - Essential prime implicants: 2 Chosen prime implicants: 4 6 Logical expression: (~B & ~D) (A & ~D) (~A & C & D) (B & ~C & D) Matlab-programmet klarar också av att förenkla logiska uttryck, det generar själv en sanningstabell och sedan beräknar minimalt uttryck. Nedan löses uppgift 2.2. >>qmc Program for minimizing Boolean expressions with the QMC-method Either a truth table or a boolean expression should be given. Use standard MATL logical operators: AND = & OR = NOT = ~ Logical terms should be separated with parentesis: (A ~B) & (B ~C) & (C ~A) & ((A & B & C) (~A & ~B & ~C)) Logical expression (L) or truth table (T)): L Give logical function: (A ~B)&(B ~C)&(C ~A)&((A&B&C) (~A&~B&~C)) Processing...
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 29 Truth table: i A B C f ------------- 0 0 0 0 0 0 0 2 0 0 0 3 0 0 4 0 0 0 5 0 0 6 0 0 7 Prime implicants: : 0 2: 7 Essential prime implicants: 2 Logical expression: (~A & ~B & ~C) (A & B & C) 2.2.3 System med flera utsignaler I praktiken har man ofta inte en, utan flera funktioner x, x 2,..., x n, som är funktioner av variablerna A, B,.... I sådana fall kan man givetvis konstruera ett minimalt uttryck för varje funktion separat enligt metoderna som behandlats ovan. En förenkling kan emellertid fås om man beaktar att vissa termer kan vara gemensamma för de olika funktionerna. Sådana termer som delas av flera funktioner fås fram genom att betrakta produkter av formen x x 2, x x 3, x x 2 x 3,.... Vi skall illustrera proceduren med ett exempel. Exempel 2.9 Flera utsignaler Betrakta funktionerna x, x 2 och x 3 med Karnaugh-diagrammen i Fig 2.. I Fig 3.5 ges Karnaughdiagrammen för x, x 2 och x 3 samt produktfunktionerna x x 2, x x 3, x 2 x 3 och x x 2 x 3. Primimplikatorerna införs nu som normalt men så att man startar med produkten av högsta grad, x x 2 x 3, fortsätter med x x 2, x x 3 och x 2 x 3, och därefter betraktar x, x 2 och x 3. Härvid markeras en primimplikator inte om den redan förekommer i en produktfunktion av högre grad. 00 0 0 00 0 0 00 0 0 00 00 00 CD 0 CD 0 CD 0 0 0 0 Proceduren ger primimplikatorer i Tab. 2.3. x x 2 x 3 Figur 2.: Utsignalerna x, x 2 och x 3
30 KAPITEL 2. BOOLESKA FUNKTIONER 00 0 0 00 0 0 00 0 0 00 00 00 CD 0 CD 0 CD 0 0 0 0 x x 2 x 3 00 0 0 00 0 0 00 0 0 00 0 0 00 00 00 00 CD 0 CD 0 CD 0 CD 0 0 0 0 0 x x 2 x x 3 x 2 x 3 x x 2 x 3 Figur 2.2: Förenkling av x, x 2 och x 3 Tabell 2.3: Primimplikatorer x x 2 x 3 : p = C x x 3 : p 2 = C D p 3 = BCD x x 2 : p 4 = C D p 5 = CD x 3 : p 6 = A BD p 7 = BC x 2 : p 8 = C p 9 = BCD x p 0 = BC D p = C Eftersom termen p = C kan användas i alla tre funktioner bör den medtas. Termerna p 2 p 5 uppträder i två funktioner och är således lovande kandidater för att medtas. Primimplikatorn p 6 hos x 3 är väsentlig och bör medtas. Termen p 7 inkluderas däremot av p, p 3 och p 6. Alltså medtas även p 3. Även p 2 måste medtas för att funktionen x 3 skall kunna beskrivas. Återstår de fyra rutor som täcks av termerna p 4, p 5, p 8, p 9, p 0 och p. Från figuren ses att minst tre termer bör medtas: antingen p 4, p 9 och p, eller p 5, p 8 och p 0. Detta resulterar i de minimala formerna x = C + BCD + C D + C x 2 = C + C D + BCD x 3 = C + C D + BCD + A BD respektive x = C + BCD + CD + BC D x 2 = C + CD + C x 3 = C + C D + BCD + A BD Uppgift 2.5 Konstruera ett nät som med hjälp av logiska grindar realiserar funktionerna x, x 2 och x 3. Man kan även förenkla logiska uttryck med flera utsignaler med QMC-metoden. Man börjar med att söka efter primimplikatorer som vanligt, fast man skall göra det för samtliga utsignaler och samtliga kombinationer av produkter av utsignaler. Varje kombination betraktas som separat fall, med separata primimplikatorer. I exempel 2.9 innebär det att man skall bestämma primimplikatorer för alla 7 Karnough-diagram. Det har vi i praktiken redan gjort, så låt oss gå till följande steg, som är att bilda en primimplikatortabell, som ser ut enligt följande: Sedan skall följande steg utföras:
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 3 Tabell 2.4: Primimplikatortabell x x 2 x 3 2 4 0 2 3 4 5 0 3 2 3 0 2 p x x p 3 x x x p 0 x x p x x p x x p 8 x x x 2 p 9 x x p x x p 2 p 6 x x x 3 p 7 x x x x p x x x x p 4 x x x x 2 p 5 x x p x x x x p 2 x x x x 3 p 3 x x x x p x x x x x x x x 2 x 3 x. De kryss som är ensamma i en kolumn skall inringas x, de motsvarar en väsentlig primimplikator. Märk motsvarande rader med asterisk. 2. Kontrollera även väsentliga primimplikatorer för de enskilda utsignalerna. Om de övriga kryssen i samma kolumn kommer från samma primimplikator, så är denna primimplikator oundviklig, och krysset skall inringas (på den plats där det förekommer längst ner). Märk även dessa rader med asterisk. Övriga kryss i kolumnen anges med parentes. 3. Alla rader där inringat kryss förekommer skall anges med klammer [x]. 4. Ange alla de kryss som förekommer i en kolumn med [x] med parentes, (x). Detta anger att motsvarande term redan ingår i de primimplikatorer som medtagits och inte behöver beaktas i fortsättningen. 5. Välj från de återstående valbara primimplikatorerna ett antal så att de återstående kryssen medtas. Märk raderna med dubbel asterisk. Valet skall göras så att funktionsuttrycket blir minimalt. 6. Funktionerna konstrueras genom att ta summan av de för varje enskild funktion väsentliga, oundvikliga och valda primimplikatorer. Dvs man tittar på en kolumn åt gången och tar alla primimplikatorer som har kryss med ring runt, eller som är vald. De primimplikatorer som har kryss med enbart klamrar behövs eventellt inte, detta måste skilt kontrolleras. I exemplet ovan så är p 2 oundviklig för x 3, men ej för x (därför att p 2 täcks av p 0 eller p som är valbara för x ), och den behöver således enbart medtas i x 3. Vi kommer givetvis till samma resultat som i exempel 2.9 på detta sätt. Då vi gör ovannämnda procedur så kommer vi att, som tidigare, se att p 6 är en väsentlig primimplikator. Det som inte tidigare framgick är att p, p 2 och p 3 är oundvikliga för en disjunktiv form, vilket nu inses via punkt 2 i proceduren ovan. 2.2.4 Konjunktiv minimalform De minimala uttryck som studerats ovan är disjunktiva minimalformer (summor av produkter). Det är ofta av vikt att också undersöka den konjunktiva minimalformen (produkt av summor). Enligt de Morgans lag (R2) kan ett konjunktivt uttryck för en funktion x uttryckas med hjälp av ett disjunktivt uttryck för x. Den konjunktiva minimalformen kan således bestämmas genom att bestämma den disjunktiva normalformen för x.
32 KAPITEL 2. BOOLESKA FUNKTIONER Exempel 2.0 Betrakta en funktion X med följande Karnaugh-diagram. CD 00 0 0 00 0 0 Den minimala disjunktiva formen är För X fås ett minimalt uttryck enligt följande. X = BD + BC + AD + AC CD 00 0 0 00 0 0 0 0 0 0 0 0 0 Disjunktiv minimalform för X: X = A B + CD Den konjunktiva minimalformen för X fås med hjälp av de Morgans lagar (R2), (R20) : X = A B + CD = A B CD = (A + B) (C + D) I detta exempel leder den konjunktiva minimalformen till ett enklare uttryck än den disjunktiva. Man kan även bestämma den konjuktiva minimalformen med QMC-metoden. Man skall då ställa upp funktionstabellen med endast de rader för vilka funktionen antar värdet 0 (i stället för ), övriga steg oförändrade. Detta ger på samma sätt som med Karnough-diagram en disjunktiv minimalform för X, som kan omvandlas till konjunktiv minimalform för X med de Morgans lagar. Vid användning av programmet primp eller qmc så skall man ta logisk icke på varje enskilt funktionsvärde, så beräknar programmet disjunktiv minimalform för X, som kan omvandlas till konjunktiv minimalform för X. Man kan även se att man från Karnoughdiagram eller QMC-primimplikatorer direkt kan utläsa den konjunktiva minimalformen. Man skall göra som när man utläser den disjunktiva normalformen, men byta ut + mot och vise versa (och sätta parenteser där det behövs, för + skall ju ske före ), samt ta logiskt icke på alla enskilda variabler. Detta är analogt med hur konjunktiv normalform bestämdes i kapitel 2.. För att det minimala uttrycket skall hittas bör såväl den disjunktiva som den konjunktiva minimalformen undersökas. Observera att för programmering av uttrycken kan det totala antalet operationer (additioner och multiplikationer) ofta ytterligare minskas genom distributionslagarna (R4), (R5). T.ex. X = BD + BC + AD + AC = B (D + C) + A (D + C) = (A + B) (D + C) I detta fall råkade detta leda till den konjunktiva minimalformen. Detta gäller dock ej allmänt.
2.3. KOMBINATORISKA AUTOMATIONSPROBLEM 33 2.3 Kombinatoriska automationsproblem I ett kombinatoriskt automationsproblem bestäms utsignalerna från styrsystemet som booleska funktioner av insignalerna. u u 2. u n Insignaler (från process). Utsignaler (till process) y y 2 y n Jämför Ex. 2.. De booleska funktionerna följer ur specifikationerna och kan sammanfattas i form av en funktionstabell. De i avsnitt 2.2 diskuterade metoderna kan sedan tillämpas för att vid behov förenkla de booleska uttrycken. Hasard Då ett kombinatoriskt automationsproblem realiseras med hjälp av logiska grindar bör man beakta eventuell förekomst av sk. statisk hasard, och konstruera nätet så att det är hasardfritt. Problemet illustreras av följande exempel. Exempel 2. Betrakta en funktion X med Karnaugh-diagrammet nedan. C 0 00 0 0 Funktionen har två väsentliga primimplikatorer vilka ger den disjunktiva minimala formen X = AC + Funktionen kan tydligen realiseras med hjälp av två AND- och en OR-grind: A B & & X C AC Betrakta nu vad som händer då insignalerna ändras från 0 till : C 0 00 0 0
34 KAPITEL 2. BOOLESKA FUNKTIONER Funktionen X har fortfarande värdet och ändras således ej. I praktiken är emellertid två grindar aldrig exakt lika snabba. Om den nedre grinden i figuren är något snabbare än den övre, så är utsignalerna från AND-grindarna 0 under ett kort ögonblick efter att den nedre grindens utsignal ändrats från till 0, men innan den övre grindens utsignal ändrats från 0 till. Systemets utsignal ser då ut så här: X 0 t Detta oönskade beteende kallas statisk hasard. Statisk hasard kan undvikas genom att observera att hasard inte förekommer för variabelförändringar som sker inom en primimplikator som medtagits i realiseringen (t.ex. ändringen 00 till 0 förorsakar ej hasard för nätet ovan). Vi inkluderar därför lämpliga icke-väsentliga primimplikatorer för att undvika hasard: C 0 00 0 0 icke-väsentlig primimplikator X uttrycks nu i den icke-minimala formen X = AC + + BC Denna funktion kan realiseras med tre AND- och en OR-grind: A & B & X C & Denna realisering är hasardfri. Nuförtiden förverkligas logikstyrningsproblem oftast med hjälp av programmerbar logik eller mikrodatorer, i vilka de booleska funktionerna programmeras. Dessa fungerar så att utsignalerna ges nya värden först då hela programmet utförts, varefter cykeln upprepas, osv. Således uppstår problemet med statisk hasard inte vid implementering med hjälp av programmerbar logik resp. mikrodatorer.
Kapitel 3 Sekvensstyrningsproblem Vid kombinatoriska styrproblem av den typ som betraktades i avsnitt 2.3, och i Ex. 2., bestämdes utsignalerna från styrsystemet som booleska funktioner av insignalerna. För att förverkliga mera generella sekvensstyrningsproblem bör systemet också hålla reda på tillståndet som processen befinner sig i vid en given tidpunkt. Detta sker i praktiken genom att införa tillståndsvariabler {x i }, vilkas värden definierar systemets olika tillstånd. Styrsystemet kan schematiskt beskrivas med följande figur. Insignaler (från process) Utsignaler(till process) u y u 2 Logisk. y 2. funktion. u. n y m.. Nytt tillstånd Tillstånd..x x p x +,..., x+ p. Minne. Figur 3.: Styrsystem med minne Här är utsignalerna y,..., y m till processen och tillståndsvariablernas nya värden x +,..., x+ p (det nya tillståndet) booleska funktioner av insignalerna u,..., u n från processen samt tillståndsvariablerna x,..., x p (det tidigare tillståndet). De booleska funktionerna kan behandlas med de metoder som diskuterades i avsnitt 2. Det nya problemet som tillkommer vid sekvensstyrningsproblem är att definiera tillstånd och tillståndsvariabler samt att bestämma hur de nya värdena x +,..., x+ p skall bestämmas. Sekvensstyrningsproblem kan ytterligare indelas i deterministiska sekvensstyrningsproblem, där processen skall genomgå en på förhand bestämd sekvens (t.ex. fyllning och tömning av reaktor), och stokastista sekvensstyrningsproblem, där systemet skall funktionera rationellt för godtyckliga insignalsekvenser (jmf. Ex..). De stokastiska sekvensstyringsproblemen är i allmänhet besvärligare att behandla än de deterministiska. Vippor Medan kombinatoriska styrproblem kan realiseras enbart med hjälp av logiska grindar, fordrar sekventiella styrproblem dessutom element som håller reda på tillståndet, dvs. fungerar som minne. I elektroniken realiseras minnesfunktioner med hjälp av vippor (flip-flops). Den viktigaste typen av vippa är RS-vippan (Reset-Set) (även SR-vippa), vars symbol och sanningstabell ges i Fig. 3.2 Vippan fungerar alltså så, att för S = (Set) blir x =, för R = (Reset) blir x = 0, och för R = S = 0 förblir x vid sitt tidigare värde. Vippan fungerar alltså som en minnesfunktion, där värdet hos variabeln 35
36 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM S R S R S R x + 0 0 x 0 0 0 x x Figur 3.2: SR-vippa x anger vilkendera av signalerna S och R senast haft värdet. För insignalkombinationen R = S = är x ej definierad. Funktionen hos en RS-vippa kan beskrivas av ekvationen x + = (x + S) R (3.) Uppgift 3. Verifiera ekvation 3. på basen av sanningstabellen i Fig. 3.2. En RS-vippa kan realiseras i form av två återkopplade NOR-grindar (jmf. föreläsningarna i elektronik). Förutom RS-vippan används andra typer av vippor: JK-vippan, D-vippan och T-vippan är de vanligaste. Dessa skall dock ej behandlas här. 3. Syntes av sekventiella system Det existerar flera syntesmetoder med vilka styrsystem för sekventiella processer kan planeras. Den klassiska metoden i detta sammanhang är en syntesmetod först presenterad av Huffman år 954, och senare vidareutvecklad av andra. Huffmans metod är ursprungligen utvecklad för den situation då systemet skall realiseras med hjälp av logiska grindar och vippor. Proceduren ägnar därför stor uppmärksamhet vid att systemet skall kunna realiseras med så få vippor som möjligt, och vid att undvika sådana oönskade funktioner som beror på att de olika elementen reagerar olika snabbt, såsom (dynamisk) hasard och sk. kapplöpningar. Då man i praktiken nuförtiden vanligen implementerar sekvensstyrning med hjälp av datorer så är ovan nämnda aspekter av underordnad betydelse. Detta leder till en avsevärd förenkling av syntesproceduren. Vi skall här beskriva en förenklad version av Huffmans metod, som är lämpad för styrsystem som implementeras med dator. Exempel 3. Alarmsystem Alarmsignal Kvitteringsknapp u u 2 Styrsystem y y 2 Siren Alarmlampa För att illustrera syntesproceduren skall vi betrakta alarmsystemet enligt figuren. Systemet skall fungera på följande sätt. Då u =, vilket representerar en alarmsignal från processen, skall y =, vilket slår på alarmsiren. Operatören kan kvittera signalen med en kvitteringsknapp (u 2 ), så att en (momentan) signal u 2 = slår av sirenen (y = 0), som ersätts av en blinkande alarmlampa (y 2 = ). Lampan bör fortsätta att blinka så länge u =. Då u 0, skall y 2 = 0. Dessutom skall i det fall då den farliga situationen (u = ) försvinner av sig själv (u = 0), innan kvittering getts, sirenen fortsättningsvis vara på. Detta för att operatören skall tvingas observera att en farosituation förekommit. Vid kvittering i detta fall skall emellertid alarmlampan inte börja blinka.