Hela kompendiet - Åbo Akademi
Hela kompendiet - Åbo Akademi
Hela kompendiet - Åbo Akademi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
˚ABO AKADEMI<br />
TEKNISKA DEPARTMENT OF<br />
FAKULTETEN ENGINEERING<br />
Laboratoriet för Process Control<br />
reglerteknik Laboratory<br />
LOGIKSTYRNING<br />
Hannu Toivonen<br />
Jari Böling<br />
Augusti 2012<br />
Biskopsgatan 8<br />
FIN–20500 ˚Abo Finland
Inneh˚all<br />
0 Inledning 5<br />
0.1 Litteratur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
1 Klassisk logik och boolesk algebra 9<br />
1.1 Insignaler, utsignaler och tillst˚and . . . . . . . . . . . . . . . . . . . . . . . 9<br />
1.2 Propositionskalkyl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
1.3 Boolesk algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
1.4 N˚agot om implementeringen av logiska funktioner . . . . . . . . . . . . . . 14<br />
2 Booleska funktioner 17<br />
2.1 Disjunktiv och konjunktiv normalform . . . . . . . . . . . . . . . . . . . . 17<br />
2.2 Förenkling av booleska uttryck . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
2.2.1 Karnaugh-diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
2.2.2 QMC-metoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
2.2.3 System med flera utsignaler . . . . . . . . . . . . . . . . . . . . . . 29<br />
2.2.4 Konjunktiv minimalform . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
2.3 Kombinatoriska automationsproblem . . . . . . . . . . . . . . . . . . . . . 33<br />
3 Sekvensstyrningsproblem 35<br />
3.1 Syntes av sekventiella system . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />
3.2 Deterministiska sekvensstyrningsproblem . . . . . . . . . . . . . . . . . . . 41<br />
4 Programmerbar logik 45<br />
4.1 Funktionssättet hos en PLC . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
4.2 Programmering av en PLC . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
4.2.1 L˚ag-niv˚a programmeringsspr˚ak (IL) . . . . . . . . . . . . . . . . . 48<br />
4.2.2 Kontaktdiagram (LD) . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />
4.2.3 Function Block Diagram (FBD) . . . . . . . . . . . . . . . . . . . . 51<br />
5 Petri nät 53<br />
6 Planering av säkerhet för styrsystem 59<br />
3
4 INNEH ˚ ALL
Kapitel 0<br />
Inledning<br />
Man kan dela in regler- och styrproblem i tre grupper:<br />
1. Reglering och styrning av procesesser som kan beskrivas med hjälp av differential- eller differensekvationer.<br />
Ing˚aende variabler beskrivs av reella tal. T.ex. temperatur, spänning, position och<br />
dylikt.<br />
r<br />
✲<br />
+ ✻<br />
-<br />
✲ Gk<br />
u<br />
✲<br />
Gp<br />
2. Styrning av sekventiella processer, vars dynamiska egenskaper karakteriseras av diskreta händelser.<br />
Ing˚aende variabler beskrivs av logiska tal eller heltal. T.ex. en ventil som kan vara öppen eller<br />
stängd, en beh˚allare som kan vara tom, halvfull eller full.<br />
3. Hybrida system, blandning av ovanst˚aende typer.<br />
I samtliga fall s˚a önskar man styra processessen s˚a att önskad funktion uppn˚as. Kursen logikstyrning är<br />
inriktad p˚a grupp 2.<br />
Exempel p˚a logikstyrningsproblem<br />
• Processindustrin:<br />
– Start och nedkörning av processer<br />
– Byte av driftstillst˚and<br />
– Säkerhetssystem, ˚atgärder vid felsituationer<br />
– Operation av batch-processer<br />
• Styckegodsindsutrin<br />
– Operation av verktyg<br />
– Robotar<br />
• Vardagen<br />
– Tjuvlarm<br />
– Bankomater<br />
– All slags elektronik<br />
• Telefonväxlar<br />
5<br />
y ✲
6 KAPITEL 0. INLEDNING<br />
Angränsande omr˚aden:<br />
• Digitalteknik och elektronik<br />
• Datateknik: Realtidssystem<br />
Denna kurs fokuserar p˚a industriella sekvensstyrningsproblem och implementering med hjälp av programmerbar<br />
logik.<br />
Exempel 0.1 Blandningsprocess<br />
Reaktor<br />
A B<br />
VA<br />
❄ ❄<br />
∞<br />
❄<br />
Önskad funktion för blandningsprocessen:<br />
Reaktorna skall fyllas med inneh˚allen i beh˚allarna A och B, reaktorns inneh˚all skall omröras och uppvärmas<br />
till 80 o C, varefter reaktorn skall tömmas.<br />
VR<br />
VB
Schematiskt:<br />
Stäng VA d˚a A tom<br />
Reaktorn tom<br />
VR stängd<br />
Öppna VA och VB<br />
A töms B töms<br />
A tömd<br />
Stäng VB d˚a B tom<br />
B tömd<br />
Sl˚a p˚a uppvärming<br />
Uppvärming<br />
Sl˚a av uppvärming och<br />
öppna VR d˚a T ≥ 80 o C<br />
Reaktorn töms<br />
Stäng VR d˚a reaktorn tom<br />
Slut<br />
Problemet att styra sekventiella processer av denna typ är ett exempel p˚a logikstyrning: styrningen kan<br />
realiseras med hjälp av logiska funktioner av typen<br />
Utför aktionen A ifall premissen P är uppfylld<br />
Logikstyrning implementerades tidigare med hjälp av reläer, och numera oftast med programmerbar logik.<br />
Sm˚a sekvensstyrningsproblem kräver ingen djupare analys, utan implementeringen kan vanligen baseras<br />
p˚a enkel boolesk algebra. Större system är däremot inte s˚a lätta att överblicka, utan fordrar systematiska<br />
analysmetoder.<br />
7
8 KAPITEL 0. INLEDNING<br />
0.1 Litteratur<br />
Litteratururvalet p˚a detta omr˚ade är inte särskilt stort, och det finns egentligen ingen bok som skulle vara<br />
riktigt lämplig som kursbok. Följande böcker kan dock nämnas som bredvidläsning för den intresserade:<br />
1. L. Alm: Styrteknik. Studentlitteratur 1991. Fokuserar p˚a verkstads- och styckegodsprocesser.<br />
2. W. Bolton: Programmable logic controllers. Newnes, fjärde upplagan, 2006.<br />
3. G.C. Cassandras och S Lafortune: Introduction to discrete event systems. Kluwer 1999 och Springer<br />
2007. Ganska teoretisk, behandlar Petri-nät utförligt.<br />
4. M. Costanza: Programmable logic controllers - The industrisl computer. Arnold 1997.<br />
5. A.J Crispin: Programmable logic controllers and their engineering applications. McGraw-Hill 1997.<br />
Inneh˚aller IEC-standarden för programmering av PLC:n.<br />
6. K.H. Fasol: Binäre steuerungstechnik. Springer 1988.<br />
7. T. Floyd: Digital fundamentals. Prentice-Hall 1997.<br />
8. S. Friedman: Logical design of automation systems. Prentice-Hall 1980.<br />
9. B. Haag: Industriell systemteknik – Ellära, elektronik och automation. Studentlitteratur 1998.<br />
10. T.R. McCalla: Digital logic and computer design. MacMillan 1992.<br />
11. E.W. Kamen: Industrial controls and manufacturing. Academic Press 1999.<br />
12. J. Palmer och D. Perlman: Introduction to digital systems (Schaum’s outline). McGraw-Hill 1993.<br />
13. M. Treseler: Designing state machine controllers using programmable logic. Prentice Hall 1992.
Kapitel 1<br />
Klassisk logik och boolesk algebra<br />
1.1 Insignaler, utsignaler och tillst˚and<br />
Ett sekvensstyrsystem kan schematiskt framställas i form av följande diagram:<br />
✲<br />
✲<br />
u1<br />
y1<br />
✲<br />
✲<br />
u2<br />
y2<br />
. .<br />
✲<br />
.<br />
.<br />
.<br />
. .<br />
✲ .<br />
un<br />
ym<br />
✲<br />
.<br />
✲<br />
.<br />
.<br />
x1<br />
.<br />
xp<br />
✛<br />
x<br />
.<br />
.<br />
✛<br />
.<br />
+ 1 , . . . , x+ Insignaler (fr˚an process) Utsignaler(till process)<br />
Logisk<br />
funktion<br />
Nytt<br />
tillst˚and<br />
Tillst˚and<br />
p<br />
Minne<br />
Insignaler, utsignaler och tillst˚and antas i denna kurs ha logiska värden. Utsignalernas Y = {yi} och det<br />
interna tillst˚andens X + = {x +<br />
i } nya värden bestäms som funktioner av insignalerna U = {ui} och de<br />
tidigare tillst˚anden X = {xi}. Dessa funktioner kan i praktiken beskrivas med hjälp av klassisk logik<br />
eller, analogt, med boolesk algebra.<br />
Exempel 1.1 Transportör<br />
Insignaler: U = {ui}<br />
1. G˚a till vänster (← -knapp)<br />
2. G˚a till höger (→ -knapp)<br />
3. Stopp (STOP-knapp)<br />
4. Lägessensor vid A (A)<br />
5. Lägessensor vid B (B)<br />
A B<br />
9
10 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA<br />
Tillst˚and: X = {xi}<br />
1. Stillast˚aende vid A<br />
2. Stillast˚aende vid B<br />
3. Stillast˚aende mellan A och B<br />
4. P˚a väg mot höger (mot B)<br />
5. P˚a väg mot vänster (mot A)<br />
Utsignaler: Y = {yi}<br />
1. Mot vänster (V)<br />
2. Mot höger (H)<br />
3. Stilla (S)<br />
Styrsystemets funktion kan representeras med hjälp av en graf, s.k. tillst˚andsgraf, där<br />
• tillst˚and representeras av noder,<br />
• tillst˚andsöverg˚angar representeras av riktade länkar mellan noderna, och<br />
• insignal resp. utsignal associerade med tillst˚andsöverg˚angen anges vid länken.<br />
xi<br />
un/ym✲<br />
Exempel 1.2 Tillst˚andsgraf för styrsystemet i exempel 1.1.<br />
✿ 4<br />
→ /H ✻<br />
A/S<br />
1 ②<br />
→ /H<br />
3<br />
③<br />
2<br />
← /V<br />
A/S<br />
❄<br />
✾<br />
5<br />
← /V<br />
✻<br />
ST OP/S<br />
❄<br />
ST OP/S<br />
I en tillst˚andstabell (Huffman-tabell) anges<br />
xj<br />
xs/yk = (följande tillst˚and/utsignal)<br />
som funktion av insignaler och tillst˚and i tabellform.<br />
Exempel 1.3 Tillst˚andstabell för styrsystemet i exempel 1.1.<br />
Insignaler<br />
← → STOP A B<br />
Tillst˚and 1 2 3 4 5<br />
1. Vid A 1/S 4/H 1/S 1/S (1/S)<br />
2. Vid B 5/V 2/S 2/S (2/S) 2/S<br />
3. Mellan A och B 5/V 4/H 3/S 1/S 2/S<br />
4. Mot B 3/S 4/H 3/S 4/H 2/S<br />
5. Mot A 5/V 3/S 3/S 1/S 5/V<br />
Vissa situationerna förekommer ej normalt (beteckna dessa med parentes), endast vid felsituationer. För<br />
att felsituationerna skall klaras av, bör man i praktiken definiera förnuftiga tillst˚andsöverg˚angar och<br />
aktioner även för dessa situationer.<br />
I praktiken kan sekvensstyrningsproblem ofta leda till tämligen komplicerade operationer. Det krävs d˚a<br />
systematiska metoder vid planeringen av systemet. Analys och syntes av sekventiella processer baserar<br />
sig i hög grad p˚a klassisk logik och boolesk algebra. Vi skall därför börja med att behandla dessa.
1.2. PROPOSITIONSKALKYL 11<br />
1.2 Propositionskalkyl<br />
Propositionskalkylen eller propositionslogiken är en del av den formella logiken som kan härledas tillbaka<br />
till Aristoteles (382 – 322 f.Kr.). I propositionskalkylen är grundbyggstenarna p˚ast˚aenden, eller<br />
propositioner. Ett p˚ast˚aende är antingen sant (S) eller falskt (F ).<br />
Exempel 1.4 Propositioner<br />
Tydligen gäller P = S, Q = F .<br />
P : ’Granen är ett finskt trädslag’<br />
Q : ’Kokospalmen växer vild p˚a ˚ Aland’<br />
I propositionskalkylen sammansätts propositioner till nya propositioner med hjälp av de logiska konnektiven<br />
”och”, ”eller” samt negationen ”icke”. Man brukar använda beteckningarna<br />
∨ ”eller” (OR)<br />
∧ ”och” (AND)<br />
P ”icke P” (NOT P)<br />
Propositionkalkylens konstanter är S (sann) och F (falsk). För dessa införs följande postulat, som är i<br />
enlighet med vardagens spr˚akbruk och intuition:<br />
F ∨ F = F (P 1)<br />
S ∨ S = S (P 2)<br />
S ∨ F = F ∨ S = S (P 3)<br />
S ∧ S = S (P 4)<br />
F ∧ F = F (P 5)<br />
F ∧ S = S ∧ F = F (P 6)<br />
F = S (P 7)<br />
S = F (P 8)<br />
Ur dessa postulat följer för en godtycklig proposition x (vars sanningshalt, S eller F , inte är given, dvs.<br />
en variabel) följande samband:<br />
x ∨ x = x (R1)<br />
x ∨ x = S (R2)<br />
x ∨ S = S (R3)<br />
x ∨ F = x (R4)<br />
x ∧ x = x (R5)<br />
x ∧ x = F (R6)<br />
x ∧ F = F (R7)<br />
x ∧ S = x (R8)<br />
x = x (R9)<br />
Vidare kan logiska samband för uttryck som inneh˚aller tv˚a eller flera propositioner härledas. N˚agra av de<br />
viktigaste sambanden i propositionskalkylen kommer att diskuteras nedan i samband med den booleska<br />
algebran.
12 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA<br />
1.3 Boolesk algebra<br />
Boole introducerade ˚ar 1854 en tv˚avärd algebra som är isomorf 1 med propositionskalkylen. P˚a detta sätt<br />
var det möjligt att beskriva den klassiska logiken matematiskt (i form av en tv˚avärd algebra). I boolesk<br />
algebra antar variabler n˚agot av värdena (konstanterna) 0 eller 1. Operationerna i boolesk algebra är<br />
ELLER (OR), logisk summa (disjunktion), med beteckningen + (x + y)<br />
OCH (AND), logisk produkt (konjuktion), med beteckningen · (x · y eller xy)<br />
ICKE (NOT), logisk invers, med beteckningen x (= icke x). Beteckningarna x ′ och ¬x används även.<br />
Operationerna definieras med hjälp av följande postulat:<br />
Operationerna kan sammanfattas i form av en sanningstabell:<br />
0 + 0 = 0 (P 1)<br />
1 + 1 = 1 (P 2)<br />
0 + 1 = 1 + 0 = 1 (P 3)<br />
1 · 1 = 1 (P 4)<br />
0 · 0 = 0 (P 5)<br />
0 · 1 = 1 · 0 = 0 (P 6)<br />
0 = 1 (P 7)<br />
1 = 0 (P 8)<br />
A B A A + B AB<br />
0 0 1 0 0<br />
1 0 0 1 0<br />
1 1 0 1 1<br />
0 1 1 1 0<br />
Förutom ovannämnda operationer brukar man införa ytterligare ett antal operatationer:<br />
Dessa operationer beskrivs av sanningstabellen<br />
NOR (icke eller) A + B<br />
XOR (exklusivt eller) A ⊕ B<br />
XNOR (exklusivt NOR) A ⊕ B<br />
NAND (icke och) AB<br />
A B A + B A ⊕ B A ⊕ B AB<br />
0 0 1 0 1 1<br />
1 0 0 1 0 1<br />
1 1 0 0 1 0<br />
0 1 0 1 0 1<br />
Den egenskap som gör boolesk algebra speciellt viktig är dess isomorfi med propositionskalkylen. Denna<br />
isomorfi ges enligt följande:<br />
1 isomorf = med samma struktur<br />
Boolesk algebra Propositionskalkyl<br />
1 ←→ S<br />
0 ←→ F<br />
+ ←→ ∨<br />
· ←→ ∧<br />
x ←→ x
1.3. BOOLESK ALGEBRA 13<br />
Postulaten (P 1) − (P 8) för propositionskalkyl respektive boolesk algebra är ekvivalenta om man substituerar<br />
konstanter och operationer enligt ovan.<br />
Alla de lagar i logiken som följer ur propositionskalkylens postulat (P 1) − (P 8) har s˚aledes sina exakta<br />
motsvarigheter i boolesk algebra. Den klassiska logiken (beskriven av propositionskalkyl) kan s˚aledes<br />
representeras rent algebraiskt i form av den tv˚avärda booleska algebran.<br />
Sambanden (R1) − (R9) givna tidigare för propositionskalkylen blir för boolesk algebra:<br />
x + x = x (R1)<br />
x + x = 1 (R2)<br />
x + 1 = 1 (R3)<br />
x + 0 = x (R4)<br />
x · x = x (R5)<br />
x · x = 0 (R6)<br />
x · 0 = 0 (R7)<br />
x · 1 = x (R8)<br />
x = x (R9)<br />
I följande tabell anges n˚agra av de viktigaste räknereglerna för tv˚a och tre variabler, som kan härledas<br />
fr˚an postulaten (P 1) − (P 8).<br />
Associationslagar:<br />
(R10) x + (y + z) = (x + y) + z<br />
(R11) x(yz) = (xy)z<br />
Kommutationslagar:<br />
(R12) x + y = y + x<br />
(R13) xy = yx<br />
Distributionslagar:<br />
(R14) x(y + z) = xy + xz<br />
(R15) x + yz = (x + y)(x + z)<br />
Absorptionslagar:<br />
(R16) x + xy = x<br />
(R17) x(x + y) = x<br />
Transivitetslagar (konsensus):<br />
(R18) xy + xz + yz = xy + xz<br />
(R19) (x + y)(x + z)(y + z) = (x + y)(x + z)<br />
de Morgans lagar:<br />
(R20) x + y = x · y<br />
(R21) xy = x + y<br />
Lagarna kan direkt generaliseras till flera variabler. De Morgans lagar generaliseras t.ex. till<br />
(R20) ′ x1 + x2 + . . . + xn = x1 · x2 · . . . · xn<br />
(R21) ′ x1 · x2 · . . . · xn = x1 + x2 + . . . + xn<br />
Anm. S˚asom nedan framg˚att, följer ur isomorfin mellan propositionskalkyl och boolesk algebra att alla<br />
lagar som kan härledas för den senare har sin motsvarighet i propositionskalkyl.<br />
Uppgift 1.1 Ange de Morgans lagar med hjälp av propositionskalkyl.<br />
Alla lagar i boolesk algebra följer ur postulaten (P 1) − (P 8). Lagarna kan visas och härledas, antingen<br />
• genom att undersöka de ing˚aende uttryckens värden för samtliga kombinationer av variabelvärden<br />
med hjälp av en sanningstabell, och konstaterande av ekvivalens (sk. perfekt induktion), eller<br />
• genom algebraisk härledning och användning av redan bevisade lagar.
14 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA<br />
Vi skall illustrera procedurerna med exempel:<br />
Uppgift 1.2 Visa a) de Morgans lagar<br />
b) transivitetslagen (R18)<br />
1.4 N˚agot om implementeringen av logiska funktioner<br />
C.E. Shannon visade ˚ar 1938 (i sitt diplomarbete) att boolesk algebra kan användas för att beskriva<br />
funktionen hos vissa elektriska och elektroniska kretsar, t.ex. de som används i telefonväxlar. Omvänt<br />
kan varje logisk samband som kan beskrivas med boolesk algebra implementeras elektroniskt.<br />
L˚at tillst˚andet hos en kontakt representera en variabel x, s˚a att<br />
x = 1 d˚a kontakten är sluten<br />
x = 0 d˚a kontakten är öppen<br />
och l˚at en spänningsniv˚a representera en variabel z, enligt<br />
z = 1 d˚a spänningen är hög (typiskt 2.4 − 5.5V )<br />
z = 0 d˚a spänningen är l˚ag (typiskt 0 − 0.4V )<br />
5.5V<br />
2.4V<br />
0.4V<br />
0<br />
z = 1<br />
z = 0<br />
Operationerna i den booleska algebran kan d˚a implementeras med hjälp av s.k. logiska grindar. T.ex.<br />
1 x y<br />
z = xy (AND)<br />
x<br />
1 z = x + y (OR)<br />
y<br />
I praktiken är den elektroniska realiseringen av olika grindtyper betydligt mer komplicerad. Tabell 1.1<br />
ger en sammanfattning av symbolerna för de enkla logiska grindarna.
1.4. N ˚ AGOT OM IMPLEMENTERINGEN AV LOGISKA FUNKTIONER 15<br />
Tabell 1.1: Symbolerna för de logiska grindarna (Källa: Sten Gustafsson)<br />
Grind Funktion IEC−symbol Amerikansk symbol<br />
Buffert<br />
Inverterare<br />
OCH<br />
NAND<br />
ELLER<br />
NOR<br />
XOR<br />
X = A<br />
X = A<br />
X = A . B<br />
X = A . B<br />
X = A + B<br />
X = A + B<br />
X = A + B<br />
1<br />
A X<br />
1<br />
A X<br />
A<br />
B<br />
A<br />
B<br />
A<br />
B<br />
A<br />
B<br />
A<br />
B<br />
&<br />
&<br />
1<br />
>−<br />
1<br />
>−<br />
=1<br />
X<br />
X<br />
X<br />
X<br />
X<br />
A X<br />
Förutom symbolerna i tabell 1.1 anges invertering av insignalen symboliskt, t.ex.:<br />
x = A · B:<br />
A 1 &<br />
B<br />
A 1<br />
B<br />
x = A + B:<br />
1<br />
≥ 1<br />
x ≡<br />
x ≡<br />
B<br />
A<br />
A<br />
B<br />
A<br />
B<br />
A<br />
B<br />
A<br />
B<br />
A<br />
B<br />
A &<br />
A ≥ 1<br />
De enkla logiska grindarna kan användas för implementering av allmänna logiska funktioner, och kan<br />
s˚aledes utnyttjas för processtyrningsproblem.<br />
Uppgift 1.3 Planera ett nät som med hjälp av logiska grindar realiserar den logiska funktionen x =<br />
AB + AC<br />
B<br />
X<br />
X<br />
X<br />
X<br />
X<br />
X<br />
x<br />
x
16 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA<br />
Det är lätt att inse att de logiska grindarna ocks˚a kan implementeras mekaniskt, hydrauliskt eller pneumatiskt.<br />
I den sistnämnda representeras variablerna av ventillägen (öppen/stängd) samt tryck (högt/l˚agt).<br />
Dessa metoder finns närmare beskrivna i speciallitteraturen.<br />
Figur 1.1: Exempel p˚a mekaniska logiska grindar<br />
Figur 1.2: Exempel p˚a pneumatiska logiska grindar<br />
I praktiken implementeras ˚atminstone enklare logiska styrproblem ofta elektroniskt med hjälp av logiska<br />
grindar som baserar sig p˚a halvledarteknik, vilken ersatt tidigare reläteknik. I omgivningar där elektroniska<br />
komponenter är olämpliga, t.ex. p.g.a. explosionsfara, används även pneumatiska logiska grindar.<br />
Mera komplicerade logikstyrningsproblem implementeras nuförtiden med hjälp av s.k. programmerbar logik.<br />
Dessa är sm˚a, billiga datorer speciellt konstruerade för sekvensstyrningsproblem i industriell miljö.<br />
Ocks˚a vanliga mikrodatorer används. Realiseringen av sekvensstyrningsproblem med hjälp av programmerbara<br />
datorer tas upp i kapitel 4.
Kapitel 2<br />
Booleska funktioner<br />
2.1 Disjunktiv och konjunktiv normalform<br />
L˚at x1, . . . , xn vara booleska variabler. En boolesk funktion f(x1, . . . , xn) är d˚a en funktion av variablerna<br />
x1, . . . , xn som antar n˚agot av värdena 0 eller 1. Funktionen kan beskrivas fullständigt med en<br />
funktionstabell, i vilken funktionens värde anges för alla de olika kombinationer av variabelvärden.<br />
Följande exempel illustrerar hur funktionstabellen p˚a ett helt naturligt sätt kan konstrueras p˚a basen av<br />
specifikationerna för ett logikstyrningsproblem.<br />
Exempel 2.1 Funktionstabell<br />
Betrakta en konsol som styr en maskin. Maskinen kan startas och stoppas med en ON/OFF switch.<br />
Dessutom finns en nyckel utan vilken konsolen ej kan opereras. Styrsystemet har följande insignaler:<br />
A representerar ON/OFF switchen:<br />
A = 1, om switchen befinner sig i ON läget<br />
A = 0, om switchen befinner sig i OFF läget<br />
B representerar l˚aset:<br />
B = 1, om nyckeln är i<br />
B = 0, om nyckeln inte är i<br />
C representerar maskinen:<br />
C = 1, om maskinen g˚ar<br />
C = 0, om maskinen st˚ar<br />
Utsignalen X fr˚an styrsystemet skall styra maskinen:<br />
X = 1 anger att maskinen skall g˚a,<br />
X = 0 anger att maskinen skall stanna eller st˚a.<br />
Utsignalen X skall vara definierad för varje tänkbar kombination av insignalerna A,B och C. Detta kan<br />
sammanfattas i nedanst˚aende funktionstabell. Observera att man kan ta bort nyckeln utan att motorn<br />
stängs av, men att ON/OFF switchen d˚a slutar fungera.<br />
Funktionstabell Minterm Maxterm<br />
A B C X pi p i<br />
0 0 0 0 A B C A + B + C<br />
0 0 1 1 A BC A + B + C<br />
0 1 0 0 ABC A + B + C<br />
0 1 1 0 ABC A + B + C<br />
1 0 0 0 AB C A + B + C<br />
1 0 1 1 ABC A + B + C<br />
1 1 0 1 ABC A + B + C<br />
1 1 1 1 ABC A + B + C<br />
17
18 KAPITEL 2. BOOLESKA FUNKTIONER<br />
Funktionstabellen definierar X som en boolesk funktion X(A, B, C). Oberoende av sättet p˚a vilket logikstyrningsproblemet<br />
realiseras bör den booleska funktionen X = X(A, B, C) uttryckas i form av ett<br />
explicit booleskt uttryck i variablerna A, B och C.<br />
Vi söker allts˚a ett funktionsuttryck som antar de värden som kolumnen för X anger för de olika variabelkombinationerna.<br />
Ett s˚adant kan enkelt konstrueras p˚a följande sätt. För givna värden p˚a variablerna<br />
A, B och C s˚a finns enbart en term pi best˚aende av produkten av alla variabler (med eller utan icke)<br />
som tar värdet 1 (nämligen det som finns angivet i motsvarande rad i tabellen), medan de övriga är 0. Vi<br />
kan ta en pi för varje situation vid vilken X skall bli 1, och uttrycka X som summan dessa termer (jmf.<br />
tabellen)<br />
X = A BC + ABC + ABC + ABC<br />
I uttrycket ovan kallas A BC, osv., termer, och uttrycket för X är ett exempel p˚a disjunktiv form (summa<br />
av produkter). En disjunktiv form där varje variabel förekommer i varje term kallas disjunktiv normalform.<br />
En term där varje variabel förekommer kallas minterm (minimalpolynom, elementarprodukt). Termerna<br />
pi i tabellen är mintermer.<br />
Vi kan även konstruera termer p i som för givna värden p˚a variablerna A, B och C är den enda summan<br />
av alla variabler (med eller utan icke) som är 0. Man kan p˚a motsvarande sätt välja alla termer p i som<br />
motsvaras av variabelvärden för vilka X skall vara noll, och uttrycka X som produkten av dessa. I det<br />
här fallet f˚as<br />
X = (A + B + C) · (A + B + C) · (A + B + C) · (A + B + C)<br />
Detta uttryck är ett exempel p˚a konjunktiv form (produkt av summor). Faktorerna i en konjunktiv form<br />
kallas altermer. En konjunktiv form i vilken varje variabel förekommer i varje alterm kallas konjunktiv<br />
normalform. Altermerna i en konjunktiv normalform kallas maxtermer (maximalpolynom, elementarsummor).<br />
Termerna p i i tabellen är maxtermer.<br />
Ur konstruktionerna ovan är det uppenbart att vilken som helst boolesk funktion kan beskrivas med ett<br />
uttryck i disjunktiv form, eller alternativt ett uttryck i konjunktiv form (Shannons expansionsteorem).<br />
Dessa uttryck kan konstrueras direkt p˚a basen av funktionstabellen. Detta resultat visar ocks˚a att en<br />
godtycklig boolesk funktion alltid kan uttryckas med hjälp av ett algebraiskt uttryck i den booleska<br />
algebran, vilket inte är helt självklart p˚a förhand.<br />
2.2 Förenkling av booleska uttryck<br />
D˚a ett logikstyrningsproblem karakteriseras med hjälp av en eller flera booleska funktioner blir de erh˚allna<br />
booleska funktionsuttrycken ofta onödigt komplicerade. För att kunna realisera en funktion möjligast<br />
enkelt (minsta antalet logiska grindar, eller minsta antalet programsteg) är det av vikt att kunna förenkla<br />
booleska uttryck. Förenklingen kan alltid göras algebraiskt, genom att använda den booleska algebrans<br />
räknelagar.<br />
Uppgift 2.1 Hur m˚anga logiska grindar behövs att realisera den booleska funktionen i exempel 2.1?<br />
Uppgift 2.2 Förenkla uttrycket x = (A + B)(B + C)(C + A)(ABC + A B C)<br />
Den algebraiska metoden har ˚atminstone följande nackdelar:<br />
1. Klar systematik saknas<br />
2. Metoden besvärlig i synnerhet d˚a variablernas antal ökar<br />
3. Metoden ger ingen garanti för att det uttryck som erh˚alls faktiskt är det enklaste, och ej kan<br />
förenklas vidare.<br />
Det har utvecklats systematiska metoder för förenkling av booleska funktionsuttryck, med vilka förenklingen<br />
kan göras effektivare, och vilka producerar det enklast möjliga uttrycken.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 19<br />
2.2.1 Karnaugh-diagram<br />
En standard procedur för förenkling av booleska funktioner baserar sig egenskaperna hos s.k. Karnaughdiagram.<br />
I dessa anges funktionsvärdena i rutor i ett diagram. Varje ruta motsvarar en kombination av<br />
variabelvärden. Nedan ges exempel p˚a Karnaugh-diagram (utan insatta funktionsvärden) för tv˚a, tre,<br />
fyra och fem variabler.<br />
CD<br />
Tv˚a variabler: Tre variabler:<br />
B<br />
0<br />
1<br />
A<br />
0 1<br />
C 0<br />
1<br />
AB<br />
00 01 11 10<br />
Fyra variabler: Fem variabler:<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
DE<br />
00<br />
01<br />
11<br />
10<br />
ABC<br />
000 001 011 010 100 101 111 110<br />
Karnaugh-diagrammen är s˚a konstruerade, att variabelvärdena för tv˚a avgränsande (närbelägna, adjacenta)<br />
rutor skiljer sig i en och endast en variabel. Omvänt skall tv˚a variabelkombinationer som skiljer sig<br />
i exakt en variabel finnas i närbelägna rutor. Härvid uppfattas radernas och kolumnernas ändrutor som<br />
angränsande. Diagrammet för fem variabler kan uppfattas som tredimensionell, s˚a att den högra delen<br />
av diagrammet ligger bakom den vänstra.<br />
Förenklingen av booleska funktioner med hjälp av Karnaugh-diagram baserar sig p˚a ovannämnda egenskaper<br />
hos närbelägna rutor, vilket illustreras av följande exempel.<br />
Exempel 2.2 Karnaugh-diagram<br />
Betrakta den booleska funktionen<br />
X = A BC + ABC + ABC + ABC<br />
fr˚an exempel 2.1. Karnaugh-diagrammet f˚ar följande utseende (med endast ettorna insatta):<br />
C 0<br />
AB<br />
00 01 11 10<br />
1<br />
1 1 1<br />
Tack vare diagrammets konstruktion kan förenklingarna<br />
1<br />
ABC + ABC = AB<br />
A BC + ABC = BC<br />
X = AB + BC<br />
upptäckas direkt fr˚an diagrammet. Man ser ytterligare att förenklingen<br />
ABC + ABC = AC<br />
kan göras men detta leder ej till ett lika enkelt uttryck för X.
20 KAPITEL 2. BOOLESKA FUNKTIONER<br />
C 0<br />
AB<br />
00 01 11 10<br />
1<br />
1 1 1<br />
Man kan formulera fem regler för förenklingsproceduren:<br />
1<br />
X = A BC + ABC + AC<br />
1. Varje ruta som ineh˚aller en etta m˚aste täckas av minst en cell (en ruta f˚ar täckas av flera celler).<br />
2. Endast rutor med ettor f˚ar täckas av celler.<br />
3. Cellerna m˚aste vara rektangulära, och täcka en potens av 2 (1, 2, 4, 8, ...) antal rutor.<br />
4. Antalet celler bör vara s˚a litet som möjligt<br />
5. Varje cell bör vara s˚a stor som möjligt<br />
Av dessa är reglerna 1-3 ovillkorliga medan 4-5 strävar till att hitta den enklaste realisationen.<br />
Det faktum att man f˚ar täcka ettor med flera olika celler innebär i ovanst˚aende exempel att användande<br />
av alla tre möjliga celler som täcker tv˚a rutor ger X = AB + BC + AC. Detta kan i sin tur förenklas till<br />
AB + BC, m.h.a. transivitetslagen (R18). Om vi följer regel 4 s˚a kommer man direkt till detta uttryck<br />
Förenkling av booleska uttryck med hjälp av Karnaugh-diagram grundar sig s˚aledes p˚a att mintermer som<br />
kan kombineras till enklare termer upptar närbelägna rutor i diagrammet. Förenklingarna kan därmed<br />
ses direkt fr˚an diagrammet.<br />
För fyra variabler har vi fyra typer av termer:<br />
1. Mintermer med alla fyra variabler, som täcker en ruta, och som ej kan kombineras med andra termer:<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1<br />
ABCD<br />
2. Termer med tre variabler, som täcker tv˚a rutor (tv˚a skilda exempel):<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
BCD B CD<br />
AB<br />
00 01 11 10<br />
1 1<br />
3. Termer med tv˚a variabler, som täcker fyra rutor (tre skilda exempel):
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 21<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1 1 1<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1<br />
1 1<br />
CD<br />
CD AD B D<br />
4. Termer med en variabel, som täcker ˚atta rutor (tv˚a skilda exempel):<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1 1 1<br />
1 1 1 1<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
D D<br />
AB<br />
00<br />
01<br />
11<br />
10<br />
00 01 11 10<br />
1 1 1 1<br />
1 1 1 1<br />
AB<br />
00 01 11 10<br />
1 1<br />
1 1<br />
Karnaugh-diagrammen lämpar sig bäst för funktioner med högst fyra variabler. Det g˚ar emellertid att<br />
använda metoden även för funktioner med upp till ˚atta variabler.<br />
Exempel 2.3 Fem variabler<br />
DE<br />
Exempel 2.4 Sex variabler<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
00<br />
01<br />
11<br />
10<br />
ABC<br />
000 001 011 010 100 101 111 110<br />
1 1<br />
1 1<br />
1 1 1 1<br />
1 1 1 1<br />
1 1<br />
1 1<br />
1 1 1 1<br />
1 1 1 1<br />
AB<br />
EF<br />
C + D<br />
00 01 11 10 00 01 11 10 00 01 11 10 00 01 11 10<br />
1<br />
1 1<br />
1 1<br />
1 1<br />
1 1<br />
1<br />
1<br />
00 01 11 10<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1 1<br />
AB + BCDE F + A BCDE F + AC D EF + AC DEF + ACDE<br />
1<br />
1
22 KAPITEL 2. BOOLESKA FUNKTIONER<br />
Primimplikatorer<br />
En funktion f(x1, x2, . . . , xn) säges inkludera en annan funktion g(x1, x2, . . . , xn) om de värden för variablerna<br />
x1, x2, . . . , xn för vilka g = 1, ocks˚a ger f = 1. S˚aledes inkluderar f t.ex. termerna i ett disjunktivt<br />
uttryck för f.<br />
En primimplikator π för en funktion f(x1, x2, . . . , xn) definieras som en term i ett disjunktivt uttryck för<br />
f som har den egenskapen, att om n˚agon av de i termen ing˚aende variablerna avlägsnas, s˚a inkluderar f<br />
inte den ˚aterst˚aende produkten.<br />
Exempel 2.5<br />
har primimplikatorerna<br />
Obs. att x1x3x4 är inte en primimplikator.<br />
f(x1, x2, x3, x4) = x1x2x4 + x2x3x4 + x1x3x4<br />
π1 = x1x2x4 , π2 = x2x3x4 , π3 = x1x3<br />
x3x4<br />
00<br />
01<br />
11<br />
10<br />
x1x2<br />
00 01 11 10<br />
1<br />
1 1<br />
1 1 1<br />
Vid förenkling av en boolesk funktion är man i första hand intresserad av att uttrycka funktionen som en<br />
summa av primimplikatorer, ty man kan visa att detta resulterar i det i en viss mening enklaste uttrycket.<br />
I praktiken s˚a skall man just följa reglerna 4 och 5 givna ovan, d.v.s. vi bör försöka täcka ettorna med<br />
möjligast f˚a och möjligast stora celler. Och typiskt s˚a är antalet viktigare än storleken vid minimiering<br />
av uttryck.<br />
Utvecklingen av en funktion i primimplikatorer behöver inte vara entydig. En väsentlig (essential) primimplikator<br />
är en primimplikator som alltid bör ing˚a i varje minimalform. En väsentlig primimplikator<br />
kännetecknas i ett Karnaugh-diagram av att den inkluderar ˚atminstone en ruta som ej kan ing˚a i n˚agon<br />
annan primimplikator. Det är viktigt att man börjar med att ringa alla väsentliga primimplikatorer för<br />
att det minimala uttrycket skall erh˚allas.<br />
Exempel 2.6 ∗ anger rutor som definierar en väsentlig primimplikator.<br />
ABC + ACD + ABC + ACD<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
∗1<br />
1 1 ∗1<br />
∗1<br />
1 1<br />
Notera att vi enbart introducerar en term till (BD) om vi introducerar den största möjliga cellen i det<br />
här fallet.<br />
∗1
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 23<br />
Uppgift 2.3 Bestäm de väsentliga primimplikatorerna och den minimala formen för funktionen i diagrammet<br />
nedan. Till˚atet att lösa denna uppgift i <strong>kompendiet</strong>.<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1 1<br />
1<br />
1 1 1 1<br />
1 1 1<br />
Sedan de väsentliga primimplikatorerna uttagits, kan de ˚aterst˚aende oinringade rutorna med ettor inkluderas<br />
av primimplikatorer p˚a ett antal alternativa sätt. Dessa skall väljas s˚a att möjligast enkla termer<br />
f˚as.<br />
Exempel 2.7 Flera minimala uttryck<br />
Väsentliga primimplikatorer:<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
∗1<br />
1 1<br />
1 1<br />
∗1<br />
1<br />
BD , A B D<br />
Termen ABC D kan inkluderas antingen i A C D eller i ABC (icke-väsentliga primimplikatorer). Detta<br />
ger tv˚a alternativa minimala uttryck:<br />
Ofullständigt specificerade funktioner<br />
BD + A B D + A C D<br />
eller BD + A B D + ABC<br />
De booleska funktioner som uppträder i praktiska logikstyrningsproblem är ofta ofullständigt specificerade,<br />
dvs. funktionens värde för vissa kombinationer av variabelvärden är likgiltig. Vissa kombinationer av<br />
variabelvärden kan t.ex. vara fysikaliskt omöjliga (jmf. Ex. 1.1), s˚a att de aldrig förekommer. Funktionsvärdet<br />
för dessa omöjliga variabelkombinationer är d˚a likgiltigt.<br />
S˚adana likgiltiga funktionsvärden kallas ”don’t care” tillst˚and. I ett Karnaugh-diagram anges de med ett<br />
streck, ”–”, och anger s˚aledes att funktionsvärdet kan vara 0 eller 1. Detta kan utnyttjas för att konstruera<br />
ett möjligast enkelt funktionsuttryck.<br />
Exempel 2.8 ”Don’t care” tillst˚anden kan utnyttjas s˚a att funktionen kan uttryckas i den minimala<br />
formen<br />
BD + AD + ABD<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1<br />
1 1 1<br />
- - - -<br />
- -
24 KAPITEL 2. BOOLESKA FUNKTIONER<br />
2.2.2 QMC-metoden<br />
Den grafiska metoden med Karnaugh-diagram blir givetvis oanvändbar d˚a antalet variabler ökar. För<br />
större problem fordras algoritmer som kan programmeras. Den vanligaste algoritmen för förenkling av<br />
booleska funktioner är en metod enligt Quine och McClusky (QMC-metoden), som skall beskrivas nedan.<br />
Vi börjar med att numrera funktionstabellens rader i enlighet med det binära talsystemet. För tre variabler<br />
identifierar vi s˚aledes de olika variabelkombinationerna enligt följande tabell.<br />
j A B C<br />
0 0 0 0<br />
1 0 0 1<br />
2 0 1 0<br />
3 0 1 1<br />
4 1 0 0<br />
5 1 0 1<br />
6 1 1 0<br />
7 1 1 1<br />
(2 2 2 1 2 0 )<br />
Proceduren är sedan följande. Först uppställs en funktionstabell med endast de rader för vilka funktionen<br />
antar värdet 1 insatta. En funktion med Karnaugh-diagrammet nedan f˚ar s˚aledes funktionstabellen i Tab.<br />
2.1.<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1 1<br />
1 1<br />
1 1<br />
1 1 1<br />
Nästa steg är att undersöka vilka rader i tabellen som kan kombineras till en enklare term. Detta är<br />
möjligt d˚a tv˚a rader överensstämmer s˚a när som i en variabel. Raderna 0 och 2 i Tab. 2.1(a) kombineras<br />
t.ex. till den nya raden<br />
0 0 − 0<br />
(Detta motsvarar kombination av termer enligt A B C D + A BCD = A B D)<br />
De p˚a detta sätt konstruerade nya raderna samlas till en ny tabell, Tab. 2.1(b). Proceduren upprepas tills<br />
ytterligare kombinationer inte mera kan göras i Tab. 2.1(c). De termer som i denna procedur inte mera<br />
kan förenklas är primimplikatorer. Dessa har i Tabell 2.1 betecknats p1, p2, . . . , p7.<br />
S˚asom vi tidigare sett, ger en disjunktion av primimplikatorerna i allmänhet ej ett minimalt funktionsuttryck,<br />
eftersom alla primimplikatorer inte behöver medtas. För att finna vilka primimplikatorer som bör<br />
medtas uppgörs en primimplikatortabell, Tabell 2.2. I denna anger kolumnerna den ursprungliga funktionstabellens<br />
termer (Tab. 2.1 (a)), och raderna anger primimplikatorer. De termer som inkluderas av<br />
en primimplikator anges med ”x”. Proceduren är sedan följande.<br />
1. De kryss som förekommer ensamma i en kolumn omringas ( x ). Motsvarande primimplikator är<br />
en väsentlig primimplikator och bör medtas i funktionsuttrycket. De väsentliga primimplikatorerna<br />
anges med asterisk ∗.<br />
2. Alla kryss som förekommer i en rad med omringat x anges med klammer, [x].<br />
3. Ange alla de kryss som förekommer i en kolumn med [x] med parentes, (x). Detta anger att motsvarande<br />
term redan ing˚ar i de primimplikatorer som medtagits och inte behöver beaktas i fortsättningen.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 25<br />
(a)<br />
Tabell 2.1: Stegvis förenkling<br />
(b) (c)<br />
j A B C D {j} A B C D<br />
{j} A B C D<br />
0 0 0 0 0 0, 2 0 0 - 0<br />
0, 2, 8, 10 - 0 - 0 p6<br />
2 0 0 1 0 0, 8 - 0 0 0 8, 10, 12, 14 1 - - 0 p7<br />
3 0 0 1 1 2, 3 0 0 1 - p1<br />
5 0 1 0 1 2, 10 - 0 1 0<br />
7 0 1 1 1 3, 7 0 - 1 1 p2<br />
8 1 0 0 0 5, 7 0 1 - 1 p3<br />
10 1 0 1 0 5, 13 - 1 0 1 p4<br />
12 1 1 0 0 8, 10 1 0 - 0<br />
13 1 1 0 1 8, 12 1 - 0 0<br />
14 1 1 1 0 10, 14 1 - 1 0<br />
12, 13 1 1 0 - p5<br />
12, 14 1 1 - 0<br />
4. Välj fr˚an de ˚aterst˚aende valbara primimplikatorerna (p1 −p5) ett antal s˚a att de ˚aterst˚aende kryssen<br />
medtas. Ange raderna med dubbel asterisk ∗∗. Valet skall göras s˚a att funktionsuttrycket blir<br />
minimalt, dvs.<br />
• Antalet termer (primimplikatorer) är minimalt,<br />
• Termerna (primimplikatorerna) är korta (av tv˚a primimplikatorer i tabellen är den vars rad<br />
inneh˚aller de flesta kryssen den kortare).<br />
Tabell 2.2: Primimplikatortabell<br />
j<br />
0 2 3 5 7 8 10 12 13 14<br />
p1 (x) x<br />
∗∗ p2 x x<br />
p3 x x<br />
∗∗ p4 x x<br />
p5 (x) x<br />
∗ p6 x [x] [x] [x]<br />
∗ p7 [x] [x] [x] x<br />
I Tabell 2.2 är de valbara primimplikatorerna p1 − p5 alla lika l˚anga. Det optimala valet är p2 och p4,<br />
ty alla andra val skulle kräva minst tre primimplikatorer. Enligt Tabell 2.2 ges det minimala funktionsuttrycket<br />
som en disjunktion av primimplikatorerna p2, p4, p6 och p7, av vilka p6 och p7 är väsentliga<br />
primimplikatorer. Uttrycket blir (jmf. Tab. 2.1)<br />
B D + AD + ACD + BCD<br />
I exemplet i Tabell 2.1 var funktionen fullständigt specificerad. Proceduren kan emellertid enkelt anpassas<br />
för ofullständigt specificerade funktioner, med ”don’t care” funktionsvärden för vissa variabelkombinationer.<br />
Härvid inkluderar man de rader för vilka funktionsvärdet är ospecificerat (”don’t care”) i<br />
funktionstabellen (Tab. 2.1), och bildar primimplikatorerna s˚asom ovan. Vid uppställningen av primimplikatortabellen<br />
(Tab. 2.1), lämnas emellertid motsvarande kolumner bort. (D˚a funktionens värde för dessa<br />
tillst˚and inte spelar n˚agon roll, behöver de ju ej beaktas d˚a primimplikatorerna väljs ut. Däremot bör de<br />
beaktas i det första skedet d˚a primimplikatorerna bildas, ty de kan endast leda till kortare primimplikatorer,<br />
ej längre.) Denna procedur leder till ett minimalt funktionsuttryck för ofullständigt specificerade<br />
funktioner.
26 KAPITEL 2. BOOLESKA FUNKTIONER<br />
Uppgift 2.4 Förenkla den logiska funktionen X med följande Karnoughdiagram (- motsvar don’t care<br />
tillst˚and):<br />
C 0<br />
1<br />
AB<br />
00 01 11 10<br />
- 1 -<br />
1 1 1<br />
QMC-metoden kan enkelt programmeras. I Friedman Logical Design of Automation Systems (Prentice –<br />
Hall, 1990), ges ett Fortran-program primp, som förenklar booleska uttryck. P˚a denna kurs hemsida s˚a<br />
finns även en Matlab-implementering av QMC-metoden tillgänglig, och en Scilab-version är ocks˚a under<br />
arbete.<br />
Nedan visas en exempelkörning där programmet tillämpats för funktionen i Tabell 2.1 (a). Funktionsvärdena<br />
läses in i ordningsföljd, och programmet ger en förteckning över primimplikatorerna (observera<br />
att numreringen ej överensstämmer med den i Tabellerna 2.1 och 2.2, primp sorterar primimplikatorerna,<br />
s˚a de kommer i ordningen p6, p1, p2, p4, p3, p7, p5), samt anger vilka som är väsentliga och vilka<br />
som väljs bland de valbara. I constraint table anges slutligen vilka mintermer de olika icke-väsentliga<br />
primimplikatorerna inkluderar (täcker).<br />
% ~jboling/sst/primp<br />
SIMPLIFICATION OF BOOLEN FUNCTIONS BY PRIME IMPLICANT ANALYSIS<br />
**************************************************************<br />
NUMBER OF VARIABLES : 4<br />
INPUT FUNCTION VALUES IN TRUTH TABLE<br />
( 16 VALUES: 1 = TRUE / 0 = FALSE / -1 = DON’T CARE ) :<br />
1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0<br />
*** BOOLEAN MINIMIZATION PROGRAM ***<br />
THIS FUNCTION CONTAINS 4 VARIABLES<br />
A LISTING OF THE INPUT DATA FOLLOWS<br />
TRUE MINTERMS = 1<br />
FALSE MINTERMS = 0<br />
REDUNDANT MINTERMS (DON’T CARES) = -1<br />
0 0 = 1, 1 = 0, 2 = 1, 3 = 1, 4 = 0,<br />
5 = 1, 6 = 0, 7 = 1, 8 = 1, 9 = 0,<br />
10 = 1, 11 = 0, 12 = 1, 13 = 1, 14 = 1,<br />
15 = 0,<br />
0 THE FOLLOWING IS A LIST OF THE PRIME IMPLICANTS OF THE<br />
MINIMIZED FUNCTION.<br />
ESSENTIAL PRIME IMPLICANTS ARE SO LABELED, AND<br />
PRIME IMPLICANTS SELECTED FROM A CYCLIC CHART ARE<br />
LABELED AS CHOSEN.
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 27<br />
NO. COST PRIME IMPLICANTS<br />
A B C D<br />
1 2 - 0 - 0 ESSENTIAL<br />
2 3 0 0 1 -<br />
3 3 0 - 1 1 CHOSEN<br />
4 3 - 1 0 1 CHOSEN<br />
5 3 0 1 - 1<br />
6 2 1 - - 0 ESSENTIAL<br />
7 3 1 1 0 -<br />
- INDICATES A MISSING VARIABLE, 0 INDICATES A COMPLEMENTED<br />
VARIABLE AND 1 INDICATES A TRUE VARIABLE.<br />
THE FUNCTION IS REPRESENTED BY THE SUM OF BOTH THE<br />
ESSENTIAL AND THE CHOSEN PRIME IMPLICANTS.<br />
CONSTRAINT TABLE<br />
------------------<br />
COVERED COVERING PRIME<br />
MINTERM IMPLICANTS.<br />
3 2 3<br />
5 4 5<br />
7 3 5<br />
13 4 7<br />
Samma problem kan ocks˚a lösas med matlab-rutinen qmc, hittas allts˚a p˚a kursens hemsida:<br />
>> qmc<br />
Program for minimizing Boolean expressions with the QMC-method<br />
Either a truth table or a boolean expression should be given.<br />
Use standard MATLAB logical operators: AND = &<br />
OR = |<br />
NOT = ~<br />
Logical terms should be separated with parentesis: (A | ~B) & (B |<br />
~C) & (C | ~A) & ((A & B & C)|(~A & ~B & ~C))<br />
Logical expression (L) or truth table (T)): T Number of variables: 4<br />
A B C D<br />
0: 0 0 0 0 1<br />
1: 0 0 0 1 0<br />
2: 0 0 1 0 1<br />
3: 0 0 1 1 1<br />
4: 0 1 0 0 0<br />
5: 0 1 0 1 1<br />
6: 0 1 1 0 0<br />
7: 0 1 1 1 1<br />
8: 1 0 0 0 1<br />
9: 1 0 0 1 0<br />
10: 1 0 1 0 1<br />
11: 1 0 1 1 0<br />
12: 1 1 0 0 1<br />
13: 1 1 0 1 1<br />
14: 1 1 1 0 1<br />
15: 1 1 1 1 0<br />
Processing....
28 KAPITEL 2. BOOLESKA FUNKTIONER<br />
Truth table:<br />
i A B C D f<br />
----------------<br />
0 0 0 0 0 1<br />
1 0 0 0 1 0<br />
2 0 0 1 0 1<br />
3 0 0 1 1 1<br />
4 0 1 0 0 0<br />
5 0 1 0 1 1<br />
6 0 1 1 0 0<br />
7 0 1 1 1 1<br />
8 1 0 0 0 1<br />
9 1 0 0 1 0<br />
10 1 0 1 0 1<br />
11 1 0 1 1 0<br />
12 1 1 0 0 1<br />
13 1 1 0 1 1<br />
14 1 1 1 0 1<br />
15 1 1 1 1 0<br />
Prime implicants:<br />
1: 0 2 8 10<br />
2: 8 10 12 14<br />
3: 2 3 - -<br />
4: 3 7 - -<br />
5: 5 7 - -<br />
6: 5 13 - -<br />
7: 12 13 - -<br />
Essential prime implicants:<br />
1 2<br />
Chosen prime implicants:<br />
4 6<br />
Logical expression: (~B & ~D) | (A & ~D) | (~A & C & D) | (B & ~C & D)<br />
Matlab-programmet klarar ocks˚a av att förenkla logiska uttryck, det generar själv en sanningstabell och<br />
sedan beräknar minimalt uttryck. Nedan löses uppgift 2.2.<br />
>>qmc<br />
Program for minimizing Boolean expressions with the QMC-method<br />
Either a truth table or a boolean expression should be given.<br />
Use standard MATLAB logical operators: AND = &<br />
OR = |<br />
NOT = ~<br />
Logical terms should be separated with parentesis: (A | ~B) & (B |<br />
~C) & (C | ~A) & ((A & B & C)|(~A & ~B & ~C))<br />
Logical expression (L) or truth table (T)): L Give logical function:<br />
(A|~B)&(B|~C)&(C|~A)&((A&B&C)|(~A&~B&~C))<br />
Processing....
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 29<br />
Truth table:<br />
i A B C f<br />
-------------<br />
0 0 0 0 1<br />
1 0 0 1 0<br />
2 0 1 0 0<br />
3 0 1 1 0<br />
4 1 0 0 0<br />
5 1 0 1 0<br />
6 1 1 0 0<br />
7 1 1 1 1<br />
Prime implicants:<br />
1: 0<br />
2: 7<br />
Essential prime implicants:<br />
1 2<br />
Logical expression: (~A & ~B & ~C) | (A & B & C)<br />
2.2.3 System med flera utsignaler<br />
I praktiken har man ofta inte en, utan flera funktioner x1, x2, . . . , xn, som är funktioner av variablerna<br />
A, B, . . .. I s˚adana fall kan man givetvis konstruera ett minimalt uttryck för varje funktion separat enligt<br />
metoderna som behandlats ovan. En förenkling kan emellertid f˚as om man beaktar att vissa termer kan<br />
vara gemensamma för de olika funktionerna. S˚adana termer som delas av flera funktioner f˚as fram genom<br />
att betrakta produkter av formen x1 · x2, x1 · x3, x1 · x2 · x3, . . .. Vi skall illustrera proceduren med ett<br />
exempel.<br />
Exempel 2.9 Flera utsignaler<br />
Betrakta funktionerna x1, x2 och x3 med Karnaugh-diagrammen i Fig 2.1. I Fig 3.5 ges Karnaughdiagrammen<br />
för x1, x2 och x3 samt produktfunktionerna x1 · x2, x1 · x3, x2 · x3 och x1 · x2 · x3. Primimplikatorerna<br />
införs nu som normalt men s˚a att man startar med produkten av högsta grad, x1 · x2 · x3,<br />
fortsätter med x1 · x2, x1 · x3 och x2 · x3, och därefter betraktar x1, x2 och x3. Härvid markeras en<br />
primimplikator inte om den redan förekommer i en produktfunktion av högre grad.<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1<br />
1<br />
1<br />
1 1<br />
CD<br />
Proceduren ger primimplikatorer i Tab. 2.3.<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1<br />
1 1<br />
1<br />
1<br />
CD<br />
x1 x2 x3<br />
Figur 2.1: Utsignalerna x1, x2 och x3<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1<br />
1<br />
1 1<br />
1 1
30 KAPITEL 2. BOOLESKA FUNKTIONER<br />
CD<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1<br />
1<br />
1<br />
1 1<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1<br />
1 1<br />
1<br />
1<br />
CD<br />
x1 x2 x3<br />
AB<br />
00 01 11 10<br />
1<br />
1<br />
1<br />
1<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1<br />
1<br />
1 1<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1<br />
1<br />
1 1<br />
1 1<br />
AB<br />
00 01 11 10<br />
1<br />
1<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
x1 · x2 x1 · x3 x2 · x3 x1 · x2 · x3<br />
Figur 2.2: Förenkling av x1, x2 och x3<br />
Tabell 2.3: Primimplikatorer<br />
x1 · x2 · x3: p1 = ABC x3: p6 = A BD<br />
p7 = BC<br />
x1 · x3: p2 = ABC D<br />
p3 = BCD x2: p8 = ABC<br />
p9 = BCD<br />
x1 · x2: p4 = ABC D<br />
p5 = ABCD x1 p10 = BC D<br />
p11 = ABC<br />
Eftersom termen p1 = ABC kan användas i alla tre funktioner bör den medtas. Termerna p2 − p5<br />
uppträder i tv˚a funktioner och är s˚aledes lovande kandidater för att medtas. Primimplikatorn p6 hos x3<br />
är väsentlig och bör medtas. Termen p7 inkluderas däremot av p1, p3 och p6. Allts˚a medtas även p3.<br />
Även p2 m˚aste medtas för att funktionen x3 skall kunna beskrivas. ˚ Aterst˚ar de fyra rutor som täcks av<br />
termerna p4, p5, p8, p9, p10 och p11. Fr˚an figuren ses att minst tre termer bör medtas: antingen p4, p9<br />
och p11, eller p5, p8 och p10. Detta resulterar i de minimala formerna<br />
respektive<br />
x1 = ABC + BCD + ABC D + ABC<br />
x2 = ABC + ABC D + BCD<br />
x3 = ABC + ABC D + BCD + A BD<br />
x1 = ABC + BCD + ABCD + BC D<br />
x2 = ABC + ABCD + ABC<br />
x3 = ABC + ABC D + BCD + A BD<br />
Uppgift 2.5 Konstruera ett nät som med hjälp av logiska grindar realiserar funktionerna x1, x2 och x3.<br />
Man kan även förenkla logiska uttryck med flera utsignaler med QMC-metoden. Man börjar med att söka<br />
efter primimplikatorer som vanligt, fast man skall göra det för samtliga utsignaler och samtliga kombinationer<br />
av produkter av utsignaler. Varje kombination betraktas som separat fall, med separata primimplikatorer.<br />
I exempel 2.9 innebär det att man skall bestämma primimplikatorer för alla 7 Karnough-diagram.<br />
Det har vi i praktiken redan gjort, s˚a l˚at oss g˚a till följande steg, som är att bilda en primimplikatortabell,<br />
som ser ut enligt följande: Sedan skall följande steg utföras:<br />
1<br />
1
2.2. FÖRENKLING AV BOOLESKA UTTRYCK 31<br />
Tabell 2.4: Primimplikatortabell<br />
x1 x2 x3<br />
2 4 10 11 12 13 4 5 10 11 13 1 2 3 10 11 12<br />
p1 x x<br />
p3 x x x1<br />
p10 x x<br />
p11 x x<br />
p1 x x<br />
p8 x x x2<br />
p9 x x<br />
p1 x x<br />
p2<br />
p6 x x x3<br />
p7 x x x x<br />
p1 x x x x<br />
p4 x x x1 · x2<br />
p5 x x<br />
p1 x x x x<br />
p2 x x x1 · x3<br />
p3 x x x x<br />
p1 x x x x x x x1 · x2 · x3<br />
1. De kryss som är ensamma i en kolumn skall inringas x , de motsvarar en väsentlig primimplikator.<br />
Märk motsvarande rader med asterisk ∗.<br />
2. Kontrollera även väsentliga primimplikatorer för de enskilda utsignalerna. Om de övriga kryssen i<br />
samma kolumn kommer fr˚an samma primimplikator, s˚a är denna primimplikator oundviklig, och<br />
krysset skall inringas (p˚a den plats där det förekommer längst ner). Märk även dessa rader med<br />
asterisk ∗. Övriga kryss i kolumnen anges med parentes.<br />
3. Alla rader där inringat kryss förekommer skall anges med klammer [x].<br />
4. Ange alla de kryss som förekommer i en kolumn med [x] med parentes, (x). Detta anger att motsvarande<br />
term redan ing˚ar i de primimplikatorer som medtagits och inte behöver beaktas i fortsättningen.<br />
5. Välj fr˚an de ˚aterst˚aende valbara primimplikatorerna ett antal s˚a att de ˚aterst˚aende kryssen medtas.<br />
Märk raderna med dubbel asterisk ∗∗. Valet skall göras s˚a att funktionsuttrycket blir minimalt.<br />
6. Funktionerna konstrueras genom att ta summan av de för varje enskild funktion väsentliga, oundvikliga<br />
och valda primimplikatorer. Dvs man tittar p˚a en kolumn ˚at g˚angen och tar alla primimplikatorer<br />
som har kryss med ring runt, eller som är vald. De primimplikatorer som har kryss med<br />
enbart klamrar behövs eventellt inte, detta m˚aste skilt kontrolleras. I exemplet ovan s˚a är p2 oundviklig<br />
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<br />
behöver s˚aledes enbart medtas i x3.<br />
Vi kommer givetvis till samma resultat som i exempel 2.9 p˚a detta sätt. D˚a vi gör ovannämnda procedur<br />
s˚a kommer vi att, som tidigare, se att p6 är en väsentlig primimplikator. Det som inte tidigare framgick<br />
är att p1, p2 och p3 är oundvikliga för en disjunktiv form, vilket nu inses via punkt 2 i proceduren ovan.<br />
2.2.4 Konjunktiv minimalform<br />
De minimala uttryck som studerats ovan är disjunktiva minimalformer (summor av produkter). Det är<br />
ofta av vikt att ocks˚a undersöka den konjunktiva minimalformen (produkt av summor). Enligt de Morgans<br />
lag (R21) ′ kan ett konjunktivt uttryck för en funktion x uttryckas med hjälp av ett disjunktivt uttryck<br />
för x. Den konjunktiva minimalformen kan s˚aledes bestämmas genom att bestämma den disjunktiva<br />
normalformen för x.<br />
x
32 KAPITEL 2. BOOLESKA FUNKTIONER<br />
Exempel 2.10 Betrakta en funktion X med följande Karnaugh-diagram.<br />
Den minimala disjunktiva formen är<br />
CD<br />
För X f˚as ett minimalt uttryck enligt följande.<br />
Disjunktiv minimalform för X:<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
1 1 1<br />
1 1 1<br />
1 1 1<br />
X = BD + BC + AD + AC<br />
CD<br />
00<br />
01<br />
11<br />
10<br />
AB<br />
00 01 11 10<br />
0 1 1 1<br />
0 0 0 0<br />
0 1 1 1<br />
0 1 1 1<br />
X = A B + CD<br />
Den konjunktiva minimalformen för X f˚as med hjälp av de Morgans lagar (R21) ′ , (R20) ′ :<br />
X = A B + CD = A B · CD = (A + B) · (C + D)<br />
I detta exempel leder den konjunktiva minimalformen till ett enklare uttryck än den disjunktiva.<br />
Man kan även bestämma den konjuktiva minimalformen med QMC-metoden. Man skall d˚a ställa upp<br />
funktionstabellen med endast de rader för vilka funktionen antar värdet 0 (i stället för 1), övriga steg<br />
oförändrade. Detta ger p˚a samma sätt som med Karnough-diagram en disjunktiv minimalform för X,<br />
som kan omvandlas till konjunktiv minimalform för X med de Morgans lagar.<br />
Vid användning av programmet primp eller qmc s˚a skall man ta logisk icke p˚a varje enskilt funktionsvärde,<br />
s˚a beräknar programmet disjunktiv minimalform för X, som kan omvandlas till konjunktiv minimalform<br />
för X.<br />
Man kan även se att man fr˚an Karnoughdiagram eller QMC-primimplikatorer direkt kan utläsa den<br />
konjunktiva minimalformen. Man skall göra som när man utläser den disjunktiva normalformen, men<br />
byta ut + mot · och vise versa (och sätta parenteser där det behövs, för + skall ju ske före ·), samt<br />
ta logiskt icke p˚a alla enskilda variabler. Detta är analogt med hur konjunktiv normalform bestämdes i<br />
kapitel 2.1.<br />
För att det minimala uttrycket skall hittas bör s˚aväl den disjunktiva som den konjunktiva minimalformen<br />
undersökas.<br />
Observera att för programmering av uttrycken kan det totala antalet operationer (additioner och multiplikationer)<br />
ofta ytterligare minskas genom distributionslagarna (R14) ′ , (R15) ′ . T.ex.<br />
X = BD + BC + AD + AC = B · (D + C) + A · (D + C)<br />
= (A + B) · (D + C)<br />
I detta fall r˚akade detta leda till den konjunktiva minimalformen. Detta gäller dock ej allmänt.
2.3. KOMBINATORISKA AUTOMATIONSPROBLEM 33<br />
2.3 Kombinatoriska automationsproblem<br />
I ett kombinatoriskt automationsproblem bestäms utsignalerna fr˚an styrsystemet som booleska funktioner<br />
av insignalerna.<br />
u1<br />
u2<br />
un<br />
.<br />
✲<br />
✲<br />
✲<br />
✲<br />
✲<br />
✲<br />
Insignaler Utsignaler<br />
(fr˚an process) (till process)<br />
Jämför Ex. 2.1. De booleska funktionerna följer ur specifikationerna och kan sammanfattas i form av en<br />
funktionstabell. De i avsnitt 2.2 diskuterade metoderna kan sedan tillämpas för att vid behov förenkla<br />
de booleska uttrycken.<br />
Hasard<br />
D˚a ett kombinatoriskt automationsproblem realiseras med hjälp av logiska grindar bör man beakta eventuell<br />
förekomst av sk. statisk hasard, och konstruera nätet s˚a att det är hasardfritt. Problemet illustreras<br />
av följande exempel.<br />
Exempel 2.11 Betrakta en funktion X med Karnaugh-diagrammet nedan.<br />
C 0<br />
1<br />
AB<br />
.<br />
00 01 11 10<br />
1<br />
1 1 1<br />
Funktionen har tv˚a väsentliga primimplikatorer vilka ger den disjunktiva minimala formen<br />
X = AC + AB<br />
Funktionen kan tydligen realiseras med hjälp av tv˚a AND- och en OR-grind:<br />
A<br />
B<br />
C<br />
&<br />
&<br />
AB<br />
AC<br />
≥ 1<br />
Betrakta nu vad som händer d˚a insignalerna ändras fr˚an 011 till 111:<br />
C 0<br />
1<br />
AB<br />
00 01 11 10<br />
1<br />
1 1 1 ✲<br />
y1<br />
y2<br />
yn<br />
X
34 KAPITEL 2. BOOLESKA FUNKTIONER<br />
Funktionen X har fortfarande värdet 1 och ändras s˚aledes ej. I praktiken är emellertid tv˚a grindar aldrig<br />
exakt lika snabba. Om den nedre grinden i figuren är n˚agot snabbare än den övre, s˚a är utsignalerna fr˚an<br />
AND-grindarna 0 under ett kort ögonblick efter att den nedre grindens utsignal ändrats fr˚an 1 till 0, men<br />
innan den övre grindens utsignal ändrats fr˚an 0 till 1. Systemets utsignal ser d˚a ut s˚a här:<br />
Detta oönskade beteende kallas statisk hasard.<br />
1 X<br />
0<br />
Statisk hasard kan undvikas genom att observera att hasard inte förekommer för variabelförändringar<br />
som sker inom en primimplikator som medtagits i realiseringen (t.ex. ändringen 001 till 011 förorsakar<br />
ej hasard för nätet ovan). Vi inkluderar därför lämpliga icke-väsentliga primimplikatorer för att undvika<br />
hasard:<br />
X uttrycks nu i den icke-minimala formen<br />
C 0<br />
1<br />
AB<br />
00 01 11 10<br />
1<br />
✲<br />
1 1 1<br />
■ icke-väsentlig<br />
primimplikator<br />
X = AC + AB + BC<br />
Denna funktion kan realiseras med tre AND- och en OR-grind:<br />
A<br />
B<br />
C<br />
Denna realisering är hasardfri.<br />
&<br />
&<br />
&<br />
Nuförtiden förverkligas logikstyrningsproblem oftast med hjälp av programmerbar logik eller mikrodatorer,<br />
i vilka de booleska funktionerna programmeras. Dessa fungerar s˚a att utsignalerna ges nya värden<br />
först d˚a hela programmet utförts, varefter cykeln upprepas, osv. S˚aledes uppst˚ar problemet med statisk<br />
hasard inte vid implementering med hjälp av programmerbar logik resp. mikrodatorer.<br />
≥ 1<br />
t<br />
X
Kapitel 3<br />
Sekvensstyrningsproblem<br />
Vid kombinatoriska styrproblem av den typ som betraktades i avsnitt 2.3, och i Ex. 2.1, bestämdes<br />
utsignalerna fr˚an styrsystemet som booleska funktioner av insignalerna. För att förverkliga mera generella<br />
sekvensstyrningsproblem bör systemet ocks˚a h˚alla reda p˚a tillst˚andet som processen befinner sig i vid en<br />
given tidpunkt. Detta sker i praktiken genom att införa tillst˚andsvariabler {xi}, vilkas värden definierar<br />
systemets olika tillst˚and. Styrsystemet kan schematiskt beskrivas med följande figur.<br />
✲<br />
✲<br />
u1<br />
y1<br />
✲<br />
✲<br />
u2<br />
y2<br />
. .<br />
✲<br />
.<br />
.<br />
.<br />
. .<br />
✲ .<br />
un<br />
ym<br />
✲<br />
.<br />
✲<br />
.<br />
.<br />
x1<br />
.<br />
xp<br />
✛<br />
x<br />
.<br />
.<br />
✛<br />
.<br />
+ 1 , . . . , x+ Insignaler (fr˚an process) Utsignaler(till process)<br />
Logisk<br />
funktion<br />
Nytt<br />
tillst˚and<br />
Tillst˚and<br />
p<br />
Minne<br />
Figur 3.1: Styrsystem med minne<br />
Här är utsignalerna y1, . . . , ym till processen och tillst˚andsvariablernas nya värden x + 1 , . . . , x+ p (det nya tillst˚andet)<br />
booleska funktioner av insignalerna u1, . . . , un fr˚an processen samt tillst˚andsvariablerna x1, . . . , xp<br />
(det tidigare tillst˚andet).<br />
De booleska funktionerna kan behandlas med de metoder som diskuterades i avsnitt 2. Det nya problemet<br />
som tillkommer vid sekvensstyrningsproblem är att definiera tillst˚and och tillst˚andsvariabler samt att<br />
bestämma hur de nya värdena x + 1 , . . . , x+ p skall bestämmas.<br />
Sekvensstyrningsproblem kan ytterligare indelas i deterministiska sekvensstyrningsproblem, där processen<br />
skall genomg˚a en p˚a förhand bestämd sekvens (t.ex. fyllning och tömning av reaktor), och stokastista<br />
sekvensstyrningsproblem, där systemet skall funktionera rationellt för godtyckliga insignalsekvenser<br />
(jmf. Ex. 1.1). De stokastiska sekvensstyringsproblemen är i allmänhet besvärligare att behandla än de<br />
deterministiska.<br />
Vippor<br />
Medan kombinatoriska styrproblem kan realiseras enbart med hjälp av logiska grindar, fordrar sekventiella<br />
styrproblem dessutom element som h˚aller reda p˚a tillst˚andet, dvs. fungerar som minne. I elektroniken<br />
realiseras minnesfunktioner med hjälp av vippor (flip-flops).<br />
Den viktigaste typen av vippa är RS-vippan (Reset-Set) (även SR-vippa), vars symbol och sanningstabell<br />
ges i Fig. 3.2<br />
Vippan fungerar allts˚a s˚a, att för S = 1 (Set) blir x = 1, för R = 1 (Reset) blir x = 0, och för R = S = 0<br />
förblir x vid sitt tidigare värde. Vippan fungerar allts˚a som en minnesfunktion, där värdet hos variabeln<br />
35
36 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM<br />
S<br />
R<br />
S<br />
R<br />
S R x +<br />
0 0 x<br />
0 1 0<br />
1 0 1<br />
1 1 –<br />
Figur 3.2: SR-vippa<br />
x anger vilkendera av signalerna S och R senast haft värdet 1. För insignalkombinationen R = S = 1 är<br />
x ej definierad. Funktionen hos en RS-vippa kan beskrivas av ekvationen<br />
x<br />
x<br />
x + = (x + S) · R (3.1)<br />
Uppgift 3.1 Verifiera ekvation 3.1 p˚a basen av sanningstabellen i Fig. 3.2.<br />
En RS-vippa kan realiseras i form av tv˚a ˚aterkopplade NOR-grindar (jmf. föreläsningarna i elektronik).<br />
Förutom RS-vippan används andra typer av vippor: JK-vippan, D-vippan och T-vippan är de vanligaste.<br />
Dessa skall dock ej behandlas här.<br />
3.1 Syntes av sekventiella system<br />
Det existerar flera syntesmetoder med vilka styrsystem för sekventiella processer kan planeras. Den klassiska<br />
metoden i detta sammanhang är en syntesmetod först presenterad av Huffman ˚ar 1954, och senare<br />
vidareutvecklad av andra. Huffmans metod är ursprungligen utvecklad för den situation d˚a systemet<br />
skall realiseras med hjälp av logiska grindar och vippor. Proceduren ägnar därför stor uppmärksamhet<br />
vid att systemet skall kunna realiseras med s˚a f˚a vippor som möjligt, och vid att undvika s˚adana oönskade<br />
funktioner som beror p˚a att de olika elementen reagerar olika snabbt, s˚asom (dynamisk) hasard och<br />
sk. kapplöpningar. D˚a man i praktiken nuförtiden vanligen implementerar sekvensstyrning med hjälp av<br />
datorer s˚a är ovan nämnda aspekter av underordnad betydelse. Detta leder till en avsevärd förenkling av<br />
syntesproceduren.<br />
Vi skall här beskriva en förenklad version av Huffmans metod, som är lämpad för styrsystem som implementeras<br />
med dator.<br />
Exempel 3.1 Alarmsystem<br />
Alarmsignal<br />
Kvitteringsknapp<br />
u1<br />
u2<br />
✲<br />
Styrsystem<br />
✲<br />
✲<br />
✲<br />
y1<br />
y2<br />
Siren<br />
Alarmlampa<br />
För att illustrera syntesproceduren skall vi betrakta alarmsystemet enligt figuren. Systemet skall fungera<br />
p˚a följande sätt. D˚a u1 = 1, vilket representerar en alarmsignal fr˚an processen, skall y1 = 1, vilket sl˚ar p˚a<br />
alarmsiren. Operatören kan kvittera signalen med en kvitteringsknapp (u2), s˚a att en (momentan) signal<br />
u2 = 1 sl˚ar av sirenen (y1 = 0), som ersätts av en blinkande alarmlampa (y2 = 1). Lampan bör fortsätta<br />
att blinka s˚a länge u1 = 1. D˚a u1 → 0, skall y2 = 0.<br />
Dessutom skall i det fall d˚a den farliga situationen (u1 = 1) försvinner av sig själv (u1 = 0), innan<br />
kvittering getts, sirenen fortsättningsvis vara p˚a. Detta för att operatören skall tvingas observera att en<br />
farosituation förekommit. Vid kvittering i detta fall skall emellertid alarmlampan inte börja blinka.
3.1. SYNTES AV SEKVENTIELLA SYSTEM 37<br />
Tillst˚andsgraf<br />
Ur de verbalt givna systemspecifikationerna bör i nästa skede en kvantitativ modell för systemets funktion<br />
konstrueras. Systemets funktion kan ˚ask˚adliggöras grafiskt med en tillst˚andsgraf (flödesdiagram,<br />
överg˚angsdiagram). I denna representeras systemets tillst˚and av noder, och de möjliga tillst˚andsöverg˚angarna<br />
anges av riktade länkar mellan noderna. För alarmsystemet i Ex. 3.1 f˚as tillst˚andsgrafen i Fig.<br />
3.3.<br />
00/00<br />
01/00<br />
10/10<br />
✛<br />
11/01 ✲ 10/01<br />
1 ✲ 2 ✲ 3<br />
✛<br />
4<br />
✻ ❄<br />
5<br />
✛<br />
✻ ❄<br />
6<br />
00/10<br />
✠<br />
✒<br />
Figur 3.3: Tillst˚andsgraf<br />
u1u2/y1y2<br />
I det normala händelseförloppet med inkommande alarmsignal och kvittering av denna genomg˚ar systemet<br />
tillst˚anden 1,2,3,4,1. Överg˚angarna fr˚an tillst˚and 2 till 6 resp. 3 till 5 representerar situationen d˚a<br />
alarmsignalen försvinner av sig själv (observera dubbelriktningen). Överg˚angarna fr˚an tillst˚and 1 till 5<br />
resp. 4 till 3 representerar de fall d˚a kvitteringsknappen trycks vid ifr˚agavarande tillst˚and hos systemet.<br />
Tillst˚andstabell<br />
Informationen i tillst˚andsgrafen representeras i följande skede i form av en tillst˚andstabell (flödestabell,<br />
primitiv tillst˚andstabell, primitiv flödestabell). I denna representeras varje tillst˚and av en rad, de olika<br />
insignalkombinationerna utsätts kolumnvis, och längst till höger anges systemets utsignaler vid ifr˚agavarande<br />
tillst˚and.<br />
I tabellen anges systemets nya tillst˚and för varje kombination av tillst˚and och insignaler . Ett tillst˚and<br />
sägs vara stabilt för en given uppställning insignaler, om systemet förblir i tillst˚andet i fr˚aga (tillst˚and och<br />
insignaler konsistenta med varandra). Ett tillst˚and sägs vara instabilt för en given uppsättning insignaler,<br />
om systemet överg˚ar till ett annat tillst˚and (tillst˚and och insignaler inkonsistenta med varandra). I detta<br />
fall är det nya tillst˚andet stabilt. I tillst˚andstabellen anges de stabila tillst˚anden genom inrigning, t.ex.<br />
1 .<br />
Tabell 3.1: Tillst˚andstabell<br />
u1 0 1 1 0<br />
u2 0 0 1 1 y1 y2<br />
1 1 2 - 5 0 0<br />
2 6 2 3 - 1 0<br />
3 - 4 3 5 0 1<br />
4 1 4 3 - 0 1<br />
5 1 - 3 5 0 0<br />
6 6 2 - 5 1 0<br />
Tabell 3.1 visar en tillst˚andstabell för systemet som beskrivs av tillst˚andsgrafen i Fig. 3.3. Observera att<br />
det antagits att det för de olika systemtillst˚anden finns vissa insignalkombinationer som ej kan förekomma.<br />
Detta motsvarar ett ”don’t care” tillst˚and i tillst˚andstabellen och anges där med ett streck ”-”. (I detta<br />
fall har det antagits att tv˚a insignaler ej kan ändras (exakt) samtidigt; ett antagande vars giltighet kan<br />
diskuteras.)<br />
I praktiken är konstruktionen av tillst˚andsgraf och tillst˚andstabell ofta det sv˚araste, och samtidigt det<br />
viktigaste, skedet av syntesproceduren. I detta skede bör systemets funktion definieras exakt, vilket kräver
38 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM<br />
en genomg˚aende analys av problemställningen. I motsats till detta skede är de senare faserna av syntesproceduren<br />
mera rutinmässiga. Observera att tillst˚andsgrafen och tillst˚andstabellen inneh˚aller samma<br />
information, och det är möjligt (˚atminstone med lite rutin) att konstruera tillst˚andstabellen direkt p˚a<br />
basen av systemspecifikationerna. Det brukar dock rekommenderas att ocks˚a tillst˚adsgrafen uppställs, ty<br />
tack vare sin ˚ask˚adlighet är det enklare att med hjälp av denna hitta eventuella felaktiga funktionssätt.<br />
Uppgift 3.2 Systemet i Fig. 3.4 skall upptäcka passagen av ett förem˚al vars längd överstiger L. Härvid<br />
skall utsignalen y f˚a värdet 1, efter att förem˚alet fullständigt passerat sensorn u2. (Signalen y kan t.ex.<br />
ange för en efterföljande del av processen, att förem˚alet skall skjutas ˚at sidan). Signalen y till˚ats förbli<br />
vid värdet 1 tills ett nytt förem˚al ger signal. Endast förem˚al som rör sig fr˚an vänster till höger skall ge<br />
y = 1, men systemet skall reagera förnuftigt ocks˚a i en situation d˚a ett förem˚al rör sig fr˚an höger till<br />
vänster. Konstruera tillst˚andsgraf och tillst˚andstabell för systemet.<br />
✲<br />
✲<br />
✲ y<br />
Tillst˚andsminimering<br />
✲<br />
u1<br />
u2<br />
✛ L ✲<br />
Figur 3.4: Sensorsystem<br />
Den primitiva tillst˚andstabellen enligt ovan kan i princip som s˚adan utnyttjas för att konstruera det<br />
slutliga styrsystemet. I praktiken tenderar emellertid antalet tillst˚and hos systemet härvid bli tämligen<br />
stort, vilket motiverar att man strävar till att förenkla systemet. En tillst˚andstabell kan förenklas genom<br />
kombination av tillst˚and. Tillst˚and kan kombineras genom att man även utnyttjar informationen hos<br />
insignalerna. P˚a detta sätt kan tv˚a, eller flera, tillst˚and kombineras förutsatt att de är konsistenta i<br />
den meningen att de tillst˚andsöverg˚angar som f˚as för olika insignalkombinationer, och som kan avläsas i<br />
tillst˚andstabellen, inte är motstridiga. P˚a detta sätt f˚as följande regler för kombinering av tillst˚and (rader<br />
i tillst˚andstabellen):<br />
1. Tv˚a eller flera rader (tillst˚and) i tillst˚andstabellen kan kombineras om raderna har samma tal i de<br />
kolumner som anger nästa tillst˚and.<br />
2. Ett stabilt (inringat) och ett icke-stabilt tillst˚and kombineras till stabilt (inringat) tillst˚and.<br />
3. Ett tillst˚and (stabilt eller icke-stabilt) och ett ”don’t care” kombineras till ifr˚agavarande tillst˚and<br />
(stabilt eller icke-stabilt).<br />
4. Tv˚a ”don’t care” kombineras till ”don’t care”.<br />
5. Tv˚a stabila tillst˚and (dvs med olika nummer) kan kombineras om tillst˚anden har identiska utsignaler.<br />
6. Tv˚a eller flera instabila tillst˚and (dvs med olika nummer) kan kombineras om de tillst˚andsöverg˚angar<br />
som sl˚as ihop sker mellan de sammanslagna tillst˚anden, och om alla tillst˚and har identiska utsignaler.<br />
Betrakta som exempel den primitiva tillst˚andstabellen 3.1. Enligt reglerna ovan f˚as följande kombinationer:<br />
(1,5), (2,6), (3,4,5). I allmänhet kan antalet tillst˚and reduceras p˚a flera olika sätt genom olika<br />
tillst˚andskombinationer. De olika kombinationsmöjligheterna brukar ˚ask˚adliggöras i form av ett sammansmältningsdiagram<br />
(e. ”merger diagram”). I denna anges raderna (tillst˚anden) i den primitiva tillst˚andstabellen<br />
i form av noder i en graf, och noderna förenas med en länk om motsvarande rader kan kombineras.<br />
För tillst˚andstabellen 3.1 f˚as diagrammet i Fig. 3.5. Varje grupp av noder i diagrammet med den egenskapen<br />
att varje nod i gruppen är förenad med alla andra noder i gruppen kan kombineras till ett nytt<br />
tillst˚and. I detta enkla exempel ger diagrammet direkt, att tillst˚anden kan reduceras antingen enligt<br />
(1), (2, 6), (3, 4, 5),
3.1. SYNTES AV SEKVENTIELLA SYSTEM 39<br />
eller<br />
6<br />
5<br />
1<br />
4<br />
Figur 3.5: Sammansmältningsdiagram<br />
2<br />
3<br />
(1, 5), (2, 6), (3, 4)<br />
B˚ada alternativen leder i detta fall till tre tillst˚and hos det reducerade systemet. I praktiken kan antalet<br />
sätt att reducera tillst˚anden bli mycket stort, och det optimala valet blir nödvändigtvis en kompromiss<br />
mellan olika kriterier. Följande tumregler har visat sig vara nyttiga:<br />
1. För att förenkla funktionerna för utsignalerna yi, är det fördelaktigt att kombinera rader (tillst˚and)<br />
med liknande eller identiska utsignaler yi.<br />
2. För att förenkla de booleska uttryck som behövs för att ange tillst˚andsöverg˚angar, är det fördelaktigt<br />
att välja kombinationer som eliminerar möjligast m˚anga instabila tillst˚and, och bevarar möjligast<br />
m˚anga ”don’t care” tillst˚and.<br />
För exemplet i tabell 3.1 och 3.5 f˚as enligt regel 1 att kombination enligt (1,5), (2,6), (3,4) är att föredra,<br />
ty enligt denna kombination kombineras endast tillst˚and med ekvivalenta utsignaler. Det reducerade<br />
systemet beskrivs med hjälp av en reducerad tillst˚andstabell. I denna introduceras tillst˚andsvariabler xi<br />
för de nya tillst˚and som skapats genom tillst˚andskombination. Dessa variabler brukar anges till höger i<br />
den reducerade tillst˚andstabellen.<br />
För det betraktade exemplet f˚as den reducerade tillst˚andstabellen 3.2.<br />
Tabell 3.2: Reducerad tillst˚andstabell<br />
u1 0 1 1 0<br />
u2 0 0 1 1<br />
1,5 1 2 3 5 x1<br />
2,6 6 2 3 5 x2<br />
3,4 1 4 3 5 x3<br />
I detta fall har det förenklade systemet tre tillst˚and. Tillst˚andsvariablerna xi (i = 1, 2, 3) kommer att<br />
bestämmas s˚a, att xi = 1 (i = 1, 2, 3), d˚a systemet befinner sig i tillst˚and i (i = 1, 2, 3), och xi = 0,<br />
annars.<br />
Uppgift 3.3 Bestäm en reducerad tillst˚andstabell för systemet i Uppgift 3.2.<br />
Bestämning av utsignalfunktionerna<br />
Vi skall nu bestämma utsignalfunktionerna yi för det reducerade systemet. Varje utsignal yi är d˚a en<br />
boolesk funktion av tillst˚anden x1, x2, . . ., och insignalerna u1, u2, . . .. För dessa booleska funktioner kan<br />
ett minimalt funktionsuttryck bestämmas med hjälp av de metoder som behandlats i avsnitt 2.2.<br />
Betrakta ˚ater exemplet med den primitiva tillst˚andstabellen 3.1 och den reducerade tillst˚andstabellen<br />
3.2. I detta exempel blir utsignalfunktionerna triviala, eftersom endast tillst˚and med identiska utsignaler<br />
kombinerats (enligt tumregel A). Enligt tabell 3.1 är y1 = 1 i de stabila tillst˚anden 2 och 6 dvs. d˚a<br />
x2 = 1, och y2 = 1 i de stabila tillst˚anden 3 och 4 , dvs. d˚a x3 = 1, och vi f˚ar:<br />
y1 = x2, y2 = x3 (3.2)
40 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM<br />
Mera allmänt kan stabila tillst˚and som befinner sig p˚a samma rad i den reducerade tillst˚andstabellen ha<br />
olika utsignaler. Utsignalfunktionerna bör d˚a bestämmas genom att betrakta varje stabilt tillst˚and i den<br />
reducerade tillst˚andstabellen. För exemplet i fr˚aga f˚as att y1 = 1 för de stabila tillst˚anden 2 och 6<br />
varvid tabell 3.2 ger:<br />
y1 = u1u2x2 + u1u2x2<br />
Detta uttryck kan förenklas genom att observera att utsignalernas värden är likgiltiga för instabila tillst˚and.<br />
Vi kan beskriva y1 med hjälp av Karnaugh-diagrammet nedan.<br />
x2<br />
0<br />
1<br />
u1u2<br />
00 01 11 10<br />
1 - - 1<br />
Bestämning av tillst˚andsöverg˚angar<br />
y1 = u1u2x2 + u1u2x2<br />
y1 = x2<br />
Den reducerade tillst˚andstabellen (3.2) anger systemets tillst˚andsöverg˚angar. I ett stabilt tillst˚and<br />
sker ingen tillst˚andsöverg˚ang. I ett instabilt tillst˚and anger tabellen det nya stabila tillst˚andet till vilket<br />
överg˚angen sker.<br />
För att beskriva tillst˚andsöverg˚angarna definieras för varje tillst˚andsvariabel xi en funktion av typen<br />
(3.1):<br />
xi = (xi + Si) · Ri<br />
där (Set) funktionen Si = 1 ger en överg˚ang till tillst˚andet i, xi = 1. Och (Reset) funktionen Ri = 1 ger<br />
en överg˚ang fr˚an tillst˚andet i, xi = 0. Samt att Si = Ri = 0 förorsakar ingen förändring, xi förblir vid<br />
sitt tidigare värde. Situationen Si = Ri = 1 är s˚adan att den ej kan förekomma.<br />
För systemet i tabell 3.2 har vi att överg˚ang till det stabila tillst˚andet x1 f˚as om systemet befinner sig<br />
i tillst˚andet x3 och u1 = u2 = 0 eller u1 = 0, u2 = 1, eller om systemet befinner sig i tillst˚andet x2 och<br />
u1 = 0, u2 = 1. S˚aledes f˚as<br />
S1 = u1u2x3 + u1u2x3 + u1u2x2<br />
= u1x3 + u1u2 (3.3)<br />
(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˚ang<br />
fr˚an tillst˚andet x1 sker, om systemet befinner sig i x1 och u1 = 1, u2 = 0 eller u1 = 1, u2 = 1. S˚aledes f˚as<br />
R1 = u1u2 + u1u2 = u1<br />
(x1 kan bortlämnas, ty R1 = 1 gör ingen skada, fastän systemet skulle befinna sig i n˚agot annat tillst˚and.)<br />
P˚a samma sätt f˚as för de övriga tillst˚anden<br />
S2 = u1u2x1, R2 = u1u2 + u1u2 = u2<br />
och för tillst˚andsvariablerna f˚as slutligen uttrycken<br />
(3.4)<br />
S3 = u1u2, R3 = u1u2 + u1u2 = u1 (3.5)<br />
xi = (xi + Si) · Ri<br />
De booleska funktionerna 3.2 - 3.6 beskriver fullständigt det i Ex. 3.1 sökta styrsystemet. Observera,<br />
att konstruktionen av funktionerna gjorts s˚a, att Si och Ri är funktioner av de nya insignalerna och<br />
de gamla tillst˚andsvariablerna, medan utsignalerna yi är funktioner av de nya insignalerna och de nya<br />
tillst˚andsvariablerna. Detta är viktigt att beakta vid implementering (programmering) av funktionerna.<br />
T.ex. i ladder-diagram som används i laborationsuppgiften s˚a utförs de fördefinerade set- och resetfunktionerna<br />
genast. Detta är typiskt inte ett problem, d˚a reset-funktioner i allmänhet är oberoende av<br />
tillst˚and (undantag förekommer t.ex. p˚a sidan 52).<br />
Uppgift 3.4 Slutför syntesen av styrsystemet i Uppgift 3.2 och 3.3<br />
Uppgift 3.5 Planera styrsystemet för Ex. 3.1 i det fall d˚a tillst˚anden i den primitiva tillst˚andstabellen<br />
3.1 kombineras enligt (1), (2, 6), (3, 4, 5).<br />
(3.6)
3.2. DETERMINISTISKA SEKVENSSTYRNINGSPROBLEM 41<br />
N˚agot om implementering med logiska grindar och vippor<br />
Styrsystemet kan implementeras med hjälp av logiska grindar och vippor. Härvid representeras tillst˚andsvariablerna<br />
som utsignaler fr˚an vippor. För att minimera antalet vippor utnyttjas det faktum<br />
att man med n st. logiska variabler kan beskriva 2 n st. tillst˚and.<br />
För att t.ex. beskriva 4 tillst˚and räcker det med 2 vippor, varvid de 4 tillst˚anden representeras av<br />
(00), (01), (11), (10). Liksom tidigare bör den kombinatoriska delen av nätet planeras s˚a att det är hasardfritt<br />
(jmf. avsnitt 2.3). I sekventiella nät av den typ som visas i Fig. 3.1 tillkommer dessutom problemet<br />
som uppst˚ar p.g.a. att vippornas reaktionstider inte är exakt desamma. Detta leder till att systemets<br />
beteende vid en tillst˚andsförändring kommer att bestämmas av den vippa vars utsignal reagerar först.<br />
Resultatet är en s.k. kapplöpning (eng. race), vid vilken systemet genomg˚ar ett antal tillst˚andsförändringar<br />
till ett nytt stabilt tillst˚and, som kan vara det korrekta nya tillst˚andet eller inte, beroende p˚a vilken<br />
vippa som reagerar snabbast. Systemet kan ocks˚a börja oscillera mellan ett antal tillst˚and, utan att hitta<br />
ett nytt stabilt tillst˚and. Kapplöpningar och oscillationer undviks i princip p˚a liknande sätt som hasard:<br />
konstruera systemet s˚a att tv˚a vippor ej ändrar tillst˚and samtidigt.<br />
3.2 Deterministiska sekvensstyrningsproblem<br />
I avsnitt 3.1 behandlades närmast sk. stokastiska sekvensstyrningsproblem, där systemet bör fungera p˚a<br />
ett specificerat sätt för en mängd olika insignalsekvenser.<br />
Deterministiska sekvensstyrningsproblem kan uppfattas som ett specialfall av de mera generella stokastiska<br />
sekvensstyrningsproblemen, med en p˚a förhand given insignalsekvens. Metodiken i avsnitt 3.1 kan<br />
därför ocks˚a tillämpas för deterministiska sekvensstyrningsproblem. P.g.a. sin enklare struktur existerar<br />
emellertid ocks˚a andra procedurer som i praktiken tillämpas för problem av denna typ.<br />
FUP<br />
FUP (ty. Funktionsplan), ”funktionsdiagram”, är en tysk standard (DIN 40718) för beskriving av sekventiella<br />
styrproblem. I denna anges processens olika steg grafiskt i form av numrerade rutor. Vid dessa anges<br />
villkor som bör gälla för att processen skall överg˚a till ifr˚agavarande steg, en beskrivning av funktionerna<br />
hos processen vid skedet i fr˚aga, samt villkor för senare steg i processen.<br />
Stegnummer<br />
❘<br />
Ev.<br />
✲<br />
beskrivning<br />
av steget<br />
4<br />
5<br />
6<br />
&<br />
≥ 1<br />
u3<br />
u2<br />
u1<br />
Aktion 1<br />
Aktion 2<br />
Aktion 3<br />
a<br />
b<br />
c<br />
Aktion 4<br />
Aktion 5<br />
Aktion 6<br />
d<br />
g<br />
h<br />
c b<br />
a ✛<br />
d<br />
g<br />
h<br />
Konjunktiva<br />
villkor för steg 4<br />
Konjunktiva villkor<br />
för steg 5 (alternativ<br />
beteckning)<br />
Figur 3.6: Funktionsplan<br />
Följd av framg˚ansrikt<br />
utförd aktion<br />
Disjunktiva<br />
villkor för steg 6
42 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM<br />
HA<br />
LA<br />
LR<br />
A B<br />
VA<br />
y1<br />
❄ ❄<br />
∞<br />
❄<br />
VR<br />
Figur 3.7: Reaktor<br />
Exempel 3.2 Betrakta processen i Fig. 3.7. Den önskade funktionen är följande. Processen skall kunna<br />
startas med en START-signal, varvid ventilerna VA och VB öppnas (VA = 1, VB = 1) förutsatt att<br />
beh˚allarna A resp. B är fulla (HA = 1 resp. HB = 1) och reaktorn är tom (LR = 0). Efter tömning av<br />
beh˚allarna (LA = 0 resp. LB = 0) skall ventilerna VA resp. VB stängas (VA = 0, VB = 0), och omrörning<br />
och uppvärmning sl˚as p˚a (y1 = 1, y2 = 1). Reaktorinneh˚allet skall omröras och uppvärmas i t = 10 min,<br />
varefter reaktorn töms (VR = 1). Efter genomförd sekvens skall processen ˚ater kunna startas med en<br />
START-signal, förutsatt att ovan angivna villkor är uppfyllda. En funktionsplan för processen ses i Figur<br />
3.8.<br />
1<br />
Starta<br />
2<br />
Töm A<br />
&<br />
4<br />
Omrör och<br />
uppvärm<br />
5<br />
Töm reaktor<br />
HA<br />
&<br />
&<br />
xT MR(10min)<br />
START<br />
LR<br />
Stäng VR V R<br />
Stäng VA<br />
Stäng VB<br />
LA<br />
LB<br />
3<br />
Töm B<br />
VB<br />
V A<br />
V B<br />
Omrörning p˚a y1<br />
Uppvärmning p˚a y1<br />
Sätt timer xT MR<br />
Omrörning fr˚an y1 Uppvärmning fr˚an y2 Öppna VR VR<br />
y2<br />
HB<br />
HB<br />
LB<br />
Öppna VA VA Öppna VB VB<br />
Figur 3.8: Funktionsplan för reaktor
3.2. DETERMINISTISKA SEKVENSSTYRNINGSPROBLEM 43<br />
I vissa automationssystem kan man kompilera funktionsplaner direkt. Utan denna möjlighet s˚a kan man<br />
p˚a basen av funktionsplanen kan en primitiv tillst˚andstabell uppställas, och systemets logik kan planeras<br />
p˚a basen av denna p˚a samma sätt som i avsnitt 3.1, genom lämpligt beaktande av parallella processteg.<br />
Detta förfarande rekommenderas för processer med l˚anga sekvenser, d˚a det kan vara viktigt att förenkla<br />
logiken genom kombination av tillst˚and. Deterministiska sekventiella processer inneh˚aller emellertid i<br />
allmänhet mycket färre tillst˚and än stokastiska sekventiella processer. Därför planeras logiken ofta direkt<br />
p˚a basen av funktionsplanen. För att illustrera proceduren skall vi i detta exempel välja detta förfarande.<br />
Det är dock viktigt att komma ih˚ag att logiken kan förenklas enligt metoderna i avsnitt 3.1.<br />
För att realisera tidsfördröjningen i processteg 4 behövs n˚agon typ av tidsfördröjningsfunktion. I praktiska<br />
realiseringar, t.ex. med en programmerbar logik, finns vanligen olika typer av tidsfördröjningsfunktioner.<br />
Vi skall här använda oss av en vanligt förekommande funktion av denna typ.<br />
Vi introducerar en logisk ”timer”-funktion TMR med insignalen xT MR och utsignalen xT MR[∆t]: Här är<br />
xT MR<br />
✲ TMR ✲<br />
∆t<br />
Figur 3.9: Timer<br />
xT MR[∆t]<br />
∆t(≥ 0) ett argument som kan väljas fritt. TMR-funktionen har följande funktionssätt: En förändring av<br />
insignalen (xT MR) fr˚an 0 till 1 f˚ar utsignalen (xT MR[∆t]) att överg˚a fr˚an 0 till 1 en tid ∆t senare. Däremot<br />
överg˚ar utsignalen till 0 utan tidsfördröjning d˚a xT MR = 0. En dylik timer kallas för Timer On Delay<br />
(TON), finns även andra typer av timers, t.ex. Timer Off Delay (TOFF), som fördröjer förändringen fr˚an<br />
1 till 0 men inte andra vägen. Funktionen för en TON illustreras i följande figur.<br />
För processen i Fig. 3.7 och 3.8 har vi<br />
Insignaler: HA, LA<br />
HB, LB<br />
LR, START<br />
Utsignaler: VA, VB<br />
y1, y2<br />
xT MR<br />
❄<br />
❄<br />
✻<br />
✛ ∆t ✲<br />
✻<br />
✛ ∆t ✲<br />
✻<br />
❄<br />
Figur 3.10: Timerns funktion<br />
xT MR[∆t]<br />
VR<br />
Enligt funktionsplanen i Fig. 3.8 har processen fem st. steg, för vilka fordras motsvarande tillst˚andsvariabler:<br />
x1 − x5. Dessutom definieras en variabel xT MR och motsvarande utsignal xT MR[t] fr˚an en TMRfunktion.<br />
Logiken kan nu konstrueras p˚a basen av Fig. 3.8. För varje tillst˚andsvariabel definieras Set- och Resetfunktioner<br />
enligt<br />
xi = (xi + Si) · Ri, i = 1, 2, 3, 4, 5<br />
Ur Fig. 3.8 f˚as:<br />
S1 = START · LR· R1 = HA + HB<br />
S2 = HA · (x1 + x3) R2 = LA · LB · (x2 · x3 + x4)<br />
S3 = HB · (x1 + x2) R3 = LA · LB · (x2 · x3 + x4)<br />
S4 = LA · LB · x2 · x3 R4 = xT MR[10min]<br />
S5 = xT MR[10min] R5 = START · LR<br />
Vi behöver här en speciell konstriktion av R2 och R3, därför att vi kommer att vara vid tillst˚anden 2 och 3<br />
samtidigt. Och man kan inte lita p˚a vid programmering att vi kommer att vara vid det gamla tillst˚andet
44 KAPITEL 3. SEKVENSSTYRNINGSPROBLEM<br />
d˚a vi beräknar reset-funktionerna. T.ex. i ett ladder-diagram s˚a utförs set och reset genast, men det<br />
kan man heller inte lita p˚a i alla tillämpningar. xT MR[10min] är utsignalen fr˚an en TMR-funktion, vars<br />
insignal är xT MR = x4. Utsignalernas värden blir:<br />
Grafcet<br />
VA = x2 y1 = x4<br />
VB = x3 y2 = x4<br />
VR = x5<br />
GRAFCET (Graphe de Commande Etape-Transision) är en grafisk procedur för beskrivning av sekventiella<br />
processer. Proceduren, som ursprungligen utvecklats i Frankrike, har standardiserats i flera länder. Metoden<br />
har stora likheter med FUP, se Figur 3.11, som visar s˚aväl en GRAFCET som en FUP-beskrivning<br />
av ett automatiskt blandningssystem.<br />
Programmeringsspr˚aket SFC (se kapitel 4) som hör till IEC standarden, är baserat p˚a Grafcet. S˚a p˚a automationssystem<br />
som har detta programmeringsspr˚ak s˚a lönas det först˚as att direkt specificera processen<br />
med hjälp av SFC, som kan direkt kompileras. Det finns ocks˚a kompilatorer för Grafcet.<br />
(a) (b)<br />
Figur 3.11: (a) GRAFCET och (b) FUP beskrivningar av ett automatiskt blandningssystem
Kapitel 4<br />
Programmerbar logik<br />
Programmerbar logik (PLC: Programmable Logic Controller; fi. ohjelmoitava logiikka) är en sorts mikrodatorliknande<br />
instrument som är speciellt avsedda för logik- och sekvensstyrningsproblem. De introducerades<br />
inom den amerikanska bilindustrin p˚a 1970-talet, för att effektivera omställningen av produktionslinjerna<br />
vid produktbyten. I dag används programmerbar logik rutinmässigt i all industri.<br />
En PLC kan schematisk se ut enligt följande: Insignalerna och utsignalerna är spänningar som kan tänkas<br />
Elaggregat<br />
✲<br />
Programmeringsenhet<br />
❄<br />
Processor<br />
Minne<br />
✛<br />
✲<br />
Gränssnitt<br />
Inputmodul<br />
Outputmodul<br />
✛<br />
✛<br />
✛<br />
Figur 4.1: Schematiskt diagram av PLC<br />
✲<br />
✲<br />
✲<br />
Input<br />
Output<br />
represenera boolska variabler (hög spänning = 1, l˚ag spänning = 0). En PLC kan programmeras med logiska<br />
funktioner, s˚a att utsignalerna är booleska funktioner av insignalerna och eventuellt tillst˚andsvariabler.<br />
Programmering av dagens PLC:n sker idag uteslutande med PC:n.<br />
Det existerar en stor mängd olika PLC:n p˚a marknaden, nedan en lista p˚a n˚agra viktiga leverantörer (i<br />
alfabetisk ordning):<br />
- ABB (PROCONTIC)<br />
- Allen-Bradley<br />
- Mitsubishi<br />
- Omron<br />
- Philips<br />
- Schneider (Telemecanique)<br />
- Siemens (SIMATIC)<br />
- Texas Instruments<br />
- Toshiba<br />
45
46 KAPITEL 4. PROGRAMMERBAR LOGIK<br />
- m.fl.<br />
Figur 4.2: Illustration av modulär uppbyggnad, bilden fr˚an Allen-Bradleys websidor<br />
Dagens PLC:n har en modulär uppbyggnad, se Fig. 4.2 och 4.3. Man kan s˚aledes köpa de klossar man<br />
behöver, t.ex<br />
- Digitala inputs (typiskt i paket av 4-32 st.)<br />
- Analoga inputs (typiskt i paket av 4-16 st.)<br />
- Digitala outputs<br />
- Analoga outputs<br />
- PID-regulatorer<br />
- Redundans för kritiska tillämpningar<br />
D.v.s. man kan och brukar även utföra konventionell ”analog” reglering med dagens PLC:n.<br />
4.1 Funktionssättet hos en PLC<br />
En PLC opererar enligt sekvensen
4.2. PROGRAMMERING AV EN PLC 47<br />
1. Läs och lagra insignaler i minnet<br />
2. Exekvera programmet<br />
3. Uppdatera utsignalerna<br />
Figur 4.3: Närmare bild av PLC, bilden fr˚an Omrons websidor<br />
Tillst˚andsvariablernas och utsignalernas värden evalueras s˚aledes en g˚ang per cykel, och man undviker<br />
problem som hasard, kapplöpning och oskillation som förekommer i analog logik. Däremot förekommer<br />
nog liknande beteende i PLC:n ocks˚a, men det beror i s˚a fall p˚a programmeringsfel!<br />
Om t.ex. en variabel A i programmet tilldelas ett värde enligt<br />
A = A<br />
kommer värdet hos A att alternera periodiskt med den frekvens som sekvensen genomg˚ar.<br />
1<br />
0<br />
Tiden för en cykel är typiskt i omr˚adet 0.5-50 ms. Man l˚ater oftast programmets längd p˚averka cykelns<br />
längd, dvs man börjar p˚a nytt genast d˚a man är färdig med en cykel. Leverantörer specificerar tider för<br />
hur länge det tar att utföra 1000 ord (time/Kword) av programinstruktioner, och hur länge det tar att<br />
avläsa I/O. Dessa uppgifter kan användas för uppskattning av tiden ∆tc för en cykel. Denna tid bör<br />
beaktas d˚a man har snabba processer eller händelser med kort varaktighet:<br />
- Den tid som maximalt kan förflyta innan en förändring i en insignal p˚averkar utsignalerna är 2∆tc<br />
(förändringen sker strax efter att insignalerna inlästs).<br />
- En insignalförändring som varar en tid kortare än ∆tc kan bli odetekterad.<br />
4.2 Programmering av en PLC<br />
Programmering av en PLC sker med hjälp av en skild programmeringsenhet, som i dagens läge är en<br />
PC. Det finns ett antal olika sätt att programmera PLC:n, och det finns fem stycken IEC(International<br />
Electrotechnical Commission)-standardiserade programmeringsspr˚ak:<br />
- Structured Text (ST), hög-niv˚a textbaserat spr˚ak, liknar Pascal<br />
- Instruction List (IL), l˚ag-niv˚a textbaserat spr˚ak, liknar assembler, beskrivs närmare i kapitel 4.2.1.
48 KAPITEL 4. PROGRAMMERBAR LOGIK<br />
- Ladder Diagram (LD), grafiskt spr˚ak, heter kontakt-diagram p˚a svenska. Ett av de mest använda<br />
spr˚aken, beskrivs närmare i kapitel 4.2.2.<br />
- Function Block Diagram (FBD), grafiskt spr˚ak, har bl.a. logiska grindar och vippor som grundelement.<br />
- Sequential Function Chart (SFC), grafiskt spr˚ak baserat p˚a Grafcet.<br />
I praktiken s˚a har varje leverantör sina egna programmeringsverktyg, som mer eller mindre p˚aminner om<br />
IEC-standarden. Förutom de ovan nämnda s˚a används ˚atminstone FUP, ”vanlig” Grafcet samt även C<br />
för programmering av PLC:n.<br />
4.2.1 L˚ag-niv˚a programmeringsspr˚ak (IL)<br />
PLC:n kan programmeras med speciella assemblerliknande programmeringsspr˚ak. Uppbyggnaden av ett<br />
IL-program illustreras med ett exempel:<br />
Märke Operator Operand Kommentar<br />
LD Count (* Ladda variabeln Count i dataregistret *)<br />
loop SUB 1 (* Minska värdet i dataregistret med ett *)<br />
NE 0 (* Kolla om dataregistret är 0 *)<br />
JMP loop (* Hoppa till märket ’loop’ om föreg˚aende jämförelse är sann *)<br />
Det finns tv˚a stycken s˚a kallade modifierare som kan användas i samband av de flesta av operatorerna,<br />
t.ex. s˚a betyder LDN att man tar logisk icke p˚a operanden innan den lagras i dataregistret. Parenteser<br />
är den andra typen av modifierare, vilket fungerar som väntat som modifierare av beräkningsprioritet.<br />
LD X (* Ladda variabeln X i dataregistret *)<br />
GT( A (* Utför GT efter att uttrycket i parentes beräknats *)<br />
ADD B (* Beräkna A+B *)<br />
) (* Nu först testas om X > (A+B) *)<br />
IL p˚aminner allts˚a mycket om assembler; man skall komma ih˚ag att man hela tiden jobbar med register<br />
och att beräkningen sker i den ordning som instruktionerna kommer (om man inte sätter parentes, som<br />
i exemplet ovan. Instruktionerna<br />
LD A<br />
ADD B (* A+B *)<br />
MUL C (* (A+B)C *)<br />
beräknar (A+B)C och inte A+(BC) som i ett högniv˚a programmeringsspr˚ak.<br />
Instruktionerna (operatorerna) som ges av IEC-standarden ses i Tabell 4.1.<br />
Uppgift 4.1 Skriv ett PLC-program för den logiska funktionen för tillst˚and 1 fr˚an alarmuppgiften, dvs<br />
Ekv. 3.3, 3.4 och 3.6<br />
S1 = u1u2x3 + u1u2<br />
R1 = u1<br />
x1 = (x1 + S1) · R1
4.2. PROGRAMMERING AV EN PLC 49<br />
Tabell 4.1: IL-operatorerna enligt IEC<br />
Operator Modifierare Operandtyp Beskrivning<br />
LD N Alla Ladda operand i dataregister<br />
ST N Alla Spara inneh˚allet i dataregistret i operand<br />
S BOOL Tilldela operand värdet 1 (sant) om dataregistret sant<br />
R BOOL Tilldela operand värdet 0 (falskt) om dataregistret sant<br />
AND N och () BOOL Logisk OCH<br />
OR N och () BOOL Logisk ELLER<br />
XOR N och () BOOL Logisk XOR<br />
ADD () Alla Addition<br />
SUB () Alla Subtraktion<br />
MUL () Alla Multiplikation<br />
DIV () Alla Division<br />
GT () Alla Större än<br />
GE () Alla Större än eller lika med<br />
EQ () Alla Lika med<br />
NE () Alla Icke lika med<br />
LE () Alla Mindre än eller lika med<br />
LT () Alla Mindre än<br />
JMP N Märke Konditionellt hopp (beroende p˚a senaste jämförelsen)<br />
CAL N Namn Konditionellt anrop av funktionsblock<br />
RET N Konditionell retur fr˚an funktionsblock<br />
4.2.2 Kontaktdiagram (LD)<br />
Kontaktdiagram (e. ladder diagram, ty. kontaktplan) är en metod för att beskriva och logiska funktioner,<br />
som har varit redan länge standardiserad. Metoden härstammar fr˚an relä-tekniken, men utnyttjas idag<br />
allmänt för att programmering av PLC:n.<br />
I ett kontaktdiagram har man tv˚a vertikala ledningar, av vilka den vänstra är förbunden med en spänningskälla,<br />
och den högra är jordad (Fig. 4.4). Ledningarna är horisontalt förbundna med ”strömstigar”.<br />
1 0<br />
Figur 4.4: Kontaktdiagram<br />
Varje horisontal koppling representerar en variabel vars logiska värde är 1 om ström g˚ar genom kopplingen,<br />
och 0 annars. Funktionerna införs symboliskt; en kontakt som är sluten om u = 1, och annars öppen,<br />
anges med symbolen<br />
u<br />
Denna variabel u som avgör huruvida kopplingen är sluten eller ej kan vara en insignal eller en intern<br />
variabel (ett tillst˚and). Typiskt s˚a ges denna variabel som parameter till kontakten; man matar in en<br />
adress direkt eller en symbol (t.ex. u) som associerats med adressen.<br />
Bra minnesregel vid behandling av kontaktdiagram är att normalläge är 0, en 1 kräver en insats. T.ex.<br />
ovanst˚aende kontakt är öppen i normalläge, medan u = 1 s˚a sluter den. Symbolen för en kontakt som är<br />
sluten i normalläge, dvs d˚a u = 0 ser ut enligt följande<br />
u
50 KAPITEL 4. PROGRAMMERBAR LOGIK<br />
Slutresultatet av varje horisontell rad kan lagras i en variabel, vilket betecknas enligt följande<br />
y<br />
( )<br />
Med hjälp av dessa tre grundsymboler kan vi nu konstruera de vanligaste logiska funktionerna med hjälp<br />
av kontaktdiagram, se Fig. 4.5. Vi ser att logisk OCH f˚as med en seriekoppling och logisk ELLER med<br />
z = x1 · x2<br />
z = x1 + x2<br />
z = x<br />
z = x1 + x2<br />
z = x1 · x2<br />
z = x1 · x2<br />
z = x1 + x2<br />
Figur 4.5: Vanliga logiska fuktioner som kontaktdiagram. Observera de avvikande beteckningarna<br />
(x=insignal, z=utsignal).<br />
en parallellkoppling.<br />
RS-vippor konstrueras i IEC-standarden (och i labben) med hjälp av speciella S och R resultatvariabler.<br />
x<br />
(S)<br />
x<br />
(R)<br />
D˚a det logiska uttrycket till vänster är sant s˚a betyder det att den logiska variabeln associerad med<br />
RS-vippan (x i det här fallet) kommer att sättas till 1 respektive 0.<br />
Det finns m˚anga olika beteckningar och funktionssätt för timer-funktionen, och det finns ingen egentlig<br />
standardbeteckning. Timer-funktioner har oftast flera utsignaler, förutom den egentligen fördröjda<br />
signalen även interna variabler som t.ex. själva klockräknaren.
4.2. PROGRAMMERING AV EN PLC 51<br />
Uppgift 4.2 Konstruera ett kontaktdiagram för de boolska funktionerna y1, y2, VA, VB och VR i Ex.<br />
3.2.<br />
HA<br />
LA<br />
LR<br />
A B<br />
VA<br />
❄ ❄<br />
∞<br />
4.2.3 Function Block Diagram (FBD)<br />
y1<br />
❄<br />
Function Block Diagram (FBD) är ett grafiskt programmeringsspr˚ak som p˚aminner om blockdiagram<br />
som används i reglerteknik-kurser. Blockena kan best˚a av enkla eller mera komplicerade operationer.<br />
Blocken som är fungera som logiska grindar s˚a ser även ut som logiska grindar, alla grindar som finns i<br />
Figur 4.5 s˚a finns alla i FBD. I figur 4.6 jämförs implementeringen av n˚agra enkla kretsar med FBD med<br />
kontaktdiagram och IL.<br />
Figur 4.6: N˚agra logiska kretsar implementerade med kontaktdiagram, Funktion Block Diagram, och<br />
Instruction List. Obs här används förkortade instruktioner i IL.<br />
I tabell 4.2 ges mera avancerade operationer definerade enligt IEC-standarden. Man kan även själv definera<br />
nya block, t.ex. med hjälp av programmeringsspr˚aket Structured Text.<br />
VR<br />
VB<br />
y2<br />
HB<br />
LB
II fr FH E<br />
@=--ss F<br />
I gE _i sä _I-J-?<br />
67<br />
52 KAPITEL 4. PROGRAMMERBAR LOGIK<br />
I ,-l F H* _,., : [Il<br />
6-; gF rr;] åå f=-=; g<br />
fl N.F. 5E<br />
lo I<br />
l"äl .å L*l'å LrF<br />
-T-lt<br />
ra ES<br />
i i€ åE<br />
DOO (J (JC J i\<br />
gtl C'<br />
-t!<br />
tt a<br />
tt<br />
r<<br />
EI<br />
tr<br />
€)<br />
Å<br />
-a H .- +r<br />
€)<br />
0<br />
-ra tr<br />
U fq ?',<br />
Ft l+ r\ A)<br />
?[råå R q<br />
?<br />
'OFt<br />
S*l<br />
o p:PttJF F., 6'ä<br />
O gA Fjl<br />
H/.J<br />
nnd o 6<br />
Tabell 4.2: Avancerade FBD-block enligt IEC-standarden (Crispin, 1997)<br />
:d a cr s- O<br />
sEE ä'R-<br />
9=.E' S_ q ? E<br />
;f?ä.=.<br />
åräåå<br />
O El Ft<br />
rx ax-i<br />
?såå$<br />
o0ä pH-o pFt<br />
åfi;ää<br />
5 .+'O < i$<br />
äåårB å<br />
åeEg s<br />
t! -'.C' ir.<br />
o.!t i+ F<br />
bE 9- .o<br />
! 99."I<br />
ä a F€,F<br />
å [*{F<br />
äFF,äå<br />
c+{<br />
€ l{GI<br />
€<br />
tr<br />
G'<br />
+r,<br />
a<br />
s årEåEåååJå*åå" *åäåå*å#<br />
|-{ st<br />
d E: =<br />
r äs=å5;BSJSTAA' är<br />
o '.t)<br />
EE-o F}<br />
H -rraH. c-'l 'u,<br />
F|'<br />
?iE :<br />
,-tK H g?<br />
r-rE (D O. O<br />
åo rr F ö<br />
.tWä 4 tf a<br />
q-E'* 9. o<br />
9Eo?+g \Y i+X F(D<br />
Edo E o g<br />
OIE ='9<br />
tr Å<br />
erä;r<br />
{-a<br />
O<br />
åiBåliåi<br />
o !td-oc)<br />
t' 7c<br />
€8ä E,'<br />
irö g<br />
= Edo 1<br />
6 Or å<br />
.-<br />
Edr'.\ o<br />
OF<br />
gP s<br />
PEä?A<br />
Ed' aö o 9s<br />
oCD<br />
\(D<br />
F b:<br />
gsäe:<br />
\ (DP=o<br />
E 0.<br />
o<br />
U'<br />
J1<br />
Oo<br />
Fts<br />
Ål-(<br />
FgEe E E 6<br />
,f<br />
U'<br />
Os<br />
t'6<br />
Fb:<br />
^() oSG+'<br />
Äu) vts F.<br />
il<br />
€<br />
*$F()<br />
Ft<br />
(D<br />
(t)<br />
g<br />
F<br />
'-?<br />
F.<br />
Ft<br />
ö<br />
E<br />
@<br />
aå Fr<br />
H<br />
A) +'+<br />
ea -\/ A)r-<br />
FIF<br />
-t;<br />
9ä<br />
o9 Fl)<br />
=<br />
-\o u<br />
aå<br />
Fre<br />
'hl<br />
Ait<br />
It(\<br />
:3<br />
lFlo<br />
eq) SFI\<br />
äö Ä)_E<br />
g'6<br />
o<br />
tåEiågåstå<br />
-s.<br />
\/<br />
ååå<br />
\JH<br />
FT)<br />
F<br />
tsH SX o \J<br />
$. ra<br />
es Ga.Y<br />
FT<br />
I.H<br />
;H L.<br />
r!3<br />
=da<br />
Il.<br />
=o<br />
SrS'.<br />
F.S<br />
\)-<br />
lrt C<br />
l-'e lB<br />
I sl å<br />
III E<br />
l: E s I F<br />
I sl g<br />
$*<br />
U,A<br />
YoF}<br />
o<br />
f)<br />
F}<br />
F. I' oe<br />
R EeI<br />
I ,Hl<br />
I<br />
I<br />
Håå<br />
lq e lä<br />
ll<br />
l* -T-To<br />
lä<br />
H<br />
og, G}<br />
s<br />
Is.<br />
st"<br />
-cl<br />
€)<br />
Å<br />
Etå<br />
14 '€ tt<br />
G<br />
-lc)<br />
€<br />
*<br />
o<br />
-l I<br />
.- ts<br />
3I<br />
?') (D<br />
rst E<br />
\A.ra<br />
cts r<br />
fr<br />
c)<br />
E<br />
.ra<br />
E<br />
*)<br />
,11<br />
cJ<br />
o<br />
-I<br />
q)<br />
Fs (\<br />
??3r?äräå; gFr<br />
??iEeö'ääq1<br />
S. (\<br />
C.,<br />
o \r<br />
\ sL<br />
6'! H)r<br />
oi T(<br />
h; o<br />
Ar ts.\<br />
lt Oa,<br />
-..<br />
pr<br />
Fl<br />
Ft<br />
o<br />
{a<br />
(<br />
I<br />
*,ålgg9-' HEF<br />
15.U) T Ooo<br />
iAe?<br />
I . oi$I.<br />
o.Eloa i*e<br />
r.Oa f 0O. o<br />
E<br />
Y.,+<br />
f<br />
o(D(D<br />
Z se H<br />
.+ Ft 3SH ob)4<br />
g<br />
F.<br />
Fr. ' s30?<br />
El<br />
ägoo<br />
E €.€<br />
FF .o E':+<br />
$åäiålågiåff<br />
ro E<br />
o\E<br />
åEååa*tEågIgI<br />
s-€b? o8" Hööp€gEå<br />
$ Eå å;s €å*E Fåf,<br />
EååHåil åE€åHJ5<br />
H)<br />
D)<br />
f)<br />
oe E<br />
ooaF}<br />
(D<br />
o.<br />
,(T oq<br />
,o<br />
F. .o 'Hr<br />
o. F.l<br />
€ .o<br />
lA)<br />
oAt<br />
11 A !a Eplå<br />
gä;ä ao \ '-t B r-J'r io rE:<br />
r-t<br />
llt<br />
3Il äOc<br />
oa<br />
lo t' Q'<br />
loq<br />
L(D<br />
Eå i<br />
i-{<br />
l!1<br />
äå<br />
=<br />
AE > E<br />
Fl'l+<br />
g 6' ,--'<br />
il aä å<br />
&ht'&<br />
gXSa<br />
tYr+H<br />
ACD(DF.<br />
+rO<br />
'r<br />
=<br />
ågä$ X ä'-' At<br />
Hå RE<br />
\ 19 PFI<br />
€sä<br />
äsD<br />
DeE<br />
åååäätåäåå<br />
i=2=:;iFä;å<br />
s:;ååå;åEigå<br />
ol c)<br />
'ä A<br />
Fli - tr Yt gag<br />
6ä6<br />
Fr I<br />
3 Eåååä å<br />
3 g.eeqa:E;<br />
3€säEåå<br />
g€- [ äää<br />
bd åäåä<br />
: "i,F iAEi g<br />
EEl äåå e?Og<br />
O{+Fl<br />
;gaä Eåf p P<br />
E gEEAg ååEAå €<br />
:9rä<br />
€'F g<br />
å$ H ää€<br />
€,eEEEE -8<br />
Eä o å;€ s'<br />
'h 5E,<br />
:< J.a<br />
..> s9<br />
age<br />
ää; ägå<br />
ä ä äu g:<br />
I ne 6 ooa<br />
=tr a-g €:ä :.E F<br />
r<br />
Fa ö; E.E a<br />
HFa Z<br />
äå äöe<br />
å4::E äE<br />
tE 6år,Z<br />
ågEge
Kapitel 5<br />
Petri nät<br />
Tillst˚andsautomatbeskrivningen i avsnitt 3.1 (tillst˚andsgraf, tillst˚andstabell) har en del begränsningar,<br />
vilka gör beskrivningen obekväm för vissa exempel. Detta har motiverat alternativa formalismer för att<br />
beskriva sekventiella system. Av dessa är Petri-nätet det viktigaste. Petri-nätet har varit som förebild vid<br />
utvecklandet av Grafcet-beskrivningen, se avsnitt 3.2.<br />
Vi skall först illustrera begränsningarna för tillst˚andsautomater med ett par exempel.<br />
Exempel 5.1 Betrakta ett system med där inkommande jobb betjänas av en server S (Fig. 5.1). Inkommande<br />
jobb som ej kan betjänas direkt sätts i en kö. Servern kan betjäna endast ett jobb ˚at g˚angen.<br />
Ink. jobb<br />
· · ·<br />
Kö<br />
Server<br />
S<br />
Figur 5.1: Serverproblemet<br />
L˚at den logiska signalen A = 1 ange att ett jobb anländer, och l˚at S = 1 ange att ett jobb betjänats<br />
och att följande jobb kan betjänas av servern. En tillst˚andsautomatbeskrivning av systemet visas i Figur<br />
5.2, där nod nummer i (i=0,1,2,. . . ) motsvarar ett tillst˚and med i st. jobb i kön. Systemet har allts˚a ett<br />
oändligt antal tillst˚and.<br />
0 ✛<br />
A<br />
✲<br />
1 ✛<br />
A<br />
✲<br />
2 ✛<br />
A<br />
✲<br />
3 ✛<br />
A<br />
✲<br />
4 ✛<br />
A<br />
✲<br />
S S S S S<br />
Figur 5.2: Tillst˚andsautomat för serverproblemet<br />
Exempel 5.2 Betrakta p˚afyllningen av en reaktor fr˚an tv˚a beh˚allare (Fig. 3.7), där tömning av beh˚allarna<br />
A och B kan ske samtidigt. Figur 5.3 visar en tillst˚andsautomatbeskrivning av processen, där noderna<br />
motsvarar följande tillst˚and.<br />
53<br />
· · ·
54 KAPITEL 5. PETRI NÄT<br />
1. Klar för start<br />
2. A och B töms<br />
3. A töms, B fylls<br />
4. B töms, A fylls<br />
5. A tömd, B töms<br />
6. B tömd, A töms<br />
7. Reaktorn fylld<br />
Figur 5.3: Tillst˚andsautomat för blandningsprocess<br />
Det behövs ett tillst˚and för varje kombination av de tv˚a delprocessernas tillst˚and. Detta illustrerar en<br />
inherent svaghet hos tillst˚andsautomatbeskrivningen: Antalet tillst˚and ökar kombinatoriskt med antalet<br />
delsystem. Dessutom leder en utvidgning av systemet med nya delsystem (t.ex. en tredje beh˚allare C) till<br />
besvärliga modifieringar av tillst˚andsautomatbeskrivningen.<br />
För att kunna beskriva sekventiella, händelse-drivna system p˚a ett bekvämt sätt har man utvecklat<br />
alternativ till tillst˚andsautomatbeskrivningen. Det (sannolikt) mest utbredda av dessa är Petri-nätet<br />
(C.A. Petri 1964).<br />
Ett Petri-nät har tv˚a typer av noder: Cirklar representerar ”platser” (places), som beskriver tillst˚and eller<br />
aktiviteter hos ett system, och tvärstreck som representerar transitioner. Noderna kan förbindas med flera<br />
riktade länkar (Fig. 5.4).<br />
p1<br />
✲<br />
t1<br />
Figur 5.4: Petri-nät med tv˚a platser p1, p2, och en transition t1<br />
En transition kan ”exekveras”, vilket kan användas för att representera tillst˚andsöverg˚angar. För att ange<br />
när en transition kan exekveras förses platserna med ”tecken” (token), jmf. Fig. 5.5. Antalet tecken i de<br />
•<br />
p1<br />
✲<br />
t1<br />
Figur 5.5: Petri-nät med tecken, tillst˚and x = [1 0]<br />
✲<br />
✲<br />
p2<br />
p2
olika platserna definierar Petri-nätets tillst˚and x, dvs<br />
där x(pi) = antalet tecken i plats pi.<br />
•<br />
p1<br />
✲<br />
t1<br />
x = [x(p1) x(p2) . . . x(pm)]<br />
✲<br />
p2<br />
(a) x = [2 0] (b) x = [0 1]<br />
Figur 5.6: (a) Petri-nät med transition som kan exekveras (b) Tillst˚and efter transition<br />
p1<br />
✲<br />
t1<br />
✲ •<br />
För att en transition skall kunna exekvera bör det finnas ett tecken för varje riktad länk till transitionen.<br />
Transitionen i Figur 5.5 kan s˚aledes ej exekveras. Däremot exekveras transitionen t1 i Figur 5.6(a).<br />
Observera att antalet tecken i ett Petri-nät i allmänhet ej behöver vara konstant; antalet kan s˚aväl öka<br />
som minska beroende p˚a antalet länkar till och fr˚an de transitioner som exekveras. Transitionerna kan<br />
vara förbundna med flera platser och vice versa. Notera även att en plats kan vara förbunden med en<br />
transition i b˚ada riktningarna, jmf. Fig. 5.7.<br />
p1<br />
✛<br />
✲<br />
t1<br />
Figur 5.7: Petri-nät med länkar med olika riktning<br />
Ett exempel p˚a dynamiken i ett Petri-nät illustreras i figurerna 5.8-5.10.<br />
p1<br />
•<br />
✲<br />
t1<br />
✶<br />
<br />
p2<br />
✛<br />
p3<br />
✲<br />
✸<br />
✲<br />
✙<br />
✲<br />
Figur 5.8: x0 = [2, 0, 0, 1], endast transition t1 kan exekveras<br />
t2<br />
t3<br />
✲<br />
p2<br />
<br />
p4<br />
•<br />
p2<br />
55
56 KAPITEL 5. PETRI NÄT<br />
p1<br />
• ✲<br />
t1<br />
✶<br />
<br />
p2<br />
• ✛<br />
p3<br />
•<br />
✲<br />
✸<br />
t2<br />
t3<br />
✲<br />
✙<br />
✲<br />
Figur 5.9: Nytt tillst˚and x1 = [1, 1, 1, 1] efter exekvering av t1 i x0<br />
p1<br />
• ✲<br />
t1<br />
✶<br />
<br />
p2<br />
• ✛<br />
p3<br />
✲<br />
✸<br />
✲<br />
✙<br />
✲<br />
Figur 5.10: Nytt tillst˚and x2 = [1, 1, 0, 2] efter exekvering av t2 i x1<br />
Observera att det i Fig. 5.10 antagits att t2 exekverats i x1. Lika väl kunde emellertid t1 eller t3 ha<br />
exekverats i x1, vilket leder till andra tillst˚and hos nätet. För att beteendet hos ett Petri-nät skall vara<br />
entydigt definierat bör ordningsföljden av de exekverbara transitionerna specifieras p˚a n˚agot sätt. Det<br />
viktigaste sättet ur ingenjörsmässig synvinkel är att binda transitionerna till externa händelser, varvid<br />
Petri-nätet beskriver det som är möjligt. Mera om detta under Exempel 5.3 och 5.4.<br />
En variant av Petri-nät där transitionernas ordningsföljd kan specificeras genom att införa tider τi ≥ 0 för<br />
de olika transitionerna ti, som anger tiden efter vilken transitionen exekveras, d˚a villkoren för exekvering<br />
blivit uppfyllda (sk. timed Petri net). S˚adana fördöjda transitioner anges med en rektangel, se Fig. 5.11.<br />
Transitionen t1 i Fig. 5.11 exekveras efter τ1 tidsenheter efter att villkoren för exekvering (tv˚a tecken i<br />
plats p1) blivit uppfyllda.<br />
•<br />
p1<br />
✲<br />
τ1<br />
t1<br />
t2<br />
t3<br />
Figur 5.11: Timed Petri net<br />
Teorin för Petri-nät analyserar olika egenskaper hos näten, s˚asom<br />
- Om det dynamiska beteendet fortsätter med nya transitioner i all oändlighet (”liveliness”), eller<br />
upphör vid n˚agot skede.<br />
- Om systemet hakar upp sig utan att komma vidare (”deadlock”).<br />
- Vilka tillst˚and som kan n˚as fr˚an ett givet starttillst˚and.<br />
- Om tillst˚andet (totala antalet tecken) förblir begränsat.<br />
Till slut skall vi illustrera hur systemen i exemplen 5.1 och 5.2 kan beskrivas med Petri-nät.<br />
Exempel 5.3 Betrakta systemet i Ex. 5.1. Ett sätt att beskriva nätet med Petri-nät visas i Fig. 5.12.<br />
Vi utnyttjar oss av tre stycken transitioner:<br />
a: representerar att ett inkommande jobb anländer<br />
s: representerar start av betjäning i servern<br />
c: representerar att servern fullbordat ett jobb. Jobben antas ta τc tidsenheter.<br />
Dessutom behövs tre platser<br />
✲<br />
p2<br />
<br />
<br />
p4<br />
•<br />
p4<br />
•
Q: antalet tecken i Q anger antalet jobb i kön<br />
B: ett tecken i B anger att servern utför jobb (Busy)<br />
I: ett tecken i I anger att servern kan ta emot jobb (Idle)<br />
a<br />
Q<br />
❄<br />
s ❘<br />
B<br />
❄<br />
✠<br />
❄<br />
c τc<br />
• I<br />
■<br />
a<br />
❄<br />
Q • •<br />
s ❘<br />
❄<br />
B •<br />
❄<br />
c τc<br />
(a) Initialtillst˚and med tom kö och ledig server (b) Servern upptagen och tv˚a jobb i kön<br />
Figur 5.12: Petri-nät för server-problemet<br />
Här är ankomsten av jobb a en transition som specificeras utifr˚an. Observera att i motsats till tillst˚andsautomatbeskrivningen<br />
i Ex. 5.1 har Petrinätbeskrivningen ändligt antal noder. Antalet jobb i kön<br />
karakteriseras entydigt av nätets tillst˚and, dvs antalet tecken i platserna (och i det här fallet antalet<br />
tecken i Q).<br />
Uppgift 5.1 Modifiera Petri-nätet i Ex. 5.3 enligt följande:<br />
(a) Inkommande jobb kommer med en viss tid emellan<br />
(b) Jobben (kunderna) blir och prata i väntrummet efter att ha blivit betjänade av servern.<br />
(c) Servern kan g˚a sönder eller annars tas ur bruk för service.<br />
Till˚atet att lösa denna uppgift i <strong>kompendiet</strong>.<br />
a<br />
Q<br />
❄<br />
s ❘<br />
B<br />
❄<br />
✠<br />
❄<br />
c τc<br />
✛ I<br />
✠<br />
I<br />
■<br />
57
58 KAPITEL 5. PETRI NÄT<br />
Exempel 5.4 Betrakta systemet Fig. 3.7 och Ex. 3.2 med p˚afyllning av en reaktor fr˚an tv˚a beh˚allare A<br />
och B. Ett Petri-nät som beskriver detta system ses i Fig. 5.13. En extern signal för start av A och B har<br />
även införts.<br />
A fylld<br />
HA<br />
Fyll A<br />
✻<br />
✻<br />
✰<br />
Start<br />
❘❄<br />
❄<br />
❄<br />
❄<br />
❄ LA<br />
❄<br />
Start ok<br />
A töms<br />
(VA = 1)<br />
A tömd<br />
(VA = 0)<br />
<br />
❄<br />
✰<br />
Start ok<br />
B töms<br />
(VB = 1)<br />
LB<br />
B tömd<br />
(VB = 0)<br />
❄✠<br />
❄<br />
❄<br />
❄<br />
Omrör&Uppvärm<br />
❄ 10 min<br />
❄<br />
❄ LR<br />
<br />
✻<br />
✻<br />
Töm reaktor (VR = 1)<br />
✴<br />
❄<br />
✛ Tömd reaktor (VR = 0)<br />
❄<br />
Figur 5.13: Petri-nät för blandningsprocess<br />
B fylld<br />
HB<br />
Fyll B<br />
Observera att i motsats till tillst˚andsautomat beskrivningen i Fig. 5.3 kan de parallella processerna beskrivas<br />
oberoende av varandra i Petri-nät beskrivningen. Detta gör beskrivningen mera strukturerad,<br />
och det är enkelt att sätta till eller avlägsna delprocesser. Defacto s˚a har vi mycket mera detaljer med<br />
i Petrinätet i figure 5.13 än i tillst˚andsautomaten i figur 5.3. En nackdel med Petri-nät är att den grafiska<br />
representationen av ett realistiskt system nog kan bli relativt komplicerad, med m˚anga platser och<br />
transitioner.<br />
Vidare s˚a ses i ovanst˚aende exempel att platser är ofta sammankopplade med utsignaler (inom parentes),<br />
och transitioner är ofta sammankopplade med insignaler. Transitionerna som är kopplade med insignaler<br />
s˚a har som tillägssvillkor att den externa signalen m˚aste ha rätt värde. Dylika transitioner brukar kallas<br />
icke styrbara, eftersom de är beroende av omgivningen.
Kapitel 6<br />
Planering av säkerhet för styrsystem<br />
Säkerhet spelar en viktig roll vid design av styrsystem. Det finns standarder för val av h˚ardvara och<br />
struktur för styrsystem beroende p˚a hur hög risk som finns involverad. Detta avsnitt är baserat p˚a den<br />
EU-verifierade internationella standarden EN ISO 13849-1, som ersatte äldre standarder fr˚an och med 1.1<br />
2012. Till exempel försäkringsbolag kräver dokumenterad säkerhetsplanering av tillverkare av maskiner.<br />
Användingen av en maskin s˚a innebär alltid en viss risk för farosituation. Faror kan uppst˚a om komponenter<br />
i styrsystem g˚ar sönder. Alla fel leder inte till faror, index d används för att betona att det är fr˚aga<br />
om fel som leder till farositutioner. Styrsystem kan ibland avvärja farosituationer genom att automatiskt<br />
detektera fel.<br />
Ett styrsystem best˚ar typiskt av följande komponenter:<br />
In-enhet ✲ Logik ✲ Ut-enhet<br />
Figur 6.1: Typiska komponenter i ett styrsystem<br />
Leverantörer ger uppskattningar p˚a livslängden p˚a olika komponenter, som inverkar sannolikheten för<br />
att farositioationer uppst˚ar. I mera kritiska tillämpningar s˚a inför man till exempel diagnostik och/eller<br />
dubbla komponenter, som ökar p˚a tillförlitligheten. Finns speciella logikdatorer med alla komponenter<br />
dubblerade.<br />
Vid planering av säkra styrsystem rekommenderas följande arbetsg˚ang<br />
1. Riskevaluering<br />
(a) Gränser för maskin<br />
(b) Igenkännande av faror<br />
(c) Riskevaluering<br />
2. Planering<br />
3. Realisering<br />
4. Validering<br />
59
60 KAPITEL 6. PLANERING AV SÄKERHET FÖR STYRSYSTEM<br />
Riskevaluering s˚a best˚ar av tre delomr˚aden:<br />
S Severity, hur allvarliga skador kan uppst˚a. Överg˚aende (S1) eller best˚aende skador (S2), bl˚amärken vs<br />
avhuggna lemmar.<br />
F Frequency, hur ofta farosituationen uppst˚ar. Sällan (F1) eller ofta (F2).<br />
P Probability, sannolikhet att undvika fara d˚a farosituation uppst˚ar. Möjligt (P1) eller nästan omöjligt<br />
(P2).<br />
Riskevaluering innebär att man skall ställa sig ovanst˚aende tre fr˚agor, med tv˚a möjliga svar (1 eller 2).<br />
Riskevalueringen ger kravniv˚a (PLr), a-e. Kravniv˚an e betyder högst krav p˚a säkerhet. Om riskevaluering<br />
är S1+F1+P1, s˚a räcker kravniv˚a a. S2 höjer p˚a kravniv˚an tv˚a steg, medan F2 och P2 höjer p˚a kravniv˚an<br />
ett steg var. Kravniv˚a betyder att man accepterar farliga felsituationer enligt tabell 6.1.<br />
Tabell 6.1: Krav p˚a sannolikhet för farligt fel under en timme för olika kravniv˚aer<br />
Kravniv˚a (PLr) Krav p˚a sannolikhet för farligt fel under en timme (PFHd)<br />
a < 10 −4<br />
b < 10 −5<br />
c < 3 · 10 −6<br />
d < 10 −6<br />
e < 10 −7<br />
Kravniv˚a (PLr) s˚a är minimal prestandaniv˚a (PL) p˚a säkerheten i ett system. Man kan höja p˚a prestandaniv˚an<br />
genom att välja bättre komponenter (öka p˚a MTTFd), eller genom strukturella förbättringar. Som<br />
strukturella ˚atgärder som införande av diagnostik (DC), dubblering av kanaler som möjliggör automatisk<br />
diagnostik, och även ˚atgärder som motverkar fel som uppst˚ar av samverkan (CCF). Dessa strukturella<br />
förbättringar s˚a höjer p˚a säkerhetskategorin för systemet. De olika säkerhetskategorierna ges i tabell 6.2.<br />
Tabell 6.2: Olika kategorier av säkerhetssystem<br />
Kategori uppn˚aelig kravniv˚a MTTFd DC CCF<br />
B a-b 3-27˚ar - -<br />
1 b-c 30-100˚ar - -<br />
2, l˚ag DC a-d 3-100˚ar 60-90% behövs<br />
2, medel DC a-d 3-100˚ar 90-99% behövs<br />
3, l˚ag DC a-d 3-100˚ar 60-90% behövs<br />
3, medel DC b-e 3-100˚ar 90-99% behövs<br />
4 e 30-100˚ar 99% behövs<br />
MTTFd = Mean Time To dangerous Failure, tid tills farligt fel har uppst˚att i<br />
63% av komponenterna.<br />
DC = Diagnostic Coverage, hur stor procent av felen s˚a upptäcks av systemet.<br />
CCF = Common Cause Failure, ˚atgärder mot fel som uppst˚ar av samverkan.<br />
Kategorierna B och 1 ställer enbart krav p˚a komponenterna, om fel uppst˚ar s˚a utför systemet inga<br />
˚atgärder. I kategori 2 s˚a räcker det att fel upptäcks i regelbundna granskningar, som t.ex. självdiagnostik<br />
vid uppstart. Kategorierna 3-4 kräver dubblering, dvs flera kanaler, vilket möjliggör att systemet själv<br />
upptäcker fel, och automatiskt avbryter funktionaliteten.<br />
MTTFd för hela systemet beräknas p˚a basen av MTTFd,i för enskilda komponenter i, enligt formeln<br />
1<br />
=<br />
MTTFd<br />
∑ 1<br />
MTTFd,i<br />
Tillverkare anger inte alltid MTTFd, följande förekommer även:<br />
i<br />
• B10d, anger antal användingar varefter 10% av komponenterna har g˚att sönder. Anges för komponenter<br />
som används bara ibland, som t.ex. kontakter.
• PFHd, definierades redan tidigare, medelsannolikhet för att komponenten g˚ar sönder p˚a en timme.<br />
Vid omräkning fr˚an B10d till MTTFd används följande formel:<br />
MTTFd = B10d<br />
.<br />
0.1 · nop<br />
Här anger nop antal användningar per ˚ar. Faktorn 0.1 kommer av att MTTFd angav tiden för att 63%<br />
av komponenterna g˚ar sönder, medan för B10d s˚a var det bara 10% som hade g˚att sönder.<br />
Omräkning av PFHd till MTTFd g˚ar enligt följande ekvation<br />
1<br />
MTTFd =<br />
.<br />
365 · 24 · PFHd<br />
Man kan även räkna ut T10d, som är tiden det tar till 10% av komponenterna g˚ar sönder, enligt formeln<br />
T10d = B10d<br />
.<br />
nop<br />
T10d anger tiden varefter man borde byta ut komponenten, och är enligt ovanst˚aende formler en tiondel<br />
av MTTFd.<br />
Vid härledning av ovanst˚aende formler antar man att sönderfallshastigheten λ för en komponent är<br />
konstant, vilket allts˚a betyder att kvarst˚aende hela komponenter x ges av följande differentialekvation<br />
dx<br />
dt<br />
= −λx<br />
med initialtillst˚andet x(0) = 100%. Lösningen till denna är<br />
x(t) = (100%) · e −λt .<br />
Detta ger att vid tidpunkten T10d = 0.1/λ s˚a är x(0.1/λ) = 90.48% hela, andelen söndriga komponenter<br />
därmed ca 10%. Och vid tidpunkten MTTFd = 1/λ är x(1/λ) = 36.79% hela, och andelen söndriga<br />
komponenter därmed ca 63%. Enheten för λ är (˚ar) −1 , vilket allts˚a betyder att λ = PFHd · 24 · 365, vilket<br />
kombinerat med ovanst˚aende ger sambandet mellan MTTFd och PFHd.<br />
P˚ast˚aendet att bara 63% av komponenterna har g˚att sönder vid MTTFd är sannolikt optimistisk, för<br />
livslängden p˚a komponenter brukar följa en ”badkarsfördelning”, sannolikheten för att den skall g˚a sönder<br />
är hög i början (pga tillverkningsfel), varefter sannolikheten blir konstant l˚ag fram till T10d, varefter<br />
sannolikheten igen snabbt stiger p˚a grund av slitage. Rekommendationen brukar vara att komponenter<br />
skall bytas ut efter T10d.<br />
Under antagendet att sönderfallshastigheten skulle fördubblas efter T10d, s˚a skulle f˚as att 85% av komponenterna<br />
är sönder vid MTTFd, och om hastigheten tredubblas skulle andelen bli 94%.<br />
DC är andel farliga fel som detekteras av diagnostiken. Möjliga värden p˚a DC: 0%, 60%, 90% och 99%. För<br />
detaljer se BGIA:s rapport 2/2008e: Functional safety of machine controls, appendix E. För beräkning<br />
medel DC för hela systemet, DCavg<br />
respektive komponent, det vill säga<br />
s˚a beräknas det som ett medelvärde viktat med 1/MTTFd för<br />
DCavg =<br />
∑<br />
i<br />
∑<br />
i<br />
DCi<br />
MTTFd,i<br />
1<br />
MTTFd,i<br />
Om DCavg är just under en DC-gräns, s˚a blir säkerhetsberäkningen lätt pessimistisk p˚a grund av den<br />
grova indelningen av DC-klasser. Enligt ovan nämnda rapport är det till˚atet att i dylika fall använda en<br />
finare indelning av DC-klasser, se appendix G i rapporten.<br />
61
62 KAPITEL 6. PLANERING AV SÄKERHET FÖR STYRSYSTEM<br />
Vid evaluering av CCF, fel som uppst˚ar av samverkan, s˚a besvaras ett antal fr˚agor, med ja-nej svarskala.<br />
Tabell 6.3: Evaluering av fel som uppst˚ar av samverkan (CCF)<br />
Faktor som minskar risken för faror pga samverkan poäng om svaret är ja<br />
Fysisk separering av kanaler 15<br />
Använding av olika teknologier, t.ex. olika tillverkare 20<br />
Skydd mot överspänning, övertryck, och dylikt 15<br />
Kända komponenter 5<br />
Beaktande av CCF vid planering 5<br />
Operatörer medvetna om och tränade i CCF 5<br />
Skydd mot nedsmutsning och/eller elektromagnetiska störningar 25<br />
Skydd mot andra hot fr˚an omgivningen, t.ex. temperatur, stötar,<br />
vibrationer och fukt<br />
10<br />
Totalt 100 poäng möjliga, och 65 poäng krävs för säkerhetskategorierna 2-4.<br />
Efter evaluering av säkerhetskategori, samt beräkning av total MTTFd för systemet, och s˚a finns det<br />
tabeller som anger uppn˚aelig säkerhetsniv˚a (PL, som tar värden mellan a och e). Tabellen finns även som<br />
räknesticka, som ses i figuren nedan:<br />
Figur 6.2: Räkneskiva för beräkning av säkerhetsprestanda<br />
Kategorierna B och 1 är enkla att beräkna, t.ex. om man har MTTFd = 3, s˚a blir PFHd = 1/(365 · 24·<br />
MTTFd) = 0.00038, vilket även kan avläsas ur ovanst˚aende bild. P˚a basen av färgen ser man i bilden<br />
att man d˚a enbart n˚a säkerhetskategorin a, vilket även inses fr˚an tabell 6.1, PFHd borde vara mindre än<br />
10 −5 för att uppfylla kravniv˚a b. För detta skulle krävas att MTTFd > 1/(365 · 24 · 10 −5 ) = 11.42.<br />
I de högre kategorierna s˚a antar man att diagnostik och motsvarande ˚atgärder avvärjer farosituationen<br />
i en viss del av fallen, varav sannolikheten för farligt fel blir lägre än vad MTTFd direkt anger. T.ex. s˚a<br />
ser man i ovanst˚aende bild att för ett system i kategori 3, medel DC, s˚a uppn˚ar man kravniv˚a b redan<br />
med MTTFd = 3.