Librería de Arduino PetriNet


La librería PetriNet implementa una red de Petri que puede ejecutarse en un procesador como Arduino.

La red de Petri se inicializa indicando el número de estados y transiciones. Ambos, estados y transiciones, están identificados por un entero de 8bits (0 a 255).

Para crear las transiciones entre estados se emplea la función SetTransition(), que recibe como parámetros el número identificador de la transición, los estados de entrada y el número, los estados de salida y su número, la función de disparo de la transición y, opcionalmente, la acción acción asociada a realizar al disparar la transición.

Adicionalmente, estos parámetros de la transición pueden modificarse a posteriori con las funciones SetTransitionInputs(), SetTransitionOutputs(), SetTransitionAction() y SetTransitionCondition().

Anuncio:

Para inicializar o modificar el estado de la red de Petri, podemos usar la función SetMarkup(), que establece el número de marcas de un estado. También podemos obtener el número de marcas actual de un estado con la función GetMarkup().

Finalmente, la función Update() realiza la actualización de la red de Petri. Calcula las entradas sensibilizadas, las condiciones de disparo y, en caso necesario, actualiza las marcas de los estados y dispara las acciones oportunas.

Las condiciones de las transiciones deben ser lo más ligeras posible, ya que son evaluadas cada vez que se dispara la función Update(). Por tanto, conviene evitar realizar cálculos pesados en las mismas, si no evaluar condiciones simples, y realizar los cálculos cuando sea conveniente en el bucle principal.

Por ejemplo, si estamos esperando una comunicación, es mejor realizarla únicamente en el bucle, y evaluar las transiciones con el resultado. De lo contrario realizaríamos la comunicación en cada transición, ralentizando innecesariamente la actualización de la red de Petri.

Manual de uso

La clase PetriNet puede instanciarse como un objeto a través de uno de sus constructores,

Uso PetriNet

Ejemplos

La librería PetriNet incluye los siguientes ejemplos para ilustrar su uso.

  • Simple: Ejemplo que muestra el uso de PetriNet

  • Ejemplo herencia: Ejemplo que muestra el uso de PetriNet mediante una clase derivada.

Instalación

  • Descargar la última versión desde GitHub
  • Descomprimir el archivo
  • Copiar en tu carpeta de librerías (normalmente Mis Documentos\Arduino\libraries)
  • Relanzar el IDE de Arduino

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección
tutoriales de Arduino

Anuncio:

Previous Emular Raspberry Pi en una máquina virtual con VirtualBox
Next Implementar una red de Petri en Arduino
1000