Sunteți pe pagina 1din 15

3.

Medii software pentru simularea SED implementate cu rețele


Petri. Studiu de caz

Obiectivele lucrării

- Familiarizarea cu maniera de lucru specifică mediilor software de simulare a


sistemelor cu evenimente discrete implementate cu rețele Petri;
- Analiza comparativă a performantelor și evidențierea criteriilor de alegere a
mediilor software de simulare

Breviar teoretic

1. Mediul de simulare Visual Object Net++

Visual Object Net++ este un instrument software pentru construirea şi simularea


rapidă a reţelelor Petri; are un design simplu, simularea decurge rapid și documentația
rețelelor Petri este simplă. Pe lângă elementele noi continue, întregul concept al rețelelor Petri
tradiționale este valabil.
Visual Object Net ++ a fost conceput avand drept obiectiv principal demonstrarea
posibilitatii modelarii proceselor și sistemelor cu ajutor unor limbaje descriptive.
Acest mediu de simulare a fost dezvoltat de Dr. Reinei Drath și echipa sa de la
Departamentul de Automatică al Universității de Tehnologie Ilmenau, Germania, evoluând
ulterior în versiuni diferite, printre care de evaluare și producție în scopuri academice, asa
cum este versiunea prezentată în continuare.
Visual Object Net ++ are capacitatea de a realiza atât simularea rețelelor Petri
netemporizate, cât și a celor temporizate. Versiunea de evaluare a programului poate susține o
limită maximă de până la 500 de elemente componente ale unei rețele Petri implementate în
cadrul acesteia [2].
Interfața de utilizare conține mai multe ferestre: fereastra de editare în care se
construiește rețeaua Petri, fereastra de proprietăți, fereastra de poziții, fereastra de tranziții și
fereastra de arce (figura 3.1).

20
Fig.3.1. Interfața grafică a mediului de simulare Visual Object Net

Dacă este selectată o poziție, fereastra de proprietăți conține informații precum nume,
variabilă, tip (continuu sau discret), jeton inițial, dimensiune.
Dacă este selectată o tranziție atunci fereastra specifică: nume, întârziere, tip (continuu
sau discret), culoare, dimensiune, prioritate și informație rezervată [22].
Visual Object Net++, versiunea de evaluare a programului, impune o restricție în ceea
ce privește elementele componente; acesta are o limită maximă de 500 de elemente
componente ale unei rețele Petri.

2. Mediul de simulare PIPE

PIPE (Platform-Independent Petri Net Editor) este un program software open-source


folosit pentru crearea și analizarea rețelelor Petri, independent de platforma pe care este rulat,
fiind implementat în limbajul Java.
Crearea și animarea unei rețele Petri
În figura 3.2 este ilustrată interfața programului PIPE. Astfel, în zona centrala este
localizat spațiul de lucru în care poate fi desenată rețeaua Petri, iar în zona superioara bara de
taskuri care conține butoane pentru crearea și modificarea rețelei Petri.
Aceleași funcționalități de pe bara de taskuri se regăsesc și în meniul de tip “drop-
down”. Modulele de analiză ale rețelei Petri sunt localizate în zona din stânga spatilui de
lucru.

21
Fig. 3.2. Interfața programului PIPE

Pentru a crea o nouă rețea Petri există următoarele modalități: dând click pe butonul

„Create a new Petri net” ( ) din bara de taskuri, prin apăsarea combinației de taste Ctrl+N
sau prin selectarea opțiunii New din meniul File. Noua rețea Petri va fi încărcată în spațiul de
lucru și va avea un nume unic dat în mod implicit (pentru a-i schimba numele aceasta va
trebui salvată). Atunci când în program sunt deschise mai multe rețele Petri, ele vor apărea în
bara de tab-uri de deasupra spațiului de lucru, selectarea unui tab echivalând cu selectarea
uneia dintre rețelele Petri deschise.
Deschiderea unei rețele Petri salvată anterior se realizează prin apăsarea butonului
“Open” ( ) din bara de taskuri sau prin apăsarea combinației de taste Ctrl+O. Programul
PIPE salvează rețelele Petri create în fișiere în format XML prin alegerea opțiunii Save din

meniul File sau dând click pe butonul “Save” ( ) din bara de taskuri. Bara de taskuri

conține și butoane pentru opțiunea Save as ( ) și pentru închiderea tab-ului curent ( ).


Editarea unei rețele Petri

Pentru a adăuga o poziție va trebui să se selecteze butonul “Add a place” ( ) din


bara de taskuri și să se dea click în spațiul de lucru, acolo unde se dorește adăugarea. Odată
plasată în spațiul de lucru, noua poziție va avea în mod automat un nume. Pentru a edita
atributele poziției va trebui să se dea click dreapta pe respectiva poziție și să se selecteze
opțiunea “Edit Place”. Pe ecran se va deschide o fereastră în care pot fi efectuate modificările
necesare (figura 3.3).

22
Pentru a adăuga sau pentru a elimina un jeton dintr-o poziție va trebui să se selecteze

butonul “Add a token” ( ), respectiv “Delete a token” ( ) din bara de taskuri și să se dea
click pe poziția în care se dorește adăugarea, respectiv ștergerea jetonului..

Fig.3.3. Editarea atributelor unei poziții

Programul PIPE permite folosirea jetoanelor colorate. Pentru a putea alege un anumit

tip de jeton va trebui ca mai întâi să se dea click pe butonul “Specify tokens” ( ) din bara de
taskuri și să se activeze respectivul tip, din fereastra care va apărea pe ecran (figura.3.4a).
Pentru a selecta ce tip de jeton se introduce/se șterge într-o/dintr-o poziție, va trebui să se dea
click pe meniul de tip “drop-down” plasat în bara de taskuri lângă butonul “Delete a token”
(figura 3.4b).

a) b)
Fig.3.4. Alegerea tipului de jeton

Similar, poate fi adăugată o nouă tranziție, selectând din bara de taskuri fie

dreptunghiul negru ( ), acesta reprezentând o tranziție imediată, fie dreptunghiul gol ( ),


care reprezintă o tranziție temporizată. Apoi tranziția poate fi creată oriunde printr-un simplu
click pe spațiul de lucru. Aceasta primește în mod automat un nume, la fel ca atunci când este
adăugata o poziție.
Dacă se dă click dreapta pe o tranziție și se selectează opțiunea “Edit Transition”,
atunci se vor putea edita atributele respectivei tranziții (figura 3.5), cum ar fi, de exemplu,
tipul tranziției: temporizată sau imediată.

23
Fig.3.5. Editarea unei tranziții

Pentru a adăuga un arc se procedează în felul următor: se selectează din bara de

taskuri arcul normal (săgeata cu vârful ascuțit - ), sau arcul inhibitor (săgeata cu vârful

rotund - ) si apoi se dă click pe componentele care trebuie sa fie unite prin arcul respectiv.
Cu ajutorul arcului normal se poate conecta fie o poziție de o tranziție, fie o tranziție
de o poziție. Cu autorul arcului inhibitor se poate doar conecta o poziție de o tranziție, iar
aceasta se va executa doar în cazul în care poziția nu conține nici un jeton.
Când se adaugă un arc și se dă click într-un spațiu gol, automat se vor adăuga puncte
de-a lungul traseului arcului, iar prin apăsarea butonului Shift se vor crea puncte de curbură
ale arcului. Un exemplu de desenare un arc este prezentat în figura 3.6a. Când se apasă tasta
ESC în timpul creării arcului, acesta va fi anulat. Ponderea unui arc poate fi un număr static
sau o funcție. Se poate edita ponderea arcelor dând click dreapta pe arc și selectând opțiunea
“Edit weight”; pe ecran se deschide o fereastră de dialog cu ponderea respectiva (figura 3.6b).

a) b)
Fig. 3.6. Editarea ponderilor

24
Modul animație
Pentru a putea executa tranzițiile dintr-o rețea Petri se comuta în modul animație -

click pe butonul “Toggle Animation Mode” ( ) din bara de taskuri. Pentru a reveni din
modul animație trebuie să se dea din nou click pe butonul “Toggle Animation Mode”.
Tranzițiile active sunt evidențiate cu roșu (figura 3.7); există trei moduri de executie:
 click pe tranziția care se dorește a fi executată;

 click pe butonul “Randomly fire a transition” ( ) din bara de taskuri; se va alege


aleatoriu o tranziție în funcție de prioritatea și tipul tranziției;

 click pe butonul “Randomly fire a number of transitions” ( ); vor apărea succesiv


două ferestre de dialog cu numărul de tranziții de executat și respectiv timpul dintre
execuții, urmând ca mai apoi programul să execute animația propriu-zisă.

Fig.3.7. Exemplu de tranziție executabila

Modulele de analiză ale mediului de simulare PIPE

Mediul de simulare PIPE oferă diferite module de analiză a rețelelor Petri. Acestea se
găsesc în zona din stânga a ecranului.
Caracteristicile principalelor module de analiză ale programului PIPE vor fi prezentate
in sectiunea de aplicații.

Aplicații

1. Analiza rețelelor Petri folosind modulele specifice PIPE

Se consideră rețeaua Petri simplă, care conține 3 poziții și 3 tranziții (figura 3.8).

Fig. 3.8. Rețeaua Petri analizată

25
Rezultatele analizei retelei Petri folosind modulul Classification sunt prezentate in
figura 3.9; pe baza conexiunii dintre poziții și tranziții, acest modul clasifică rețeaua Petri în
următoarele categorii: State Machine, Marked Graph, Free Choice Net, Extended Free
Choice Net, Simple Net și Extended Simple Net (figura 3.9).

Fig.3.9. Rezultatele modulului de analiză Classification

Modulul Comparison realizează o comparație între două rețele Petri, pe baza fișierelor
lor XML. În funcție de opțiunile de comparare selectate initial, vor fi indicate componentele
identice și componentele diferite.
În figura 3.10 a fost realizată o comparație între rețeaua Petri din figura 3.7 și rețeaua
Petri din figura 3.8. Opțiunile de comparare au fost numărul de jetoane ale pozițiilor,
capacitatea maximă a pozițiilor, numele tranzițiilor și prioritatea tranzițiilor.

Fig. 3.10. Rezultatele comparării a două rețele Petri

Reachability graph oferă o reprezentare vizuală a tuturor secvențelor posibile de


execuție a tranzițiilor unei rețele Petri (figura 3.11).

26
Fig. 3.11. Rezultatele modulului Reachability graph

State space analysis (figura 3.12) oferă informații referitoare la rețeaua Petri:
conectivitatea (bounded state), existența interblocărilor (deadlock state) și siguranța (safe
state), care ajută la determinarea proprietăților calitative ale rețelei Petri. În cazul existenței
interblocărilor, modulul va afișa cea mai scurtă cale care duce la această situație.

Fig. 3.12. Rezultatele modulului State Space Analysis

2. Proiectare și simulare sistem flexibil de fabricație

Sistemul de fabricație considerat (SFF) dispune de următoarele resurse (figura 3.13):


- 3 mașini cu comandă numerică M1, M2, M3;
- 2 roboți R1, R2;
- 2 depozite interoperaționale D1, D2, de capacități 2, respectiv 4.
La intrări se prezintă două tipuri de piese brute, PB1 și PB2.
Fluxul tehnologic de prelucrare PB1 constă în următoarea succesiune de operații care
produce piese finite PF1 livrate la ieșirea 1:
1. Piesa fixată pe o paletă este încărcată automat pe M1;
2. Piesa este prelucrată pe M1;

27
3. Piesa este descărcată de pe M1, cu ajutorul lui R1, în D1;
4. Piesa așteaptă în D1;
5. Piesa este luată din D1 și încărcată automat pe M2;
6. Piesa este prelucrată pe M2;
7. Piesa este descărcată de pe M2 cu ajutorul lui R2 și transportată la ieșire.
La ieșirea 1, PF1 este desprinsă de pe paletă, iar paleta goală este trimisă la intrarea 1.
Fluxul tehnologic de prelucrare a pieselor PB2 constă în următoarea succesiune de
operații, care produce piese finite PF2, livrate la ieșirea 2:
1. Piesa fixată pe o paletă este încărcată automat pe M1;
2. Piesa este prelucrată pe M1;
3. Piesa este descărcată de pe M1 cu ajutorul lui R1 în depozitul D2;
4. Piesa așteaptă în D2;
5. Piesa este luată din D2 și încărcată automat pe M3;
6. Piesa este încărcată pe M3;
7. Piesa este descărcată de pe M3 cu ajutorul lui R2 și transportată la ieșire.
La ieșirea 2, PF2 este desprinsă de pe paletă, iar paleta goală este trimisă la intrarea 2.

Intrare 1 Intrare 2

Fixare pe Fixare pe
Mașina 1 palete
palete M1

Depozit1 Depozit2
D1 D2
Palete goale Palete goale
Robot 1

Mașina 2 Mașina 3
M2 M3

Robot 2

Desprindere Iesire 2 Desprindere


Iesire 1
de pe palete de pe palete

Fig. 3.13. Reprezentarea schematică a SFF

Se construieste structura de conducere pentru sistemul de fabricaţie flexibil, aplicând


sinteza hibridă, cu implementare in mediile de simulare Visual Object Net++ si PIPE.

28
Etapa 1 – Sinteza descendentă

În prima etapă de sinteză (descendentă), se rafinează operaţiile.


Se porneşte de la modelul global al succesiunii operaţiilor, prezentat în figura 3.14,
care nu include toate detaliile. Poziţiile p1 şi p2, care modelează disponibilitatea paletelor,
reprezintă resursele generale. Pentru un marcajul iniţial al poziţiilor p1 şi p2, reţeaua din figura
3.14 este viabilă, mărginită şi reversibilă.

Fig. 3.14. Modelul global al succesiunii operaţiilor, considerat punct de plecare în rafinarea poziţiilor

Se rafinează poziţiile p1a, p1c, p2a, p2c utilizând blocuri P de tipul modulelor standard
prezentate în figura 3.15, astfel:
 Poziţia p1a este înlocuită prin blocul P de operaţii paralele din figura 3.15 a)
 Poziţia p2a este înlocuită prin blocul P de operaţii secvenţiale din figura 3.15 b)
 Poziţia p1c este înlocuită prin blocul P de operaţii secvenţiale din figura 3.15 c)
 Poziţia p2c este înlocuită prin blocul P de operaţii secvenţiale din figura 3.15 d).

Fig. 3.15. Blocurile P utilizate în rafinarea poziţiilor reţelei Petri din figura 3.14
a) Rafinarea lui p1a; b) Rafinarea lui p2a; c) Rafinarea lui p1c; d) Rafinarea lui p2c

29
În urma acestor rafinări rezultă modelul complet al succesiunii operaţiilor reprezentat
prin reţeaua Petri din figura 3.16.
Poziţiile p1b şi p2b din figura 3.14, care modelează aşteptarea în depozitele D1 şi D2,
nu necesită nici o rafinare, ele fiind redenumite, în figura 3.16, drept p13 şi respectiv p23,
pentru a utiliza o notaţie uniformă.

Fig. 3.16. Modelul complet al succesiunii operaţiilor, rezultat în urma etapei de sinteză descendentă,
prin rafinarea poziţiilor reţelei din figura 3.2 cu ajutorul blocurilor P din figura 3.15

Etapa 2 – Sinteza ascendentă

A doua etapă (sinteza ascendentă) permite ataşarea poziţiilor care modelează resursele.
Pasul 1. Se ataşează resursele specifice nepartajate:
 Pentru fluxul PB1 → PF1: M2 (modelată prin p14r);
 Pentru fluxul PB2 → PF2: M3 (modelată prin p24r).
Pasul 2. Se ataşează resursele de stocare.
Subpasul 2.1. Se ataşează resursele de stocare nepartajate D1 (modelată prin p13r) şi
D2 (modelată prin p23r), rezultând reţeaua Petri din figura 3.17, care este viabilă,
mărginită şi reversibilă.
Pasul 3. Se ataşează resursele specifice partajate.
Subpasul 3.1. Se ataşează resursele specifice partajate paralel, în maniera următoare:
 Maşina M1, modelată prin p1, împreună cu perechile de tranziţii {(t11, t13), (t21, t23)}
formează o excludere mutuală paralelă;
 Robotul R1, modelat prin p2, împreună cu perechile de tranziţii {(t12, t13), (t22, t23)}
formează o excludere mutuală paralelă;

30
 Robotul R2, modelat prin p3, împreună cu perechile de tranziţii {(t15, t16), (t25, t26)}
formează o excludere mutuală paralelă. Rezulta reteaua reprezentată în figura 3.18.

Fig. 3.17. Modelul rezultat după Paşii 1 şi 2 ai etapei de sinteză ascendentă (ataşarea resurselor
nepartajate M2, M3 şi de stocare D1, D2)

Fig. 3.18. Modelul rezultat după Subpasul 3.1 al etapei de sinteză ascendentă (ataşarea resurselor
specifice partajate paralel, M1, R1 şi R2)

Folosind reţeaua Petri rezultată, se construieşte setul de reguli al controlerului secvenţial:


 Pentru t11:
IF (Paletă 1 este disponibilă and M1 este disponibilă) THEN (alocă Paletă 1 and alocă
M1 and începe Prelucrare pe M1)

31
 Pentru t12:
IF (Prelucrare pe M1 este completă and R1 este disponibil) THEN (alocă R1 and începe
Descărcare de pe M1)
 Pentru t13:
IF (Descărcare de pe M1 este completă and Spaţiu în D1 este disponibil) THEN
(eliberează M1 and eliberează R1 and alocă Spaţiu în D1 and începe Stocare în D1)
 Pentru t14:
IF (M2 este disponibilă) THEN (eliberează Spaţiu în D1 and alocă M2 and începe
Prelucrare pe M2)
 Pentru t15:
IF (Prelucrare pe M2 este completă and R2 este disponibil) THEN (alocă R2 and începe
Descărcare de pe M2 şi eliberare paletă)
 Pentru t16:
IF (Descărcare de pe M2 şi eliberare paletă este completă) THEN (eliberează M2 and
eliberează R2 and eliberează Paletă 1)
 Pentru t21:
IF (Paletă 2 este disponibilă and M1 este disponibilă) THEN (alocă Paletă 2 and alocă
M1 and începe Prelucrare pe M1)
 Pentru t22:
IF (Prelucrare pe M1 este completă and R1 este disponibil) THEN (alocă R1 and începe
Descărcare de pe M1)
 Pentru t23:
IF (Descărcare de pe M1 este completă and Spaţiu în D2 este disponibil) THEN
(eliberează M1 and eliberează R1 and alocă Spaţiu în D2 and începe Stocare în D2)
 Pentru t24:
IF (M3 este disponibilă) THEN (eliberează Spaţiu în D2 and alocă M3 and începe
Prelucrare pe M3)
 Pentru t25:
IF (Prelucrare pe M3 este completă and R2 este disponibil) THEN (alocă R2 and începe
Descărcare de pe M3 şi eliberare paletă)
 Pentru t26:
IF (Descărcare de pe M3 şi eliberare paletă este completă) THEN (eliberează M3 and
eliberează R2 and eliberează Paletă 2)

32
Fig. 3.19. Implementarea SFF în PIPE

33
Probleme propuse

1. Pe baza analizei reţelei Petri obţinute, comentaţi situaţiile contextuale care pot
genera blocaje, experimentând diverse scenarii.
2. Modificaţi descrierea funcţionării SFF considerând timpi caracteristici pentru:
- operaţiile de prelucrare efectuate pe cele trei maşini M1, M2 si M3;
- operaţiile de transport a pieselor de către roboţii R1,R2 intre depozitele
interoperaţionale D1, D2 și masinile de lucru M1, M2, M3;
- posibile defectări ale maşinilor, roboţilor sau benzilor transportoare;
Construiţi reţelele Petri temporizate aferente fiecarui scenariu și refaceţi simularea in
mediile Visual Object Net++ si PIPE.

34

S-ar putea să vă placă și