PLEXIL ( Pl un Ex ecution I nterchange L anguage) es un código abierto de la tecnología de automatización , creada y actualmente en desarrollo por la NASA .
Paradigma | Multi-paradigma |
---|---|
Diseñada por | NASA |
Apareció por primera vez | 2005 |
Disciplina de mecanografía | Estático , inseguro , nominativo |
SO | Linux , Mac OS |
Licencia | Fuente abierta |
Sitio web | http://plexil.sourceforge.net/ |
Implementaciones importantes | |
Robótica , Misiones espaciales |
Descripción general
PLEXIL es un lenguaje de programación para representar planes de automatización .
En 2006 Vandi Verma fue uno de varios co-autores de PLEXIL, que ahora se utilizan en tecnologías de automatización, tales como el Rover de la NASA K10, Marte Curiosity Rover taladro de percusión , Espacio Profundo Hábitat y Hábitat demostración de la unidad , Edison Demostración de Smallsat Redes , LADEE , Autonomy Operating System (AOS) y automatización de procedimientos para la Estación Espacial Internacional . [1] [2] [3]
El PLEXIL Executive es un motor de ejecución que implementa PLEXIL y puede interactuar (utilizando un marco de software proporcionado) con sistemas externos para ser controlados y / o consultados. PLEXIL se ha utilizado para demostrar tecnologías de automatización destinadas a futuras misiones espaciales de la NASA.
Los binarios y la documentación están ampliamente disponibles como código abierto con licencia BSD de Sourceforge.net . [4]
Nodos
La unidad de programación fundamental de PLEXIL es Node. Un nodo es una estructura de datos formada por dos componentes principales: un conjunto de condiciones que impulsan la ejecución del nodo y otro conjunto que especifica lo que el nodo logra después de la ejecución.
Una composición jerárquica de nodos se denomina plan . Un plan es un árbol dividido en nodos cercanos a la raíz (nodos de alto nivel) y nodos hoja que representan acciones primitivas como la asignación de variables o el envío de comandos al sistema externo.
Tipos de nodo:
En septiembre de 2008, la NASA ha implementado siete tipos de nodos.
- Nodos de lista : los nodos de lista son los nodos internos de un plan. Estos nodos tienen nodos secundarios que pueden ser de cualquier tipo.
- Nodos de comando : estos nodos emiten comandos que impulsan el sistema.
- Nodos de asignación : realiza una operación local y asigna un valor a una variable.
- Nodos de llamada de función : accede a funciones externas que realizan cálculos, pero no alteran el estado del sistema.
- Actualizar nodos : proporciona información a la interfaz de planificación y apoyo a la toma de decisiones.
- Nodos de llamada a biblioteca : estos nodos invocan nodos en una biblioteca externa.
- Nodos vacíos : Nodos que contienen atributos y no realizan ninguna acción.
Estados de nodo:
Cada nodo puede estar en un solo estado. Ellos son:
- Inactivo
- Esperando
- Ejecutando
- Refinamiento
- Iteration_Ended
- Defecto
- Terminado
Transiciones de nodos:
- SkipCondition T : la condición de salto cambia de desconocida o falsa a verdadera.
- StartCondition T : La condición de inicio cambia de desconocida o falsa a verdadera.
- InvariantCondition F / U : La condición invariante cambia de verdadera a falsa o desconocida.
- EndCondition T : la condición final cambia a verdadera
- Ancestor_inv_condition F / U : La condición invariante de cualquier ancestro cambia a falso o desconocido.
- Ancestor_end_condition T : La condición final de cualquier ancestro cambia a verdadera
- All_children_waiting_or_finished T : Esto es cierto cuando todos los nodos secundarios están en estado de nodo en espera o terminados y ningún otro estado.
- Command_abort_complete T : Cuando se completa la cancelación de una acción de comando.
- Function_abort_complete T : Se completa el aborto de una llamada de función.
- Parent_waiting T : El padre (único) del nodo pasa al estado de nodo en espera.
- Parent_executing T : El padre (único) del nodo pasa al estado de nodo en ejecución.
- RepeatCondition V / F : la condición de repetición cambia de desconocida a verdadera o falsa.
Referencias
- ^ Estlin, Tara; Jonsson, Ari; Pasareanu, Carina; Simmons, Reid; Tso, Kam; Verma, Vandi. "Lenguaje de intercambio de ejecución de planes (PLEXIL)" (PDF) . Servidor de informes técnicos de la NASA . Consultado el 8 de febrero de 2019 .
- ^ "Bibliografía de publicaciones relacionadas con PLEXIL, organizadas por categoría" . Souceforge de Plexil . Consultado el 8 de febrero de 2019 .
- ^ "Página principal: aplicaciones de la NASA" . PLEXIL sourceforge . Consultado el 8 de febrero de 2019 .
- ^ http://sourceforge.net/projects/plexil
enlaces externos
- PLEXIL en la NASA
- Manual PLEXIL
- PLEXIL en SourceForge