Professional Documents
Culture Documents
SEKVENSSTYRNING
SEKVENSSTYRNING
SEKVENSSTYRNING
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
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
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
-
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:
• Styckegodsindsutrin
– Operation av verktyg
– Robotar
5
6 KAPITEL 0. INLEDNING
• Vardagen
– Tjuvlarm
– Bankomater
– All slags elektronik
• Telefonväxlar
Angränsande områden:
Denna kurs fokuserar på industriella sekvensstyrningsproblem och implementering med hjälp av program-
merbar logik.
A B
VA VB
? ?
Reaktor ∞
VR
?
Schematiskt:
Reaktorn tom
VR stängd
Öppna VA och VB
A töms B töms
A tömd B tömd
Uppvärming
Reaktorn töms
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
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:
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
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.
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
un /ym-
xi xj
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 ).
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:
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
ICKE (NOT), logisk invers, med beteckningen x (= icke x). Beteckningarna x0 och ¬x används även.
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)
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:
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
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:
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.
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.
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
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
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.
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
Följande exempel illustrerar hur funktionstabellen på ett helt naturligt sätt kan konstrueras på basen av
specifikationerna för ett logikstyrningsproblem.
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 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
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.
Uppgift 2.1 Hur många logiska grindar behövs att realisera den booleska funktionen i exempel 2.1?
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.
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.
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
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
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
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
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
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
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.
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
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
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.
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).
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
NUMBER OF VARIABLES : 4
1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0
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.
CONSTRAINT TABLE
------------------
32 KAPITEL 2. BOOLESKA FUNKTIONER
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.
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 - -
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.
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
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
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
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
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:
1. De kryss som är ensamma i en kolumn skall inringas x , de motsvarar en väsentlig primimplikator.
Märk motsvarande rader med asterisk ∗.
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.
AB
00 01 11 10
00 1 1 1
01
CD
11 1 1 1
10 1 1 1
X = BD + BC + AD + AC
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
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.
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.
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
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 = AC + AB + BC
A &
B
& ≥1
X
C
&
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.
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.
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 –
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.
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
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
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 -
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
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
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.
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.
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)
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.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).
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
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
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
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
∆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
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
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
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
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
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.
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
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
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
• - -
-
p1 p2
t1
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
p2 t2
¾
1 -
p1 t1 p4
3 q •
• -
•
p3 t3
q -
¼
-
p2 t2
¾
1 • -
p1 t1 p4
3 q •
• -
p3 t3
q • -
¼
-
p2 t2
¾
1 • -
p1 t1 p4
3 q •
• -
•
p3 t3
q -
¼
-
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
- Om det dynamiska beteendet fortsätter med nya transitioner i all oändlighet (”liveliness”), eller
upphör vid något skede.
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
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).
(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)
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 -
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.
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 outputs
- Analoga outputs
- PID-regulatorer
D.v.s. man kan och brukar även utföra konventionell ”analog” reglering med dagens PLC:n.
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.
- 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.
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.
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
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 *)
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
1 0
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
?