Lecture 4
Discrete-event systems and Petri nets
Állapotból esemény, hálóból ellenőrizhető viselkedés: egy gyártócella holtpontjának felismerése és javítása.
Start with AikoDeck68 slides · 90 min
01
A sor akkor is megállhat, ha minden gép működik
A: Állapot és esemény
A harmadik leckében a kimenetet, a készletet és a veszteséget mértük. Most azt kérdezzük, milyen eseménysorrend vezet ezekhez. A végén két hibátlan gép, egy robot és egy puffer olyan állapotát mutatjuk meg, amelyből a működési szabályok szerint nincs tovább.
02
A kapacitás nem bizonyítja, hogy a sor elindul
Kapacitás: Kapacitás (Capacity) · Áteresztőképesség (Throughput) · Példa — 60 db/óra elméletben, 0 elakadáskor | Viselkedés: Rendszerviselkedés (System behaviour) · Szabályok — Foglalás, indítás, felszabadítás · Példa — Kölcsönös várakozás
A kapacitás az adott erőforrásokkal és feltételezésekkel elérhető legnagyobb kimenet. Az áteresztőképesség ezzel szemben a ténylegesen elkészült jó darabok száma időegységenként. A viselkedés azt írja le, melyik állapotból milyen események és feltételek mellett juthatunk tovább. A tanpéldában a sor elméleti kapacitása hatvan darab óránként, de egy kölcsönös erőforrás-várakozás idején a mért kimenet nulla. A kapacitásszám önmagában nem zárja ki ezt az eseménysorrendet.
03
A rendszer leírásához állapot és esemény kell
Discrete-event system · State · Event
A diszkrét eseményű rendszer a folyamat egy modellje. Az állapot megőrzi azt az információt, amelyből a lehetséges következő lépések meghatározhatók. Az esemény ennek az állapotnak egy változását jelöli. A gép lehet fizikailag mozgásban úgy, hogy a modell állapota végig „foglalt”.
04
Az esemény változtatja meg a modell állapotát
Darab fogadása — Darab a cellában → Megmunkálás indítása — Gép foglalt → Megmunkálás befejezése — Darab kész → Darab átadása — Gép szabad
A modellben az állapot az események között állandó. Ettől a megmunkálás fizikailag folytatódhat, és telhet az idő. A „gép foglalt” állapot mindaddig ugyanaz marad, amíg egy esemény új állapotba nem viszi. A diszkrét modell a feladathoz fontos változásokat emeli ki.
05
Az állapotba a következő döntéshez szükséges adat kerül
Gép — foglaltság és üzemállapot · Robot — elérhetőség és foglalás · Puffer — bent lévő darabszám · Darab — elvégzett és következő művelet
Nem minden adat kerül az állapotba. A gyártócella léptetéséhez a gép, a robot és a puffer foglaltsága fontos. Ha a döntés függ az alkatrész típusától vagy az előző művelettől, azt is meg kell őrizni. Az állapot a választott modellhez és kérdéshez tartozik.
06
A foglaltság állapot, az indítás esemény
Állapot: Fennálló helyzet — gép foglalt, puffer tele | Esemény: Állapotváltozást kiváltó történés — indítás, befejezés, érkezés
A „foglalt” fennállhat egy ideig, az „indul” egy változást jelöl. A naplóban az eseményhez időbélyeg tartozik, az állapothoz pedig érvényességi időszak. Ha a két fogalmat összekeverjük, nem lesz egyértelmű, mikor kell a tokent elvenni vagy visszaadni.
07
A jelből csak értelmezéssel lesz esemény
Fizikai jel: Mért mennyiség időbeli változása — helyzet, nyomás | Modellbeli esemény: Értelmezett változás — darabérkezés, műveletbefejezés
A jelátmenet önmagában még nem biztos, hogy új darabot jelent. A jelfeldolgozás, a pergésmentesítés és az azonosítás alakítja eseménnyé. A Petri-háló elemzése a neki átadott eseményekre érvényes; egy hamis érzékelőjel ettől még hibás állapotbecslést okozhat.
08
Állapot vagy esemény?
A naplóban három bejegyzés áll. Melyik esemény?
Question
- 1. A pufferben két darab van.
- 2. A robot szabad.
- 3. A robot felvette a darabot.
A felvétel pillanatszerű állapotváltozás. A másik két mondat egy fennálló állapotot ír le. A modellben a felvétel csökkenti a puffer és növeli a robot által tartott darabok számát.
09
A háló a megengedett lépéseket írja le
B: Hely, átmenet, token és tüzelés
Először meghatározzuk, mi a Petri-háló, honnan ered és milyen kérdésekre használható. Ezután egyetlen géppel kezdünk, majd ugyanazokat a szabályokat alkalmazzuk a közös robotra és a holtpontra. Időzítetlen, súlyozott hely–átmenet hálóval dolgozunk.
10
A Petri-háló állapotokat és eseményeket kapcsol össze
Petri net
A Petri-háló egyszerre grafikus leírás és pontos végrehajtási szabályokkal rendelkező matematikai modell. Megmutatja, milyen feltételek mellett következhet be egy esemény, és az hogyan változtatja meg az állapotot. Ugyanaz a hálószerkezet eltérő kezdő jelöléssel más viselkedést adhat.
11
Carl Adam Petri kémiai folyamatok ábrázolásából indult
1939 — rajzi előzmény: Kémiai folyamatok — Petri visszaemlékezése szerint, 13 évesen | 1962 — disszertáció, Darmstadt: Kommunikation mit Automaten — információátadás és elosztott rendszerek
Carl Adam Petri saját visszaemlékezése szerint 1939-ben kémiai folyamatok megértéséhez találta ki a rajzi alapötletet. Az 1962-es, Darmstadtban megvédett disszertáció már az információátadás fizikai korlátait és az elosztott működés elméletét vizsgálta. A hálók későbbi ipari alkalmazásai ebből az általános szemléletből fejlődtek ki.
12
A közös feltételek sokféle folyamatban ugyanúgy jelennek meg
Technikai rendszerek: Gyártás és logisztika — gépfoglalás, puffer, holtpont · Kommunikáció és szoftver — üzenet, nyugta, közös erőforrás | További folyamatok: Munkafolyamat — párhuzamos feladatok és jóváhagyások · Reakcióháló — rendelkezésre álló anyagok és reakciólépések
A robotfoglalás, az üzenet fogadása és egy engedély kiadása különböző alkalmazás, de mindegyikhez előfeltételek és állapotváltozások tartoznak. Petri-hálóval vizsgálható, mi indulhat el, mire kell várni és kialakulhat-e elakadás. Az alsó aktivitásábra két részfeladat összevárását szemlélteti.
13
A modellezési kérdés dönti el, milyen háló kell
Különösen hasznos: Párhuzamosság és összevárás — több folyamat feltételei találkoznak · Erőforrás-megosztás — foglalás, versengés, várakozás | Modellhatárok: Időtartam és teljesítmény — időzített vagy sztochasztikus kiterjesztés · Eltérő adattípusok — színezett háló; a token adatot is hordoz
Az időzítetlen modell a lehetséges lépéseket írja le. Ciklusidő vagy várakozási idő számításához időadat kell; alkatrésztípusok és üzenettartalmak kezeléséhez adatot hordozó tokenek lehetnek célszerűek. A folytonos hőmérséklet- vagy mozgásmodell más leírást, esetleg hibrid összekapcsolást igényel.
14
A hely, az átmenet és a token más szerepet tölt be
Place · Transition · Token
A hely állapotot, feltételt vagy erőforrást képvisel. Az átmenet egy esemény modellje. A token jelentését mindig megnevezzük: darab, szabad robot vagy teljesült feltétel. Az élek csak hely és átmenet között futnak, és a súlyuk megmondja, hány token vesz részt a lépésben.
15
Az élek a szabályt, a jelölés az aktuális állapotot adja
Directed arc · Arc weight · Marking
Az irányított él megmondja, hogy az átmenet melyik helyről fogyaszt és melyiken hoz létre tokent. Az élsúly a szükséges vagy létrehozott mennyiséget rögzíti. A háló szerkezete ettől még változatlan maradhat, miközben a jelölés minden eseménynél módosul. A kezdő jelölés is a modell kötelező adata.
16
Egy token mondja meg, szabad-e a gép
Szabad → Indítás → Foglalt → Befejezés → Szabad
A kezdő token a szabad állapotban van. Indításkor átkerül a foglalt állapotba, befejezéskor visszakerül. A token itt a gép állapotjelzője, nem egy munkadarab. A rajz mindkét állapotot tartalmazza; a jelölés mondja meg, melyik áll fenn most.
17
A jelöléshez rögzíteni kell a helysorrendet
Helysorrend: Szabad, Foglalt · Kezdő jelölés: m₀ = (1, 0)
A jelölés két számát csak a helysorrenddel együtt lehet értelmezni. Ebben az előadásban ennél a gépnél mindig a szabad hely az első, a foglalt a második. Ugyanaz a vektor fordított helysorrenddel a másik állapotot jelentené.
18
Az engedélyezettség lehetőség, a tüzelés állapotváltozás
Enabling · Firing
Az engedélyezettség feltételvizsgálat: minden bemeneti helyen elegendő tokennek kell lennie. A tüzelés az a végrehajtott lépés, amely elveszi a bemeneti és létrehozza a kimeneti tokeneket. A kettő nem ugyanaz: több átmenet is lehet engedélyezett, miközben a következő lépéshez csak egyet választunk.
19
Egyetlen hiányzó token is letiltja az indítást
Szabály: Engedélyezettség (Enabling) · Vizsgálat — Van ≥ szükséges | Beadagolás: Darab — 1 ≥ 1; teljesül · Szabad gép — 0 < 1; hiányzik · Indítás — Tiltott
A kétállapotú gép példáját most munkadarab-feltétellel egészítjük ki. A beadagoláshoz egy darab és egy szabad gép kell: az Indításnak két bemeneti helye van. A darab helyén egy token van, a szabad gép helyén nulla. Az első feltétel teljesül, a második nem, ezért az Indítás tiltott. A két feltétel logikai ÉS-kapcsolatban áll. Ha a gép felszabadul, a nulla helyére egy kerül: most már mindkettő teljesül. Ettől az átmenet végrehajtható, de még nem tüzel automatikusan.
20
A tüzelés egyszerre fogyaszt és létrehoz
Indítás: (1, 0) → (0, 1) · Következő engedélyezett lépés: Befejezés
Az indítás elveszi az egy szabad tokent és létrehoz egy foglalt tokent. A két művelet egy atomi modelllépés. Köztes, félig végrehajtott tüzelést nem veszünk fel. Most az indítás tiltott és a befejezés engedélyezett; a következő lépés után ismét a kezdő jelölésbe jutunk.
21
A kezdőjelölést átírva megváltozik, mi tüzelhet
Műhely: free.initial = 0 · Fordítás · Indítás tiltott · Visszaállítás: initial = 1
Nyisd meg a fejléc Petri-műhely gombját. Az Egy gép két állapota példában a free hely initial értékét írd át nullára, majd fordítsd le. Mindkét hely üres lett, ezért egyik átmenet sem indulhat. Állítsd vissza egyre, fordíts újra, és tüzeltesd az Indítást, majd a Befejezést. A szöveg módosítása önmagában még nem változtatja meg a futó állapotot.
22
A kettes élsúly két bemeneti tokent kér
Darab: 3 · Egy csomaghoz: 2 darab · Csomag: 0
A bemeneti él súlya kettő. Három darabból egyszer lehet csomagot készíteni, utána egy darab marad. A kimeneti token egy csomagot jelent, ezért a teljes tokenszám csökkenhet anélkül, hogy anyag veszne el. Csak azonos jelentésű mennyiségeket szabad közvetlenül összeadni.
23
Egy megmaradt token nem elég az újabb csomaghoz
Jelölés: (1, 1) · A kettes bemeneti feltétel nem teljesül
A csomagolás után van token a bemeneten, mégsem lehet újra tüzelni. A feltétel nem az, hogy a hely nem üres, hanem hogy legalább annyi token van rajta, amennyit az él kér. Az eredmény nem lehet negatív tokenszám.
24
Az önhurok feltételt tart meg
Engedély: 0 · Az átadás tiltott, pedig a bemeneti darab megvan
Az engedélyhelyről az átadás elvenne egy tokent, majd visszaadná ugyanoda. A nettó változás nulla, de a tokennek a tüzelés előtt ott kell lennie. Itt nincs ott. Ez lesz az a példa, amely megmutatja, miért nem elég csak a nettó változások mátrixát nézni.
25
Melyik jelölés következik?
Helysorrend: (Darab, Csomag). Kezdetben (3, 0), a bemeneti élsúly 2, a kimeneti 1. Mi lesz a Csomagolás egy tüzelése után?
Question
- 1. (1, 1), és újabb tüzelés még nem engedélyezett.
- 2. (2, 1), mert egy átmenet mindig egy tokent vesz el.
- 3. (1, 2), mert a bemeneti súly a kimenetre is érvényes.
A két élsúly külön adat. A bemenet 3 − 2 = 1, a kimenet 0 + 1 = 1. Újabb tüzeléshez két bemeneti token kellene, ezért az átmenet tiltott.
26
A közös erőforrás összeköti a külön műveleteket
C: Konfliktus, párhuzamosság és puffer
Egy gép állapotait már követni tudjuk. Most több művelet kerül a modellbe, és kiderül, miért nem elég mindegyiket külön helyesnek látni. A közös robot és a véges puffer olyan feltételeket ad, amelyek csak az összekapcsolt rendszerben látszanak.
27
A közös erőforrás foglalása konfliktust hozhat létre
Resource place · Conflict
Az erőforráshely tokenje a szabad kapacitást jelenti. Foglaláskor ezt a kapacitást elvesszük, felszabadításkor visszaadjuk. Konfliktus akkor keletkezik, ha a külön-külön lehetséges műveletek számára együtt már nincs elegendő közös erőforrás. Egy szabad robotot ezért két művelet nem foglalhat le egyszerre.
28
Egy szabad robotot egy token képvisel
Robot: 1 szabad egység · Két indulás versenyez érte
A robothelyen egy token van. Az A és a B művelet külön-külön engedélyezett, de mindkettő ugyanazt a tokent használná. Egyik indulás után a robot tokenje eltűnik a szabad helyről. A befejezés visszaadja, és ekkor lehet újabb műveletet választani.
29
A külön-külön engedélyezett lépések is ütközhetnek
A elindult · A robot foglalt · B indítása most tiltott
A kezdő állapotban mindkét indulás lehetséges volt. A kiválasztása azonban letiltotta B-t. Ez konfliktus, nem két független lépés. Az események kiválasztásához ütemezési szabály is kell; a Petri-háló engedélyezettsége önmagában nem választ nyertest.
30
A párhuzamos haladás és az összevárás külön modellminta
Concurrency · Synchronization
Konkurens lépéseknél több művelet haladhat úgy, hogy nem zárják ki egymás végrehajtását. A szinkronizáló átmenet ezzel szemben több feltétel együttes teljesülésére vár. Egy szerelés előtt például külön készülhet el két részegység, de a végszerelés csak mindkettő elkészülte után kezdődhet.
31
A független ágak befejezése felcserélhető
Két aktív ág, felcserélhető befejezési sorrend.
A szétválás két külön feltételt hozott létre. Az A és B ág befejezése nem ugyanazt a tokent fogyasztja, így mindkettő végrehajtható. Az egyik befejezése nem tiltja le a másikat. Ez a rajz logikai függetlenséget mutat, nem azt, hogy a két fizikai művelet pontosan egyszerre fejeződik be.
32
Az egyesítés megvárja mindkét ágat
A kész · B még dolgozik · Az egyesítés tiltott
A közös befejezés két bemeneti helyről kér tokent. Az A ág tokenje nem helyettesíti a B ágét. A példában ezek a tokenek részfeladatok teljesülését jelölik, nem megkettőzött munkadarabokat. Amikor B is befejeződik, az egyesítés visszaállítja a következő ciklus kezdő feltételét.
33
A szabad férőhely is modellezhető tokennel
Két hely: 2 szabad + 0 foglalt · Betétkor egy szabad hely elfogy
A puffer kapacitását két szabadhely-token képviseli. A betét egy szabad tokent fogyaszt és egy bent lévő darabot hoz létre. Kivételkor az irány fordított. A kapacitás itt a háló feltételeiből következik, nem egy külön rajzolt szám, amelyet a működés figyelmen kívül hagyhat.
34
Tele puffernél a betét tiltott, a kivétel lehetséges
0 szabad + 2 foglalt = 2 · Túlcsordulás nincs megengedve
A harmadik betét nem engedélyezett, mert nincs szabadhely-token. A kivétel viszont engedélyezett, és felszabadít egy helyet. A két hely tokenösszege végig kettő. A modell csak akkor írja le a valós puffert, ha minden fizikai be- és kivételt a megfelelő átmenet képvisel.
35
A szabadhely-tokenek száma adja a puffer kapacitását
Műhely: slots.initial = 3 · Három betét · Negyedik betét tiltott · Kivétel után újra betét
Nyisd meg a Két férőhelyes puffer példát, és a slots hely initial értékét emeld háromra. A műhelyben a Betesz gombot háromszor használhatod, a negyedik betét már tiltott. Egy Kivesz után ismét lehet betenni. A szabad és foglalt helyek összege most három: ezt a módosított kezdő jelölés választotta meg.
36
A modell kapacitása és a fizikai kapacitás egyezzen
Modellkapacitás: A háló által engedett tokenszám — itt legfeljebb kettő | Fizikai kapacitás: A tényleges férőhely — minden betétet és kivételt követni kell
A tokenekkel igazolt korlát nem védi meg a valós berendezést, ha kézzel egy harmadik darabot is betesznek, vagy egy érzékelő két darabot egynek számol. A formális elemzés a modell tulajdonságát bizonyítja. A modell és az üzem kapcsolatát mérés és teszt ellenőrzi.
37
Miért nem indulhat mindkét művelet?
A robot szabad helyén egy token van. A és B indítása is egyet kér erről a helyről. Mi következik?
Question
- 1. Mindkettőnek egyszerre kell indulnia, mert mindkettő engedélyezett.
- 2. Az egyik indítható; utána a másik a robot felszabadításáig tiltott.
- 3. A háló már most holtpontban van.
A két indulás ugyanazért az egy tokenért versenyez. Van végrehajtható lépés, tehát nincs holtpont. Az egyik indítása elfogyasztja a közös erőforrást, ezért a másik utána már nem engedélyezett.
38
A helyes részmodellek összekötve is vizsgálandók
bdd Cella: Cella · Gép [2] · Robot · Puffer
Egy gép önmagában végigmehet a ciklusán, és a robot önmagában szabályosan foglalható. Az összekapcsolás mégis új várakozási helyzetet hozhat létre. Most ezért a teljes elérhető állapotteret nézzük: nem elég egyetlen sikeres ciklust találni.
39
A rajzból ellenőrizhető állításokat készítünk
D: Mátrix, invariáns és elérhetőség
Egy kis hálón a rajz és a számolás ugyanazt mondja. Egyetlen kézzel követhető mátrixos példát vezetünk végig, majd elválasztjuk azt, amit ez bizonyít, attól, amit nem. A korlátosság, a holtpontmentesség és az élőség külön kérdés.
40
A bemenet, a kimenet és a nettó változás külön adat
Pre-incidence matrix · Post-incidence matrix · Incidence matrix
A Pre azt írja le, mire van szükség a tüzelés előtt, a Post pedig azt, mi keletkezik utána. A kettő különbsége a C incidenciamátrix. A kurzusban a helyek a sorok és az átmenetek az oszlopok: így egy oszlop egy tüzelés helyenkénti hatását mutatja.
41
A bemenetet és a kimenetet külön tároljuk
Sorok: Szabad, Foglalt · Oszlopok: Indítás, Befejezés
A gép indítása a szabad helyről vesz el egy tokent, és a foglalt helyre tesz egyet. A befejezés ennek fordítottja. Ezért mindkét mátrix első oszlopa az indítás, a második a befejezés. A bemeneti mátrixra az engedélyezettség eldöntéséhez is szükségünk van.
42
Az incidenciamátrix a nettó változást adja
Negatív: fogyás · Pozitív: keletkezés · Oszloponként egy átmenet
Az első oszlop mínusz egy és plusz egy: indításkor a szabad token elfogy, a foglalt létrejön. A második oszlop a visszaút. A mátrixkonvenciót mindig odaírjuk, mert a szakirodalomban a transzponált alak is előfordul.
43
Egy indítás átviszi a tokent a foglalt helyre
Az indítóoszlopot adjuk a kezdő jelöléshez.
Az indításhoz tartozó tüzelési vektor egy, nulla, ezért a mátrixszorzás C első oszlopát választja ki: mínusz egy, plusz egy. Ezt adjuk a kezdő jelöléshez. A számolás előtt ellenőriztük a bemeneti feltételt: a szabad helyen valóban ott volt az egy token. Az eredményben már csak a foglalt helyen van token.
44
A megmaradás és az elérhetőség más kérdésre felel
Place invariant · Reachability · Reachability graph
Az invariáns minden lépésnél változatlan mennyiséget ad. Az elérhetőség azt kérdezi, létezik-e megengedett út egy jelöléshez. Az elérhetőségi gráf ezeket az utakat rendezi közös ábrába. Az invariáns egy lehetséges állapotot kizárhat, de a megmaradási feltétel teljesülése még nem bizonyítja, hogy az állapot elérhető.
45
A gép állapotjelző tokenje nem tűnhet el
Szabad + Foglalt = 1 · Az összeg minden engedélyezett lépésnél megmarad
Mindkét oszlop elemeinek összege nulla. Ezért az egyes súlyokkal vett tokenösszeg nem változik. A kezdő összeg egy, a tokenszámok nemnegatívak, így egyik helyen sem lehet egynél több token. Ez egyszerre megmaradási állítás és korlátossági bizonyíték erre a kis hálóra.
46
Ennek a gépnek két elérhető jelölése van
Szabad — (1, 0) → Foglalt — (0, 1) ↺
A szabad állapotból csak indítás, a foglaltból csak befejezés lehetséges. A keresés visszajut az első állapotba, és nincs további ág. Ennél a hálónál ezzel a teljes elérhetőségi gráfot felsoroltuk. Egy nagy hálónál a sok párhuzamos lehetőség miatt ez már drága lehet.
47
A korlát minden elérhető jelölésre vonatkozik
Boundedness · 1-safeness
A k-korlátosság állítása az, hogy a hely tokenszáma egyetlen elérhető jelölésben sem haladja meg k-t. Nem elég, hogy az eddig látott futásban kicsi volt. Az 1-korlátosság ennek speciális esete: minden helyen legfeljebb egy token lehet. Ettől még a rendszer megállhat.
48
Az 1-korlátosság erősebb a korlátosságnál
Gép: Helyenként legfeljebb 1 token | Puffer: Helyenként legfeljebb 2 token
Mindkét modell korlátos. A gép hálója 1-korlátos, a két férőhelyes pufferé nem, mert két token is lehet egy helyén. Az angol safe itt egy speciális Petri-háló-tulajdonság. Nem azt jelenti, hogy a fizikai gép funkcionálisan biztonságos vagy tanúsított.
49
A holtpont, a holtpontmentesség és az élőség külön állítás
Deadlock · Deadlock freedom · Liveness
A holtpont egy jelölés tulajdonsága: nincs benne végrehajtható átmenet. A holtpontmentesség az egész elérhető állapottérre állítja, hogy mindig lehet valamerre továbbmenni. Az élőség ennél többet kér: minden átmenetnek minden elérhető jelölésből újra engedélyezhetővé kell válnia valamilyen folytatással.
50
A holtpontmentességből nem következik élőség
Az A ág mindig léphet · A B ág átmenete soha nem tüzelhet
Az A ágban keringő token miatt mindig van engedélyezett átmenet. A B ágban nincs token, és nem is érkezhet oda, így a jobb oldali átmenet halott. A háló holtpontmentes, de nem élő. Élőséghez minden átmenetnek minden elérhető jelölésből ismét engedélyezhetővé kell válnia.
51
A nettó mérleg nem igazolja a végrehajthatóságot
C oszlopa: (−1, +1, 0) · A számolt cél nemnegatív, mégis elérhetetlen
A helysorrend bemenet, kimenet, engedély. A kezdő jelölés egy, nulla, nulla. A nettó változás szerint nulla, egy, nulla lenne az eredmény. Mégsem tüzelhetünk: az engedélyhely üres, és egyetlen átmenet sem hoz létre benne induló tokent. Az önhurok bemeneti feltétele eltűnt a C mátrixból.
52
Mit bizonyít egyetlen sikeres ciklus?
A háló egy futásában minden művelet egyszer végrehajtódott. Mit állíthatunk ebből biztosan?
Question
- 1. A háló minden elérhető állapotból holtpontmentes.
- 2. Minden későbbi ütemezés igazságos lesz.
- 3. Ez az egy tüzelési sorozat végrehajtható volt; más ágakon még lehet elakadás.
Egy futás egyetlen út az állapottérben. Nem vizsgálja meg az összes választási lehetőséget, ezért nem bizonyít általános holtpontmentességet vagy élőséget. Ellenpéldához viszont elég lehet egy megengedett, hibához vezető út.
53
Két helyes foglalás együtt elakadást okozhat
E: A sor beragadt
Most visszatérünk a két géphez, a robothoz és a pufferhez. Két művelet két erőforrást kér, de eltérő sorrendben. Egy rövid, megengedett tüzelési sorozatból jutunk el a holtpontig, majd egy indítási feltétellel kizárjuk ezt az állapotot.
54
A két foglalás ugyanarra a robotra és pufferhelyre vonatkozik
R ↦ szabad robot · B ↦ szabad pufferhely · A ↦ G1 tartja R-t · H ↦ G2 tartja B-t
G1 előbb a robotot foglalja le, és utána pufferhelyet kér. G2 előbb pufferhelyet foglal, és utána robotot kér. A négy hely a két szabad erőforrást és a két részleges foglalást jelöli. A jelölés sorrendje végig R, B, A, H.
55
Kezdetben mindkét foglalás külön-külön lehetséges
Helysorrend: R, B, A, H · m₀ = (1,1,0,0)
Mindkét erőforrás szabad. A bal oldali foglalás R-t, a jobb oldali B-t veszi el. A lezárásokhoz a másik erőforrás is kell: G1 lezárása B-t, G2 lezárása R-t is igényli. Ezt a két önhurok mutatja; a lezárás után mindkét erőforrás ismét szabad.
56
G1 már tartja a robotot, G2 még foglalhat puffert
G1 foglalása után: (0,1,1,0) · Két folytatás: G1 lezár vagy G2 foglal
Ebben az állapotban még nincs holtpont. A G1 művelet be tudná fejezni az átadást, mert a pufferhely szabad. De G2 is lefoglalhatja a pufferhelyet, mert az ő indítása nem ellenőrzi a robot szabadságát. Ez a választási pont dönti el a folytatást.
57
A két részleges foglalás kölcsönös várakozást hoz létre
Holtpont: (0,0,1,1) · G1 B-re vár · G2 R-re vár
G1 tartja a robotot és pufferhelyet kér. G2 tartja a pufferhelyet és robotot kér. Egyik lezárás sem engedélyezett, ezért egyik erőforrás sem szabadul fel. A modellben nincs hiba vagy meghibásodás: a foglalási szabályok önmagukban elégségesek voltak ehhez az elakadáshoz.
58
A holtponthoz két szabályos tüzelés elég
Lépés | Jelölés (R,B,A,H) · Kezdet | (1,1,0,0) · G1 foglal | (0,1,1,0) · G2 foglal | (0,0,1,1)
A nyomvonal minden lépése engedélyezett volt a megelőző jelölésben. Ezért valódi ellenpéldát kaptunk a holtpontmentességre. A fordított foglalási sorrend is ugyanide vezet. Egy másik, sikeres futás ezt az ellenpéldát nem cáfolja meg.
59
Mind a négy átmenetnél megnevezhető a hiányzó token
Átmenet | Hiány · G1 foglal | R · G2 foglal | B · G1 lezár | B · G2 lezár | R
Nem elég azt mondani, hogy a rajzon nincs mozgás. Végigellenőrizzük az átmeneteket. Új foglaláshoz nincs szabad erőforrás, lezáráshoz pedig éppen a másik fél által tartott erőforrás hiányzik. Egyetlen átmenet sem engedélyezett, ezért a jelölés holtpont.
60
Az indítás feltételét kell megváltoztatni
Eredeti: A saját első erőforrás szabad | Javított: Mindkét erőforrás szabad
Mindkét indításhoz hozzáadjuk a másik erőforrás szabadságának ellenőrzését. A rajzon ez önhurok: a tokent megköveteli, de nettó nem fogyasztja. Az egyik indítás után a másik már tiltott lesz. Fontos, hogy az ellenőrzés és a foglalás a modellben egyetlen atomi tüzelés.
61
A kiegészített indítás kizárja a kettős részleges foglalást
Indításkor mindkét erőforrásnak szabadnak kell lennie.
A kezdő állapotban továbbra is mindkét művelet választható. G1 indulása elveszi R-t, így G2 indításának új R-feltétele már nem teljesül. G1 viszont lezárhat, mert B szabad maradt. A másik irány szimmetrikus. A korábbi holtpont-jelöléshez most nem vezet megengedett út.
62
A javított modell három elérhető jelölése mind továbbvihető
Jelölés (R,B,A,H) | Folytatás · (1,1,0,0) | G1 vagy G2 foglal · (0,1,1,0) | G1 lezár · (1,0,0,1) | G2 lezár
A kezdő állapotnak két utódja van, és mindkettőből csak a megfelelő lezárás vezet vissza. Több jelölés nincs, mert ezeket az összes engedélyezett lépéssel kibontottuk. A felsorolás ezen a modellen bizonyítja a holtpontmentességet. Mind a négy átmenet újra engedélyezhető, tehát a háló élő is.
63
A hibás foglalási szabály szövegben is javítható
Műhely: takeA → takeB · Holtpont · Mindkét indítás hiperéléhez önhurok a másik erőforráson
Az Eltérő foglalási sorrend példán tüzeltesd a G1 foglal és G2 foglal átmenetet. Ezután a takeA hiperél incidenciáihoz add hozzá a B helyet + és - előjellel, mindkettőt [1] értékkel; takeB-hez ugyanígy az R helyet. Fordíts újra. A második foglalás most tiltott, a megkezdett művelet lezárható.
64
Megjavítja-e a hálót a gyorsabb robot?
Az eredeti foglalási szabályok mellett a robot sebességét megduplázzuk. Megszűnik-e ezzel a holtpont lehetősége?
Question
- 1. Igen, mert kisebb lesz a várakozási idő.
- 2. Nem: ugyanaz a két foglalási lépés továbbra is elérhető.
- 3. Igen, mert a háló korlátos.
A robot sebessége nem változtatja meg az időzítetlen háló engedélyezettségi feltételeit. A holtponthoz vezető két foglalás továbbra is végrehajtható. A logikai lehetőséget a foglalási szabály megváltoztatása zárja ki, nem a gyorsabb végrehajtás.
65
A holtpontmentesség mellett az ütemezést is meg kell tervezni
Holtpontmentesség: Minden elérhető jelölésből van lépés | Kiéheztetés: Egy művelet tartósan kimarad, miközben mások haladnak
Az indítási feltétel megoldotta a modell logikai elakadását, de nem ad óránkénti darabszámot. Azt sem garantálja, hogy az ütemező egyszer G2-t is kiválasztja, ha mindig választhatja G1-et. Az élőség lehetőség, az igazságos ütemezés működési szabály. Az időzítést és a fizikai feltételeket külön kell ellenőrizni.
66
A küldetés bizonyítékot kér a javítás mellé
Háló — helyek és tokenjelentések · Kezdő jelölés — induló állapot · Hibanyomvonal — engedélyezett lépések a holtpontig · Javítás — módosított szabály és bizonyíték
A sor beragadt küldetésben nem elég újrarajzolni a cellát. Add meg, melyik token mit jelent, és milyen sorrendben jutottál holtpontba. Ezután módosíts egy szabályt, és mutasd meg, miért nem érhető el többé ugyanaz az elakadás. A modell feltételezéseit is írd mellé.
67
A működés és a szerkezet más mérnöki kérdés
Petri-háló: Megadott rendszer lehetséges eseménysorrendjei | P-gráf: Műveleti egységekből felépíthető folyamatszerkezetek
Ma egy megadott szerkezet lehetséges viselkedését vizsgáltuk. A következő leckében visszalépünk a tervezési döntéshez: milyen műveletekből és kapcsolatokból érdemes egyáltalán felépíteni a folyamatot. A két modell más kérdésre felel. A vezérlési megvalósítás később a PLC témájánál kapcsolódik ehhez.
68
A működő példa mellé a rossz út keresése is kell
Állapot → Megengedett lépés → Elérhető jelölés → Bizonyíték
Egy sikeres ciklus megmutatja, hogy a rendszer képes haladni azon az úton. A rossz út keresése megmutatja, hol akadhat el. A Petri-háló értéke az, hogy ezt a kérdést pontos feltételekkel, ellenőrizhető lépésekben tudjuk feltenni. Az állítást mindig a vizsgált modell és annak feltételezései mellett mondjuk ki.