Social Icons

twitterfacebookgoogle plusemail

martes, 23 de octubre de 2012

Redes Petri: Elevador

El sistema que modele fue el de un elevador, en donde lo separé en dos componentes: Puerta y Elevador, en donde Puerta tiene como estados Abierto y Cerrado en el cual como el nombre lo dice en el estado Abierto abre la puerta del elevador y Cerrado cierra la puerta de la misma, como transiciones tenemos una comparación de unas variables boleanos donde verifica si el elevador le manda la señal de ascender o descender, en donde sí recibe un valor verdadero este mantiene cerrada la puerta. En Elevador tenemos 4 estados Inicio, Subir, Bajar y Detener, donde Inicio es cuando el elevador esta por usarse y nos envía la variable Piso según el piso elegido a una transición Piso > Actual ó Piso < Actual, el cual la primera irá hacía Subir y la segunda hacía Bajar todo esto hasta que Piso sea igual al Actual para entrar a el estado Detener.

Redes Petri:



Código:

from snakes.nets import *
from snakes.data import *
import snakes.plugins
snakes.plugins.load('gv','snakes.nets','nets')
from nets import *
n1 = PetriNet('Elevador')
#Places(Estados)
n1.add_place(Place("Inicio",[1]))
n1.add_place(Place("Subir",[2]))
n1.add_place(Place("Bajar",[2]))
n1.add_place(Place("Detener",[3]))
#Transitions of the Game
n1.add_transition(Transition("t1",Expression('Piso>Actual')))
n1.add_transition(Transition("t2", Expression('Piso<Actual')))
n1.add_transition(Transition("t3", Expression('Piso==Actual')))
#Gambits of Van
n1.add_input("Inicio", "t1", Variable("Piso"))
#n1.add_input("Detener", "t3", Variable("Piso"))
n1.add_output("Subir", "t1", Expression("Piso>Actual"))
n1.add_input("Subir", "t1", Variable("Piso"))
n1.add_input("Subir", "t3", Variable("Piso"))
#n1.add_input("Detener", "t3", Variable("Piso"))
n1.add_input("Inicio", "t2", Variable("Piso"))
n1.add_output("Bajar", "t2", Expression("Piso<Actual"))
n1.add_input("Bajar", "t2", Variable("Piso"))
n1.add_input("Bajar", "t3", Variable("Piso"))
n1.add_input("Inicio", "t3", Variable("Piso"))
n1.add_output("Inicio", "t3", Variable("Piso"))
n1.add_output("Detener", "t3", Variable("Piso"))
n1.draw("saul_net.png")
view raw elevador.py hosted with ❤ by GitHub


from snakes.nets import *
from snakes.data import *
import snakes.plugins
snakes.plugins.load('gv','snakes.nets','nets')
from nets import *
n1 = PetriNet('Puerta')
#Places(Estados)
n1.add_place(Place("Abierto",[1]))
n1.add_place(Place("Cerrado",[2]))
n1.add_transition(Transition("t1",Expression('Asciende == true or Desciende == true')))
n1.add_transition(Transition("t2", Expression('Asciende == false or Desciende == false')))
#Gambits of Van
n1.add_input("Abierto", "t1", Variable("Asciende__y__Desciende"))
n1.add_input("Cerrado", "t2", Variable("Asciende__y__Desciende"))
n1.add_output("Cerrado", "t1", Expression('Asciende == true or Desciende == true'))
n1.add_input("Abierto", "t2", Variable("Asciende__y__Desciende"))
n1.draw("saul_puerta.png")
view raw puerta.py hosted with ❤ by GitHub

3 comentarios:

  1. Ya no regresa nunca de detenido... Pero está bien la parte modelada. Te pongo 9 pts.

    ResponderEliminar
  2. andate a la verga pinche no me sirvió de nada

    ResponderEliminar
  3. andate a la verga pinche no me sirvió de nada

    ResponderEliminar