ECSS-E-TM-40-07 Volume 3A
25 January 2011
Space engineering
Simulation modelling platform - Volume 3: Component model
Foreword
This document is one of the series of ECSS Technical Memoranda. Its Technical Memorandum status indicates that it is a non-normative document providing useful information to the space systems developers’ community on a specific subject. It is made available to record and present non-normative data, which are not relevant for a Standard or a Handbook. Note that these data are non-normative even if expressed in the language normally used for requirements.
Therefore, a Technical Memorandum is not considered by ECSS as suitable for direct use in Invitation To Tender (ITT) or business agreements for space systems development.
Disclaimer
ECSS does not provide any warranty whatsoever, whether expressed, implied, or statutory, including, but not limited to, any warranty of merchantability or fitness for a particular purpose or any warranty that the contents of the item are error-free. In no respect shall ECSS incur any liability for any damages, including, but not limited to, direct, indirect, special, or consequential damages arising out of, resulting from, or in any way connected to the use of this document, whether or not based upon warranty, business agreement, tort, or otherwise; whether or not injury was sustained by persons or property or otherwise; and whether or not loss was sustained from, or arose out of, the results of, the item, or any services that may be provided by ECSS.
Published by: ESA Requirements and Standards Division
ESTEC, P.O. Box 299,
2200 AG Noordwijk
The Netherlands
Copyright: 2011© by the European Space Agency for the members of ECSS
Change log
ECSS-E-TM-40-07 Volume 3A25 January 2011 / First issue
Table of contents
Change log
Introduction
1 Scope
1.1Objects
1.2Components
1.3Component Mechanisms
1.4Model Mechanisms
1.5Management Interfaces
1.6Simulation Environments
1.7Simulation Services
1.8Exceptions
2 Base Types
2.1Primitive Types
2.1.1Char8
2.1.2Bool
2.1.3Int8
2.1.4UInt8
2.1.5Int16
2.1.6UInt16
2.1.7Int32
2.1.8UInt32
2.1.9Int64
2.1.10UInt64
2.1.11Float32
2.1.12Float64
2.1.13Duration
2.1.14Date Time
2.1.15String8
2.2Simple Type Union
2.2.1Primitive Type Kind
2.2.2Any Simple Array
2.2.3Any Simple
2.2.4Primitive Type Value
2.3Universally Unique Identifiers
2.3.1Uuid
2.3.2Uuid Bytes
3 Component Model
3.1Exceptions
3.1.1Exception
3.1.2Duplicate Name
3.1.3Invalid Any Type
3.1.4Invalid Event Id
3.1.5Invalid Object Type
3.2Objects and Components
3.2.1Objects
3.2.2Components
3.3Component Mechanisms
3.3.1Aggregation
3.3.2Composition
3.3.3Events
3.3.4Entry Points
3.3.5Dynamic Invocation
3.3.6Persistence
3.4Model Mechanisms
3.4.1Fallible Models
3.5Management Interfaces
3.5.1Managed Components
3.5.2Managed Component Mechanisms
3.5.3Managed Model Mechanisms
3.6Simulation Environments
3.6.1Simulators
3.6.2Publication
3.6.3Service Acquisition
4 Simulation Services
4.1Logger
4.1.1ILogger
4.1.2Log Message Kind
4.1.3Predefined Log Message Kinds
4.1.4User defined Log Message Kinds
4.2Time Keeper
4.2.1ITime Keeper
4.2.2Time Kind
4.3Scheduler
4.3.1IScheduler
4.4Event Manager
4.4.1IEvent Manager
4.4.2Predefined Event Types
4.5Resolver
4.5.1IResolver
4.5.2Component Paths
4.6Link Registry
4.6.1ILink Registry
Annex A (informative) Component model catalogue
A.1Smp Catalogue
Figures
Figure 1 1: Objects
Figure 1 2: Components
Figure 1 3: Component Mechanisms
Figure 1 4: Model Mechanisms
Figure 1 5: Management Interfaces
Figure 1 6: Simulation Environments
Figure 1 7: Simulation Services
Figure 1 8: Exceptions
Figure 2 1: Primitive Type Kind
Figure 2 2: Any Simple
Figure 2 3: Primitive Type Value
Figure 2 4: Uuid
Figure 2 5: Uuid Bytes
Figure 3 1: Exception
Figure 3 2: Duplicate Name
Figure 3 3: Invalid Any Type
Figure 3 4: Invalid Event Id
Figure 3 5: Invalid Object Type
Figure 3 6: IObject
Figure 3 7: IComponent
Figure 3 8: Component Collection
Figure 3 9: Model State Kind
Figure 3 10: IModel
Figure 3 11: Invalid Model State
Figure 3 12: Model Collection
Figure 3 13: IService
Figure 3 14: Service Collection
Figure 3 15: IAggregate
Figure 3 16: IReference
Figure 3 17: Reference Collection
Figure 3 18: IComposite
Figure 3 19: IContainer
Figure 3 20: Container Collection
Figure 3 21: IEvent Sink
Figure 3 22: Event Sink Collection
Figure 3 23: IEvent Source
Figure 3 24: Already Subscribed
Figure 3 25: Invalid Event Sink
Figure 3 26: Not Subscribed
Figure 3 27: Event Source Collection
Figure 3 28: ITask
Figure 3 29: IEntry Point
Figure 3 30: Entry Point Collection
Figure 3 31: Sequence of calls for dynamic invocation
Figure 3 32: IDynamic Invocation
Figure 3 33: Invalid Operation Name
Figure 3 34: Invalid Parameter Count
Figure 3 35: Invalid Parameter Type
Figure 3 36: IRequest
Figure 3 37: Invalid Parameter Index
Figure 3 38: Invalid Parameter Value
Figure 3 39: Void Operation
Figure 3 40: IPersist
Figure 3 41: Cannot Restore
Figure 3 42: Cannot Store
Figure 3 43: IStorage Reader
Figure 3 44: IStorage Writer
Figure 3 45: IFailure
Figure 3 46: IFallible Model
Figure 3 47: IManaged Object
Figure 3 48: Invalid Object Name
Figure 3 49: IManaged Component
Figure 3 50: IComponent Collection
Figure 3 51: IManaged Reference
Figure 3 52: Cannot Remove
Figure 3 53: Not Referenced
Figure 3 54: Reference Full
Figure 3 55: IManaged Container
Figure 3 56: Container Full
Figure 3 57: IEvent Consumer
Figure 3 58: IEvent Provider
Figure 3 59: IEntry Point Publisher
Figure 3 60: IManaged Model
Figure 3 61: Invalid Field Name
Figure 3 62: IField
Figure 3 63: Invalid Field Value
Figure 3 64: IArray Field
Figure 3 65: Invalid Array Size
Figure 3 66: Invalid Array Value
Figure 3 67: Invalid Index
Figure 3 68: ISimple Field
Figure 3 69: IForcible Field
Figure 3 70: View Kind
Figure 3 71: Simulation Environment State Diagram with State Transition Methods
Figure 3 72: Model State Diagram with State Transition Methods
Figure 3 73: ISimulator
Figure 3 74: IManaged Simulator
Figure 3 75: Duplicate Uuid
Figure 3 76: IFactory
Figure 3 77: Factory Collection
Figure 3 78: Sequence of calls for service acquisition
Figure 4 1: ILogger
Figure 4 2: ITime Keeper
Figure 4 3: Time Kind
Figure 4 4: IScheduler
Figure 4 5: Invalid Cycle Time
Figure 4 6: Invalid Event Time
Figure 4 7: IEvent Manager
Figure 4 8: Already Subscribed
Figure 4 9: Not Subscribed
Figure 4 10: Predefined Event Types
Figure 4 11: IResolver
Figure 4 12: ILink Registry
Tables
Table 2 1: Enumeration Literals of PrimitiveTypeKind
Table 2 2: Alternatives
Table 2 3: Fields of Uuid
Table 2 4: Specification of UuidBytes
Table 3 1: Fields of Exception
Table 3 2: Fields of DuplicateName
Table 3 3: Fields of InvalidAnyType
Table 3 4: Fields of InvalidEventId
Table 3 5: Fields of InvalidObjectType
Table 3 6: Operations of IObject
Table 3 7: Parameters of GetDescription
Table 3 8: Parameters of GetName
Table 3 9: Operations of IComponent
Table 3 10: Parameters of GetParent
Table 3 11: Enumeration Literals of ModelStateKind
Table 3 12: Operations of IModel
Table 3 13: Parameters of Configure
Table 3 14: Parameters of Connect
Table 3 15: Parameters of GetState
Table 3 16: Parameters of Publish
Table 3 17: Fields of InvalidModelState
Table 3 18: Operations of IAggregate
Table 3 19: Parameters of GetReference
Table 3 20: Parameters of GetReferences
Table 3 21: Operations of IReference
Table 3 22: Parameters of GetComponent
Table 3 23: Parameters of GetComponents
Table 3 24: Operations of IComposite
Table 3 25: Parameters of GetContainer
Table 3 26: Parameters of GetContainers
Table 3 27: Operations of IContainer
Table 3 28: Parameters of GetComponent
Table 3 29: Parameters of GetComponents
Table 3 30: Operations of IEventSink
Table 3 31: Parameters of GetOwner
Table 3 32: Parameters of Notify
Table 3 33: Operations of IEventSource
Table 3 34: Parameters of Subscribe
Table 3 35: Parameters of Unsubscribe
Table 3 36: Fields of AlreadySubscribed
Table 3 37: Fields of InvalidEventSink
Table 3 38: Fields of NotSubscribed
Table 3 39: Operations of ITask
Table 3 40: Parameters of AddEntryPoint
Table 3 41: Parameters of GetEntryPoints
Table 3 42: Operations of IEntryPoint
Table 3 43: Parameters of GetOwner
Table 3 44: Operations of IDynamicInvocation
Table 3 45: Parameters of CreateRequest
Table 3 46: Parameters of DeleteRequest
Table 3 47: Parameters of Invoke
Table 3 48: Fields of InvalidOperationName
Table 3 49: Fields of InvalidParameterCount
Table 3 50: Fields of InvalidParameterType
Table 3 51: Operations of IRequest
Table 3 52: Parameters of GetOperationName
Table 3 53: Parameters of GetParameterCount
Table 3 54: Parameters of GetParameterIndex
Table 3 55: Parameters of GetParameterValue
Table 3 56: Parameters of GetReturnValue
Table 3 57: Parameters of SetParameterValue
Table 3 58: Parameters of SetReturnValue
Table 3 59: Fields of InvalidParameterIndex
Table 3 60: Fields of InvalidParameterValue
Table 3 61: Fields of InvalidReturnValue
Table 3 62: Fields of VoidOperation
Table 3 63: Operations of IPersist
Table 3 64: Parameters of Restore
Table 3 65: Parameters of Store
Table 3 66: Operations of IFailure
Table 3 67: Parameters of IsFailed
Table 3 68: Operations of IFaillibleModel
Table 3 69: Parameters of IFailure
Table 3 70: Parameters of GetFailures
Table 3 71: Parameters of IsFailed
Table 3 72: Operations of IManagedObject
Table 3 73: Parameters of SetDescription
Table 3 74: Parameters of SetName
Table 3 75: Fields of InvalidObjectName
Table 3 76: Operations of IManagedComponent
Table 3 77: Parameters of SetParent
Table 3 78: Operations of IComponentCollection
Table 3 79: Parameters of GetCount
Table 3 80: Parameters of GetLower
Table 3 81: Parameters of GetUpper
Table 3 82: Operations of IManagedReference
Table 3 83: Parameters of AddComponent
Table 3 84: Parameters of RemoveComponent
Table 3 85: Fields of CannotRemove
Table 3 86: Fields of NotReferenced
Table 3 87: Fields of ReferenceFull
Table 3 88: Operations of IManagedContainer
Table 3 89: Parameters of AddComponent
Table 3 90: Fields of ContainerFull
Table 3 91: Operations of IEventConsummer
Table 3 92: Parameters of GetEventSink
Table 3 93: Parameters of GetEventSinks
Table 3 94: Operations of IEventProvider
Table 3 95: Parameters of GetEventSource
Table 3 96: Parameters of GetEventSources
Table 3 97: Operations of IEntryPointPublisher
Table 3 98: Parameters of GetEntryPoint
Table 3 99: Parameters of GetEntryPoints
Table 3 100: Operations of IManagedModel
Table 3 101: Parameters of GetArrayField
Table 3 102: Parameters of GetSimpleField
Table 3 103: Fields of InvalidFieldName
Table 3 104: Operations of IField
Table 3 105: Parameters of GetView
Table 3 106: Parameters of IsInput
Table 3 107: Parameters of IsOutput
Table 3 108: Parameters of IsState
Table 3 109: Fields of InvalidFieldValue
Table 3 110: Operations of IArrayFiled
Table 3 111: Parameters of GetSize
Table 3 112: Parameters of GetValue
Table 3 113: Parameters of GetValues
Table 3 114: Parameters of SetValue
Table 3 115: Parameters of SetValues
Table 3 116: Fields of InvalidArraySize
Table 3 117: Fields of InvalidArrayValue
Table 3 118: Fields of InvalidIndex
Table 3 119: Operations of ISimpleField
Table 3 120: Parameters of GetValue
Table 3 121: Parameters of SetValue
Table 3 122: Operations of IForcibleField
Table 3 123: Parameters of Force
Table 3 124: Parameters of IsForced
Table 3 125: Enumeration Literals of ViewKind
Table 3 126: Enumeration Literals of SimulatorStateKind
Table 3 127: Constants of ISimulator
Table 3 128: Operations of ISimulator
Table 3 129: Parameters of Store
Table 3 130: Parameters of Restore
Table 3 131: Parameters of Reconnect
Table 3 132: Parameters of GetState
Table 3 133: Parameters of AddInitEntryPoint
Table 3 134: Parameters of AddModel
Table 3 135: Parameters of AddService
Table 3 136: Parameters of GetService
Table 3 137: Parameters of ILogger
Table 3 138: Parameters of GetTime
Table 3 139: Parameters of GetScheduler
Table 3 140: Parameters of GetEventManager
Table 3 141: Parameters of GetResolver
Table 3 142: Parameters of GetLinkRegistry
Table 3 143: Operations of IManagedSimulator
Table 3 144: Parameters of CreateInstance
Table 3 145Parameters of GetFactories
Table 3 146: Parameters of GetFactory
Table 3 147: Parameters of RegisterFactory
Table 3 148: Fields of DuplicateUuid
Table 3 149: Operations of IFactory
Table 3 150: Parameters of CreateInstance
Table 3 151: Parameters of DeleteInstance
Table 3 152: Parameters of GetImplementation
Table 3 153: Parameters of GetSpecification
Table 4 1: Constants of ILogger
Table 4 2: Operations of ILogger
Table 4 3: Parameters of Log
Table 4 4: Parameters of QueryLogMessageKind
Table 4 5: Specification of LogMessageKind
Table 4 6 : Predefined Log Message Kinds
Table 4 7: Constants of ITimeKeeper
Table 4 8: Operations of ITimeKeeper
Table 4 9: Parameters of GetEpochTime
Table 4 10: Parameters of GetMissionTime
Table 4 11: Parameters of GetSimulationTime
Table 4 12: Parameters of GetZuluTime
Table 4 13: Parameters of SetEpochTime
Table 4 14: Parameters of SetMissionStart
Table 4 15: Parameters of SetMissionTime
Table 4 16: Enumeration Literals of TimeKind
Table 4 17: Constants of IScheduler
Table 4 18: Operations of IScheduler
Table 4 19: Parameters of AddEpochTimeEvent
Table 4 20: Parameters of AddImmediateEvent
Table 4 21: Parameters of AddMissionTimeEvent
Table 4 22: Parameters of AddSimulationtimeEvent
Table 4 23: Parameters of AddZuluTimeEvent
Table 4 24: Parameters of RemoveEvent
Table 4 25: Parameters of SetEventCount
Table 4 26: Parameters of SetEventCycleTime
Table 4 27: Parameters of SetEventEpochTime
Table 4 28: Parameters of SetEventMissionTime
Table 4 29: Parameters of SetEventSimulationTime
Table 4 30: Parameters of SetEventZuluTime
Table 4 31: Constants of IEventManager
Table 4 32: Operations of IEventManager
Table 4 33: Parameters of Emit
Table 4 34: Parameters of QueryEventId
Table 4 35: Parameters of Subscribe
Table 4 36: Parameters of Unsubscribe
Table 4 37: Fields of AlreadySubscribed
Table 4 38: Fields of NotSubscribed
Table 4 39: Predefined Event Types
Table 4 40: Constants of IResolver
Table 4 41: Operations of IResolver
Table 4 42: Parameters of ResolveAbsolute
Table 4 43: Parameters of ResolveRelative
Table 4 44: Constants of ILinkRegistry
Table 4 45: Operations of ILinkRegistry
Table 4 46: Parameters of AddLink
Table 4 47: Parameters of CanRemove
Table 4 48: Parameters of GetLinks
Table 4 49: Parameters of HasLink
Table 4 50: Parameters of RemoveLink
Table 4 51: Parameters of RemoveLinks
Introduction
Space programmes have developed simulation software for a number of years, and which are used for a variety of applications including analysis, engineering operations preparation and training. Typically different departments perform developments of these simulators, running on several different platforms and using different computer languages. A variety of subcontractors are involved in these projects and as a result a wide range of simulation models are often developed. This Technical Memorandum addresses the issues related to portability and reuse of simulation models. It builds on the work performed by ESA in the development of the Simulator Portability Standards SMP1 and SMP2.
This Technical Memorandum is complementary to ECSS-E-ST-40 because it provides the additional requirements which are specific to the development of simulation software. The formulation of this Technical Memorandum takes into account the Simulation Model Portability specification version 1.2. This Technical Memorandum has been prepared by the ECSS-E-40-07 Working Group.
This Technical Memorandum comprises of a number of volumes.
The intended readership of Volume 1 of this Technical Memorandum are the simulator software customer and all suppliers.
The intended readership of Volume 2, 3 and 4 of this Technical Memorandum is the Infrastructure Supplier.
The intended readership of Volume 5 of this Technical Memorandum is the simulator developer.
Note: Volume 1 contains the list of terms and abbreviations used in this document
- Volume 1 – Principles and requirements
This document describes the Simulation Modelling Platform (SMP) and the special principles applicable to simulation software. It provides an interpretation of the ECSS-E-ST-40 requirements for simulation software, with additional specific provisions.
- Volume 2 - Metamodel
This document describes the Simulation Model Definition Language (SMDL), which provides platform independent mechanisms to design models (Catalogue), integrate model instances (Assembly), and schedule them (Schedule). SMDL supports design and integration techniques for class-based, interface-based, component-based, event-based modelling and dataflow-based modelling.
- Volume 3 - Component Model
This document provides a platform independent definition of the components used within an SMP simulation, where components include models and services, but also the simulator itself. A set of mandatory interfaces that every model has to implement is defined by the document, and a number of optional interfaces for advanced component mechanisms are specified.
Additionally, this document includes a chapter on Simulation Services. Services are components that the models can use to interact with a Simulation Environment. SMP defines interfaces for mandatory services that every SMP compliant simulation environment must provide.
- Volume 4 - C++ Mapping
This document provides a mapping of the platform independent models (Metamodel, Component Model and Simulation Services) to the ANSI/ISO C++ target platform. Further platform mappings are foreseen for the future.
The intended readership of this document is the simulator software customer and supplier. The software simulator customer is in charge of producing the project Invitation to Tender (ITT) with the Statement of Work (SOW) of the simulator software. The customer identifies the simulation needs, in terms of policy, lifecycle and programmatic and technical requirements. It may also provide initial models as inputs for the modelling activities. The supplier can take one or more of the following roles:
Infrastructure Supplier - is responsible for the development of generic infrastructure or for the adaptation of an infrastructure to the specific needs of a project. In the context of a space programme, the involvement of Infrastructure Supplier team(s) may not be required if all required simulators are based on full re-use of exiting infrastructure(s), or where the infrastructure has open interfaces allowing adaptations to be made by the Simulator Integrator.
Model Supplier - is responsible for the development of project specific models or for the adaptation of generic models to the specific needs of a project or project phase.
Simulator Integrator – has the function of integrating the models into a simulation infrastructure in order to provide a full system simulation with the appropriate services for the user (e.g. system engineer) and interfaces to other systems.
- Volume 5 – SMP usage
This document provides a user-oriented description of the general concepts behind the SMP documents Volume 1 to 4, and provides instructions for the accomplishment of the main tasks involved in model and simulator development using SMP.
1Scope
The Platform Independent Model (PIM) of the Simulation Modelling Platform (SMP) consists of two parts:
- The SMP Metamodel, also called Simulation Model Definition Language (SMDL).
- The SMP Component Model, which includes SMP Simulation Services.
This document introduces the platform independent component model used by SMP components. It introduces interfaces for all components, models, services and simulators. As this document does not define classes (i.e. an implementation), but only interfaces, most names in this document start with an upper-case “I”, which stands for “Interface”.
1.1 Objects
In order to allow harmonisation of components with other SMP elements, this document first defines what an object is (IObject). Although most elements of the SMP component model are components, these components expose some objects, which are derived directly from the IObject interface. These objects include fields, entry points, event sources and event sinks, containers and references, and failures. See section 3.2.1 for details on objects.
Figure 1 1: Objects
1.2 Components
To allow treating all components in a similar way, it is then defined what a component is (i.e. the IComponent interface). The three most important interfaces derived from this base interface are IModel for models, IService for services and ISimulator for the simulation environment (where ISimulator is not derived immediately from IComponent, but from IComposite). See section 3.2.2 for details on Components, and section 3.6 for details on Simulators.
Figure 1 2: Components
1.3 Component Mechanisms
Further, SMP defines standard mechanisms how to enhance components, for example for component aggregation (IAggregate), component composition (IComposite), inter-component events (IEventProvider and IEventConsumer), entry point publication (IEntryPointPublisher), managed components (IManagedComponent), dynamic invocation (IDynamicInvocation) and self-persistence (IPersist). See section 3.3 for details on Component Mechanisms, and section 3.5.2 for Managed Component Mechanisms.
Figure 1 3: Component Mechanisms
1.4 Model Mechanisms
The most important component type of SMP is the Model. While implementing the mandatory IModel interface is sufficient to make a model SMP compliant, this does not allow using most of the SMP mechanisms. Therefore, optional extensions of the IModel interface do exist providing optional features for models that go beyond those for components. An example is the fallible model (IFallibleModel). See section 3.4 for details on Model Mechanisms, and section 3.5.3 for Managed Model Mechanisms.
Figure 1 4: Model Mechanisms
1.5 Management Interfaces
To support managed simulations, where all information about the models, their links and initial values is read from an external source (typically XML files), SMP defines optional mechanisms for managed components. These allow setting their properties (name, description, and parent) from external applications, and provide mechanisms to query their elements (fields, entry points, event sources and sinks) by name. See section 3.5 for details on Management Interfaces.
Figure 1 5: Management Interfaces
1.6 Simulation Environments
Finally, the Simulator or Simulation Environment is specified in this document. Its base inter-face ISimulator allows accessing both the simulation services and the models, but the simu-lation environment also has to provide a publication mechanism to the models. See section 3.6 for details on Simulation Environments.