Descargar

Implementación programada de redes de Petri en Java. Control de una célula de fabricación flexible (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

RdP Estación 3

edu.red

Implementación Programada de Redes de Petri public class Transicion boolean habilitada = false; Vector < Estado> lugaresEntrada; Vector < Estado> lugaresSalida; int prioridad; … métodos public Transicion(Estado estEnt, Estado estSal); public int getNumLugaresEntrada(); public int getNumLugaresSalida(); public int getPrioridad(); public void setPrioridad(int priorid);

edu.red

Implementación Programada de Redes de Petri public class Estado int tokens = 0; Temporizador temporizador; … métodos public Estado(int toks) public void setTokens(int T) public int getTokens() public boolean isMarcado() public int getTiempoMarcado();

edu.red

Implementación Programada de Redes de Petri public class Red public int[][] matrizIncidenciaPrevia; public int[][] matrizIncidenciaPosterior; public int[] marcado; public int[] marcadoInicial; public Vector < Conflicto > conflictos; public Vector < Estado > estados; public Vector < Transicion > transiciones;

edu.red

Creación de Redes de Petri Editor HPsim // Transition Name Vector: (T0 ;T1 ;T2 ;T3 😉 // Position Name Vector: (P0;P1;P2;P3;P4;) // Inzidenz Matrix: { ( 1 0 0 -1 ) (-1 1 0 0 ) (-1 0 1 0 ) ( 0 -1 0 1 ) ( 0 0 -1 1 ) } // Marking Vector: (1 0 0 0 0 ) ….

edu.red

Clase coordinador “Thread” Encargado de:

Hacer evolucionar el estado de la RdP en sincronía con el sistema controlado. Controlar el disparo de las transiciones de la RdP. Realizar las acciones sobre el sistema físico ejecutando el código asociado a los lugares de la RdP. El acceso al bus de campo, al identificador de productos y el intercambio de información con la tarea HMI, se realizará a través de monitores que garantizaran la exclusión mutua en el acceso a las variables.

edu.red

Clase coordinador Clase madre public class Coordinador { public Red red; public Vector < Transicion > transicionesHabilitadas; private final ReentrantLock monitor = new ReentrantLock();

Clase hija public Coordinador(Red r); protected native void inicializaComunicacion(); public void setTransicionesHabilitadas(); public Transicion getTransicionADisparar(); public void disparaTransicion(Transicion t);

edu.red

Clase coordinador En las clases descendientes se deberán implementar los métodos encargados del “control real”:

Las acciones realizadas en el marcado, desmarcado o mantenimiento del marcado de un lugar de la RdP Evaluar la condición de disparo de las transiciones creación de temporizadores para conocer y controlar el tiempo de marcado de un lugar. Acceso al bus de campo y al identificador de productos

edu.red

Ejecución periódica Implementa la interfaz Runnable, puede ser lanzado como un “thread” de ejecución independiente.

El coordinador será una tarea de ejecución periódica. El periodo de ejecución elegido es de 10 ms. En cada periodo de ejecución se actualizan los datos del bus. El tiempo de Scan del bus es menor de 2 ms. Java clase Timer. Java para Tiempo Real Thread de tiempo Real periódico.

edu.red

Ciclo de Ejecución Al principio de su ejecución el coordinador carga la RdP, la analiza y crea un vector con las transiciones habilitadas según el marcado inicial. Para ejecutar la RdP el proceso cíclico que se sigue es: Se realiza la acción continua de los lugares marcados. Dentro del vector de transiciones habilitadas se escoge la de mayor prioridad, o en caso de igual prioridad, cualquiera, comprobando que su condición de disparo se cumpla. Esta política también se aplica en caso de conflicto. Se dispara la transición. Se ejecuta el código asociado al desmarcado de los lugares de entrada y al marcado de los lugares de salida. Se actualiza el vector de transiciones habilitadas

edu.red

Búsqueda de transiciones Para la búsqueda eficiente de transiciones habilitadas y la actualización de la estructura de datos que las almacena se han propuesto en la literatura diversas técnicas:

transiciones sensibilizadas lugares representantes lugares representantes dinámicos

En el presente trabajo se han implementado las dos primeras.

edu.red

(Gp:) Coordinador Estación 4

(Gp:) Coordinador Estación 3

(Gp:) Coordinador Estación 2

(Gp:) Coordinador Estación 1

(Gp:) Coordinador célula

Monitor Estación 1 Monitor Estación 2 Monitor Estación 3 Monitor Estación 4 Funciones nativas Variables E/S C Monitor HMI Orden Actualización Bus Ejecución Concurrente

edu.red

Ejecución Concurrente

La ejecución de la aplicación de control se puede configurar de dos formas: Implementación centralizada. Un solo “thread” encargado de ejecutar la RdP que controla la totalidad de la célula de fabricación. Implementación descentralizada: Múltiples coordinadores pueden ser lanzados en concurrencia, realizando cada uno de ellos la ejecución de la subred de Petri encargada de controlar una de las estaciones de la célula. La técnica de implementación en cada coordinador será centralizada.

edu.red

Ejecución Concurrente

Comunicación entre “threads” a través de monitores Monitores de las estaciones donde “residirán” el valor de las variables de entrada y salida y variables referidas a su estado en el control (automático, manual, fallo…). Tarea gráfica con función HMI “thread” de menor prioridad. Escribe en un monitor las órdenes de mando que el operador envía al sistema de control.

edu.red

Desarrollo de aplicaciones de control

edu.red

Java como plataforma de Ejecución Desarrollo de aplicaciones de control: Ejecución concurrente de threads.

Características que dificultan su uso para aplicaciones de control: Es un lenguaje Interpretado. Técnica compilación "Just in Time" se acelera la interpretación de "bytecode". Enlazado dinámico de clases dinámicamente (descarga de clases remotas ). Recolección de basura thread de prioridad máxima. El planificador no es “preemptivo” (expulsivo) ni posee prioridades estáticas, ejecución en el sistema (“row robbin”).

Estas últimas características suponen un grado de impredecibilidad temporal en la ejecución de un programa multiflujo.

edu.red

Java para Tiempo Real jRate Estos problemas han sido abordados en la Especificación de Java para Tiempo Real. (jRate):

Planificador expulsivo No ejecuta "bytecodes" sino que se compila a código máquina “RealtimeThread”, periódicos, aperiódicos y esporádicos Clases tratamiento de eventos asíncronos y para la transferencia asíncrona del control Relojes de tiempo real de alta resolución Implementa NoHeapRealtimeThread, “threads” que se pueden ejecutar siempre antes que el recolector de basura.

Características que proporcionan a Java Tiempo Real la predecibilidad temporal necesaria para la ejecución de aplicaciones de control.

edu.red

Conclusiones Objetivo fundamental: Evaluación del lenguaje Java para la codificación de sistemas de control modelados mediante RdP.

Aplicación práctica en funcionamiento: El control de una célula de fabricación

De este trabajo cabe destacar: Adaptación sin problemas a Java de los métodos de implementación de RdP La orientación a objeto del lenguaje y el soporte multiplataforma han facilitado el desarrollo de la aplicación de control. La planificación de tareas de Java impiden que la aplicación sea predecible . Se descarta el uso de Java “clásico” para la implementación de sistemas de control de Tiempo Real.

edu.red

Futuras Líneas de Investigación Se está finalizando la implementación en Java Tiempo Real.

Próximas investigaciones en los campos de la implementación programada de RdP, de los lenguajes y plataformas de ejecución y tiempo real.

Próximos pasos serán:

la migración a sistemas operativos en tiempo real, la implementación de RdP con Tiempo en Java para Tiempo Real. Aplicación de algoritmos para descomposición de RdP, para implementaciones descentralizadas y distribuidas

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente