Discrete-event systems and Petri nets
Explanation
Magyarázat
Hajdu Csaba, 2026
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.
Hajdu Csaba, 2026
The semester
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.
Az elméletileg elérhető legnagyobb kimenet adott időszak alatt, adott erőforrás-készlettel.
Időegység alatt ténylegesen elkészült jó darabok száma. Nem a névleges kapacitás, hanem a mért kimenet.
60 db/óra elméletben, 0 elakadáskor
A rendszer lehetséges állapotváltozásai és eseménysorrendjei, adott kezdőállapot és működési szabályok mellett.
Foglalás, indítás, felszabadítás
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.
A kapacitás becsléséhez rögzíteni kell az időszakot, az erőforrásokat és a működési feltételezéseket. Az áteresztőképességet a rendszer kimenetén mérjük; azonos mértékegység mellett is más mennyiség, mint a kapacitás. A viselkedési modellben a foglalási és indítási szabályok döntik el, melyik lépés lehetséges. A 60 és 0 db/óra szemléltető tanpélda: névleges kapacitás mellett az aktuális foglalási állapot letilthat minden haladást.
Olyan modell, amelynek diszkrét állapota események bekövetkezésekor változik. Két esemény között a modellállapot állandó; a fizikai folyamat ettől még változhat.
Minden információ, ami a rendszer jövőjének leírásához a múltból szükséges.
Pillanatszerű történés, amely állapotátmenetet vált ki.
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”.
A cella állapotában például a gép foglaltsága, a robot által tartott darab és a puffer telítettsége szerepelhet. Az esemény lehet érkezés, indítás, befejezés vagy hiba. Az állapotválasztás mindig a vizsgálati kérdéstől függ: a holtpont kereséséhez más adat kell, mint a hőmérséklet szabályozásához. Időzített elemzésben az órák vagy a hátralévő műveleti idők is az állapot részévé válhatnak.
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.
A lekerekített téglalapok műveleteket, a mellettük álló megjegyzések a művelet után fennálló állapotot mutatják. A nyilak a vezérlés haladását jelölik. Az indításhoz vagy befejezéshez tartozó esemény változtatja meg a diszkrét modell állapotát. Az ábra egy darab feldolgozásának egyszerűsített, soros aktivitásábrája; a Petri-háló tüzelési szabályait később vezetjük be.
foglaltság és üzemállapot
elérhetőség és foglalás
bent lévő darabszám
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.
gép foglalt, puffer tele
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.
helyzet, nyomá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.
A naplóban három bejegyzés áll. Melyik esemény?
A naplóban három bejegyzés áll. Melyik esemény?
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.
A graphical and mathematical formalism for describing and analysing discrete-event systems, especially concurrent systems. The P/T net used here is a directed bipartite graph of places and transitions connected by weighted arcs. The token distribution is the marking; firing enabled transitions changes it.
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.
A leckében a súlyozott, időzítetlen P/T-változat szerepel. Formálisan megadható (P,T,F,W,m₀) alakban: P és T véges, diszjunkt halmaz, F a köztük futó irányított élek halmaza, W pozitív egész élsúly, m₀ helyenként nemnegatív egész kezdő tokenszám. A későbbi Pre és Post mátrixok az F és W adatát kódolják. Forrás: Murata (1989), 2. táblázat; https://docenti.ing.unipi.it/~a009435/issw/extra/murata.pdf .
Petri visszaemlékezése szerint, 13 évesen
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.
Az 1939-es előzményt Petri és Reisig közös visszatekintése rögzíti: https://www.scholarpedia.org/article/Petri_net . Ez a rajzi ötlet története, nem a teljes mai P/T-formalizmus akkori publikálása. A disszertáció eredeti összefoglalója és bibliográfiai adatai: https://edoc.sub.uni-hamburg.de/informatik/volltexte/2011/160/ . A kémiai ábra modern jelölésű saját tanpélda; nem Petri eredeti rajzának másolata, és reakciósebességet nem modellez.
gépfoglalás, puffer, holtpont
üzenet, nyugta, közös erőforrás
párhuzamos feladatok és jóváhagyások
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.
A kommunikációs protokollokat, elosztott szoftvereket és gyártórendszereket Murata (1989) tárgyalja; a munkafolyamatok és a színezett hálók alkalmazásait az Aarhusi Egyetem foglalja össze: https://cs.au.dk/cpnets/introduction . A kémiai és biológiai felhasználás történeti háttere Petri–Reisig (2008). A felsorolt helyzetek saját oktatási példák, nem vállalati esettanulmányok.
több folyamat feltételei találkoznak
foglalás, versengés, várakozás
időzített vagy sztochasztikus kiterjesztés
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.
Egyszerű soros folyamat közlésére egy folyamatábra is elég lehet; a Petri-háló előnye különösen a párhuzamosság, a szinkronizáció és a megosztott erőforrások pontos kezelésénél jelentkezik. A színezett és időzített kiterjesztések kombinálhatók. Forrás: https://cs.au.dk/cpnets/introduction ; Murata (1989), bevezetés és IX. fejezet.
Feltételt, erőforrást vagy készletet jelölő csomópont. A körben lévő tokenszám jelentését a modell szerzője rögzíti.
Állapotváltozást leíró csomópont. A P/T-hálóban bemeneti tokenek fogyasztásával és kimeneti tokenek létrehozásával tüzel.
Egy helyen számon tartott egység. Jelenthet darabot, szabad erőforrást vagy teljesült feltételt; ezek a jelentések nem cserélhetők fel.
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.
A hely a gráf csomópontja, a token pedig a hely aktuális jelölésének része: a kettő nem ugyanaz. A helyet körrel, az átmenetet téglalappal, a tokent ponttal rajzoljuk. A token jelentését a modell szerzője rögzíti; a tüzelési szabály csak a számával dolgozik.
Helyet és átmenetet összekötő kapcsolat. A helyből az átmenetbe vezető él fogyasztást, a fordított irány tokenlétrehozást ír elő.
Az élhez rendelt pozitív egész szám: a tüzeléskor elfogyasztott vagy létrehozott tokenek mennyisége. Jelölés nélkül az él súlya egy.
A helyek tokenszámainak vektora rögzített helysorrendben. Az m₀ a kezdő jelölés.
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.
A hely–átmenet háló páros gráf: két hely vagy két átmenet között közvetlen él nem szerepel. A nem jelölt élsúlyt egynek vesszük. A jelölés nem egyszerű tokenszám, hanem helyenként megadott vektor; a helysorrendet ezért mindig rögzíteni kell. Ugyanaz a háló eltérő kezdő jelöléssel eltérő viselkedésű lehet.
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.
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é.
(1,0): szabad gép; (0,1): foglalt gép. A helysorrend ugyanaz.
Egy átmenet engedélyezett, ha minden bemeneti helyén legalább az adott bemeneti él súlyának megfelelő számú token van.
Egy engedélyezett átmenet atomi lépése: a Pre szerinti tokeneket elveszi, a Post szerinti tokeneket létrehozza. Az időzítetlen modellben ennek nincs időtartama.
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.
Formálisan t akkor engedélyezett m-ben, ha minden p helyre m(p) ≥ Pre(p,t). Tüzelése után m′(p) = m(p) − Pre(p,t) + Post(p,t). A változás egyetlen atomi modelllépés; a fizikai művelet időtartamát az időzítetlen modell nem írja le. Ebben a P/T-formalizmusban külön kimeneti kapacitáskorlát nincs: a véges férőhelyet később szabadhely-tokenekkel modellezzük.
Egy átmenet engedélyezett, ha minden bemeneti helyén legalább az adott bemeneti él súlyának megfelelő számú token van.
Van ≥ szükséges
1 ≥ 1; teljesül
0 < 1; hiányzik
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.
Tíz darab sem pótolja a hiányzó géptokent. Ha a gép felszabadul, mindkét bemeneti feltétel teljesül, és az indítás engedélyezetté válik.
A példában a Darab és a Szabad gép hely is egységnyi bemeneti súllyal kapcsolódik az Indításhoz. A jelölés sorrendje (Darab, Szabad gép), a kezdő helyzet (1,0). Az engedélyezettség feltétele (m(Darab) ≥ 1) ÉS (m(Szabad gép) ≥ 1). Az (1,0) és a (10,0) jelölésben az Indítás egyaránt tiltott: a tokenek különböző helyek között nem helyettesíthetők. Az (1,1) jelölésben engedélyezett. A helyzetet például a gép korábbi műveletének befejezése változtatja meg, amely visszaadja a szabad gépet jelölő tokent. Ez a dia az engedélyezettség eldöntését mutatja; a tényleges tokenfogyasztást és létrehozást a következő dia vezeti le.
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.
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.
A műhely ugyanazon az előadási oldalon nyílik meg. A helyek a places csoport csomópontjai; initial a kezdő tokenszám. Az @start hiperélben a + net.places.free [1] egy szabad tokent kér, a - net.places.busy [1] egy foglalt tokent hoz létre. Az arc value az incidenciához tartozó tokenszám; az előjel a bemeneti/kimeneti szerep. Szerkesztés után újra kell fordítani; Ctrl+Z a natív editor visszavonása.
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.
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.
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.
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?
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?
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.
Szabad kapacitást jelölő hely. A foglalás elveszi, a felszabadítás visszaadja a tokenjét.
Külön-külön engedélyezett átmenetek ugyanazért a korlátozott tokenkészletért versenyeznek. Egyikük tüzelése letilthatja a másikat.
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.
A token jelentése itt eltér a munkadarabot jelölő tokentől: egy szabad robotot jelöl. Egyetlen tokennél az egyik indítás letiltja a másikat. Ha két azonos robotot két token jelöl, mindkét művelet elindítható lehet. A közös bemeneti hely önmagában tehát még nem jelent tényleges konfliktust; a jelölés és az élsúlyok is számítanak.
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.
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.
Egymástól független átmenetek sorrendje szabadon választható lehet. Az időzítetlen háló ettől még nem mondja meg, fizikailag mikor történnek.
Egy átmenet több bemeneti feltételt egyszerre igényel. Egyetlen elkészült ág tokenje nem pótolja a másik ágét.
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.
A példaháló független ágain A befejezése nem tiltja le B befejezését, és a két lépés sorrendje felcserélhető. A háló ettől még nem állít egyidejű fizikai befejezést. Az egyesítő átmenet az A kész és B kész helyről is kér tokent: ez logikai ÉS-feltétel. Egyik ág több tokenje sem pótolja a másik ág hiányzó tokenjét.
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.
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.
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.
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.
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.
A capacity mező a futtatókörnyezet technikai felső korlátja, nem az ebben a tanpéldában modellezett puffer férőhelye. A fizikai férőhelyet a slots és parts hely közti tokenáthelyezés modellezi. Csak a kezdeti szabadhely-tokenek számát változtatjuk, a tüzelési szabályokat nem. A kezdeti invariánsérték így kettőről háromra változik.
itt legfeljebb kettő
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.
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?
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?
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.
Ez összetételi nézet: a cella két gépből, egy robotból és egy pufferből áll. A kapcsolatok nem végrehajtási sorrendet jelölnek. A részek önálló működése után az összekapcsolt rendszer viselkedését és a közös erőforrások foglalását külön vizsgáljuk.
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.
Pre(p,t) a p helyről a t átmenet tüzeléséhez szükséges és elfogyasztott tokenek száma.
Post(p,t) a t átmenet tüzelésekor a p helyen létrehozott tokenek száma.
C = Post − Pre: az átmenetek nettó tokenváltozása helyenként. A kurzusban a sorok helyek, az oszlopok átmenetek. Az önhurok feltétele a különbségből eltűnhet.
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.
A Pre(p,t) és Post(p,t) nemnegatív egész szám, a C(p,t) lehet negatív, nulla vagy pozitív. C nulla eleme nem feltétlenül jelenti azt, hogy a hely nem kapcsolódik az átmenethez: azonos súlyú önhuroknál a bemenet és kimenet kioltja egymást. Ezért az engedélyezettséget nem lehet kizárólag C-ből eldönteni.
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.
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.
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.
Olyan súlyozott tokenösszeg, amely minden tüzelésnél változatlan. Ha yᵀC = 0, akkor yᵀm = yᵀm₀ az elérhető jelöléseken.
Elérhető-e egy adott állapot az indulóból megengedett lépések sorozatával.
Csúcsai az elérhető jelölések, élei az egyetlen tüzeléssel megvalósítható lépések. Végtelen állapottér esetén nem sorolható fel teljesen.
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ő.
A gépnél a szabad és foglalt hely tokenösszege egy. A (1,1) jelölést ez kizárja. Egy általános hálóban azonban lehetnek olyan, az invariánsoknak megfelelő jelölések, amelyekhez nem vezet engedélyezett tüzelési sorozat. Az elérhetőségi gráf csúcsai jelölések, nem a Petri-háló helyei; az élei pedig teljes tüzelések, nem tokeneket szállító hálóélek.
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.
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.
Létezik véges k, amelyet egy hely tokenszáma egyetlen elérhető jelölésben sem lép túl. A háló korlátos, ha minden helye ilyen; a fizikai kapacitás betartását külön kell ellenőrizni.
Minden elérhető jelölésben minden helyen legfeljebb egy token van. Ez hálótulajdonság, nem funkcionális biztonsági tanúsítás.
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.
Egy háló k-korlátos, ha ugyanaz a k minden helyére érvényes. Véges helyhalmaznál a helyenkénti véges korlátokból közös korlát is választható. A fizikai puffer kapacitását ezzel össze kell vetni: a matematikailag 5-korlátos modell nem igazolja egy háromhelyes puffer túlcsordulás-mentességét. A safe angol elnevezés itt 1-korlátosságot jelent.
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.
Olyan jelölés, amelyben egyetlen átmenet sem engedélyezett. Folyamatos működésre szánt rendszerben ez elakadás; egy lezárt feladatnál lehet szándékos végállapot is.
Minden elérhető jelölésben van legalább egy engedélyezett átmenet. Ez önmagában nem tesz minden átmenetet élővé.
Minden átmenet minden elérhető állapotból újra tüzelhetővé tehető. Gyakorlatban: semmi nem hal ki véglegesen.
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.
A holtpontmentes hálóban egyetlen aktív ág is fenntarthatja a haladást, miközben egy másik átmenet örökre halott marad. Az élőség ezt kizárja, de nem kényszerít egy konkrét ütemezőt az igazságos választásra: lehetőség és tényleges végrehajtás különbözik. A modellbe felvett, szándékos végállapotot a működési követelménnyel együtt kell értékelni.
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.
Az élőség lehetőségi állítás: minden elérhető jelölésből létezik megfelelő folytatás. Nem követeli meg, hogy egy konkrét ütemező valóban mindegyik átmenetet sorra válassza. A kiéheztetés kizárásához további ütemezési feltétel kell.
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.
Általános P/T-hálón az m = m₀ + Cσ egyenlet nemnegatív egész megoldása csak szükséges feltétel. A tényleges elérhetőséghez engedélyezett lépések rendezett sorozata kell. A példa saját, háromhelyes ellenpélda; Pre és Post ismerete szükséges.
A háló egy futásában minden művelet egyszer végrehajtódott. Mit állíthatunk ebből biztosan?
A háló egy futásában minden művelet egyszer végrehajtódott. Mit állíthatunk ebből biztosan?
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.
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.
Saját oktatási modell, folyamatos feladatellátással. A lezáró átmenet a teljes átadást és a lefoglalt erőforrások felszabadítását egy logikai lépésbe vonja össze; a puffer fizikai ürítését is tartalmazza. Időtartamot, hibákat és megszakítást most nem modellezünk.
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.
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.
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.
| 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.
| Á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.
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.
Ez egy elegendő megelőzési szabály erre a kis modellre, nem általános minimális megoldás minden gyártócellára. A puszta időtúllépés-jelzés felismerheti az elakadást, de nem szünteti meg a körkörös várakozást.
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.
| 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.
Az eredeti hálónak négy, a javítottnak három elérhető jelölése van. Mindkettőben R + A = 1 és B + H = 1 invariáns. A korlátosság tehát az eredeti, holtpontos hálóra is igaz: önmagában nem bizonyít haladást.
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ó.
A takeA hiperél zárójeles incidencialistájába kerül: + net.places.B [1], - net.places.B [1]. A takeB listájába: + net.places.R [1], - net.places.R [1]. Mindkét önhurok megkövetel egy tokent és visszaadja ugyanoda; nulla a nettó változás, de a bemeneti feltétel megmarad. Az Indítás csak két szabad erőforrással példa összehasonlítási alap. Az általános holtpontmentességhez továbbra is az elérhető jelölések vizsgálata kell.
Az eredeti foglalási szabályok mellett a robot sebességét megduplázzuk. Megszűnik-e ezzel a holtpont lehetősége?
Az eredeti foglalási szabályok mellett a robot sebességét megduplázzuk. Megszűnik-e ezzel a holtpont lehetősége?
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.
helyek és tokenjelentések
induló állapot
engedélyezett lépések a holtpontig
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é.
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.
Á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.