SEKVENSSTYRNING

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 68

ÅBO AKADEMI

TEKNISKA DEPARTMENT OF
FAKULTETEN ENGINEERING
Laboratoriet för Process Control
reglerteknik Laboratory

SEKVENSSTYRNING

Hannu Toivonen
Jari Böling

April 2009

Biskopsgatan 8
FIN–20500 Åbo Finland
Innehåll

0 Inledning 5
0.1 Litteratur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1 Klassisk logik och boolesk algebra 9


1.1 Insignaler, utsignaler och tillstånd . . . . . . . . . . . . . . . 9
1.2 Propositionskalkyl . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Boolesk algebra . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Något om implementeringen av logiska funktioner . . . . . . 15

2 Booleska funktioner 19
2.1 Disjunktiv och konjunktiv normalform . . . . . . . . . . . . 19
2.2 Förenkling av booleska uttryck . . . . . . . . . . . . . . . . 20
2.2.1 Karnaugh-diagram . . . . . . . . . . . . . . . . . . . 22
2.2.2 QMC-metoden . . . . . . . . . . . . . . . . . . . . . 27
2.2.3 System med flera utsignaler . . . . . . . . . . . . . . 34
2.2.4 Konjunktiv minimalform . . . . . . . . . . . . . . . . 37
2.3 Kombinatoriska automationsproblem . . . . . . . . . . . . . 38

3 Sekvensstyrningsproblem 41
3.1 Syntes av sekventiella system . . . . . . . . . . . . . . . . . 42
3.2 Deterministiska sekvensstyrningsproblem . . . . . . . . . . . 49
3.3 Petri nät . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4 Programmerbar logik 61
4.1 Funktionssättet hos en PLC . . . . . . . . . . . . . . . . . . 63
4.2 Programmering av en PLC . . . . . . . . . . . . . . . . . . . 64
4.2.1 Låg-nivå programmeringsspråk (IL) . . . . . . . . . 64
4.2.2 Kontaktdiagram (LD) . . . . . . . . . . . . . . . . . 66
3
4 INNEHÅLL
Kapitel 0

Inledning

Det finns tre typer av regler- och styrproblem

1. Reglering och styrning av procesesser som kan beskrivas med hjälp av differential- eller differen-
sekvationer. Ingående variabler beskrivs av reella tal. T.ex. temperatur, spänning, position och
dylikt.

r u y
- - Gk - Gp -
+ 6
-

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 sekvensstyrning
är inriktad på fall 2.
Exempel på sekvensstyrningsproblem

• 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

5
6 KAPITEL 0. INLEDNING

• Vardagen

– Tjuvlarm
– Bankomater
– All slags elektronik
• Telefonväxlar

Angränsande områden:

• Digitalteknik och elektronik


• Datateknik: Realtidssystem

Denna kurs fokuserar på industriella sekvensstyrningsproblem och implementering med hjälp av program-
merbar logik.

Exempel 0.1 Blandningsprocess

A B

VA VB
? ?

Reaktor ∞

VR
?

Önskad funktion för blandningsprocessen:


Reaktorna skall fyllas med innehållen i behållarna A och B, reaktorns innehåll skall omröras och upp-
värmas till 80o C, varefter reaktorn skall tömmas.
7

Schematiskt:

Reaktorn tom
VR stängd

Öppna VA och VB

A töms B töms

Stäng VA då A tom Stäng VB då B tom

A tömd B tömd

Slå på uppvärming

Uppvärming

Slå av uppvärming och


öppna VR då T ≥ 80o C

Reaktorn töms

Stäng VR 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.1 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:

1. L. Alm: Styrteknik. Studentlitteratur 1991. 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 1999 och Springer
2007. Ganska teoretisk, behandlar Petri-nät utförligt.
4. M. Costanza: Programmable logic controllers - The industrisl computer. Arnold 1997.

5. A.J Crispin: Programmable logic controllers and their engineering applications. McGraw-Hill 1997.
Innehåller IEC-standarden för programmering av PLC:n.
6. K.H. Fasol: Binäre steuerungstechnik. Springer 1988.
7. T. Floyd: Digital fundamentals. Prentice-Hall 1997.
8. S. Friedman: Logical design of automation systems. Prentice-Hall 1980.
9. B. Haag: Industriell systemteknik – Ellära, elektronik och automation. Studentlitteratur 1998.
10. T.R. McCalla: Digital logic and computer design. MacMillan 1992.
11. E.W. Kamen: Industrial controls and manufacturing. Academic Press 1999.

12. J. Palmer och D. Perlman: Introduction to digital systems (Schaum’s outline). McGraw-Hill 1993.
13. M. Treseler: Designing state machine controllers using programmable logic. Prentice Hall 1992.
Kapitel 1

Klassisk logik och boolesk algebra

1.1 Insignaler, utsignaler och tillstånd


Ett styrsystem för logikstyrnings- och sekvensstyrningsproblem kan schematiskt framställas i form av
följande diagram:

Insignaler (från process) Utsignaler(till process)


u1 - - y
u -
. Logisk . - y1
.. 2 .. funktion .. .. 2
. - - .y
un - m
.. ..
- . . Nytt
x
.. 1 tillstånd
Tillstånd .
xp ¾ x+ +
1 , . . . , xp
.. ..
. Minne ¾ .

Insignaler, utsignaler och tillstånd antas i denna kurs ha logiska värden. Utsignalernas Y = {yi } och det
interna tillståndens X + = {x+ i } nya värden bestäms som funktioner av insignalerna U = {ui } och de
tidigare tillstånden X = {xi }. Dessa funktioner kan i praktiken beskrivas med hjälp av klassisk logik
eller, analogt, med boolesk algebra.

Exempel 1.1 Transportör

A B

Insignaler: U = {ui }
1. 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
10 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA

Tillstånd: X = {xi }
1. Stillastående vid A
2. Stillastående vid B
3. Stillastående mellan A och B
4. På väg mot vänster
5. På väg mot höger
Utsignaler: Y = {yi }
1. 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.

un /ym-
xi xj

Uppgift 1.1 Rita tillståndsgrafen för styrsystemet i exempel 1.1.

I en tillståndstabell (Huffman-tabell) anges


xs /yk = (följande tillstånd/utsignal)
som funktion av insignaler och tillstånd i tabellform.

Uppgift 1.2 Rita tillståndstabell för styrsystemet i exempel 1.1.

Insignaler
Tillstånd ← → STOP A B
1 2 3 4 5
1. Vid A
2. Vid B
3. Mellan A och B
4. Mot A
5. Mot B
1.2. PROPOSITIONSKALKYL 11

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 logikstyrnings- och sekvensstyrningsproblem ofta leda till tämligen komplicerade opera-
tioner. 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.

1.2 Propositionskalkyl
Propositionskalkylen eller propositionslogiken är en del av den formella logiken som kan härledas till-
baka 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 1.2 Propositioner

P : ’Granen är ett finskt trädslag’


Q : ’Kokospalmen växer vild på Åland’
Tydligen gäller P = S, Q = F .

I propositionskalkylen sammansätts propositioner till nya propositioner med hjälp av de logiska konnek-
tiven ”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 1)
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 (R1) x∧x = x (R5)


x∨x = S (R2) x∧x = F (R6)
x∨S = S (R3) x∧F = F (R7)
x∨F = x (R4) 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.
12 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA

1.3 Boolesk algebra


Boole introducerade år 1854 en tvåvärd algebra som är isomorf1 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 1. 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 x0 och ¬x används även.

Operationerna definieras med hjälp av följande postulat:

0+0 = 0 (P 1)
1+1 = 1 (P 2)
0+1 = 1+0 = 1 (P 3)
1·1 = 1 (P 4)
0·0 = 0 (P 5)
0·1 = 1·0 = 0 (P 6)
0 = 1 (P 7)
1 = 0 (P 8)

Operationerna kan sammanfattas i form av en sanningstabell:

A B A A+B AB
0 0 1 0 0
1 0 0 1 0
1 1 0 1 1
0 1 1 1 0

Förutom ovannämnda operationer brukar man införa ytterligare ett antal operatationer:

NOR (icke eller) A+B


XOR (exklusivt eller) A⊕B
XNOR (exklusivt NOR) A⊕B
NAND (icke och) AB

Dessa operationer beskrivs av sanningstabellen

A B A+B A⊕B A⊕B AB


0 0 1 0 1 1
1 0 0 1 0 1
1 1 0 0 1 0
0 1 0 1 0 1

Den egenskap som gör boolesk algebra speciellt viktig är dess isomorfi med propositionskalkylen. Denna
isomorfi ges enligt följande:
1 isomorf = med samma struktur
1.3. BOOLESK ALGEBRA 13

Boolesk algebra Propositionskalkyl


1 ←→ S
0 ←→ F
+ ←→ ∨
· ←→ ∧
x ←→ x

Postulaten (P 1) − (P 8) för propositionskalkyl respektive boolesk algebra är ekvivalenta om man substi-
tuerar konstanter och operationer enligt ovan.
Alla de lagar i logiken som följer ur propositionskalkylens postulat (P 1) − (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 (R1) − (R9) givna tidigare för propositionskalkylen blir för boolesk algebra:

x+x = x (R1) x·x = x (R5)


x+x = 1 (R2) x·x = 0 (R6)
x+1 = 1 (R3) x·0 = 0 (R7)
x+0 = x (R4) x·1 = 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 1) − (P 8).
Associationslagar:
(R10) x + (y + z) = (x + y) + z
(R11) x(yz) = (xy)z

Kommutationslagar:
(R12) x+y = y+x
(R13) xy = yx

Distributionslagar:
(R14) x(y + z) = xy + xz
(R15) x + yz = (x + y)(x + z)

Absorptionslagar:
(R16) x + xy = x
(R17) x(x + y) = x

Transivitetslagar (konsensus):
(R18) xy + xz + yz = xy + xz
(R19) (x + y)(x + z)(y + z) = (x + y)(x + z)

de Morgans lagar:
(R20) x+y = x·y
(R21) xy = x+y

Lagarna kan direkt generaliseras till flera variabler. De Morgans lagar generaliseras t.ex. till

(R20)0 x1 + x2 + . . . + xn = x1 · x2 · . . . · xn
(R21)0 x1 · x2 · . . . · xn = x1 + x2 + . . . + xn
14 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA

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 1.3 Ange de Morgans lagar med hjälp av propositionskalkyl.

Alla lagar i boolesk algebra följer ur postulaten (P 1) − (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.

Vi skall illustrera procedurerna med exempel:

Uppgift 1.4 Visa a) de Morgans lagar


b) transivitetslagen (R18)
1.4. NÅGOT OM IMPLEMENTERINGEN AV LOGISKA FUNKTIONER 15

1.4 Något om implementeringen av logiska funktio-


ner
C.E. Shannon visade år 1938 att boolesk algebra kan användas för att beskriva funktionen hos vissa elekt-
riska 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=1 då kontakten är sluten


x=0 då kontakten är öppen

och låt en spänningsnivå representera en variabel z, enligt

z=1 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
z=1
2.4V

0.4V
z=0
0

Operationerna i den booleska algebran kan då implementeras med hjälp av sk. logiska grindar. T.ex.

1 x y z = xy (AND)

1 z = x + y (OR)

I praktiken är den elektroniska realiseringen av olika grindtyper betydligt mer komplicerad. Tabell 1.1
ger en sammanfattning av symbolerna för de enkla logiska grindarna.
16 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA

Tabell 1.1: Symbolerna för de logiska grindarna (Källa: Sten Gustafsson)

Grind Funktion IEC−symbol Amerikansk symbol

1
Buffert X=A A X A X

1
Inverterare X=A A X A X

A & A
OCH X=A .B X X
B B

A & A
NAND X=A .B X X
B B

A >1
− A
ELLER X=A+B X X
B B

A >1
− A
NOR X=A+B X X
B B

A =1 A
XOR X=A+B X X
B B

Förutom symbolerna i tabell 1.1 anges invertering av insignalen symboliskt, t.ex.:

x = A · B:

A 1 &
x ≡ A &
x
B B

x = A + B:

A 1
≥1
x ≡ A ≥1
x
B 1 B

De enkla logiska grindarna kan användas för implementering av allmänna logiska funktioner, och kan
således utnyttjas för processtyrningsproblem.

Uppgift 1.5 Planera ett nät som med hjälp av logiska grindar realiserar den logiska funktionen x =
AB + AC
1.4. NÅGOT OM IMPLEMENTERINGEN AV LOGISKA FUNKTIONER 17

Det är lätt att inse att de logiska grindarna också kan implementeras mekaniskt, hydrauliskt eller pneuma-
tiskt. 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 1.1: Exempel på mekaniska logiska grindar

Figur 1.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 elektro-
niska 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 logik- och sekvensstyrningsproblem i indust-
riell miljö. Också vanliga mikrodatorer används. Om realiseringen av logik- och sekvensstyrningsproblem
med hjälp av programmerbara datorer mera senare.
18 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA
Kapitel 2

Booleska funktioner

2.1 Disjunktiv och konjunktiv normalform


Låt x1 , . . . , xn vara booleska variabler. En boolesk funktion f (x1 , . . . , xn ) är då en funktion av variab-
lerna x1 , . . . , xn som antar något av värdena 0 eller 1. 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.1 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 = 1, om switchen befinner sig i ON läget
A = 0, om switchen befinner sig i OFF läget

B representerar låset:
B = 1, om nyckeln är i
B = 0, om nyckeln inte är i

C representerar maskinen:
C = 1, om maskinen går
C = 0, om maskinen står

Utsignalen X från styrsystemet skall styra maskinen:


X = 1 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.

19
20 KAPITEL 2. BOOLESKA FUNKTIONER

Funktionstabell Minterm Maxterm


A B C X pi pi
0 0 0 0 ABC A+B+C
0 0 1 1 A BC A+B+C
0 1 0 0 ABC A+B+C
0 1 1 0 ABC A+B+C
1 0 0 0 AB C A+B+C
1 0 1 1 ABC A+B+C
1 1 0 1 ABC A+B+C
1 1 1 1 ABC A+B+C

Funktionstabellen definierar X som en boolesk funktion X(A, B, C). Oberoende av sättet på vilket lo-
gikstyrningsproblemet 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 varia-
belkombinationerna. 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 pi bestående av produkten av alla variabler (med eller utan icke)
som tar värdet 1 (nämligen det som finns angivet i motsvarande rad i tabellen), medan de övriga är 0. Vi
kan ta en pi för varje situation vid vilken X skall bli 1, och uttrycka X som summan dessa termer (jmf.
tabellen)
X = A BC + ABC + ABC + ABC
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
pi i tabellen är mintermer.
Vi kan även konstruera termer pi 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 pi 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, elementarsum-
mor). Termerna pi 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.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 21

Uppgift 2.1 Hur många logiska grindar behövs att realisera den booleska funktionen i exempel 2.1?

Uppgift 2.2 Förenkla uttrycket x = (A + B)(B + C)(C + A)(ABC + A B C)

Den algebraiska metoden har åtminstone följande nackdelar:

1. 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örenk-
lingen kan göras effektivare, och vilka producerar det enklast möjliga uttrycken.
22 KAPITEL 2. BOOLESKA FUNKTIONER

2.2.1 Karnaugh-diagram
En standard procedur för förenkling av booleska funktioner baserar sig egenskaperna hos s.k. Karnaugh-
diagram. 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 AB
0 1 00 01 11 10
0 0
B C
1 1

Fyra variabler: Fem variabler:


AB ABC
00 01 11 10 000 001 011 010 100 101 111 110
00 00
01 01
CD DE
11 11
10 10

Karnaugh-diagrammen är så konstruerade, att variabelvärdena för två avgränsande (närbelägna, adja-
centa) 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 egen-
skaper hos närbelägna rutor, vilket illustreras av följande exempel.

Exempel 2.2 Karnaugh-diagram


Betrakta den booleska funktionen

X = A BC + ABC + ABC + ABC

från exempel 2.1. Karnaugh-diagrammet får följande utseende (med endast ettorna insatta):

AB
00 01 11 10
0 1
C X = AB + BC
1 1 1 1

Tack vare diagrammets konstruktion kan förenklingarna

ABC + ABC = AB
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 23

A BC + ABC = BC
upptäckas direkt från diagrammet. Man ser ytterligare att förenklingen

ABC + ABC = AC

kan göras men detta leder ej till ett lika enkelt uttryck för X.

AB
00 01 11 10
0 1
C X = A BC + ABC + AC
1 1 1 1

Man kan formulera fem regler för förenklingsproceduren:

1. 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. Varje cell måste täcka en potens av 2 (1, 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 1-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 = AB + BC + AC. Detta kan i sin tur förenklas till
AB + BC, m.h.a. transivitetslagen (R18). 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:

1. Mintermer med alla fyra variabler, som täcker en ruta, och som ej kan kombineras med andra termer:

AB
00 01 11 10
00
01
CD ABCD
11 1
10
24 KAPITEL 2. BOOLESKA FUNKTIONER

2. Termer med tre variabler, som täcker två rutor (två skilda exempel):

AB AB
00 01 11 10 00 01 11 10
00 00
01 01 1 1
CD CD
11 1 1 11
10 10

BCD B CD

3. Termer med två variabler, som täcker fyra rutor (tre skilda exempel):

AB AB AB
00 01 11 10 00 01 11 10 00 01 11 10
00 00 1 1 00 1 1
01 01 01
CD CD CD
11 1 1 1 1 11 11
10 10 1 1 10 1 1

CD AD BD

4. Termer med en variabel, som täcker åtta rutor (två skilda exempel):

AB AB
00 01 11 10 00 01 11 10
00 00 1 1 1 1
01 1 1 1 1 01
CD CD
11 1 1 1 1 11
10 10 1 1 1 1

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.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 25

Exempel 2.3 Fem variabler

ABC
000 001 011 010 100 101 111 110
00 1 1 1 1
01 1 1 1 1
DE C +D
11 1 1 1 1 1 1 1 1
10 1 1 1 1 1 1 1 1

Exempel 2.4 Sex variabler

AB
00 01 11 10 00 01 11 10 00 01 11 10 00 01 11 10
00 1 1 1 1 1 1
01 1 1 1 1 1
CD
11 1 1 1 1 1
10 1 1 1 1 1 1

00 01 11 10
EF

AB + BCDE F + A BCDE F + AC D EF + AC DEF + ACDE

Primimplikatorer

En funktion f (x1 , x2 , . . . , xn ) säges inkludera en annan funktion g(x1 , x2 , . . . , xn ) om de värden för vari-
ablerna x1 , x2 , . . . , xn för vilka g = 1, också ger f = 1. Således inkluderar f t.ex. termerna i ett disjunktivt
uttryck för f .
En primimplikator π för en funktion f (x1 , x2 , . . . , xn ) 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
f (x1 , x2 , x3 , x4 ) = x1 x2 x4 + x2 x3 x4 + x1 x3 x4

har primimplikatorerna

π1 = x1 x2 x4 , π2 = x2 x3 x4 , π3 = x1 x3

Obs. att x1 x3 x4 är inte en primimplikator.


26 KAPITEL 2. BOOLESKA FUNKTIONER

x1 x2
00 01 11 10
00 1
01
x3 x4
11 1 1
10 1 1 1

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 man bör komma ihåg att antalet är viktigare än storleken.
Utvecklingen av en funktion i primimplikatorer behöver inte vara entydig. En väsentlig (essential) pri-
mimplikator ä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.


ABC + ACD + ABC + ACD

AB
00 01 11 10
00 ∗1
01 1 1 ∗1
CD
11 ∗1 1 1
10 ∗1

Notera att vi enbart introducerar en term till (BD) om vi introducerar den största möjliga cellen i det
här fallet.

Uppgift 2.3 Bestäm de väsentliga primimplikatorerna och den minimala formen för funktionen i dia-
grammet nedan.

AB
00 01 11 10
00 1 1 1
01 1
CD
11 1 1 1 1
10 1 1 1

Sedan de väsentliga primimplikatorerna uttagits, kan de återstående oinringade rutorna med ettor inklu-
deras av primimplikatorer på ett antal alternativa sätt. Dessa skall väljas så att möjligast enkla termer
fås.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 27

Exempel 2.7 Flera minimala uttryck

AB
00 01 11 10
00 1 1
01 1 1
CD
11 ∗1 1
10 ∗1

Väsentliga primimplikatorer:
BD , ABD
Termen ABC D kan inkluderas antingen i A C D eller i ABC (icke-väsentliga primimplikatorer). Detta
ger två alternativa minimala uttryck:

BD + A B D + A C D
eller BD + A B D + ABC

Ofullständigt specificerade funktioner

De booleska funktioner som uppträder i praktiska logikstyrningsproblem är ofta ofullständigt specificera-
de, 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. 1.1), så att de aldrig förekommer. Funktions-
vä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 1. 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 + ABD

AB
00 01 11 10
00 1
01 1 1 1
CD
11 - - - -
10 - -

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.
28 KAPITEL 2. BOOLESKA FUNKTIONER

Vi börjar med att numrera funktionstabellens rader i enlighet med det binära talsystemet. För tre vari-
abler identifierar vi således de olika variabelkombinationerna enligt följande tabell.

j A B C
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
(22 21 20 )

Proceduren är sedan följande. Först uppställs en funktionstabell med endast de rader för vilka funktionen
antar värdet 1 insatta. En funktion med Karnaugh-diagrammet nedan får således funktionstabellen i Tab.
2.1.

AB
00 01 11 10
00 1 1 1
01 1 1
CD
11 1 1
10 1 1 1

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.1(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.1(b). Proceduren upprepas tills
ytterligare kombinationer inte mera kan göras i Tab. 2.1(c). De termer som i denna procedur inte mera
kan förenklas är primimplikatorer. Dessa har i Tabell 2.1 betecknats p1 , p2 , . . . , p7 .
Såsom vi tidigare sett, ger en disjunktion av primimplikatorerna i allmänhet ej ett minimalt funktionsut-
tryck, 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 funk-
tionstabellens termer (Tab. 2.1 (a)), och raderna anger primimplikatorer. De termer som inkluderas av
en primimplikator anges med ”x”. Proceduren är sedan följande.

1. 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 mot-
svarande term redan ingår i de primimplikatorer som medtagits och inte behöver beaktas i fortsätt-
ningen.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 29

Tabell 2.1: Stegvis förenkling


(a) (b) (c)
j A B C D {j} A B C D {j} A B C D
0 0 0 0 0 0, 2 0 0 - 0 0, 2, 8, 10 - 0 - 0 p6
2 0 0 1 0 0, 8 - 0 0 0 8, 10, 12, 14 1 - - 0 p7
3 0 0 1 1 2, 3 0 0 1 - p1
5 0 1 0 1 2, 10 - 0 1 0
7 0 1 1 1 3, 7 0 - 1 1 p2
8 1 0 0 0 5, 7 0 1 - 1 p3
10 1 0 1 0 5, 13 - 1 0 1 p4
12 1 1 0 0 8, 10 1 0 - 0
13 1 1 0 1 8, 12 1 - 0 0
14 1 1 1 0 10, 14 1 - 1 0
12, 13 1 1 0 - p5
12, 14 1 1 - 0

4. Välj från de återstående valbara primimplikatorerna (p1 −p5 ) 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 10 12 13 14
p1 (x) x
∗∗ p2 x x
p3 x x
∗∗ p4 x x
p5 (x) x
∗ p6 x [x] [x] [x]
∗ p7 [x] [x] [x] x

I Tabell 2.2 är de valbara primimplikatorerna p1 − p5 alla lika långa. Det optimala valet är p2 och p4 ,
ty alla andra val skulle kräva minst tre primimplikatorer. Enligt Tabell 2.2 ges det minimala funktions-
uttrycket som en disjunktion av primimplikatorerna p2 , p4 , p6 och p7 , av vilka p6 och p7 är väsentliga
primimplikatorer. Uttrycket blir (jmf. Tab. 2.1)

B D + AD + ACD + BCD

I exemplet i Tabell 2.1 var funktionen fullständigt specificerad. Proceduren kan emellertid enkelt an-
passas för ofullständigt specificerade funktioner, med ”don’t care” funktionsvärden för vissa variabel-
kombinationer. Härvid inkluderar man de rader för vilka funktionsvärdet är ospecificerat (”don’t care”) i
funktionstabellen (Tab. 2.1), och bildar primimplikatorerna såsom ovan. Vid uppställningen av primimpli-
katortabellen (Tab. 2.1), 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
30 KAPITEL 2. BOOLESKA FUNKTIONER

beaktas i det första skedet då primimplikatorerna bildas, ty de kan endast leda till kortare primimplika-
torer, ej längre.) Denna procedur leder till ett minimalt funktionsuttryck för ofullständigt specificerade
funktioner.

Uppgift 2.4 Förenkla den logiska funktionen X med följande Karnoughdiagram (- motsvar don’t care
tillstånd):

AB
00 01 11 10
0 - 1 -
C
1 1 1 1

Vi ställer upp en funktionstabell, där vi förutom ettorna tar med don’t care tillstånd:

j A B C
1
2
4
5
6
7

j A B C j A B C

Efter att ha bestämt alla primimplikatorer, sätter vi dem i en Primimplikatortabell. Nu skall vi inte ta
med don’t care mintermer, bara de som måste bli 1 för given insignalkombination:

1 5 6 7

Vi får denna gång X genom att ta summan av väsentliga mintermer, dvs X = A + BC.
QMC-metoden kan enkelt programmeras. I Friedman Logical Design of Automation Systems (Prentice –
Hall, 1990), 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.
Nedan visas en exempelkörning där programmet tillämpats för funktionen i Tabell 2.1 (a). Funktions-
vä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.1 och 2.2, primp sorterar primimplikatorer-
na, så de kommer i ordningen p6 , p1 , p2 , p4 , p3 , p7 , p5 ), 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).
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 31

% ~jboling/sst/primp

SIMPLIFICATION OF BOOLEN FUNCTIONS BY PRIME IMPLICANT ANALYSIS


**************************************************************

NUMBER OF VARIABLES : 4

INPUT FUNCTION VALUES IN TRUTH TABLE


( 16 VALUES: 1 = TRUE / 0 = FALSE / -1 = DON’T CARE ) :

1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0

*** BOOLEAN MINIMIZATION PROGRAM ***

THIS FUNCTION CONTAINS 4 VARIABLES

A LISTING OF THE INPUT DATA FOLLOWS


TRUE MINTERMS = 1
FALSE MINTERMS = 0
REDUNDANT MINTERMS (DON’T CARES) = -1

0 0 = 1, 1 = 0, 2 = 1, 3 = 1, 4 = 0,
5 = 1, 6 = 0, 7 = 1, 8 = 1, 9 = 0,
10 = 1, 11 = 0, 12 = 1, 13 = 1, 14 = 1,
15 = 0,
0 THE FOLLOWING IS A LIST OF THE PRIME IMPLICANTS OF THE
MINIMIZED FUNCTION.

ESSENTIAL PRIME IMPLICANTS ARE SO LABELED, AND


PRIME IMPLICANTS SELECTED FROM A CYCLIC CHART ARE
LABELED AS CHOSEN.

NO. COST PRIME IMPLICANTS


A B C D
1 2 - 0 - 0 ESSENTIAL
2 3 0 0 1 -
3 3 0 - 1 1 CHOSEN
4 3 - 1 0 1 CHOSEN
5 3 0 1 - 1
6 2 1 - - 0 ESSENTIAL
7 3 1 1 0 -

- INDICATES A MISSING VARIABLE, 0 INDICATES A COMPLEMENTED


VARIABLE AND 1 INDICATES A TRUE VARIABLE.
THE FUNCTION IS REPRESENTED BY THE SUM OF BOTH THE
ESSENTIAL AND THE CHOSEN PRIME IMPLICANTS.

CONSTRAINT TABLE
------------------
32 KAPITEL 2. BOOLESKA FUNKTIONER

COVERED COVERING PRIME


MINTERM IMPLICANTS.

3 2 3
5 4 5
7 3 5
13 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 MATLAB 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 1
1: 0 0 0 1 0
2: 0 0 1 0 1
3: 0 0 1 1 1
4: 0 1 0 0 0
5: 0 1 0 1 1
6: 0 1 1 0 0
7: 0 1 1 1 1
8: 1 0 0 0 1
9: 1 0 0 1 0
10: 1 0 1 0 1
11: 1 0 1 1 0
12: 1 1 0 0 1
13: 1 1 0 1 1
14: 1 1 1 0 1
15: 1 1 1 1 0

Processing....

Truth table:
i A B C D f
----------------
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 1
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 0
7 0 1 1 1 1
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 33

8 1 0 0 0 1
9 1 0 0 1 0
10 1 0 1 0 1
11 1 0 1 1 0
12 1 1 0 0 1
13 1 1 0 1 1
14 1 1 1 0 1
15 1 1 1 1 0

Prime implicants:
1: 0 2 8 10
2: 8 10 12 14
3: 2 3 - -
4: 3 7 - -
5: 5 7 - -
6: 5 13 - -
7: 12 13 - -

Essential prime implicants:


1 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 MATLAB 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....

Truth table:
i A B C f
-------------
0 0 0 0 1
1 0 0 1 0
2 0 1 0 0
3 0 1 1 0
4 1 0 0 0
34 KAPITEL 2. BOOLESKA FUNKTIONER

5 1 0 1 0
6 1 1 0 0
7 1 1 1 1

Prime implicants:
1: 0
2: 7

Essential prime implicants:


1 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 x1 , x2 , . . . , xn , 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 x1 · x2 , x1 · x3 , x1 · x2 · x3 , . . .. Vi skall illustrera proceduren med ett
exempel.

Exempel 2.9 Flera utsignaler


Betrakta funktionerna x1 , x2 och x3 med Karnaugh-diagrammen i Fig 2.1. I Fig 3.5 ges Karnaugh-
diagrammen för x1 , x2 och x3 samt produktfunktionerna x1 · x2 , x1 · x3 , x2 · x3 och x1 · x2 · x3 . Primimpli-
katorerna införs nu som normalt men så att man startar med produkten av högsta grad, x1 · x2 · x3 ,
fortsätter med x1 · x2 , x1 · x3 och x2 · x3 , och därefter betraktar x1 , x2 och x3 . Härvid markeras en
primimplikator inte om den redan förekommer i en produktfunktion av högre grad.

AB AB AB
00 01 11 10 00 01 11 10 00 01 11 10
00 1 1 00 1 00 1
01 1 01 1 1 01 1
CD CD CD
11 1 11 1 11 1 1
10 1 1 10 1 10 1 1
x1 x2 x3

Figur 2.1: Utsignalerna x1 , x2 och x3

Proceduren ger primimplikatorer i Tab. 2.3.


2.2. FÖRENKLING AV BOOLESKA UTTRYCK 35

AB AB AB
00 01 11 10 00 01 11 10 00 01 11 10
00 1 1 00 1 00 1
01 1 01 1 1 01 1
CD CD CD
11 1 11 1 11 1 1
10 1 1 10 1 10 1 1
x1 x2 x3
AB AB AB AB
00 01 11 10 00 01 11 10 00 01 11 10 00 01 11 10
00 1 00 1 00 00
01 1 01 01 01
CD CD CD CD
11 1 11 1 11 1 11 1
10 1 10 1 1 10 1 10 1
x1 · x2 x1 · x3 x2 · x3 x1 · x2 · x3

Figur 2.2: Förenkling av x1 , x2 och x3

Tabell 2.3: Primimplikatorer


x1 · x2 · x3 : p1 = ABC x3 : p6 = A BD
p7 = BC
x1 · x3 : p2 = ABC D
p3 = BCD x2 : p8 = ABC
p9 = BCD
x1 · x2 : p4 = ABC D
p5 = ABCD x1 p10 = BC D
p11 = ABC

Eftersom termen p1 = ABC kan användas i alla tre funktioner bör den medtas. Termerna p2 − p5
uppträder i två funktioner och är således lovande kandidater för att medtas. Primimplikatorn p6 hos x3
är väsentlig och bör medtas. Termen p7 inkluderas däremot av p1 , p3 och p6 . Alltså medtas även p3 .
Även p2 måste medtas för att funktionen x3 skall kunna beskrivas. Återstår de fyra rutor som täcks av
termerna p4 , p5 , p8 , p9 , p10 och p11 . Från figuren ses att minst tre termer bör medtas: antingen p4 , p9
och p11 , eller p5 , p8 och p10 . Detta resulterar i de minimala formerna

x1 = ABC + BCD + ABC D + ABC


x2 = ABC + ABC D + BCD
x3 = ABC + ABC D + BCD + A BD

respektive
x1 = ABC + BCD + ABCD + BC D
x2 = ABC + ABCD + ABC
x3 = ABC + ABC D + BCD + A BD

Uppgift 2.5 Konstruera ett nät som med hjälp av logiska grindar realiserar funktionerna x1 , x2 och x3 .
36 KAPITEL 2. BOOLESKA FUNKTIONER

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 kombina-
tioner av produkter av utsignaler. Varje kombination betraktas som separat fall, med separata primimpli-
katorer. 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:

Tabell 2.4: Primimplikatortabell


x1 x2 x3
2 4 10 11 12 13 4 5 10 11 13 1 2 3 10 11 12
p1 x x
p3 x x x1
p10 x x
p11 x x
p1 x x
p8 x x x2
p9 x x
p1 x x
p2 x
p6 x x x3
p7 x x x x
p1 x x x x
p4 x x x1 · x2
p5 x x
p1 x x x x
p2 x x x1 · x3
p3 x x x x
p1 x x x x x x x1 · x2 · x3

1. 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 mot-
svarande term redan ingår i de primimplikatorer som medtagits och inte behöver beaktas i fortsätt-
ningen.

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, ound-
vikliga och valda primimplikatorer. Dvs man tittar på en kolumn åt gången och tar alla primimpli-
katorer 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 p2 ound-
viklig för x3 , men ej för x1 (därför att p2 täcks av p10 eller p11 som är valbara för x1 ), och den
behöver således enbart medtas i x3 .
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 37

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 p6 är en väsentlig primimplikator. Det som inte tidigare framgick
är att p1 , p2 och p3 ä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 (R21)0 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.

Exempel 2.10 Betrakta en funktion X med följande Karnaugh-diagram.

AB
00 01 11 10
00 1 1 1
01
CD
11 1 1 1
10 1 1 1

Den minimala disjunktiva formen är

X = BD + BC + AD + AC

För X fås ett minimalt uttryck enligt följande.

AB
00 01 11 10
00 0 1 1 1
01 0 0 0 0
CD
11 0 1 1 1
10 0 1 1 1

Disjunktiv minimalform för X:


X = A B + CD
Den konjunktiva minimalformen för X fås med hjälp av de Morgans lagar (R21)0 , (R20)0 :

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.
38 KAPITEL 2. BOOLESKA FUNKTIONER

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 1), ö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 med de Morgans lagar.
Vid användning av programmet primp så skall man ta logisk icke på varje enskilt funktionsvärde, så
beräknar programmet disjunktiv 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.1.
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 multi-
plikationer) ofta ytterligare minskas genom distributionslagarna (R14)0 , (R15)0 . 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


I ett kombinatoriskt automationsproblem bestäms utsignalerna från styrsystemet som booleska funktio-
ner av insignalerna.

u1 - - y1
u2 - - y2
.. ..
. .
un - - yn
Insignaler Utsignaler
(från process) (till process)

Jämför Ex. 2.1. 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 even-
tuell förekomst av sk. statisk hasard, och konstruera nätet så att det är hasardfritt. Problemet illustreras
av följande exempel.

Exempel 2.11 Betrakta en funktion X med Karnaugh-diagrammet nedan.


2.3. KOMBINATORISKA AUTOMATIONSPROBLEM 39

AB
00 01 11 10
0 1
C
1 1 1 1

Funktionen har två väsentliga primimplikatorer vilka ger den disjunktiva minimala formen

X = AC + AB

Funktionen kan tydligen realiseras med hjälp av två AND- och en OR-grind:

A &
AB
B
≥1
X
&
C AC

Betrakta nu vad som händer då insignalerna ändras från 011 till 111:

AB
00 01 11 10
0 1
C -
1 1 1 1

Funktionen X har fortfarande värdet 1 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 1 till 0, men
innan den övre grindens utsignal ändrats från 0 till 1. Systemets utsignal ser då ut så här:

1 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 001 till 011 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:
40 KAPITEL 2. BOOLESKA FUNKTIONER

AB
00 01 11 10
0 1
C
1 1 1 1
I icke-väsentlig
primimplikator

X uttrycks nu i den icke-minimala formen

X = AC + AB + BC

Denna funktion kan realiseras med tre AND- och en OR-grind:

A &

B
& ≥1
X

C
&

Denna realisering är hasardfri.

Nuförtiden förverkligas logikstyrningsproblem oftast med hjälp av programmerbar logik eller mikrodato-
rer, i vilka de booleska funktionerna programmeras. Dessa funktionerar 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.1, 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 {xi }, vilkas värden definierar
systemets olika tillstånd. Styrsystemet kan schematiskt beskrivas med följande figur.

Insignaler (från process) Utsignaler(till process)


u1 - - y
u -
. Logisk . - y1
.. 2 .. funktion .. .. 2
. - - .
un - ym
.. ..
- . . Nytt
x
.. 1 tillstånd
Tillstånd .
xp ¾ x+ +
1 , . . . , xp
.. ..
. Minne ¾ .

Figur 3.1: Styrsystem med minne

Här är utsignalerna y1 , . . . , ym till processen och tillståndsvariablernas nya värden x+ +


1 , . . . , xp (det nya till-
ståndet) booleska funktioner av insignalerna u1 , . . . , un från processen samt tillståndsvariablerna x1 , . . . , xp
(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+ +
1 , . . . , xp 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 stokastis-
ta sekvensstyrningsproblem, där systemet skall funktionera rationellt för godtyckliga insignalsekvenser
(jmf. Ex. 1.1). De stokastiska sekvensstyringsproblemen är i allmänhet besvärligare att behandla än de
deterministiska.

41
42 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

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

S S x
R R x

S R x+
0 0 x
0 1 0
1 0 1
1 1 –

Figur 3.2: SR-vippa

Vippan fungerar alltså så, att för S = 1 (Set) blir x = 1, för R = 1 (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
x anger vilkendera av signalerna S och R senast haft värdet 1. För insignalkombinationen R = S = 1 är
x ej definierad. Funktionen hos en RS-vippa kan beskrivas av ekvationen
x+ = (x + S) · R (3.1)

Uppgift 3.1 Verifiera ekvation 3.1 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.1 Syntes av sekventiella system


Det existerar flera syntesmetoder med vilka styrsystem för sekventiella processer kan planeras. Den klas-
siska metoden i detta sammanhang är en syntesmetod först presenterad av Huffman år 1954, 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önska-
de 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 imple-
menteras med dator.
3.1. SYNTES AV SEKVENTIELLA SYSTEM 43

Exempel 3.1 Alarmsystem

Alarmsignal u1 - - y1 Siren
Styrsystem
Kvitteringsknapp u2 - - y2 Alarmlampa

För att illustrera syntesproceduren skall vi betrakta alarmsystemet enligt figuren. Systemet skall fungera
på följande sätt. Då u1 = 1, vilket representerar en alarmsignal från processen, skall y1 = 1, vilket slår på
alarmsiren. Operatören kan kvittera signalen med en kvitteringsknapp (u2 ), så att en (momentan) signal
u2 = 1 slår av sirenen (y1 = 0), som ersätts av en blinkande alarmlampa (y2 = 1). Lampan bör fortsätta
att blinka så länge u1 = 1. Då u1 → 0, skall y2 = 0.
Dessutom skall i det fall då den farliga situationen (u1 = 1) försvinner av sig själv (u1 = 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.

Tillståndsgraf

Ur de verbalt givna systemspecifikationerna bör i nästa skede en kvantitativ modell för systemets funk-
tion konstrueras. Systemets funktion kan åskådliggöras grafiskt med en tillståndsgraf (flödesdiagram,
övergångsdiagram). I denna representeras systemets tillstånd av noder, och de möjliga tillståndsöver-
gångarna anges av riktade länkar mellan noderna. För alarmsystemet i Ex. 3.1 fås tillståndsgrafen i Fig.
3.3.

¾
10/10 11/01 - 10/01
00/00 1 - 2 - 3 4
¾

? ?
6 6

01/00 5 ¾ 6 00/10 ª u1 u2 /y1 y2


µ

Figur 3.3: Tillståndsgraf

I det normala händelseförloppet med inkommande alarmsignal och kvittering av denna genomgår syste-
met tillstånden 1,2,3,4,1. Övergångarna från tillstånd 2 till 6 resp. 3 till 5 representerar situationen då
alarmsignalen försvinner av sig själv (observera dubbelriktningen). Övergångarna från tillstånd 1 till 5
resp. 4 till 3 representerar de fall då kvitteringsknappen trycks vid ifrågavarande tillstånd hos systemet.

Tillståndstabell

Informationen i tillståndsgrafen representeras i följande skede i form av en tillståndstabell (flödestabell,


primitiv tillståndstabell, primitiv flödestabell). I denna representeras varje tillstånd av en rad, de olika
insignalkombinationerna utsätts kolumnvis, och längst till höger anges systemets utsignaler vid ifrågava-
rande tillstånd.
44 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

I tabellen anges systemets nya tillstånd för varje kombination av tillstånd och insignaler . Ett tillstånd
sägs vara stabilt för en given uppställning insignaler, om systemet förblir i tillståndet i fråga (tillstånd och
insignaler konsistenta med varandra). Ett tillstånd sägs vara instabilt för en given uppsättning insignaler,
om systemet övergår till ett annat tillstånd (tillstånd och insignaler inkonsistenta med varandra). I detta
fall är det nya tillståndet stabilt. I tillståndstabellen anges de stabila tillstånden genom inrigning, t.ex.
1 .
Tabell 3.1: Tillståndstabell
u1 0 1 1 0
u2 0 0 1 1 y1 y2
1 1 2 - 5 0 0
2 6 2 3 - 1 0
3 - 4 3 5 0 1
4 1 4 3 - 0 1
5 1 - 3 5 0 0
6 6 2 - 5 1 0

Tabell 3.1 visar en tillståndstabell för systemet som beskrivs av tillståndsgrafen i Fig. 3.3. Observera att
det antagits att det för de olika systemtillstånden finns vissa insignalkombinationer som ej kan förekomma.
Detta motsvarar ett ”don’t care” tillstånd i tillståndstabellen och anges där med ett streck ”-”. (I detta
fall har det antagits att två insignaler ej kan ändras (exakt) samtidigt; ett antagande vars giltighet kan
diskuteras.)
I praktiken är konstruktionen av tillståndsgraf och tillståndstabell ofta det svåraste, och samtidigt det
viktigaste, skedet av syntesproceduren. I detta skede bör systemets funktion definieras exakt, vilket kräver
en genomgående analys av problemställningen. I motsats till detta skede är de senare faserna av syntes-
proceduren mera rutinmässiga. Observera att tillståndsgrafen och tillståndstabellen innehåller samma
information, och det är möjligt (åtminstone med lite rutin) att konstruera tillståndstabellen direkt på
basen av systemspecifikationerna. Det brukar dock rekommenderas att också tillstådsgrafen uppställs, ty
tack vare sin åskådlighet är det enklare att med hjälp av denna hitta eventuella felaktiga funktionssätt.

Uppgift 3.2 Systemet i Fig. 3.4 skall upptäcka passagen av ett föremål vars längd överstiger L. Härvid
skall utsignalen y få värdet 1, efter att föremålet fullständigt passerat sensorn u2 . (Signalen y kan t.ex.
ange för en efterföljande del av processen, att föremålet skall skjutas åt sidan). Signalen y tillåts förbli
vid värdet 1 tills ett nytt föremål ger signal. Endast föremål som rör sig från vänster till höger skall ge
y = 1, men systemet skall reagera förnuftigt också i en situation då ett föremål rör sig från höger till
vänster. Konstruera tillståndsgraf och tillståndstabell för systemet.
- - y
-
u1 u2
- ¾ L -

Figur 3.4: Sensorsystem


3.1. SYNTES AV SEKVENTIELLA SYSTEM 45

Tillståndsminimering

Den primitiva tillståndstabellen enligt ovan kan i princip som sådan utnyttjas för att konstruera det
slutliga styrsystemet. I praktiken tenderar emellertid antalet tillstånd hos systemet härvid bli tämligen
stort, vilket motiverar att man strävar till att förenkla systemet. En tillståndstabell kan förenklas genom
kombination av tillstånd. Tillstånd kan kombineras genom att man även utnyttjar informationen hos
insignalerna. På detta sätt kan två, eller flera, tillstånd kombineras förutsatt att de är konsistenta i
den meningen att de tillståndsövergångar som fås för olika insignalkombinationer, och som kan avläsas i
tillståndstabellen, inte är motstridiga. På detta sätt fås följande regler för kombinering av tillstånd (rader
i tillståndstabellen):

1. Två eller flera rader (tillstånd) i tillståndstabellen kan kombineras om raderna har samma tal i de
kolumner som anger nästa tillstånd.
2. Ett stabilt (inringat) och ett icke-stabilt tillstånd kombineras till stabilt (inringat) tillstånd.
3. Ett tillstånd (stabilt eller icke-stabilt) och ett ”don’t care” kombineras till ifrågavarande tillstånd
(stabilt eller icke-stabilt).
4. Två ”don’t care” kombineras till ”don’t care”.
5. Två stabila tillstånd (dvs med olika nummer) kan kombineras om tillstånden har identiska utsig-
naler.
6. Två eller flera instabila tillstånd (dvs med olika nummer) kan kombineras om de tillståndsövergångar
som slås ihop sker mellan de sammanslagna tillstånden, och om alla tillstånd har identiska utsignaler.

Betrakta som exempel den primitiva tillståndstabellen 3.1. Enligt reglerna ovan fås följande kombina-
tioner: (1,5), (2,6), (3,4,5). I allmänhet kan antalet tillstånd reduceras på flera olika sätt genom olika
tillståndskombinationer. De olika kombinationsmöjligheterna brukar åskådliggöras i form av ett samman-
smältningsdiagram (e. ”merger diagram”). I denna anges raderna (tillstånden) i den primitiva tillståndsta-
bellen i form av noder i en graf, och noderna förenas med en länk om motsvarande rader kan kombineras.
För tillståndstabellen 3.1 fås diagrammet i Fig. 3.5. Varje grupp av noder i diagrammet med den egen-
1
6 2

5 3

Figur 3.5: Sammansmältningsdiagram

skapen att varje nod i gruppen är förenad med alla andra noder i gruppen kan kombineras till ett nytt
tillstånd. I detta enkla exempel ger diagrammet direkt, att tillstånden kan reduceras antingen enligt

(1), (2, 6), (3, 4, 5),

eller
(1, 5), (2, 6), (3, 4)
Båda alternativen leder i detta fall till tre tillstånd hos det reducerade systemet. I praktiken kan antalet
sätt att reducera tillstånden bli mycket stort, och det optimala valet blir nödvändigtvis en kompromiss
mellan olika kriterier. Följande tumregler har visat sig vara nyttiga:
46 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

1. För att förenkla funktionerna för utsignalerna yi , är det fördelaktigt att kombinera rader (tillstånd)
med liknande eller identiska utsignaler yi .
2. För att förenkla de booleska uttryck som behövs för att ange tillståndsövergångar, är det fördelaktigt
att välja kombinationer som eliminerar möjligast många instabila tillstånd, och bevarar möjligast
många ”don’t care” tillstånd.

För exemplet i tabell 3.1 och 3.5 fås enligt regel 1 att kombination enligt (1,5), (2,6), (3,4) är att föredra,
ty enligt denna kombination kombineras endast tillstånd med ekvivalenta utsignaler. Det reducerade
systemet beskrivs med hjälp av en reducerad tillståndstabell. I denna intoduceras tillståndsvariabler xi
för de nya tillstånd som skapats genom tillståndskombination. Dessa variabler brukar anges till höger i
den reducerade tillståndstabellen.
För det betraktade exemplet fås den reducerade tillståndstabellen 3.2.

Tabell 3.2: Reducerad tillståndstabell


u1 0 1 1 0
u2 0 0 1 1
1,5 1 2 3 5 x1
2,6 6 2 3 5 x2
3,4 1 4 3 5 x3

I detta fall har det förenklade systemet tre tillstånd. Tillståndsvariablerna xi (i = 1, 2, 3) kommer att
bestämmas så, att xi = 1 (i = 1, 2, 3), då systemet befinner sig i tillstånd i (i = 1, 2, 3), och xi = 0,
annars.

Uppgift 3.3 Bestäm en reducerad tillståndstabell för systemet i Uppgift 3.2.

Bestämning av utsignalfunktionerna
Vi skall nu bestämma utsignalfunktionerna yi för det reducerade systemet. Varje utsignal yi är då en
boolesk funktion av tillstånden x1 , x2 , . . ., och insignalerna u1 , u2 , . . .. För dessa booleska funktioner kan
ett minimalt funktionsuttryck bestämmas med hjälp av de metoder som behandlats i avsnitt 2.2.
Betrakta åter exemplet med den primitiva tillståndstabellen 3.1 och den reducerade tillståndstabellen
3.2. I detta exempel blir utsignalfunktionerna triviala, eftersom endast tillstånd med identiska utsignaler
kombinerats (enligt tumregel A). Enligt tabell 3.1 är y1 = 1 i de stabila tillstånden 2 och 6 dvs. då
x2 = 1, och y2 = 1 i de stabila tillstånden 3 och 4 , dvs. då x3 = 1, och vi får:
y1 = x2 , y2 = x3 (3.2)
Mera allmänt kan stabila tillstånd som befinner sig på samma rad i den reducerade tillståndstabellen ha
olika utsignaler. Utsignalfunktionerna bör då bestämmas genom att betrakta varje stabilt tillstånd i den
3.1. SYNTES AV SEKVENTIELLA SYSTEM 47

reducerade tillståndstabellen. För exemplet i fråga fås att y1 = 1 för de stabila tillstånden 2 och 6
varvid tabell 3.2 ger:

y1 = u1 u2 x2 + u1 u2 x2
Detta uttryck kan förenklas genom att observera att utsignalernas värden är likgiltiga för instabila till-
stånd. Vi kan beskriva y1 med hjälp av Karnaugh-diagrammet nedan.

u1 u2
00 01 11 10 y1 = u1 u2 x2 + u1 u2 x2
0
x2 y1 = x2
1 1 - - 1

Bestämning av tillståndsövergångar

Den reducerade tillståndstabellen (3.2) anger systemets tillståndsövergångar. I ett stabilt tillstånd
sker ingen tillståndsövergång. I ett instabilt tillstånd anger tabellen det nya stabila tillståndet till vilket
övergången sker.
För att beskriva tillståndsövergångarna definieras för varje tillståndsvariabel xi en funktion av typen
(3.1):
xi = (xi + Si ) · Ri
där (Set) funktionen Si = 1 ger en övergång till tillståndet i, xi = 1. Och (Reset) funktionen Ri = 1 ger
en övergång från tillståndet i, xi = 0. Samt att Si = Ri = 0 förorsakar ingen förändring, xi förblir vid
sitt tidigare värde. Situationen Si = Ri = 1 är sådan att den ej kan förekomma.
För systemet i tabell 3.2 har vi att övergång till det stabila tillståndet x1 fås om systemet befinner sig
i tillståndet x3 och u1 = u2 = 0 eller u1 = 0, u2 = 1, eller om systemet befinner sig i tillståndet x2 och
u1 = 0, u2 = 1. Således fås

S1 = u1 u2 x3 + u1 u2 x3 + u1 u2 x2
= u1 x3 + u1 u2 (3.3)

(Här har utnyttjats, att värdet för S1 är likgiltig för u1 = 0, u2 = 1, x1 = 1) Analogt har vi, att övergång
från tillståndet x1 sker, om systemet befinner sig i x1 och u1 = 1, u2 = 0 eller u1 = 1, u2 = 1. Således fås

R1 = u1 u2 + u1 u2 = u1 (3.4)

(x1 kan bortlämnas, ty R1 = 1 gör ingen skada, fastän systemet skulle befinna sig i något annat tillstånd.)
På samma sätt fås för de övriga tillstånden

S2 = u1 u2 x1 , R2 = u1 u2 + u1 u2 = u2
S3 = u1 u2 , R3 = u1 u2 + u1 u2 = u1 (3.5)

och för tillståndsvariablerna fås slutligen uttrycken

xi = (xi + Si ) · Ri (3.6)

De booleska funktionerna 3.2 - 3.6 beskriver fullständigt det i Ex. 3.1 sökta styrsystemet. Observera,
att konstruktionen av funktionerna gjorts så, att Si och Ri är funktioner av de nya insignalerna och
48 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

de gamla tillståndsvariablerna, medan utsignalerna yi är funktioner av de nya insignalerna och de nya
tillståndsvariablerna. Detta är viktigt att beakta vid implementering (programmering) av funktionerna.
T.ex. i ladder-diagram som används i laborationsuppgiften så utförs de fördefinerade set- och reset-
funktionerna genast. Detta är typiskt inte ett problem, då reset-funktioner i allmänhet är oberoende av
tillstånd (undantag förekommer t.ex. på sidan 52).

Uppgift 3.4 Slutför syntesen av styrsystemet i Uppgift 3.2 och 3.3

Uppgift 3.5 Planera styrsystemet för Ex. 3.1 i det fall då tillstånden i den primitiva tillståndstabellen
3.1 kombineras enligt (1), (2, 6), (3, 4, 5).

Något om implementering med logiska grindar och vippor

Styrsystemet kan implementeras med hjälp av logiska grindar och vippor. Härvid representeras till-
ståndsvariablerna som utsignaler från vippor. För att minimera antalet vippor utnyttjas det faktum
att man med n st. logiska variabler kan beskriva 2n st. tillstånd.
För att t.ex. beskriva 4 tillstånd räcker det med 2 vippor, varvid de 4 tillstånden representeras av
(00), (01), (11), (10). Liksom tidigare bör den kombinatoriska delen av nätet planeras så att det är hasard-
fritt (jmf. avsnitt 2.3). I sekventiella nät av den typ som visas i Fig. 3.1 tillkommer dessutom problemet
som uppstår p.g.a. att vippornas reaktionstider inte är exakt desamma. Detta leder till att systemets
beteende vid en tillståndsförändring kommer att bestämmas av den vippa vars utsignal reagerar först.
Resultatet är en s.k. kapplöpning (eng. race), vid vilken systemet genomgår ett antal tillståndsförändring-
ar till ett nytt stabilt tillstånd, som kan vara det korrekta nya tillståndet eller inte, beroende på vilken
vippa som reagerar snabbast. Systemet kan också börja oscillera mellan ett antal tillstånd, utan att hitta
ett nytt stabilt tillstånd. Kapplöpningar och oscillationer undviks i princip på liknande sätt som hasard:
konstruera systemet så att två vippor ej ändrar tillstånd samtidigt.
3.2. DETERMINISTISKA SEKVENSSTYRNINGSPROBLEM 49

3.2 Deterministiska sekvensstyrningsproblem


I avsnitt 3.1 behandlades närmast sk. stokastiska sekvensstyrningsproblem, där systemet bör fungera på
ett specificerat sätt för en mängd olika insignalsekvenser.
Deterministiska sekvensstyrningsproblem kan uppfattas som ett specialfall av de mera generella stokas-
tiska sekvensstyrningsproblemen, med en på förhand given insignalsekvens. Metodiken i avsnitt 3.1 kan
därför också tillämpas för deterministiska sekvensstyrningsproblem. P.g.a. sin enklare struktur existerar
emellertid också andra procedurer som i praktiken tillämpas för problem av denna typ.

FUP

FUP (ty. Funktionsplan), ”funktionsdiagram”, är en tysk standard (DIN 40718) för beskriving av sekven-
tiella styrproblem. I denna anges processens olika steg grafiskt i form av numrerade rutor. Vid dessa anges
villkor som bör gälla för att processen skall övergå till ifrågavarande steg, en beskrivning av funktionerna
hos processen vid skedet i fråga, samt villkor för senare steg i processen.

Steg- u3 Konjunktiva
nummer & u2 villkor för steg 4
u1
R 4 Aktion 1 a ¾ Följd av framgånsrikt
Aktion 2 b utförd aktion
Aktion 3 c
Ev. -
beskrivning
av steget

a Konjunktiva villkor
b för steg 5 (alternativ
c beteckning)

5 Aktion 4 d
Aktion 5 g
Aktion 6 h

d Disjunktiva
≥1 g villkor för steg 6
h
6

Figur 3.6: Funktionsplan

Exempel 3.2 Betrakta processen i Fig. 3.7. Den önskade funktionen är följande. Processen skall kunna
startas med en START-signal, varvid ventilerna VA och VB öppnas (VA = 1, VB = 1) förutsatt att
behållarna A resp. B är fulla (HA = 1 resp. HB = 1) och reaktorn är tom (LR = 0). Efter tömning av
behållarna (LA = 0 resp. LB = 0) skall ventilerna VA resp. VB stängas (VA = 0, VB = 0), och omrörning
och uppvärmning slås på (y1 = 1, y2 = 1). Reaktorinnehållet skall omröras och uppvärmas i t = 10 min,
50 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

HA HB
A B
LA LB

VA y1 VB
? ?

y2

LR

VR
?
Figur 3.7: Reaktor

varefter reaktorn töms (VR = 1). Efter genomförd sekvens skall processen åter kunna startas med en
START-signal, förutsatt att ovan angivna villkor är uppfyllda.
En funktionsplan för processen ses i figur 3.8.

START
& LR
1 Stäng VR VR
Starta

HA HB

2 Öppna VA VA 3 Öppna VB VB
Töm A Töm B

&
LA
& LB
4 Stäng VA VA
Omrör och Stäng VB VB
uppvärm
Omrörning på y1
Uppvärmning på y1
Sätt timer xT M R
xT M R (10min)
5 Omrörning från y1
Töm reaktor Uppvärmning från y2
Öppna VR VR

Figur 3.8: Funktionsplan för reaktor


3.2. DETERMINISTISKA SEKVENSSTYRNINGSPROBLEM 51

På basen av funktionsplanen kan en primitiv tillståndstabell uppställas, och systemets logik kan planeras
på basen av denna på samma sätt som i avsnitt 3.1, genom lämpligt beaktande av parallella processteg.
Detta förfarande rekommenderas för processer med långa sekvenser, då det kan vara viktigt att förenkla
logiken genom kombination av tillstånd. Deterministiska sekventiella processer innehåller emellertid i
allmänhet mycket färre tillstånd än stokastiska sekventiella processer. Därför planeras logiken ofta direkt
på basen av funktionsplanen. För att illustrera proceduren skall vi i detta exempel välja detta förfarande.
Det är dock viktigt att komma ihåg att logiken kan förenklas enligt metoderna i avsnitt 3.1.

För att realisera tidsfördröjningen i processteg 4 behövs någon typ av tidsfördröjningsfunktion. I praktiska
realiseringar, t.ex. med en programmerbar logik, finns vanligen olika typer av tidsfördröjningsfunktioner.
Vi skall här använda oss av en vanligt förekommande funktion av denna typ.

Vi introducerar en logisk ”timer”-funktion TMR med insignalen xT M R och utsignalen xT M R [∆t]: Här är

xT M R - TMR - xT M R [∆t]
∆t

Figur 3.9: Timer

∆t(≥ 0) ett argument som kan väljas fritt. TMR-funktionen har följande funktionssätt: En förändring av
insignalen (xT M R ) från 0 till 1 får utsignalen (xT M R [∆t]) att övergå från 0 till 1 en tid ∆t senare. Däremot
övergår utsignalen till 0 utan tidsfördröjning då xT M R = 0. En dylik timer kallas för Timer On Delay
(TON), finns även andra typer av timers, t.ex. Timer Off Delay (TOFF), som fördröjer förändringen från
1 till 0 men inte andra vägen. Funktionen för en TON illustreras i följande figur.

xT M R
? ?
6 6
¾ ∆t - ¾ ∆t -

? xT M R [∆t]
6

Figur 3.10: Timerns funktion

För processen i Fig. 3.7 och 3.8 har vi


Insignaler: HA , LA
HB , LB
LR , START
Utsignaler: VA , VB
y1 , y2
VR
Enligt funktionsplanen i Fig. 3.8 har processen fem st. steg, för vilka fordras motsvarande tillståndsvari-
abler: x1 − x5 . Dessutom definieras en variabel xT M R och motsvarande utsignal xT M R [t] från en TMR-
funktion.

Logiken kan nu konstrueras på basen av Fig. 3.8. För varje tillståndsvariabel definieras Set- och Reset-
funktioner enligt
xi = (xi + Si ) · Ri , i = 1, 2, 3, 4, 5

Ur Fig. 3.8 fås:


52 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

S1 = START · LR · R1 = HA + HB
S2 = HA · (x1 + x3 ) R2 = LA · LB · (x2 · x3 + x4 )
S3 = HB · (x1 + x2 ) R3 = LA · LB · (x2 · x3 + x4 )
S4 = LA · LB · x2 · x3 R4 = xT M R [10min]
S5 = xT M R [10min] R5 = START · LR

Vi behöver här en speciell konstriktion av R2 och R3 , därför att vi kommer att vara vid tillstånden 2 och 3
samtidigt. Och man kan inte lita på vid programmering att vi kommer att vara vid det gamla tillståndet
då vi beräknar reset-funtktionerna. T.ex. i ett ladder-diagram så utförs set och reset genast, men det
kan man heller inte lita på i alla tillämpningar. xT M R [10min] är utsignalen från en TMR-funktion, vars
insignal är xT M R = x4 . Utsignalernas värden blir:

VA = x2 y1 = x4
VB = x3 y2 = x4
VR = x5

Grafcet

GRAFCET (Graphe de Commande Etape-Transision) är en grafisk procedur för beskrivning av sekventiel-
la processer. Proceduren, som ursprungligen utvecklats i Frankrike, har standardiserats i flera länder. Me-
toden har stora likheter med FUP, se Figur 3.11, som visar såväl en GRAFCET som en FUP-beskrivning
av ett automatiskt blandningssystem.

(a) (b)

Figur 3.11: (a) GRAFCET och (b) FUP beskrivningar av ett automatiskt blandningssystem
3.3. PETRI NÄT 53

3.3 Petri nät


Tillståndsautomatbeskrivningen i avsnitt 3.1 (tillståndsgraf, tillståndstabell) har en del begränsningar,
vilka gör beskrivningen obekväm för vissa exempel. Detta har motiverat alternativa formalismer för att
beskriva sekventiella system. Av dessa är Petri-nätet det viktigaste. Petri-nätet har varit som förebild vid
utvecklandet av Grafcet-beskrivningen, se avsnitt 3.2.
Vi skall först illustrera begränsningarna för tillståndsautomater med ett par exempel.

Exempel 3.3 Betrakta ett system med där inkommande jobb betjänas av en server S (Fig. 3.12). In-
kommande jobb som ej kan betjänas direkt sätts i en kö. Servern kan betjäna endast ett jobb åt gången.

Server
Ink. jobb Kö
··· S

Figur 3.12: Serverproblemet

Låt den logiska signalen A = 1 ange att ett jobb anländer, och låt S = 1 ange att ett jobb betjänats
och att följande jobb kan betjänas av servern. En tillståndsautomatbeskrivning av systemet visas i Figur
3.13, där nod nummer i (i=0,1,2,. . . ) motsvarar ett tillstånd med i st. jobb i kön. Systemet har alltså ett

A A A A A
- - - - -
0 ¾ 1 ¾ 2 ¾ 3 ¾ 4 ¾ ···
S S S S S

Figur 3.13: Tillståndsautomat för serverproblemet

oändligt antal tillstånd.

Exempel 3.4 Betrakta påfyllningen av en reaktor från två behållare (Fig. 3.7), där tömning av behål-
larna A och B kan ske samtidigt. Figur 3.14 visar en tillståndsautomatbeskrivning av processen, där
noderna motsvarar följande tillstånd.

1. Klar för start

2. A och B töms

3. A töms, B fylls

4. B töms, A fylls

5. A tömd, B töms

6. B tömd, A töms

7. Reaktorn fylld
54 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

Figur 3.14: Tillståndsautomat för blandningsprocess

Det behövs ett tillstånd för varje kombination av de två delprocessernas tillstånd. Detta illustrerar en
inherent svaghet hos tillståndsautomatbeskrivningen: Antalet tillstånd ökar kombinatoriskt med antalet
delsystem. Dessutom leder en utvidgning av systemet med nya delsystem (t.ex. en tredje behållare C) till
besvärliga modifieringar av tillståndsautomatbeskrivningen.
För att kunna beskriva sekventiella, händelse-drivna system på ett bekvämt sätt har man utvecklat
alternativ till tillståndsautomatbeskrivningen. Det (sannolikt) mest utbredda av dessa är Petri-nätet
(C.A. Petri 1964).
Ett Petri-nät har två typer av noder: Cirklar representerar ”platser” (places), som beskriver tillstånd eller
aktiviteter hos ett system, och tvärstreck som representerar transitioner. Noderna kan förbindas med flera
riktade länkar (Fig. 3.15).

- -
-
p1 p2
t1

Figur 3.15: Petri-nät med två platser p1 , p2 , och en transition t1

En transition kan ”exekveras”, vilket kan användas för att representera tillståndsövergångar. För att ange
när en transition kan exekveras förses platserna med ”tecken” (token), jmf. Fig. 3.16. Antalet tecken i de
olika platserna definierar Petri-nätets tillstånd x, dvs

x = [x(p1 ) x(p2 ) . . . x(pm )]

där x(pi ) = antalet tecken i plats pi .


3.3. PETRI NÄT 55

• - -
-
p1 p2
t1

Figur 3.16: Petri-nät med tecken, tillstånd x = [1 0]

För att en transition skall kunna exekvera bör det finnas ett tecken för varje riktad länk till transitionen.
Transitionen i Figur 3.16 kan således ej exekveras. Däremot exekveras transitionen t1 i Figur 3.17(a).
Observera att antalet tecken i ett Petri-nät i allmänhet ej behöver vara konstant; antalet kan såväl öka

• - -
• -
p1 p2
t1
(a) x = [2 0]

- - •
-
p1 p2
t1
(b) x = [0 1]

Figur 3.17: (a) Petri-nät med transition som kan exekveras (b) Tillstånd efter transition

som minska beroende på antalet länkar till och från de transitioner som exekveras. Transitionerna kan
vara förbundna med flera platser och vice versa. Notera även att en plats kan vara förbunden med en
transition i båda riktningarna, jmf. Fig. 3.18.

¾ -
-
p1 p2
t1

Figur 3.18: Petri-nät med länkar med olika riktning

Ett exempel på dynamiken i ett Petri-nät illustreras i Fig. 3.19-3.21


Observera att det i Fig. 3.21 antagits att t2 exekverats i x1 . Lika väl kunde emellertid t1 eller t3 ha
exekverats i x1 , vilket leder till andra tillstånd hos nätet. För att beteendet hos ett Petri-nät skall vara
entydigt definierat bör ordningsföljden av de exekverbara transitionerna specifieras på något sätt. Det
viktigaste sättet ur ingenjörsmässig synvinkel är att binda transitionerna till externa händelser, varvid
Petri-nätet beskriver det som är möjligt. Mera om detta under Exempel 3.5 och 3.6.
56 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

p2 t2
¾
1 -
p1 t1 p4
3 q •
• -

p3 t3
q -
¼
-

Figur 3.19: x0 = [2, 0, 0, 1], endast transition t1 kan exekveras

p2 t2
¾
1 • -
p1 t1 p4
3 q •
• -
p3 t3
q • -
¼
-

Figur 3.20: Nytt tillstånd x1 = [1, 1, 1, 1] efter exekvering av t1 i x0

p2 t2
¾
1 • -
p1 t1 p4
3 q •
• -

p3 t3
q -
¼
-

Figur 3.21: Nytt tillstånd x2 = [1, 1, 0, 2] efter exekvering av t2 i x1


3.3. PETRI NÄT 57

En variant av Petri-nät där transitionernas ordningsföljd kan specificeras genom att införa tider τi ≥ 0 för
de olika transitionerna ti , som anger tiden efter vilken transitionen exekveras, då villkoren för exekvering
blivit uppfyllda (sk. timed Petri net). Sådana fördöjda transitioner anges med en rektangel, se Fig. 3.22.
Transitionen t1 i Fig. 3.22 exekveras efter τ1 tidsenheter efter att villkoren för exekvering (två tecken i
plats p1 ) blivit uppfyllda.
τ1
• - -
• -
p1 p2
t1

Figur 3.22: Timed Petri net

Teorin för Petri-nät analyserar olika egenskaper hos näten, såsom

- Om det dynamiska beteendet fortsätter med nya transitioner i all oändlighet (”liveliness”), eller
upphör vid något skede.

- Om systemet hakar upp sig utan att komma vidare (”deadlock”).

- Vilka tillstånd som kan nås från ett givet starttillstånd.

- Om tillståndet (totala antalet tecken) förblir begränsat.

Till slut skall vi illustrera hur systemen i exemplen 3.3 och 3.4 kan beskrivas med Petri-nät.

Exempel 3.5 Betrakta systemet i Ex. 3.3. Ett sätt att beskriva nätet med Petri-nät visas i Fig. 3.23.
Vi utnyttjar oss av tre stycken transitioner:
a: representerar att ett inkommande jobb anländer

s: representerar start av betjäning i servern

c: representerar att servern fullbordat ett jobb. Jobben antas ta τc tidsenheter.


Dessutom behövs tre platser
Q: antalet tecken i Q anger antalet jobb i kön

B: ett tecken i B anger att servern utför jobb (Busy)

I: ett tecken i I anger att servern kan ta emot jobb (Idle)

a a
? ?
Q • I Q • I

I I
sR ª sR ª

? ?
B B •

c ? τc c ? τc

(a) Initialtillstånd med tom kö och ledig server (b) Servern upptagen och två jobb i kön
Figur 3.23: Petri-nät för server-problemet
58 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

Här är ankomsten av jobb a en transition som specificeras utifrån. Observera att i motsats till till-
ståndsautomatbeskrivningen i Ex. 3.3 har Petrinätbeskrivningen ändligt antal noder. Antalet jobb i kön
karakteriseras entydigt av nätets tillstånd, dvs antalet tecken i platserna (och i det här fallet antalet
tecken i Q).

Uppgift 3.6 Modifiera Petri-nätet i Ex. 3.5 enligt följande:

(a) Inkommande jobb kommer med en viss tid emellan

(b) Jobben (kunderna) blir och prata i väntrummet efter att ha blivit betjänade av servern.
(c) Servern kan gå sönder eller annars tas ur bruk för service.

a
? I
Q ¾

sR ª

?
B

c ? τc
3.3. PETRI NÄT 59

Exempel 3.6 Betrakta systemet Fig. 3.7 och Ex. 3.2 med påfyllning av en reaktor från två behållare A
och B. Ett Petri-nät som beskriver detta system ses i Fig. 3.24. Externa signaler för start och påfyllning
av A och B har även införts.

? ?
A fylld Start ok Start ok B fylld

6 6
R? ?
ª

? ?
A töms B töms
HA 6 6 HB
(VA = 1) (VB = 1)

? LA LB ?

+ ? ? s
Fyll A A tömd B tömd Fyll B
(VA = 0) (VB = 0)

s +

?
Omrör&Uppvärm

?
10 min
Start
?
? Töm reaktor (VR = 1)

? LR

/ ?
¾ Tömd reaktor (VR = 0)

Figur 3.24: Petri-nät för blandningsprocess

Observera att i motsats till tillståndsautomat beskrivningen i Fig. 3.14 kan de parallella processerna
beskrivas oberoende av varandra i Petri-nät beskrivningen. Detta gör beskrivningen mera strukturerad,
och det är enkelt att sätta till eller avlägsna delprocesser. Defacto så har vi mycket mera detaljer med
i Petrinätet i figure 3.24 än i tillståndsautomaten i figur 3.14. En nackdel med Petri-nät är att den
grafiska representationen av ett realistiskt system nog kan bli relativt komplicerad, med många platser
och transitioner.
Vidare så ses i ovanstående exempel att platser är ofta sammankopplade med utsignaler (inom parentes),
och transitioner är ofta sammankopplade med insignaler. Transitionerna som är kopplade med insignaler
så har som tillägssvillkor att den externa signalen måste ha rätt värde. Dylika transitioner brukar kallas
icke styrbara, eftersom de är beroende av omgivningen.
60 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM

Uppgift 3.7 Bestäm ett Petri-nät som modellerar alarmsystemet i Ex. 3.1.

Alarmsignal u1 - - y1 Siren
Styrsystem
Kvitteringsknapp u2 - - y2 Alarmlampa

Uppgift 3.8 Bestäm ett Petri-nät som modellerar systemet beskrivet i Uppgift 3.2.
- - y
-
u1 u2
- ¾ L -
Kapitel 4

Programmerbar logik

Programmerbar logik (PLC: Programmable Logic Controller; fi. ohjelmoitava logiikka) är en sorts mikro-
datorliknande instrument som är speciellt avsedda för logik- och sekvensstyrningsproblem. De introduce-
rades inom den amerikanska bilindustrin på 1970-talet, för att effektivera omställningen av produktions-
linjerna vid produktbyten. I dag används programmerbar logik rutinmässigt i all industri.
En PLC kan schematisk se ut enligt följande: Insignalerna och utsignalerna är spänningar som kan tänkas

Program-
merings-
enhet

?
¾ ¾
- Processor Input- ¾
Gränssnitt

Elaggregat Input
- modul ¾
-
Minne Output- - Output
modul -

Figur 4.1: Schematiskt diagram av PLC

represenera boolska variabler (hög spänning = 1, låg spänning = 0). En PLC kan programmeras med logis-
ka funktioner, så att utsignalerna är booleska funktioner av insignalerna och eventuellt tillståndsvariabler.
Programmering av dagens PLC:n sker idag uteslutande med PC:n.
Det existerar en stor mängd olika PLC:n på marknaden, nedan en lista på några viktiga leverantörer (i
alfabetisk ordning):

- ABB (PROCONTIC)

- Allen-Bradley

- Mitsubishi

- Omron

- Philips

61
62 KAPITEL 4. PROGRAMMERBAR LOGIK

- Schneider (Telemecanique)
- Siemens (SIMATIC)
- Texas Instruments
- Toshiba
- m.fl.

Figur 4.2: Illustration av modulär uppbyggnad, bilden från Allen-Bradleys websidor

Dagens PLC:n har en modulär uppbyggnad, se Fig. 4.2 och 4.3. Man kan således köpa de klossar man
behöver, t.ex

- Digitala inputs (typiskt i paket av 4-32 st.)


- Analoga inputs (typiskt i paket av 4-16 st.)
4.1. FUNKTIONSSÄTTET HOS EN PLC 63

Figur 4.3: Närmare bild av PLC, bilden från Omrons websidor

- Digitala outputs

- Analoga outputs

- PID-regulatorer

- Redundans för kritiska tillämpningar

D.v.s. man kan och brukar även utföra konventionell ”analog” reglering med dagens PLC:n.

4.1 Funktionssättet hos en PLC


En PLC opererar enligt sekvensen

1. Läs och lagra insignaler i minnet

2. Exekvera programmet

3. Uppdatera utsignalerna

Tillståndsvariablernas och utsignalernas värden evalueras således en gång per cykel, och man undviker
problem som hasard, kapplöpning och oskillation som förekommer i analog logik. Däremot förekommer
nog liknande beteende i PLC:n också, men det beror i så fall på programmeringsfel!
Om t.ex. en variabel A i programmet tilldelas ett värde enligt

A=A

kommer värdet hos A att alternera periodiskt med den frekvens som sekvensen genomgår.

0
64 KAPITEL 4. PROGRAMMERBAR LOGIK

Tiden för en cykel är typiskt i området 0.5-50 ms. Man låter oftast programmets längd påverka cykelns
längd, dvs man börjar på nytt genast då man är färdig med en cykel. Leverantörer specificerar tider för
hur länge det tar att utföra 1000 ord (time/Kword) av programinstruktioner, och hur länge det tar att
avläsa I/O. Dessa uppgifter kan användas för uppskattning av tiden ∆tc för en cykel. Denna tid bör
beaktas då man har snabba processer eller händelser med kort varaktighet:

- Den tid som maximalt kan förflyta innan en förändring i en insignal påverkar utsignalerna är 2∆tc
(förändringen sker strax efter att insignalerna inlästs).

- En insignalförändring som varar en tid kortare än ∆tc kan bli odetekterad.

4.2 Programmering av en PLC


Programmering av en PLC sker med hjälp av en skild programmeringsenhet, som i dagens läge är en
PC. Det finns ett antal olika sätt att programmera PLC:n, och det finns fem stycken IEC(International
Electrotechnical Commission)-standardiserade programmeringsspråk:

- Structured Text (ST), hög-nivå textbaserat språk, liknar Pascal

- Instruction List (IL), låg-nivå textbaserat språk, liknar assembler, beskrivs närmare i kapitel 4.2.1.

- Ladder Diagram (LD), grafiskt språk, heter kontakt-diagram på svenska. Ett av de mest använda
språken, beskrivs närmare i kapitel 4.2.2.

- Function Block Diagram (FBD), grafiskt språk, har bl.a. logiska grindar och vippor som grundele-
ment.

- Sequential Function Chart (SFC), grafiskt språk baserat på Grafcet.

I praktiken så har varje leverantör sina egna programmeringsverktyg, som mer eller mindre påminner om
IEC-standarden. Förutom de ovan nämnda så används åtminstone FUP, ”vanlig” Grafcet samt även C
för programmering av PLC:n.

4.2.1 Låg-nivå programmeringsspråk (IL)


PLC:n kan programmeras med speciella assemblerliknande programmeringsspråk. Uppbyggnaden av ett
IL-program illustreras med ett exempel:

Märke Operator Operand Kommentar


LD Count (* Ladda variabeln Count i dataregistret *)
loop SUB 1 (* Minska värdet i dataregistret med ett *)
NE 0 (* Kolla om dataregistret är 0 *)
JMP loop (* Hoppa till märket ’loop’ om föregående jämförelse är sann *)

Det finns två stycken så kallade modifierare som kan användas i samband av de flesta av operatorerna,
t.ex. så betyder LDN att man tar logisk icke på operanden innan den lagras i dataregistret. Parenteser
är den andra typen av modifierare, vilket fungerar som väntat som modifierare av beräkningsprioritet.
4.2. PROGRAMMERING AV EN PLC 65

Tabell 4.1: IL-operatorerna enligt IEC


Operator Modifierare Operandtyp Beskrivning
LD N Alla Ladda operand i dataregister
ST N Alla Spara innehållet i dataregistret i operand
S BOOL Tilldela operand värdet 1 (sant) om dataregistret sant
R BOOL Tilldela operand värdet 0 (falskt) om dataregistret sant
AND N och () BOOL Logisk OCH
OR N och () BOOL Logisk ELLER
XOR N och () BOOL Logisk XOR
ADD () Alla Addition
SUB () Alla Subtraktion
MUL () Alla Multiplikation
DIV () Alla Division
GT () Alla Större än
GE () Alla Större än eller lika med
EQ () Alla Lika med
NE () Alla Icke lika med
LE () Alla Mindre än eller lika med
LT () Alla Mindre än
JMP N Märke Konditionellt hopp (beroende på senaste jämförelsen)
CAL N Namn Konditionellt anrop av funktionsblock
RET N Konditionell retur från funktionsblock

LD X (* Ladda variabeln X i dataregistret *)


GT( A (* Utför GT efter att uttrycket i parentes beräknats *)
ADD B (* Beräkna A+B *)
) (* Nu först testas om X > (A+B) *)

IL påminner alltså mycket om assembler; man skall komma ihåg att man hela tiden jobbar med register
och att beräkningen sker i den ordning som instruktionerna kommer (om man inte sätter parentes, som
i exemplet ovan. Instruktionerna

LD A
ADD B (* A+B *)
MUL C (* (A+B)C *)

beräknar (A+B)C och inte A+(BC) som i ett högnivå programmeringsspråk.


Instruktionerna (operatorerna) som ges av IEC-standarden ses i Tabell 4.1.

Uppgift 4.1 Skriv ett PLC-program för den logiska funktionen för tillstånd 1 från alarmuppgiften, dvs
Ekv. 3.3, 3.4 och 3.6

S1 = u1 u2 x3 + u1 u2
R1 = u1
x1 = (x1 + S1 ) · R1
66 KAPITEL 4. PROGRAMMERBAR LOGIK

4.2.2 Kontaktdiagram (LD)


Kontaktdiagram (e. ladder diagram, ty. kontakt-plan) är en metod för att beskriva och logiska funktioner,
som har varit redan länge standardiserad. Metoden härstammar från relä-tekniken, men utnyttjas idag
allmänt för att programmering av PLC:n.
I ett kontaktdiagram har man två vertikala ledningar, av vilka den vänstra är förbunden med en spän-
ningskälla, och den högra är jordad (Fig. 4.4). Ledningarna är horisontalt förbundna med ”strömstigar”.

1 0

Figur 4.4: Kontaktdiagram

Varje horisontal koppling representerar en variabel vars logiska värde är 1 om ström går genom koppling-
en, och 0 annars. Funktionerna införs symboliskt; en kontakt som är sluten om u = 1, och annars öppen,
anges med symbolen

Denna variabel u som avgör huruvida kopplingen är sluten eller ej kan vara en insignal eller en intern
variabel (ett tillstånd). Typiskt så ges denna variabel som parameter till kontakten; man matar in en
adress direkt eller en symbol (t.ex. u) som associerats med adressen.
Bra minnesregel vid behandling av kontaktdiagram är att normalläge är 0, en 1 kräver en insats. T.ex.
ovanstående kontakt är öppen i normalläge, medan u = 1 så sluter den. Symbolen för en kontakt som är
sluten i normalläge, dvs då u = 0 ser ut enligt följande

Slutresultatet av varje horisontell rad kan lagras i en variabel, vilket betecknas enligt följande

y
()

Med hjälp av dessa tre grundsymboler kan vi nu konstruera de vanligaste logiska funktionerna med hjälp
av kontaktdiagram, se Fig. 4.5.
4.2. PROGRAMMERING AV EN PLC 67

z = x1 · x2

z = x1 + x2

z=x

z = x1 + x2

z = x1 · x2

z = x1 · x2

z = x1 + x2

Figur 4.5: Vanliga logiska fuktioner som kontaktdiagram. Observera de avvikande beteckningarna
(x=insignal, z=utsignal).

Vi ser att logisk OCH fås med en seriekoppling och logisk ELLER med en parallellkoppling.
RS-vippor konstrueras i IEC-standarden (och i labben) med hjälp av speciella S och R resultatvariabler.
x
(S)

x
(R)

Då det logiska uttrycket till vänster är sant så betyder det att den logiska variabeln associerad med
RS-vippan (x i det här fallet) kommer att sättas till 1 respektive 0.
Det finns många olika beteckningar och funktionssätt för timer-funktionen, och det finns ingen egent-
lig standardbeteckning. Timer-funktioner har oftast flera utsignaler, förutom den egentligen fördröjda
signalen även interna variabler som t.ex. själva klockräknaren.
68 KAPITEL 4. PROGRAMMERBAR LOGIK

Uppgift 4.2 Konstruera ett kontaktdiagram för de boolska funktionerna y1 , y2 , VA , VB och VR i Ex.
3.2.

HA HB
A B
LA LB

VA y1 VB
? ?

y2

LR

VR
?

You might also like