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 3A
25 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:

  1. The SMP Metamodel, also called Simulation Model Definition Language (SMDL).
  2. 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.