Transporte 1
Estación 3
Bus Interbus
Redes de Petri
Descripción funcional de comportamientos en los sistemas de eventos discretos:
lugar parte del estado a la que puede llegar el sistema
A las transiciones se les asocian los eventos
Red de Petri Estación 1
Interpretación de RdP en control de sistemas:
Acciones impulsionales al disparo de transiciones
Generación de señales de control asociadas al marcado de lugares
Predicados que condicionan el disparo de las transiciones sensibilizadas
RdP Estación 3
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);
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();
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;
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 )
….
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.
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);
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
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.
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
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.
(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
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.
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.
Desarrollo de aplicaciones de control
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.
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.
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.
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
Control en Tiempo Real
Página anterior | Volver al principio del trabajo | Página siguiente |