Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema4 Petri
Tema4 Petri
21/12/2004
INTRODUCCION
Ejemplo: Carros que van y vienen sincronizados Al pulsar M ambos carros se desplazan a la derecha. El regreso lo hacen simultneamente cuando ambos carros se encuentren en el extremo derecho.
C 1 MAC
l1 A T1
r1 B r2 T2 D
M C
l2
Autmata:
2 B r2 3 D 5 6 A l2 r1 , r2 D 4 B l1 , l2 C l1 7 r1
21/12/2004
INTRODUCCION
Tres carros
1 MACE 2 B D
r1 , r
F
,r
3 D F
r2 , r
3 B
4 F
r1 , r
3 B
5 D
r1 , r
r3
F D
r2
B
r1
A C E
9 A C
l1 , l
E
,l
10 C E
l2 , l
3 A
11
l1 , l
E
3 A
12 C
l1 , l
13
l3
14
l2
15
l1
21/12/2004
INTRODUCCION
Problemas del modelado con autmatas de estados finitos de sistemas con evoluciones paralelas (sistemas concurrentes):
conduce a descripciones complejas (gran nmero de estados) no permite modificaciones locales del comportamiento del sistema poca flexibilidad (Ej.: uno de los carros vuelve sin sincronizarse)
21/12/2004
INTRODUCCION
Una red de Petri (RdP) es un grafo orientado con dos clases de nodos: lugares (circunferencias) y transiciones (barras). Los arcos unen un lugar con una transicin o viceversa. Un lugar puede contener un nmero positivo o nulo de marcas. Distribucin de marcas en los lugares, marcado estado de la RdP. Se asocian entradas y salidas a lugares y transiciones (p.e.: salida p lugar marcado; entrada transicin)
1
t1 p2 p3
t2
t3
p4
p5 t4
21/12/2004
INTRODUCCION
t1
t2
t3
21/12/2004
INTRODUCCION
r1 B
r2 D
2 carros
r1 B
r2 D
r3 F
3 carros
l1 A
l2 C
l1 A
l2 C
l3 E
21/12/2004
FORMALIZACION Y CLASIFICACION
RdP marcada: es un par {R, Mo}, donde R es una RdP y Mo es un marcado inicial.
21/12/2004
FORMALIZACION Y CLASIFICACION
Representacin grfica
Arco de pi a tj (pi,tj) 0 Arco de tk a pi (tk,pi) 0 Arcos etiquetados con un peso = (pi,tj) (tk,pi)
Representacin matricial
Matriz de incidencia previa: C- = [cij-] donde cij- = (pi,tj) Matriz de incidencia posterior: C+ = [cij+] donde cij+ = (tj,pi) Matriz de incidencia: C = C+ - Cp
1
p1 1 0 1 p2 1 0 1 C= p3 2 1 0 p4 0 1 2
21/12/2004 SED: Tema 4. Redes de Petri.
t1
p p2
t2 p4 t3
2
INTERPRETACION
Entradas (eventos discretos, condiciones lgicas externas), salidas (eventos discretos, salidas a nivel), cdigo asociado a las transiciones.
Acc. impulsionales asociadas a transiciones => disparo instantneo
abc
a b c evento
seal set(s) s
abc
---------- w -------
a b c
21/12/2004
EJEMPLOS DE MODELADO
MA LA
lA A
rA WA G WB
lB
B
rB MU U
MB
LB
Dos carros A y B transportan cierto material desde los puntos de carga LA y LB, respectivamente, hasta el punto de descarga U. Los diferentes movimientos son controlados mediante las seales lA, lB, rA, rB. Si A est en LA y el pulsador MA est oprimido, comienza un ciclo LA-U-LA:
espera eventual en WA hasta que la zona comn a los dos carros est libre, con el fin de evitar colisiones; espera obligatoria en U hasta MU (pulsador de fin de descarga).
El carro B tiene un funcionamiento similar pero, en caso de demanda simultnea de la va comn, B es prioritario. El recorrido WA-U o WB-U se establece por un cambio de agujas controlado por la accin G.
SED: Tema 4. Redes de Petri.
21/12/2004
EJEMPLOS DE MODELADO
Transiciones -> entradas de sensores Lugares -> seales de salida
1 MA 14 rA WA 4 W
B
2 M
B
rB 15 WB 3 5
MA LA
lA A
rA ,G
rB U
rA WA G WB
lB
B
rB MU U
WA
U G MU l A , G 10 11 8 9
MU l 13 lB L
B B
MB
LB
W 12 lA LA
21/12/2004
EJEMPLOS DE MODELADO
Ejemplo: Lectores-redactores Dos conjuntos de usuarios (lectores y redactores) tienen que coordinarse para acceder a unos datos comunes:
los lectores slo inspeccionan, y por lo tanto pueden acceder simultneamente a los datos los redactores actualizan los datos y su trabajo debe estar en exclusin mutua con el resto de usuarios
Cada usuario puede estar en uno de los siguientes estados: activo, espera y reposo.
MODELAR EL SISTEMA PARA 2 LECTORES Y 2 REDACTORES
21/12/2004
EJEMPLOS DE MODELADO
X1 RL 1 DL 1 EL 1 CL 1 AL 1 FL 1 RL 2 DL 2 EL 2 CL 2 AL 2 FL 2
X2 RR 1 DR 1 ER 1 CR 1 AR 1 FR 1 RR 2 DR 2 ER 2 CR 2 AR 2 FR 2
1 letra: R = reposo 2 letra: Li = i-simo lector E = espera Rj = j-simo redactor A = activo D = demanda de recurso C = comienzo operacin F = fin de operacin
21/12/2004 SED: Tema 4. Redes de Petri.
EJEMPLOS DE MODELADO
Ejemplo: Productor-consumidor Se desea disear un sistema de transmisin de datos con las siguientes caractersticas:
El sistema recibe datos (8 bits) de un puerto paralelo .Cada dato es procesado e introducido en un buffer con capacidad para 8 datos Los datos son sacados del buffer con poltica FIFO y enviados por lnea serie (SCI) mediante un sencillo protocolo con reenvo
21/12/2004
EJEMPLOS MODELADO
C5
ACK TC52
TC2 C2
TC1 C1
21/12/2004
ANALISIS
Propiedades de una RdP Vivacidad: Una transicin t es viva para un marcado inicial M0 dado existe una secuencia de disparos a partir de cualquier marcado M, sucesor de M0, que comprenda a t:
M M ( R, M 0 ) : M ] > M ' t
Una RdP es viva para M0 todas sus transiciones son vivas para M0
ausencia de bloqueos: el sistema o un subsistema no se bloquea (deja de funcionar)
Ciclicidad: Se dice que una RdP posee un comportamiento globalmente cclico para M0 si existe una secuencia de disparos que permite alcanzar el marcado inicial M0 a partir de cualquier marcado M sucesor de M0: M M ( R, M ) M ] > M
0 0
21/12/2004
ANALISIS
Limitacin: Un lugar p es k-limitado para M0 existe un nmero entero k tal que M(p) k para cualquier marcado M M(R,M0). k se denomina lmite del lugar. Una RdP es k-limitada para M0 todos sus lugares son klimitados para M0:
Ejemplo: un lugar representa el nmero de mensajes en un buffer, su lmite es el nmero mximo de mensajes que tiene que poder almacenar
p P M M ( R, M0 ), M ( p ) k
Exclusin mutua: Se dice que dos lugares de una RdP estn en exclusin mutua para M0 si no pueden estar marcados simultneamente en los marcados alcanzables desde M0
actividades excluyentes (Ejemplo: lectores-redactores)
21/12/2004
IMPLEMENTACION
Implementacin programada de una RdP: Es un programa o algoritmo que simula el disparo de transiciones de la RdP, respetando la reglas de evolucin del modelo terico. Disparo de una transicin:
Instantneo e indivisible No hay cdigo asociado a la transicin Ni instantneo ni indivisible Existe un cdigo asociado a la transicin => Varias fases en el disparo: Retirada de marcas de los lugares de entrada Ejecucin del cdigo asociado Depsito de marcas en los lugares de salida ESTADO RdP:= marcado + transiciones en disparo
21/12/2004
IMPLEMENTACION
Entradas
Eventos -> espera a su llegada para que evolucione el sistema Muestreo Interrupcin Entradas de nivel Lectura asncrona Las entradas se leen conforme se vayan necesitando en el tratamiento PB: aleatoriedades Lectura sncrona Se leen todas las entradas a la vez Memoria Imagen
21/12/2004
IMPLEMENTACION
Salidas
Impulsionales o acciones Asociadas al disparo de transiciones De nivel o mantenidas Asociadas a lugares marcados Generacin En el instante en que se calculan (asncrona) Todas al final del tratamiento (sncrona)
T1 s1,s2 T2 s1 T3 T3/desactivar(s1) T2/desactivar(s2) T1/activar(s1,s2)
21/12/2004
IMPLEMENTACION
Cdigo
Disparo de transiciones Disparo no instantneo Lugares Lugar marcado => cdigo en ejecucin Transicin descendiente: Fin de ejecucin
Comienzo CODIGO CODIGO ... ... ... Ejecucin CODIGO Fin CODIGO
21/12/2004
IMPLEMENTACION
Tipos de Implementaciones: INTERPRETADA: La estructura de la RdP y su marcado se codifican en estructuras de datos de las cuales uno o varios programas extraen la informacin para hacer evolucionar la RdP.
INTEPRETES (independientes de la RdP)
COMPILADA: Se generan uno o varios programas cuyos flujos de control repreducen el comportamiento de la RdP
21/12/2004
IMPLEMENTACION
t1 puede retrasar a t2 y t3
t1 100
t2
t3
21/12/2004
IMPLEMENTACION
CENTRALIZADA: El algoritmo que ejecuta la RdP se implementa como un nico proceso que acta sobre la totalidad de la red. DESCENTRALIZADA: El algoritmo que ejecuta la RdP se distribuye en varios procesos, cada uno de ellos encargado de hacer evolucionar una cierta parte de la red localmente. SINCRONA: La RdP es ejecutada en pasos ("steps"). Se disparan todas las transiciones concurrentemente disparables para un marcado M y no se considera ningn otro disparo hasta haber alcanzado el sucesor de M. ASINCRONA: Cuando el disparo de una transicin ha concluido se actualiza el marcado lo que puede posibilitar nuevos disparos sin espera alguna.
21/12/2004
VERIFICACION EXHAUSTIVA
typedef unsigned char MARCADO[NUMLUG+1] ; MARCADO M ; MARCADO Sig_M = {0,1,1,1,0, ...} ; ... void main (void) { Inicializacion () ; while (TRUE) { memcpy (&M, &Sig_M, sizeof(M)) ; Generacion_Salidas (M) ; Lectura_Entradas (&MA, &MB, ...) ; /* T1 */ if (M[1] >= 1) { if (MA) { Sig_M[1] -= 1 ; Sig_M[14] += 1 ; } } /* T2 */ ... /* T3 */ if ((M[4] >= 1) && (M[3] >= 1)) { if (~WB) { Sig_M[4] -= 1 ; Sig_M[3] -= 1 ; M[3] -= 1 ; /* conflicto? */ Sig_M[6] += 1 ; } } /* T4 */ ... } }
2 M
B
rB 15 WB 3 5
rA ,G U G MU
rB U
9 MU 11 l 13 lB L
B B
l A , G 10 WA 12 lA LA
21/12/2004
VERIFICACION EXHAUSTIVA
Problemas
En cada ciclo de tratamiento se verifican todas las transiciones Slo unas pocas estn sensibilizadas Mucho cdigo Cambio en la red => cambio en el cdigo
21/12/2004
VERIFICACION EXHAUSTIVA
#define NUMLUG 15 #define NUMTRANS 14 ... unsigned char M[NUMLUG+1] = {0,1,1,1,0, ...} ; /*Estructura de datos que codifica la RdP */ ... void main (void) { Inicializacion () ; while (TRUE) { Lectura_Entradas (&MA, &MB, ...); for (T=1;T <= NUMTRANS; T++) { if (Sensibilizada(T)) { if (Condicion(T)) { Actualiza_Marcado(M,T) Accion(T) ;} } } Generacion_Salidas(M); } }
21/12/2004
VERIFICACION EXHAUSTIVA
Caractersticas:
Interpretada Sncrona Secuencial El ciclo de tratamiento es independiente de: la estructura de datos que codifique la red la red concreta que se implemente => cdigo genrico La ocupacin en memoria y prestaciones dependern en gran medida de la estructura de datos utilizada para codificar la RdP
21/12/2004
VERIFICACION EXHAUSTIVA
Matriz de incidencia
p0 t0
1
char C [][] = {{-1, 0, 1}, { 1, 0,-1}, { 2,-1, 0}, { 0, 1,-2}} ; BOOLEAN Sensibilizada (unsigned char T) { BOOLEAN Sensib = TRUE ; int P ;
p 2
3
p 1
t1 p 3
2
for (P=0; P<NUMLUG; P++) { if (C[P][T] < 0) { if (M[P] < - C[P][T]) Sensib = FALSE ; } } void Actualiza_Marcado (MARCADO M, unsigned char T) { return Sensib ; } for (P=0; P<NUMLUG; P++) { M[P] += C[P][T] ; } SED: Tema 4. Redes de Petri. }
t2
21/12/2004
VERIFICACION EXHAUSTIVA
Manejo de listas Memoria dinmica: basada en punteros rutinas de librera de manejo de memoria dinmica (malloc,free) difcil de poner a punto Memria esttica: basada en vectores mayores prestaciones ms compacto
21/12/2004
VERIFICACION EXHAUSTIVA
typedef struct { unsigned char Lugar ; unsigned char Peso ; } ARCO ; typedef struct { CONST ARCO *Lugares_Entrada ; CONST ARCO *Lugares_Salida ; void (*Accion) (void); char (*Condicion)(char entrada[]); } T_TRAN ;
void Accion1 (void); char Condiccion1(char entrada[]); ... CONST CONST CONST CONST CONST CONST ARCO ARCO ARCO ARCO ARCO ARCO T1_In[]={{1,1},{0,0}} ; T1_Out[]={{2,1},{3,2},{0,0}} ; T2_In[]={{3,1},{0,0}}; T2_Out[]={{4,1},{0,0}} ; T3_In[]={{2,1},{4,2},{0,0}}; T3_Out[]={{1,1},{0,0}} ;
p1 t
1
/* 0 1 2 3 4 */ static unsigned char M[NLUGARES+1] ={0,1,0,0,0}; static unsigned char Sig_M[NLUGARES+1]={0,1,0,0,0}; CONST T_TRAN TRAN[NUMTRANS+1] = {{T1_In, T1_Out, Accion1, Condiccion1} {T1_In, T1_Out, Accion1, Condiccion1} {...} ...} ;
p p
2
p4 t
2
3
21/12/2004
VERIFICACION EXHAUSTIVA
El algoritmo de interpretacin
void main (void) { Inicializacion () ; while (TRUE) { memcpy (M, Sig_M, sizeof(M)) ; Generacion_Salidas (M) ; (*Lectura_Entradas)(&entrada) ; for(t=1; t<= NUMTRANS; t++){ if(Sensibilizada(Trans[t],M) && (*Trans[t].Condicion)(entrada)){ Retirar_Marcas(Trans[t],Sig_M) ; /* Retirar_Marcas(Trans[t],M) ; Si existen conflictos efectivos */ (*Trans[t].Accion)(); Poner_Marcas(Trans[t],Sig_M); } }/* fin if disparo de una transicion*/ }/* fin for que recorre las transiciones }/*fin bucle interpretacin de la red } 21/12/2004 SED: Tema 4. Redes de Petri.
VERIFICACION EXHAUSTIVA
Manejo estructura
char Sensibilizada(T_TRAN Tran, const unsigned char M[]){ int p; char Sensib = 1; p=0; while((Tran.Lugares_Entrada[p].Lugar !=0) && Sensib==1){ if (M[Tran.Lugares_Entrada[p].Lugar] < Tran.Lugares_Entrada[p].Peso) Sensib = 0; void Retirar_Marcas(T_TRAN Tran, unsigned char M[]) { p++; int p; } return Sensib ; p=0; } while((Tran.Lugares_Entrada[p].Lugar !=0)){ M[Tran.Lugares_Entrada[p].Lugar] -= Tran.Lugares_Entrada[p].Peso; p++; } } void Poner_Marcas(T_TRAN Tran, unsigned char M[]) { ... M[Tran.Lugares_Salida[p].Lugar] += Tran.Lugares_Salida[p].Peso; ... }
21/12/2004
VERIFICACION EXHAUSTIVA
void Accion1 (void); char Condiccion1(char entrada[]); ... CONST CONST CONST CONST CONST CONST char char char char char char T1_In[]={1,0} ; T1_Out[]={2,3,0} ; T2_In[]={3,0}; T2_Out[]={4,0} ; T3_In[]={2,4,0}; T3_Out[]={1,0} ;
typedef struct { CONST char *Lugares_Entrada ; CONST char *Lugares_Salida ; void (*Accion) (void); char (*Condicion)(char entrada[]); } T_TRAN ;
p1 t1 p3 p2 t2 p4 t3
/* 0 1 2 3 4 */ static unsigned char M[NLUGARES+1] ={0,1,0,0,0}; static unsigned char Sig_M[NLUGARES+1]={0,1,0,0,0}; CONST T_TRAN TRAN[NUMTRANS+1] = {{T1_In, T1_Out, Accion1, Condiccion1} {T1_In, T1_Out, Accion1, Condiccion1} {...} ...} ; 21/12/2004 SED: Tema 4. Redes de Petri.
VERIFICACION EXHAUSTIVA
Manejo estructura
char Sensibilizada(T_TRAN Tran, const unsigned char M[]){ int p; char Sensib = 1; p=0; while((Tran.Lugares_Entrada[p].Lugar !=0) && Sensib==1){ if (M[Tran.Lugares_Entrada[p].Lugar] < 1) Sensib = 0; void Retirar_Marcas(T_TRAN Tran, unsigned char M[]) { p++; int p; } return Sensib ; p=0; }
while((Tran.Lugares_Entrada[p].Lugar !=0)){ M[Tran.Lugares_Entrada[p].Lugar] -- ; p++; } } void Poner_Marcas(T_TRAN Tran, unsigned char M[]) { ... M[Tran.Lugares_Salida[p].Lugar] ++ ; ... }
21/12/2004
VERIFICACION EXHAUSTIVA
p
1
t1 p
typedef unsigned char BOOLEAN ; typedef unsigned char MARCADO ; typedef unsigned char COLUMNA ; MARCADO M_neg ; MARCADO Sig_M_neg = 0x8F ; unsigned char T ;
t3
/* 01111_111 */
p5 t
4
COLUMNA F[4] = { 0xE0, 0x50, 0x28, 0x98} ; /* 11100, 01010, 00101, 10011 */ COLUMNA E[4] = { 0x80, 0x40, 0x20, 0x80} ; /* 10000, 01000, 00100, 00011 */ BOOLEAN Sensibilizada (unsigned char T, MARCADO M_negado) { return !(E[T-1] & M_negado) ; } void Actualiza_Marcado (unsigned char T, MARCADO *M_negado) { *M_negado ^= F[T-1] ; }
21/12/2004
Cada transicin es representada por uno de sus lugares de entrada Slo aquellas transiciones cuyo lugar representante est marcado se consideran candidatas al disparo Un lugar de entrada a una transicin y que no sea su representante se denomina lugar de sincronizacin Fase previa: obtencin del conjunto de lugares representantes y de sincronizacin SED: Tema 4. Redes de Petri. 21/12/2004
p1
p2
t1 p3 t4
t2 p4 t5
t3 p5 t6
l1 A
l2 C
M
21/12/2004 SED: Tema 4. Redes de Petri.
unsigned char M[NLUGARES+1]={0,1,0,0,1,1}; unsigned char Sig_M[NLUGARES+1]={0,1,0,0,1,1}; 21/12/2004 SED: Tema 4. Redes de Petri.
Un ejemplo
p4
p1
p5
t1
CONST ARCO T1_Lugares_Sinc[] ={4,0}; CONST ARCO T1_Lugares_Salida[]={2,0}; CONST ARCO T2_Lugares_Sinc[] ={5,0}; CONST ARCO T2_Lugares_Salida[]={3,0}; CONST T_TRAN LR1[3] = {{1, T1_Lugares_Sinc, T1_Lugares_Salida, Accion1, Condiccion1}, {2, T2_Lugares_Sinc, T2_Lugares_Salida, Accion2, Condiccion2}, {0,...}}; ... CONST T_TRAN LR2[2] = ... ; ... CONST T_TRAN LR3[2] = ... ; CONST T_REPRESENTANTE Lug[NREPRESENTANTES+1] = {Null, LR1, LR2, LR3} ; 21/12/2004 SED: Tema 4. Redes de Petri.
t2 p2 p3
t3
t4
El intrprete
void Interpretar_RdP(const T_REPRESENTANTE Lug[], unsigned char M[],unsigned char Sig_M[], int nLugares, int nRepresentantes, void (*Leer_Entrada)(char entrada[])) { T_TRAN T ;... unsigned char p ; unsigned char i ; while(1){ memcpy (M, Sig_M, nLugares+1) ; (*Leer_Entrada)(entrada); for(p=1; p<=nRepresentantes; p++){ if (M[p] != 0) { i = 0 ; T = Lug[p][i] ; while (T.Trans != 0) { if (Sensibilizada(T,M)&&(*T.Condiccion)(entrada)){ Retirar_Marcas(T,Sig_M) ; Sig_M[p] -- ; Retirar_Marcas(T,M) ; M[p] -- ; (*T.Accion)(); Poner_Marcas(T,Sig_M); } i ++ ; T = Lug[p][i] ; } } } } }
21/12/2004
Optimizaciones al mtodo
Redes de Petri binarias Marcado variables booleanas Aumento eficiencia Disminucin ocupacin en memoria Particin de los lugares en Representantes y de Sincronizacin Representacin por separado No duplicidad Lista de lugares representantes marcados Se evita recorrer el vector de marcado (pocos lugares marcados)
21/12/2004
p4
p1
p5
t1 p2
t2 p3
t3
t4
1 (P_Tratamiento)