01.08.2013 Views

Hela kompendiet - Åbo Akademi

Hela kompendiet - Åbo Akademi

Hela kompendiet - Åbo Akademi

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!