PLEXIL: Difference between revisions

Content deleted Content added
No edit summary
 
(36 intermediate revisions by 31 users not shown)
Line 1:
{{expert}}
{{Infobox programming language
| name = PLEXIL
| logo =
| paradigm = [[Multi-paradigm programming language|Multi-paradigm]]
| year = 20082005
| designer = [[NASA]]
| developer =
| latest_release_version =
| latest_release_date =
| latest_test_version =
| latest_test_date =
| typing = [[Type system#Static typing|Static]], [[Type system#Safely and unsafely typed systems|unsafe]], [[Nominative type system|nominative]]
| implementations = [[Robotics]], [[Space missions]]
| dialects =
| influenced_by =
| influenced =
| operating_system =[[Linux]], [[Mac OS]]
| license =Open source
| website =http://tiplexil.arcsourceforge.nasa.govnet/tech/project/details.php?pid=240&gid=8&ta=2
}}
 
PLEXIL ('''Pl'''an '''Ex'''ecution '''I'''nterchange '''L'''anguage.) Isis an [[Open-source license|open source]] technology for [[programming languageautomation]], created and currently in development by the [[National Aeronautics and Space Administration]] |NASA. PLEXIL is primarily intended for use in applications with unmanned [[Robotic spacecraft|robotic missions]].<ref>http://ti.arc.nasa.gov/tech/project/index.php?pid=240&gid=8&ta=2</ref>
 
==Overview==
 
PLEXIL is according to NASA a language for representing plans for [[automation]]. PLEXIL is compact, portable and deterministic. PLEXIL is accompanied by an [[Execution_(computing)|execution]] [[Engine (computer science)|engine]] named ''Universal Executive'' which implements PLEXIL and creates interfaces to outer controlled systems.
PLEXIL hasis beena used[[programming inlanguage]] prototypefor roversrepresenting asplans to demonstratefor [[automation in space missions]].
 
The binaries and documentation is widely available as open source from [[Sourceforge.net]] .<ref>http://plexil.wiki.sourceforge.net/</ref>
PLEXIL is used in automation technologies such as the NASA K10 rover, Mars ''Curiosity'' rover's [[Timeline of Mars Science Laboratory#Images|percussion drill]], [[Mars habitat#NASA|Deep Space Habitat and Habitat Demonstration Unit]], [[Edison Demonstration of Smallsat Networks]], [[LADEE]], Autonomy Operating System (AOS) and procedure automation for the [[International Space Station]].<ref name="ntrs2019">{{cite journal |last1=Estlin |first1=Tara |last2=Jonsson |first2=Ari |last3=Pasareanu |first3=Corina|author3-link= Corina Păsăreanu |last4=Simmons |first4=Reid |last5=Tso |first5=Kam |last6=Verma |first6=Vandi |title=Plan Execution Interchange Language (PLEXIL) |url=https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20060019246.pdf |website=NASA Technical Reports Server |date=April 2006 |accessdate=8 February 2019}}</ref><ref name="plex2019">{{cite web |title=Bibliography of PLEXIL-related publications, organized by category. |url=http://plexil.sourceforge.net/wiki/index.php/References |website=Plexil souceforge |accessdate=8 February 2019}}</ref><ref>{{cite web |title=Main page: NASA applications |url=http://plexil.sourceforge.net/wiki/index.php/Main_Page#NASA_Applications |website=PLEXIL sourceforge |accessdate=8 February 2019}}</ref>
 
The PLEXIL Executive is an [[Execution (computing)|execution]] [[Engine (computer science)|engine]] that implements PLEXIL and can be interfaced (using a provided software framework) with external systems to be controlled and/or queried. PLEXIL has been used to demonstrate automation technologies targeted at future NASA space missions.
 
The binaries and documentation isare widely available as [[BSD license]]d open source from [[SourceforgeSourceForge.net]] .<ref>{{Cite web|url=http://plexil.wiki.sourceforge.net/projects/plexil|title = PLEXIL (Plan execution software)}}</ref>
 
==Nodes==
The fundamental [[Statementprogramming block|block]]unit of PLEXIL is the Node. A node is a [[data structure]] formed of two primary components: a set of [[Conditional (programming)|conditions]] that drive the execution of the node and another set which specifies what the node accomplishes after execution.
 
A hierarchical composition of nodes is called a '''plan'''. A plan is a tree divided in nodes close to the root (high level nodes) and leaf nodes that represent primitive actions such as variable assignments or the sending of commands to the external system.
Line 34 ⟶ 39:
'''Node Types:'''
 
As of [[September]] [[2008]] NASA has implemented seven types of nodes.
 
*''List nodes'': List nodes are the internal nodes in a plan. These nodes have child nodes that can be of any type.
*''Command nodes'': These nodes issue commands that drive the system.
*''Assignment nodes'': Performs a local operation and assigns a value to a variable.
*''Function call nodes'':accesses external functions that perform computations, but do not alter the state of the system.
of the system.
*''Update nodes'': Provides information to the planning and decision support interface.
*''Library call'' nodes: This nodes invoke nodes in an external library.
Line 47 ⟶ 52:
 
Each node can be in only one state. They are:
* Inactive
* Waiting
* Executing
* Finishing
* Finishinghttp:Iteration_Ended
* Failing
* Finished
Line 58 ⟶ 64:
*''StartCondition T'' : The start condition changes from unknown or false to true.
*''InvariantCondition F/U'' : Invariant condition changes from true to false or unknown.
*''EndCondition T'' : End condition changes to true.
*''Ancestor_inv_condition F/U'' : The invariant condition of any ancestor changes to false or unknown.
*''Ancestor_end_condition T'' : The end condition of any ancestor changes to true.
unknown.
*''All_children_waiting_or_finished T'' : This is true when all child nodes are in either in node state waiting or finished.
 
*''Ancestor_end_condition T'' : The end condition of any ancestor changes to true
*''All_children_waiting_or_finished T'' : This is true when all child nodes are in either in
node state waiting or finished and no other states.
 
*''Command_abort_complete T'' : When the abort for a command action is completed.
*''Function_abort_complete T'' : The abort of a function call is completed.
Line 71 ⟶ 73:
*''Parent_executing T'' : The (single) parent of the node transitions to node state executing.
*''RepeatCondition T/F'' : the repeat condition changes from unknown to either true or false.
 
==References==
{{Reflist}}
 
==External links==
* [httphttps://ti.arcsoftware.nasa.gov/tech/project/index.php?pid=240&gid=8&ta=2software/LAR-19339-1 PLEXIL at NASA]
* [http://plexil.wiki.sourceforge.net/spacewiki/showimage/plexil-manualindex.pdfphp/Overview PLEXIL PDF Manual]
* [http://plexil.sourceforge.net/wiki/index.php/Main_Page PLEXIL at SourceForge]
 
==See also==
*[[Programming Language]]
*[[Spacecraft command language]]
*[[Cybernetics]]
*[[Space exploration]]
 
[[Category:programmingDomain-specific languages |programming languages ]]
{{compu-stub}}
[[Category:NASARobotics stubssoftware]]
{{NASA-stub}}
 
[[Category:programming languages |programming languages ]]
[[Category:NASA stubs]]