This attribute gives the size of this dimension of the array as a fixed, unchangeable number.
+diff --git a/static/docs/main/images/image27.png b/static/docs/main/images/image27.png index 1c0166e..501032b 100644 Binary files a/static/docs/main/images/image27.png and b/static/docs/main/images/image27.png differ diff --git a/static/docs/main/images/image38.png b/static/docs/main/images/image38.png index 8255138..7274654 100644 Binary files a/static/docs/main/images/image38.png and b/static/docs/main/images/image38.png differ diff --git a/static/docs/main/images/image49.png b/static/docs/main/images/image49.png index 5e5b44e..9213fcc 100644 Binary files a/static/docs/main/images/image49.png and b/static/docs/main/images/image49.png differ diff --git a/static/docs/main/images/image53.png b/static/docs/main/images/image53.png index 70a6afb..4336aad 100644 Binary files a/static/docs/main/images/image53.png and b/static/docs/main/images/image53.png differ diff --git a/static/docs/main/images/image54.png b/static/docs/main/images/image54.png index 988699e..ff43e21 100644 Binary files a/static/docs/main/images/image54.png and b/static/docs/main/images/image54.png differ diff --git a/static/docs/main/images/image55.png b/static/docs/main/images/image55.png index d6e1df7..cf3fd59 100644 Binary files a/static/docs/main/images/image55.png and b/static/docs/main/images/image55.png differ diff --git a/static/docs/main/images/image59.png b/static/docs/main/images/image59.png index 43583af..2a5a21e 100644 Binary files a/static/docs/main/images/image59.png and b/static/docs/main/images/image59.png differ diff --git a/static/docs/main/images/image60.png b/static/docs/main/images/image60.png new file mode 100644 index 0000000..6e3ec7c Binary files /dev/null and b/static/docs/main/images/image60.png differ diff --git a/static/docs/main/images/image61.png b/static/docs/main/images/image61.png new file mode 100644 index 0000000..64da0bb Binary files /dev/null and b/static/docs/main/images/image61.png differ diff --git a/static/docs/main/index.html b/static/docs/main/index.html index 66b079c..ca40df0 100644 --- a/static/docs/main/index.html +++ b/static/docs/main/index.html @@ -586,8 +586,8 @@
These XML elements choices are common to multiple file formats. -They are used inside elements to select one of multiple child elements.
+These XML element choices and sequences are common to multiple file formats. +They are used inside elements to select one of multiple child elements, or provide common sequence content.
A System Structure Description describes a nested hierarchy of interconnected (sub-)systems and atomic components.
-A System Structure Description file (SSD, file extension .ssd) MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureDescription XML Schema distributed as part of this standard. -The file MUST use the UTF-8 encoding. -All SSD-specific elements live in the http://ssp-standard.org/SSP1/SystemStructureDescription namespace, nicknamed ssd.
--
The root element of an SSD file MUST be a SystemStructureDescription element, which gives overall information about the system hierarchy described in this SSD file, including common meta-data, and acts as a bracket for the root system and its unit and enumeration definitions.
+
Attribute | -Description | -
---|---|
version |
-This required attribute specifies the version of this specification that the system description conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0. |
-
name |
-This required attribute provides a name, which can be used for purposes of presenting the system structure to the user, for example when selecting individual variant SSDs from an SSP. |
-
The following XML child elements are specified for the SystemStructureDescription element:
+The Dimension element is used to specify the dimensions of array connectors, signal dictionary entries, or parameter values.
System |
-This required element specifies the root system of the model, see section 5.3. |
-||
Enumerations |
-This optional element MUST contain definitions for all enumerations referenced in the system description file. See section 4.4.1 for its definition. |
-||
Units |
-This optional element MUST contain definitions for all units referenced in the system description file. See section 4.4.2 for its definition. |
-||
DefaultExperiment |
-This optional element MAY contain information of a default simulation setup that is supplied with the system definition for informational purposes, see description below. |
+Dimension |
+One or more instances of this element CAN be present to specify the dimensions of the containing model element. If no instances are present, the containing model element is scalar. See below for details. |
The root system of the model is specified through the required System element, see section 5.3.
-Any enumerations and units referenced in the system description file MUST be provided through the optional Enumerations and Units elements, as described in sections 4.4.1 and 4.4.2 respectively.
+
+
This element specifies one dimension of a potentially multi-dimensional array connector, signal dictionary entry, or parameter value (modeling element). +If no dimension elements are present in a modeling element, it is a scalar modeling element. +The number of dimension elements in a modeling element provides the dimensionality of the array.
This element contains information of a default simulation setup that is supplied with the system definition for informational purposes.
+For connector elements, either the size or the sizeConnector attributes CAN be present on the element, indicating a fixed size, or a size that depends on the structural parameter or constant referenced by the sizeConnector attribute. +If none of the attributes are present, then the size of the dimension is unspecified at the SSD level. +It is considered an error if both attributes are present.
[ Note that in contrast to FMI 2.0 only start and stop time are specified here, since values like step size or tolerance depend on the specific solver or master algorithms employed and are hence not specified in this global element. -Additional solver or master algorithm specific information can be supplied through the annotation mechanism, or using a future layered standard. ]
+For signal dictionary and parameter value elements, only the size attribute can be used and therefore MUST be present on the element, indicating a fixed size. +For those elements, it is considered an error if both attributes are present, or the size attribute is not present.
[ The handling of systems comprising components with differing units for the independent variable depends on the implementation. -It should be noted that since FMI 2.0 the unit of the independent variable for FMUs is clearly specified: It defaults to seconds, however other units can be specified by explicitly defining the independent variable. -This standard does not specify additional measures to deal with differing independent variable units, but leaves this to the implementation. ]
+The following XML attributes are specified for the Dimension element:
startTime |
-This optional attribute gives the start time of the simulation. |
+size |
+
+ This attribute gives the size of this dimension of the array as a fixed, unchangeable number. + |
stopTime |
-This optional attribute gives the stop time of the simulation. |
-
sizeConnector
This attribute references another connector by name, that gives the size of this dimension of the array connector, e.g. a structural parameter or a constant of the underlying component that gives the dimension size.
+A System Structure Description describes a nested hierarchy of interconnected (sub-)systems and atomic components.
A System Structure Description file (SSD, file extension .ssd) MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureDescription XML Schema distributed as part of this standard. +The file MUST use the UTF-8 encoding. +All SSD-specific elements live in the http://ssp-standard.org/SSP1/SystemStructureDescription namespace, nicknamed ssd.
System, Component and SignalDictionaryReference XML elements are subtypes of a common TElement base type, that contains attributes and XML elements common to all kinds of model elements:
+
+
The root element of an SSD file MUST be a SystemStructureDescription element, which gives overall information about the system hierarchy described in this SSD file, including common meta-data, and acts as a bracket for the root system and its unit and enumeration definitions.
+The following XML attributes are specified for the TElement type:
+|Attribute |Description +|version |This required attribute specifies the version of this specification that the system description conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0. +|name |This required attribute provides a name, which can be used for purposes of presenting the system structure to the user, for example when selecting individual variant SSDs from an SSP.
Attribute | -Description | -|
---|---|---|
name |
-This required attribute gives the model element a name, which is used to identify the model element inside its parent system. The name MUST be unique within the directly enclosing parent system. The name MUST NOT be the empty string. |
+The following XML child elements are specified for the SystemStructureDescription element: +[width="100%",cols="23%,77%",options="header",] |
The following XML child elements are specified for the TElement type:
+|Element |Description +|System |This required element specifies the root system of the model, see section 5.3. +|Enumerations |This optional element MUST contain definitions for all enumerations referenced in the system description file. See section 4.4.1 for its definition. +|Units |This optional element MUST contain definitions for all units referenced in the system description file. See section 4.4.2 for its definition. +|DefaultExperiment |This optional element MAY contain information of a default simulation setup that is supplied with the system definition for informational purposes, see description below.
Element | -Description | -|
---|---|---|
Connectors |
-This optional element specifies the set of connectors of this model element, which represent the interface of the model element to the outside world. See below for details. |
+The root system of the model is specified through the required System element, see section 5.3. +Any enumerations and units referenced in the system description file MUST be provided through the optional Enumerations and Units elements, as described in sections 4.4.1 and 4.4.2 respectively. +==== Default Experiment ++ This element contains information of a default simulation setup that is supplied with the system definition for informational purposes. +[ Note that in contrast to FMI 2.0 only start and stop time are specified here, since values like step size or tolerance depend on the specific solver or master algorithms employed and are hence not specified in this global element. +Additional solver or master algorithm specific information can be supplied through the annotation mechanism, or using a future layered standard. ] +[ The handling of systems comprising components with differing units for the independent variable depends on the implementation. +It should be noted that since FMI 2.0 the unit of the independent variable for FMUs is clearly specified: It defaults to seconds, however other units can be specified by explicitly defining the independent variable. +This standard does not specify additional measures to deal with differing independent variable units, but leaves this to the implementation. ] +[width="100%",cols="28%,72%",options="header",] |
|Attribute |Description +|startTime |This optional attribute gives the start time of the simulation. +|stopTime |This optional attribute gives the stop time of the simulation.
+ElementGeometry |
-This optional element defines the geometry information of the component. See below for details. |
+=== Common Model Element Type +System, Component and SignalDictionaryReference XML elements are subtypes of a common TElement base type, that contains attributes and XML elements common to all kinds of model elements: ++ The following XML attributes are specified for the TElement type: +[width="100%",cols="28%,72%",options="header",] |
|Attribute |Description +|name |This required attribute gives the model element a name, which is used to identify the model element inside its parent system. The name MUST be unique within the directly enclosing parent system. The name MUST NOT be the empty string.
+ParameterBindings |
-This optional element specifies the set of parameter bindings of this model element. See below for details. |
+The following XML child elements are specified for the TElement type: +[width="100%",cols="23%,77%",options="header",] |
+
|Element |Description +|Connectors |This optional element specifies the set of connectors of this model element, which represent the interface of the model element to the outside world. See below for details. +|ElementGeometry |This optional element defines the geometry information of the component. See below for details. +|ParameterBindings |This optional element specifies the set of parameter bindings of this model element. See below for details.
This optional element specifies the set of connectors of this model element, which represent the interface of the model element to the outside world. +
==== Connectors ++ This optional element specifies the set of connectors of this model element, which represent the interface of the model element to the outside world. For components the set of connectors MUST match variables/ports of the underlying component implementation, e.g., for referenced FMI 2.0 FMUs, the name of a connector has to match the name attribute of the corresponding <ScalarVariable> element; for referenced FMUs that follow the OSI Sensor Model Packaging specification [OSMP120], the name of a connector of type Binary has to match the name attribute of the corresponding <osmp:osmp-binary-variable>. For FMI 3.0 FMUs, the connector name has to match either the name of the corresponding variable element, or one of its <Alias> elements. - -
-
-Names of variable elements of an FMU might follow the “Variable Naming Conventions” specification as defined by the FMI standard. + Names of variable elements of an FMU might follow the “Variable Naming Conventions” specification as defined by the FMI standard. Hence, several ScalarVariables might be grouped as a structure or an array. However, the name of a connector MUST match the name of a single <ScalarVariable>. -
-
+Note that there is no requirement that connectors have to be present for all variables/ports of an underlying component implementation. + Note that there is no requirement that connectors have to be present for all variables/ports of an underlying component implementation. At least those connectors MUST be present which are referenced in connections inside the SSD. [ Note that connectors do not have to be referenced in connections. Unreferenced connectors will yield the behavior that is specified for the underlying component variables/ports, e.g. an unconnected FMU input variable will remain at its default value during the whole simulation. The same is true for variables/ports that are not referenced through a connector at all. ] -+ The following XML attributes are specified for the Connector element: +[width="100%",cols="28%,72%",options="header",] |
+
+
|Attribute |Description +|name a| +This attribute gives the connector a name, which SHALL be unique within the given model element, and, for components, MUST match the name of a relevant variable/port in the underlying component implementation. In the case of referenced FMUs this MUST match the name of the relevant variable or alias in the referenced FMU.
The following XML attributes are specified for the Connector element:
-Attribute | -Description | -
---|---|
name |
-
-
This attribute gives the connector a name, which SHALL be unique within the given model element, and, for components, MUST match the name of a relevant variable/port in the underlying component implementation. In the case of referenced FMUs this MUST match the name of the relevant variable or alias in the referenced FMU. +Note that there is no requirement that connectors have to be present for all variables/ports of an underlying component implementation. At least those connectors MUST be present which are referenced in connections inside the SSD.
- Note that there is no requirement that connectors have to be present for all variables/ports of an underlying component implementation. At least those connectors MUST be present which are referenced in connections inside the SSD. - |
-
kind |
-
-
This attribute specifies the kind of the given connector, which indicates whether the connector is an input, an output, both (inout), a local variable, a constant, a parameter, a calculated parameter (i.e. a parameter that is calculated by the component during initialization), or a structural parameter (i.e. a parameter that can be set during (re-)configuration mode). +|kind a| +This attribute specifies the kind of the given connector, which indicates whether the connector is an input, an output, both (inout), a local variable, a constant, a parameter, a calculated parameter (i.e. a parameter that is calculated by the component during initialization), or a structural parameter (i.e. a parameter that can be set during (re-)configuration mode). For components this MUST match the related kind of the underlying component implementation. @@ -2463,1249 +2359,561 @@ 5.2.1. ConnectorsFor SignalDictionaryReferences, the kind of a given connector can additionally be inout, which indicates that the semantics of the connector are derived from the connections going to the connector. This can be used for example to allow a connector to function as both an input and output within the same SignalDictionaryReference. - |
-
The following XML child elements are specified for the Connector element:
Element | -Description | -|
---|---|---|
Real / Float64 / Float32 / |
-Exactly one of these elements CAN be present to specify the type of the Connector. See 4.5.1 Type Choice for details. |
-|
ConnectorGeometry |
-This optional element defines the geometry information of the connector. See below for details. |
+The following XML child elements are specified for the Connector element: +[width="100%",cols="23%,77%",options="header",] |
The type of the Connector is identified by the presence of one of the XML child elements Real, Float64, Float32, Integer, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Boolean, String, Enumeration, or Binary.
--
This optional XML element gives the geometry information of the connector. -Note that x and y coordinates are in a special coordinate system, where 0,0 is the lower-left corner of the containing model element, and 1,1 is the upper-right corner of the model element, regardless of aspect ratio.
-For systems the placement of connectors for the inside and outside view of the system is identical, the special coordinate system is just translated to different actual coordinate systems, namely the one determined by the ElementGeometry for the outside view, and the one determined by SystemGeometry for the inside view.
-If defined, this ConnectorGeometry overrides any ConnectorGeometry of a System in a referenced SSD file or any port location defined by an .fmu file (as defined in the relevant FMI standards).
+|Element |Description
+|Real / Float64 / Float32 /
+Integer / Int8 / UInt8 / Int16 / UInt16 /
+Int32 / UInt32 / Int64 / UInt64 /
+Boolean / String / Enumeration / Binary |Exactly one of these elements CAN be present to specify the type of the Connector. See Section 4.5.1 for details.
+|Dimension |One or more of these optional elements specify the connector array dimensions, making the connector an array connector. See Section 4.5.3 for details.
+|ConnectorGeometry |This optional element defines the geometry information of the connector. See below for details.
Attribute | -Description | -|
---|---|---|
x |
-Required attribute giving the x coordinate of the connector inside the special coordinate system. |
-|
y |
-Required attribute giving the y coordinate of the connector inside the special coordinate system. |
+The type of the Connector is identified by the presence of one of the XML child elements Real, Float64, Float32, Integer, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Boolean, String, Enumeration, or Binary. +The dimensionality of the Connector is given by the presence of one or more Dimension elements. +===== ConnectorGeometry ++ This optional XML element gives the geometry information of the connector. +Note that x and y coordinates are in a special coordinate system, where 0,0 is the lower-left corner of the containing model element, and 1,1 is the upper-right corner of the model element, regardless of aspect ratio. +For systems the placement of connectors for the inside and outside view of the system is identical, the special coordinate system is just translated to different actual coordinate systems, namely the one determined by the ElementGeometry for the outside view, and the one determined by SystemGeometry for the inside view. +If defined, this ConnectorGeometry overrides any ConnectorGeometry of a System in a referenced SSD file or any port location defined by an .fmu file (as defined in the relevant FMI standards). +[width="100%",cols="28%,72%",options="header",] |
[ Graphical example for a ConnectorGeometry: +
|Attribute |Description +|x |Required attribute giving the x coordinate of the connector inside the special coordinate system. +|y |Required attribute giving the y coordinate of the connector inside the special coordinate system.
+[ Graphical example for a ConnectorGeometry: ] - - - -
- 5.2.2. ElementGeometry-
-
--
-
-This optional XML element defines the geometry information of the model element, where (x1,y1) and (x2,y2) define the positions of the lower-left and upper-right corners of the model element in the coordinate system of its parent system. + ==== ElementGeometry ++ This optional XML element defines the geometry information of the model element, where (x1,y1) and (x2,y2) define the positions of the lower-left and upper-right corners of the model element in the coordinate system of its parent system. If x1>x2 this indicates horizontal flipping, y1>y2 indicates vertical flipping. -
-
-The optional attribute rotation (in degrees) defines an additional rotation (applied after flipping), where positive numbers indicate a counter clockwise rotation. -
-
-[Sometimes such a counter clockwise orientation is also called a left rotation (x→y), with the coordinate system orientation: x → right, y → up)] -
-
-The optional attribute iconSource defines an icon URI with the same semantics as for the source attribute of the Component element. + The optional attribute rotation (in degrees) defines an additional rotation (applied after flipping), where positive numbers indicate a counter clockwise rotation. +[Sometimes such a counter clockwise orientation is also called a left rotation (x→y), with the coordinate system orientation: x → right, y → up)] +The optional attribute iconSource defines an icon URI with the same semantics as for the source attribute of the Component element. If defined, this icon overrides any icon that may be defined in an .fmu file (as defined in the relevant FMI standards). It is RECOMMENDED that implementations that support graphical presentation support at least PNG and SVG file formats for the icon. -
-
+The optional attribute iconRotation defines the rotation (in degrees) of the icon. + The optional attribute iconRotation defines the rotation (in degrees) of the icon. The optional attribute iconFixedAspectRatio defines whether the icon shall be fit into the extent defined by (x1,y1), (x2,y2) and iconRotation with fixed aspect ratio. The optional attribute iconFlip defines whether any flipping indicated by (x1,y1), (x2,y2) shall be applied to the icon graphics, too. -[If no explicit icon is given, the icon used by the tool to represent the system should be rotated accordingly.] +[width="100%",cols="28%,72%",options="header",] |
+
[If no explicit icon is given, the icon used by the tool to represent the system should be rotated accordingly.]
+|Attribute |Description +|x1 |Required attribute giving the x coordinate of the lower left corner of the model element inside the coordinate system of its parent system. +|y1 |Required attribute giving the y coordinate of the lower left corner of the model element inside the coordinate system of its parent system. +|x2 |Required attribute giving the x coordinate of the upper right corner of the model element inside the coordinate system of its parent system. +|y2 |Required attribute giving the y coordinate of the upper right corner of the model element inside the coordinate system of its parent system. +|rotation |Optional attribute defines an additional rotation in degrees that is to be applied after any flipping, where positive numbers indicate left rotation (x→y). +|iconSource |Optional attribute defines an icon URI with the same semantics as for the source attribute of the Component element. If defined, this icon overrides any icon that may be defined in an .fmu file (as specified in the relevant FMI standards). It is RECOMMENDED that implementations that support graphical presentation support at least PNG and SVG file formats for the icon. +|iconRotation |Optional attribute defines the rotation (in degrees) of the icon, where positive numbers indicate left rotation (x→y). +|iconFlip |Optional attribute defines whether any flipping indicated by (x1,y1), (x2,y2) shall be applied to the icon graphics, too, or not. +|iconFixedAspectRatio |Optional attribute defines whether the icon shall be fit into the extent defined by (x1,y1), (x2,y2) with a fixed aspect ratio, or without keeping the aspect ratio fixed.
Attribute | -Description | -
---|---|
x1 |
-Required attribute giving the x coordinate of the lower left corner of the model element inside the coordinate system of its parent system. |
-
y1 |
-Required attribute giving the y coordinate of the lower left corner of the model element inside the coordinate system of its parent system. |
-
x2 |
-Required attribute giving the x coordinate of the upper right corner of the model element inside the coordinate system of its parent system. |
-
y2 |
-Required attribute giving the y coordinate of the upper right corner of the model element inside the coordinate system of its parent system. |
-
rotation |
-Optional attribute defines an additional rotation in degrees that is to be applied after any flipping, where positive numbers indicate left rotation (x→y). |
-
iconSource |
-Optional attribute defines an icon URI with the same semantics as for the source attribute of the Component element. If defined, this icon overrides any icon that may be defined in an .fmu file (as specified in the relevant FMI standards). It is RECOMMENDED that implementations that support graphical presentation support at least PNG and SVG file formats for the icon. |
-
iconRotation |
-Optional attribute defines the rotation (in degrees) of the icon, where positive numbers indicate left rotation (x→y). |
-
iconFlip |
-Optional attribute defines whether any flipping indicated by (x1,y1), (x2,y2) shall be applied to the icon graphics, too, or not. |
-
iconFixedAspectRatio |
-Optional attribute defines whether the icon shall be fit into the extent defined by (x1,y1), (x2,y2) with a fixed aspect ratio, or without keeping the aspect ratio fixed. |
-
[ Graphical example for an ElementGeometry: +
[ Graphical example for an ElementGeometry: ]
- -[The next examples show the effects of attributes of the ElementGeometry on the visual representation of a reference element:
-*Non-transformed reference* (icon fills rectangle, left 2 inputs, right 1 output)
--
Coordinate systems:
-Red: ConnectorGeometry [The next examples show the effects of attributes of the ElementGeometry on the visual representation of a reference element: *Non-transformed reference* (icon fills rectangle, left 2 inputs, right 1 output)
+ Coordinate systems: Red: ConnectorGeometry
+
Blue: ElementGeometry
*Example 1: No flip* (x1<x2, y1<y2), rotation=0 *Example 1: No flip* (x1<x2, y1<y2), rotation=0
+
iconRotation=0, iconFixedAspectRatio=true, iconFlip=IGNORED (relevant only if element is flipped)
-
*Example 2: No flip* (x1<x2, y1<y2), rotation=0
+ *Example 2: No flip* (x1<x2, y1<y2), rotation=0
+
iconRotation=0, iconFixedAspectRatio=false, iconFlip=IGNORED
-
_
-_
*Example 3: No flip* (x1<x2, y1<y2), rotation=ϕ
+ _ *Example 3: No flip* (x1<x2, y1<y2), rotation=ϕ
+
+
iconRotation=ϕ, iconFixedAspectRatio=true, iconFlip=IGNORED
-
*Example 4: No flip* (x1<x2, y1<y2), rotation=ϕ
+ *Example 4: No flip* (x1<x2, y1<y2), rotation=ϕ
+
iconRotation=ϕ, iconFixedAspectRatio=false, iconFlip=IGNORED
-
_
-_
*Example 5: No flip* (x1<x2, y1<y2), rotation=ϕ
+
+
+
*Example 5: No flip* (x1<x2, y1<y2), rotation=ϕ
iconRotation=0, iconFixedAspectRatio=true, iconFlip=IGNORED
-
*Example 6: No flip* (x1<x2, y1<y2), rotation=ϕ
+ *Example 6: No flip* (x1<x2, y1<y2), rotation=ϕ
+
iconRotation=0, iconFixedAspectRatio=false, iconFlip=IGNORED
-
_
+
+
_
_
*Example 7: Horizontal flip* (x1>x2), rotation=ϕ *Example 7: Horizontal flip* (x1>x2), rotation=ϕ
+
iconRotation=ϕ, iconFixedAspectRatio=true, iconFlip=true
-
*Example 8: Horizontal flip* (x1>x2), rotation=ϕ
+ *Example 8: Horizontal flip* (x1>x2), rotation=ϕ
+
iconRotation=ϕ, iconFixedAspectRatio=false, iconFlip=false
-
*Example 9: Horizontal flip* (x1>x2), rotation=ϕ
+ *Example 9: Horizontal flip* (x1>x2), rotation=ϕ
+
iconRotation=ϕ, iconFixedAspectRatio=true, iconFlip=false
-
_
+
+
_
_
*Example 10: Vertical flip* (y1>y2), rotation=0 *Example 10: Vertical flip* (y1>y2), rotation=0
+
iconRotation=0, iconFixedAspectRatio=true, iconFlip=false
-
*Example 11: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=0
+ *Example 11: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=0
+
iconRotation=0, iconFixedAspectRatio=true, iconFlip=false
-
*Example 12: Horizontal and vertical flip* (x1>x2, y1>y2)*, *rotation=0
+ *Example 12: Horizontal and vertical flip* (x1>x2, y1>y2), *rotation=0
+
iconRotation=0, iconFixedAspectRatio=true, iconFlip=true
-
_
-_
*Example 13: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=ϕ
+ *
+
+
*Example 13: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=ϕ
iconRotation=ϕ, iconFixedAspectRatio=true, iconFlip=true
-
*Example 14: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=ϕ
+ *Example 14: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=ϕ
+
iconRotation=ϕ, iconFixedAspectRatio=false, iconFlip=true
-
*Example 15: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=ϕ
+ *Example 15: Horizontal and vertical flip* (x1>x2, y1>y2), rotation=ϕ
+
iconRotation=ϕ, iconFixedAspectRatio=true, iconFlip=false
-
]
--
The ParameterBindings element provides the parameter bindings for a component or system, where each binding is specified in a ParameterBinding element. +
+
]
+==== ParameterBindings
++
The ParameterBindings element provides the parameter bindings for a component or system, where each binding is specified in a ParameterBinding element. A parameter binding applies a set of parameter values (a parameter set), supplied by a parameter source (for example a parameter file) to parametrize a component or system.
-For FMU components this allows the parametrization of the FMU’s parameters, structural parameters, and start values of other variables. +
For FMU components this allows the parametrization of the FMU’s parameters, structural parameters, and start values of other variables. For systems this allows the parametrization of complete (sub-)hierarchies of sub-systems and components using a hierarchical naming scheme.
-When no parameter mapping is specified as part of the binding, then all the parameter values provided by the parameter source are applied using their original names. +
When no parameter mapping is specified as part of the binding, then all the parameter values provided by the parameter source are applied using their original names. If a parameter matching this name is found in the system, the parameter value is applied. Otherwise that parameter value is ignored.
-When a parameter mapping is specified as part of the binding, then only the mapped parameter values are applied, using their mapped-to names. +
When a parameter mapping is specified as part of the binding, then only the mapped parameter values are applied, using their mapped-to names. Non-mapped parameter values are not applied in this case.
-For FMU components parameter values are applied to FMU variables based on the variables’ names in the FMU, i.e. it is not required (but allowed) that those variables are referenced in connectors in the system description.
-For systems parameter values are applied using the hierarchical names of parameters or other variables in the system.
-The hierarchical names of the parameters or other variables of a system are formed in the following way:
-Any variables of the system exposed through connectors of the system have the name of the connector as their name.
-For all elements of the system, the hierarchical names of the variables of those elements are formed by prepending the element name and a dot to the hierarchical names of the variables in that element.
-[ For example for a system A containing a system B which contains an exposed parameter named SP1 and an element C with a parameter P2, the hierarchical names of the parameters in system A are B.SP1 and B.C.P2 respectively.
+ For FMU components parameter values are applied to FMU variables based on the variables’ names in the FMU, i.e. it is not required (but allowed) that those variables are referenced in connectors in the system description. For systems parameter values are applied using the hierarchical names of parameters or other variables in the system. The hierarchical names of the parameters or other variables of a system are formed in the following way: * Any variables of the system exposed through connectors of the system have the name of the connector as their name.
+* For all elements of the system, the hierarchical names of the variables of those elements are formed by prepending the element name and a dot to the hierarchical names of the variables in that element. [ _For example for a system A containing a system B which contains an exposed parameter named SP1 and an element C with a parameter P2, the hierarchical names of the parameters in system A are B.SP1 and B.C.P2 respectively.
The hierarchical name of those parameters inside system B are SP1 and C.P2 respectively.
Note that the hierarchical names of parameters or other variables do not have to be unique: If two or more variables end up with the same hierarchical name (due to so-called punning), then any parameter values being applied to that name MUST be applied to all of them. +
Note that the hierarchical names of parameters or other variables do not have to be unique: If two or more variables end up with the same hierarchical name (due to so-called punning), then any parameter values being applied to that name MUST be applied to all of them. If this is not wanted, then it is up to the generating implementation to ensure that no punning occurs, through proper choice of system and element names.
-[ For example, for a system A containing a system B with component C and variable D, and system A also containing a component called B.C and variable D, both variables will have the hierarchical name A.B.C.D. If this is not wanted, then proper care should be taken in naming component B.C and system B/component C in non-conflicting ways.
+ [ For example, for a system A containing a system B with component C and variable D, and system A also containing a component called B.C and variable D, both variables will have the hierarchical name A.B.C.D. If this is not wanted, then proper care should be taken in naming component B.C and system B/component C in non-conflicting ways.
The standard allows such punning, because the ability to have a . in the name of systems or components allows for example the replacement of a monolithic component with a system of components, or vice-versa, while keeping parameter names identical. ]
More than one ParameterBinding can be supplied. +
More than one ParameterBinding can be supplied. In this case all of the parameters found will be used to parametrize the component, with parameter values in ParameterBinding sources appearing at a succeeding position in the element order taking priority over prior sources at the same hierarchy level, should a parameter be included in more than one ParameterBinding source.
-When ParameterBinding sources on multiple levels of the hierarchy supply values for the same parameter, bindings at a higher hierarchy level take precedence over lower levels, i.e. bindings at a system level take precedence over bindings at a sub-system or component level.
-Parameter bindings for FMU components can be used to set any initial values in the FMU which are legal to change. +
When ParameterBinding sources on multiple levels of the hierarchy supply values for the same parameter, bindings at a higher hierarchy level take precedence over lower levels, i.e. bindings at a system level take precedence over bindings at a sub-system or component level.
+Parameter bindings for FMU components can be used to set any initial values in the FMU which are legal to change. It is assumed that the parameterization is applied prior to initializing for FMI 1.0, or before entering initialization mode for FMI 2.0/3.0. For structural parameters it is assumed that the parameterization is applied in configuration mode for FMI 3.0.
-This means that variables eligible for parameterization are those with:
+* either causality = "input" or a start value for FMI 1.0 +* variability != "constant" and initial = "exact" or "approx" for FMI 2.0
+All kinds of system connectors can be parameterized. +In case the system level connectors are connected to FMU components, the parameterization MUST be compatible with the variable in the connected FMU.
+Parameter bindings that apply to a component that references another SSD/SSP are handled as if the top-level system of the SSD/SSP was present in the enclosing system instead of the component with one special case: Any parameter bindings in the component are treated as if they were present in the top-level system of the SSP/SSD after all parameter bindings of the system. +Therefore they take priority over any of the existing parameter bindings (for parameters with identical names).
+[width="100%",cols="28%,72%",options="header",]
This means that variables eligible for parameterization are those with:
+|Attribute |Description +|type |Optional attribute giving the MIME type of the parameter source, which defaults to application/x-ssp-parameter-set to indicate the SSP parameter set file format. No further types are currently defined, but can of course be added at a later date, for pre-existing parameter file formats, like CDF, etc. +|source a| +Optional attribute indicating the source of the parameters as a URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD, if the sourceBase attribute is not specified or is specified as SSD, and the URI of the referenced component if the base attribute is specified as component.
either causality = "input" or a start value for FMI 1.0
-variability != "constant" and initial = "exact" or "approx" for FMI 2.0
-This allows the specification of parameter sources that reside inside the component (for example an FMU) through relative URIs.
All kinds of system connectors can be parameterized. -In case the system level connectors are connected to FMU components, the parameterization MUST be compatible with the variable in the connected FMU.
+If the source attribute is missing, the parameter set MUST be provided inline as contents of a ParameterValues element, which MUST NOT be present otherwise.
Parameter bindings that apply to a component that references another SSD/SSP are handled as if the top-level system of the SSD/SSP was present in the enclosing system instead of the component with one special case: Any parameter bindings in the component are treated as if they were present in the top-level system of the SSP/SSD after all parameter bindings of the system. -Therefore they take priority over any of the existing parameter bindings (for parameters with identical names).
+|sourceBase |Defines the base the source URI is resolved against: If the attribute is missing or is specified as SSD, the source is resolved against the URI of the SSD, if the attribute is specified as component the URI is resolved against the (resolved) URI of the component source. +|prefix |Defines the optional prefix for name resolution and mapping purposes for this binding. If this attribute is empty or not supplied no prefix is used for name resolution and mapping, otherwise the specified prefix is prepended to all names in the parameter source prior to processing the normal name resolution or name mapping rules. This allows the user to apply a parameter set normally intended for a component (and thus containing bare parameter names) at a system level targeted to one element of the system by supplying the name of the element plus a dot as a prefix on the binding, thus causing all parameter names in the parameter set to be treated as if they were specified with proper hierarchical names.
Attribute | -Description | -|
---|---|---|
type |
-Optional attribute giving the MIME type of the parameter source, which defaults to application/x-ssp-parameter-set to indicate the SSP parameter set file format. No further types are currently defined, but can of course be added at a later date, for pre-existing parameter file formats, like CDF, etc. |
-|
source |
-
-
-Optional attribute indicating the source of the parameters as a URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD, if the sourceBase attribute is not specified or is specified as SSD, and the URI of the referenced component if the base attribute is specified as component. -
-
-This allows the specification of parameter sources that reside inside the component (for example an FMU) through relative URIs. -
- If the source attribute is missing, the parameter set MUST be provided inline as contents of a ParameterValues element, which MUST NOT be present otherwise. - |
-|
sourceBase |
-Defines the base the source URI is resolved against: If the attribute is missing or is specified as SSD, the source is resolved against the URI of the SSD, if the attribute is specified as component the URI is resolved against the (resolved) URI of the component source. |
-|
prefix |
-Defines the optional prefix for name resolution and mapping purposes for this binding. If this attribute is empty or not supplied no prefix is used for name resolution and mapping, otherwise the specified prefix is prepended to all names in the parameter source prior to processing the normal name resolution or name mapping rules. This allows the user to apply a parameter set normally intended for a component (and thus containing bare parameter names) at a system level targeted to one element of the system by supplying the name of the element plus a dot as a prefix on the binding, thus causing all parameter names in the parameter set to be treated as if they were specified with proper hierarchical names. |
+The following XML child elements are specified for the ParameterBinding element: +[width="100%",cols="23%,77%",options="header",] |
The following XML child elements are specified for the ParameterBinding element:
+|Element |Description +|ParameterValues |This optional element can be used to provide parameter values inline to the parameter binding, in which case the source attribute of the ParameterBinding element MUST be empty. +|ParameterMapping |This optional element provides an optional parameter mapping, which specifies how the parameter names and values provided in the parameter source are to be mapped to the parameters of the component or system in question. If no mapping is supplied, the parameter names of the parameter source are used as is for name matching against the names of parameters in the component or system and the values of the parameter source are not transformed further before being applied. See below for details.
Element | -Description | -|
---|---|---|
ParameterValues |
-This optional element can be used to provide parameter values inline to the parameter binding, in which case the source attribute of the ParameterBinding element MUST be empty. |
-|
ParameterMapping |
-This optional element provides an optional parameter mapping, which specifies how the parameter names and values provided in the parameter source are to be mapped to the parameters of the component or system in question. If no mapping is supplied, the parameter names of the parameter source are used as is for name matching against the names of parameters in the component or system and the values of the parameter source are not transformed further before being applied. See below for details. |
+===== ParameterValues ++ When this element is present, its contents MUST be an ssv:ParameterSet element as specified by the SystemStructureParameterValues schema, if the type attribute of the enclosing ParameterBinding element is application/x-ssp-parameter-set, or any other valid XML content if the type attribute references another MIME type. +In that case there SHOULD be a layered specification that defines how embedding the content works for that MIME type. +===== ParameterMapping ++ This element provides a parameter mapping, which specifies how the parameter names and values provided in the parameter source are to be mapped to the parameters of the component or system in question. +If no mapping is supplied, the parameter names of the parameter source are used as is for name matching against the names of parameters in the component or system and the values of the parameter source are not transformed further before being applied. +[width="100%",cols="28%,72%",options="header",] |
+
|Attribute |Description +|type |Optional attribute giving the MIME type of the parameter mapping, which defaults to application/x-ssp-parameter-mapping to indicate the SSP parameter mapping file format. No further types are currently defined, but can of course be added at a later date. +|source a| +Optional attribute indicating the source of the parameter mapping as a URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD, if the sourceBase attribute is not specified or is specified as SSD, and the URI of the referenced component if the base attribute is specified as component.
When this element is present, its contents MUST be an ssv:ParameterSet element as specified by the SystemStructureParameterValues schema, if the type attribute of the enclosing ParameterBinding element is application/x-ssp-parameter-set, or any other valid XML content if the type attribute references another MIME type. -In that case there SHOULD be a layered specification that defines how embedding the content works for that MIME type.
-This allows the specification of parameter mapping sources that reside inside the component (for example an FMU) through relative URIs.
+
If the source attribute is missing, the parameter mapping MUST be provided inline as contents of the ParameterMapping element, which MUST be empty otherwise.
This element provides a parameter mapping, which specifies how the parameter names and values provided in the parameter source are to be mapped to the parameters of the component or system in question. -If no mapping is supplied, the parameter names of the parameter source are used as is for name matching against the names of parameters in the component or system and the values of the parameter source are not transformed further before being applied.
+|sourceBase |Defines the base the source URI is resolved against: If the attribute is missing or is specified as SSD, the source is resolved against the URI of the SSD, if the attribute is specified as component the URI is resolved against the (resolved) URI of the component source.
Attribute | -Description | -|
---|---|---|
type |
-Optional attribute giving the MIME type of the parameter mapping, which defaults to application/x-ssp-parameter-mapping to indicate the SSP parameter mapping file format. No further types are currently defined, but can of course be added at a later date. |
+The contents of the element MUST be empty if the source attribute is present. +If the source attribute is not present, the contents MUST be an ssm:ParameterMapping element, if the type attribute of this element is application/x-ssp-parameter-mapping, or any other valid XML content if the type attribute references another MIME type. +In that case there SHOULD be a layered specification that defines how embedding the content works for that MIME type. +=== System ++ This element describes a system, which can contain components, signal dictionary references and other systems as elements, connectors as an interface to the outside world, and connections connecting the connectors of itself and of its elements to one another. +The following XML child elements are specified for the System element: +[width="100%",cols="28%,72%",options="header",] |
source |
-
-
+Optional attribute indicating the source of the parameter mapping as a URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD, if the sourceBase attribute is not specified or is specified as SSD, and the URI of the referenced component if the base attribute is specified as component. - |
This allows the specification of parameter mapping sources that reside inside the component (for example an FMU) through relative URIs.
+|Element |Description +|Elements |This optional element provides the elements contained in this system, see specification below. +|Connections |This optional element provides the connections between connectors of the system, connectors of its elements and inbetween those connectors. +|SignalDictionaries |This optional element provides the set of defined signal dictionaries for the system. +|SystemGeometry |This optional element defines the extent of the system canvas for the system. +|GraphicalElements |This optional element contains the set of purely graphical elements that are contained in the system, like notes, which have no semantic impact on the system but aid in presentation of the system in graphical user interfaces.
If the source attribute is missing, the parameter mapping MUST be provided inline as contents of the ParameterMapping element, which MUST be empty otherwise.
-sourceBase |
-Defines the base the source URI is resolved against: If the attribute is missing or is specified as SSD, the source is resolved against the URI of the SSD, if the attribute is specified as component the URI is resolved against the (resolved) URI of the component source. |
+==== Elements ++ This optional element contains one or more components, signal dictionary references or systems that are the internal content of the given system. +The following XML child elements are specified for the Elements element: +[width="100%",cols="33%,67%",options="header",] |
The contents of the element MUST be empty if the source attribute is present. -If the source attribute is not present, the contents MUST be an ssm:ParameterMapping element, if the type attribute of this element is application/x-ssp-parameter-mapping, or any other valid XML content if the type attribute references another MIME type. -In that case there SHOULD be a layered specification that defines how embedding the content works for that MIME type.
--
This element describes a system, which can contain components, signal dictionary references and other systems as elements, connectors as an interface to the outside world, and connections connecting the connectors of itself and of its elements to one another.
-The following XML child elements are specified for the System element:
+|Element |Description +|Component |A component, see section 4.6. +|SignalDictionaryReference |A reference to a signal dictionary, see section 4.7. +|System |A nested system, see section 4.5.
Element | -Description | +==== Connections ++ This optional element provides the connections between connectors of the system, connectors of its elements and inbetween those connectors. ++ This element specifies a connection between two connectors, either of the system or its directly contained elements. +Note that only connections between certain kinds of connectors are allowed, as specified in section 5.3.2.1. Note also that the terms start and end in the attribute names of the connector, like startElement or endConnector, do not denote directionality of the data flow implied by the connector. +That is determined by the combination of the semantics of the actual connectors (variables/ports) connected and their kind attributes. +[width="100%",cols="30%,70%",options="header",] |
---|
|Attribute |Description +|startElement |Optional attribute giving the the name of the element that contains the connector given as startConnector. If the attribute is not present, then the startConnector names a connector on this system. +|startConnector |Required attribute giving the name of the connector that is the start of the connection. If startElement is not supplied this indicates a connector on this system, otherwise the connector is to be found on the given element. +|startIndices |Optional attribute giving the list of indices of an array connector that this connection is restricted to. If not supplied this indicates that this connection applies to the whole connector, not just a single element. +|endElement |Optional attribute giving the name of the element that contains the connector given as endConnector. If the attribute is not present, then the endConnector names a connector on this system. +|endConnector |Required attribute giving the name of the connector that is the end of the connection. If endElement is not supplied this indicates a connector on this system, otherwise the connector is to be found on the given element. +|endIndices |Optional attribute giving the list of indices of an array connector that this connection is restricted to. If not supplied this indicates that this connection applies to the whole connector, not just a single element. +|suppressUnitConversion |Optional attribute specifying whether automatic conversions between start and end connector are performed using unit information potentially available for both start and end definitions. If this attribute is supplied and its value is true, then the environment will not perform any automatic unit conversions, otherwise automatic unit conversions can be performed. This is also relevant in conjunction with the optional linear transformation supplied via the LinearTransformation element: With suppressUnitConversion = true, the linear transformation is performed instead of any unit conversions, whereas otherwise the linear transformation is performed in addition to any unit conversions.
+Elements |
-This optional element provides the elements contained in this system, see specification below. |
-
Connections |
-This optional element provides the connections between connectors of the system, connectors of its elements and inbetween those connectors. |
-
SignalDictionaries |
-This optional element provides the set of defined signal dictionaries for the system. |
-
SystemGeometry |
-This optional element defines the extent of the system canvas for the system. |
-
GraphicalElements |
-This optional element contains the set of purely graphical elements that are contained in the system, like notes, which have no semantic impact on the system but aid in presentation of the system in graphical user interfaces. |
-
-
This optional element contains one or more components, signal dictionary references or systems that are the internal content of the given system.
-The following XML child elements are specified for the Elements element:
-Element | -Description | -
---|---|
Component |
-A component, see section 4.6. |
-
SignalDictionaryReference |
-A reference to a signal dictionary, see section 4.7. |
-
System |
-A nested system, see section 4.5. |
-
-
This optional element provides the connections between connectors of the system, connectors of its elements and inbetween those connectors.
--
This element specifies a connection between two connectors, either of the system or its directly contained elements. -Note that only connections between certain kinds of connectors are allowed, as specified in section 5.3.2.1. Note also that the terms start and end in the attribute names of the connector, like startElement or endConnector, do not denote directionality of the data flow implied by the connector. -That is determined by the combination of the semantics of the actual connectors (variables/ports) connected and their kind attributes.
-Attribute | -Description | -
---|---|
startElement |
-Optional attribute giving the the name of the element that contains the connector given as startConnector. If the attribute is not present, then the startConnector names a connector on this system. |
-
startConnector |
-Required attribute giving the name of the connector that is the start of the connection. If startElement is not supplied this indicates a connector on this system, otherwise the connector is to be found on the given element. |
-
endElement |
-Optional attribute giving the name of the element that contains the connector given as endConnector. If the attribute is not present, then the endConnector names a connector on this system. |
-
endConnector |
-Required attribute giving the name of the connector that is the end of the connection. If endElement is not supplied this indicates a connector on this system, otherwise the connector is to be found on the given element. |
-
suppressUnitConversion |
-Optional attribute specifying whether automatic conversions between start and end connector are performed using unit information potentially available for both start and end definitions. If this attribute is supplied and its value is true, then the environment will not perform any automatic unit conversions, otherwise automatic unit conversions can be performed. This is also relevant in conjunction with the optional linear transformation supplied via the LinearTransformation element: With suppressUnitConversion = true, the linear transformation is performed instead of any unit conversions, whereas otherwise the linear transformation is performed in addition to any unit conversions. |
-
The following table specifies all allowed connections, depending on the owner of the connectors (connector of element or connector of the enclosing system) and the kind of the connectors being connected. +
===== Allowed connections
+The following table specifies all allowed connections, depending on the owner of the connectors (connector of element or connector of the enclosing system) and the kind of the connectors being connected. Note that source and destination in the following table indicate the resulting data flow and are unrelated to the start and end designation of a connection, as described above.
- -Implementations MUST NOT specify connections that are not of one of the allowed combinations in the following table. +
Implementations MUST NOT specify connections that are not of one of the allowed combinations in the following table. Implementations MUST ensure that data flow is specified unambiguously, including ensuring that not multiple connections with inbound data flow enter into a connector signifying an input, inout, parameter, or structuralParameter connector of an element, or a local, constant, calculatedParameter, or output connector of an enclosing system.
-It is implementation-defined whether connections between connectors of different types are allowed, and to what extent conversions are performed. +
It is implementation-defined whether connections between connectors of different types are allowed, and to what extent conversions are performed.
This includes type conversions that can be performed without data loss, e.g. converting from an output of type Float32
to an input of type Float64
or Real
, as well as conversions that can potentially lead to data loss, e.g. converting from an output of type Float64
to an input of type Float32
or Int8
.
It is also implementation-defined how and whether any error-handling at runtime is performed in those cases.
[width="100%",cols="22%,32%,21%,25%",options="header",]
|Source | |Destination | +|Owner |Kind |Owner |Kind +|System |structuralParameter |System |calculatedParameter +|System |structuralParameter |System |output +|System |structuralParameter |System |local +|System |parameter |System |calculatedParameter +|System |parameter |System |output +|System |parameter |System |local +|System |input |System |output +|System |input |System |local +|System |structuralParameter |Element |structuralParameter +|System |structuralParameter |Element |parameter +|System |structuralParameter |Element |input +|System |structuralParameter |Element |inout +|System |parameter |Element |parameter +|System |parameter |Element |input +|System |parameter |Element |inout +|System |input |Element |input +|System |input |Element |inout +|Element |constant |Element |structuralParameter +|Element |constant |Element |parameter +|Element |constant |Element |input +|Element |constant |Element |inout +|Element |calculatedParameter |Element |parameter +|Element |calculatedParameter |Element |input +|Element |calculatedParameter |Element |inout +|Element |output |Element |input +|Element |output |Element |inout +|Element |local |Element |input +|Element |local |Element |inout +|Element |inout |Element |input +|Element |constant |System |constant +|Element |constant |System |calculatedParameter +|Element |constant |System |output +|Element |constant |System |local +|Element |calculatedParameter |System |calculatedParameter +|Element |calculatedParameter |System |output +|Element |calculatedParameter |System |local +|Element |output |System |output +|Element |output |System |local +|Element |local |System |output +|Element |local |System |local +|Element |inout |System |output +|Element |inout |System |local
Source | -- | Destination | -- | |
---|---|---|---|---|
Owner |
-Kind |
-Owner |
-Kind |
-|
System |
-structuralParameter |
-System |
-calculatedParameter |
-|
System |
-structuralParameter |
-System |
-output |
-|
System |
-structuralParameter |
-System |
-local |
-|
System |
-parameter |
-System |
-calculatedParameter |
-|
System |
-parameter |
-System |
-output |
-|
System |
-parameter |
-System |
-local |
-|
System |
-input |
-System |
-output |
-|
System |
-input |
-System |
-local |
-|
System |
-structuralParameter |
-Element |
-structuralParameter |
-|
System |
-structuralParameter |
-Element |
-parameter |
-|
System |
-structuralParameter |
-Element |
-input |
-|
System |
-structuralParameter |
-Element |
-inout |
-|
System |
-parameter |
-Element |
-parameter |
-|
System |
-parameter |
-Element |
-input |
-|
System |
-parameter |
-Element |
-inout |
-|
System |
-input |
-Element |
-input |
-|
System |
-input |
-Element |
-inout |
-|
Element |
-constant |
-Element |
-structuralParameter |
-|
Element |
-constant |
-Element |
-parameter |
-|
Element |
-constant |
-Element |
-input |
-|
Element |
-constant |
-Element |
-inout |
-|
Element |
-calculatedParameter |
-Element |
-parameter |
-|
Element |
-calculatedParameter |
-Element |
-input |
-|
Element |
-calculatedParameter |
-Element |
-inout |
-|
Element |
-output |
-Element |
-input |
-|
Element |
-output |
-Element |
-inout |
-|
Element |
-local |
-Element |
-input |
-|
Element |
-local |
-Element |
-inout |
-|
Element |
-inout |
-Element |
-input |
-|
Element |
-constant |
-System |
-constant |
-|
Element |
-constant |
-System |
-calculatedParameter |
-|
Element |
-constant |
-System |
-output |
-|
Element |
-constant |
-System |
-local |
-|
Element |
-calculatedParameter |
-System |
-calculatedParameter |
-|
Element |
-calculatedParameter |
-System |
-output |
-|
Element |
-calculatedParameter |
-System |
-local |
-|
Element |
-output |
-System |
-output |
-|
Element |
-output |
-System |
-local |
-|
Element |
-local |
-System |
-output |
-|
Element |
-local |
-System |
-local |
-|
Element |
-inout |
-System |
-output |
-|
Element |
-inout |
-System |
-local |
+The following XML child elements are specified for the Connection element: +[width="100%",cols="42%,58%",options="header",] |
The following XML child elements are specified for the Connection element:
+|Element |Description +|LinearTransformation / BooleanMappingTransformation / IntegerMappingTransformation / EnumerationMappingTransformation |Specifies an optional transformation for the connection. If any, exactly one of these elements MUST be present to specify the type of the transformation. See 4.5.2 Transformation Choice for details. +|ConnectionGeometry |This optional element defines the geometry information of the connection.
Element | -Description | -|
---|---|---|
LinearTransformation / BooleanMappingTransformation / IntegerMappingTransformation / EnumerationMappingTransformation |
-Specifies an optional transformation for the connection. If any, exactly one of these elements MUST be present to specify the type of the transformation. See 4.5.2 Transformation Choice for details. |
-|
ConnectionGeometry |
-This optional element defines the geometry information of the connection. |
+===== ConnectionGeometry ++ This optional element defines the geometry information of the connection. +The start and end coordinates of the connection are derived automatically through the coordinates of the corresponding connectors. +The only relevant geometry information provided by the connection geometry is a, by default empty, list of intermediate waypoint coordinates, which are to be interpreted as for the svg:polyline primitive, i.e. as waypoints for straight line segments, with the first and last points added automatically based on the translated coordinates of the start and end connectors. +Note that x and y coordinates are in the coordinate system of the enclosing system. +[width="100%",cols="28%,72%",options="header",] |
-
This optional element defines the geometry information of the connection. -The start and end coordinates of the connection are derived automatically through the coordinates of the corresponding connectors. -The only relevant geometry information provided by the connection geometry is a, by default empty, list of intermediate waypoint coordinates, which are to be interpreted as for the svg:polyline primitive, i.e. as waypoints for straight line segments, with the first and last points added automatically based on the translated coordinates of the start and end connectors. -Note that x and y coordinates are in the coordinate system of the enclosing system.
+|Attribute |Description +|pointsX |Required attribute giving a list of x coordinates of the intermediate waypoints. +|pointsY |Required attribute giving a list of y coordinates of the intermediate waypoints.
Attribute | -Description | -
---|---|
pointsX |
-Required attribute giving a list of x coordinates of the intermediate waypoints. |
-
pointsY |
-Required attribute giving a list of y coordinates of the intermediate waypoints. |
-
[ Graphical example for a ConnectionGeometry: +
[ Graphical example for a ConnectionGeometry: ]
- - - -Signal dictionaries can be seen as a description of a collection of signals. +
==== SignalDictionaries
+Signal dictionaries can be seen as a description of a collection of signals. Such collections can also be seen as a “signal bus” (like a CAN-bus in embedded systems). One can use a signal dictionary as a specification of how a collection of signals shall look like with definition of signal names and their units during a design phase. When a large number of signals have to be handled, signal dictionaries can help to keep a system description clearly represented.
-Another benefit of signal dictionaries is the possibility to define a mapping between two or more signal dictionaries that may differ by names or units, which is a common case when components are integrated into a system that come from different sources without a common design or architecture.
-This optional element provides the set of defined signal dictionaries for the system.
-Another benefit of signal dictionaries is the possibility to define a mapping between two or more signal dictionaries that may differ by names or units, which is a common case when components are integrated into a system that come from different sources without a common design or architecture.
+This optional element provides the set of defined signal dictionaries for the system.
++
A signal dictionary is a collection of signals which can be accessed in different systems at different levels of the hierarchy through signal dictionary references referencing the signal dictionary.
+[width="100%",cols="26%,74%",options="header",]
+
|Attribute |Description +|name |Required attribute giving the signal dictionary a name, which shall be unique within the directly enclosing system. The name is used for purposes of specifying the signal dictionary referenced by a signal dictionary reference. Name lookups occur in hierarchical fashion, i.e. the name is first looked up in the system that contains a signal dictionary reference. If that lookup yields no match, the lookup is performed on the enclosing system, etc., until a match is found. It is an error if no matching signal dictionary is found. +|type |Optional attribute giving the MIME type of the signal dictionary, which defaults to application/x-ssp-signal-dictionary to indicate the SSP signal dictionary file format. No further types are currently defined, but can of course be added at a later date. +|source a| +This attribute indicates the source of the signal dictionary as a URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD.
A signal dictionary is a collection of signals which can be accessed in different systems at different levels of the hierarchy through signal dictionary references referencing the signal dictionary.
+If the source attribute is missing, the signal dictionary MUST be provided inline as contents of the SignalDictionary element, which MUST be empty otherwise. For the default type application/x-ssp-signal-dictionary such inline content MUST be a SignalDictionary from the SystemStructureSignalDictionary namespace. See section 8 for details.
Attribute | -Description | -
---|---|
name |
-Required attribute giving the signal dictionary a name, which shall be unique within the directly enclosing system. The name is used for purposes of specifying the signal dictionary referenced by a signal dictionary reference. Name lookups occur in hierarchical fashion, i.e. the name is first looked up in the system that contains a signal dictionary reference. If that lookup yields no match, the lookup is performed on the enclosing system, etc., until a match is found. It is an error if no matching signal dictionary is found. |
-
type |
-Optional attribute giving the MIME type of the signal dictionary, which defaults to application/x-ssp-signal-dictionary to indicate the SSP signal dictionary file format. No further types are currently defined, but can of course be added at a later date. |
-
source |
-
-
-This attribute indicates the source of the signal dictionary as a URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD. -
- If the source attribute is missing, the signal dictionary MUST be provided inline as contents of the SignalDictionary element, which MUST be empty otherwise. For the default type application/x-ssp-signal-dictionary such inline content MUST be a SignalDictionary from the SystemStructureSignalDictionary namespace. See section 8 for details. - |
-
-
This element defines the extent of the system canvas. (x1,y1) and (x2,y2) define the lower-left and upper-right corner, respectively. +
==== SystemGeometry
++
This element defines the extent of the system canvas. (x1,y1) and (x2,y2) define the lower-left and upper-right corner, respectively. Different from ElementGeometry, where x1 > x2 and y1 > y2 indicate flipping, x1 < x2 and y1 < y2 MUST hold here.
- -If undefined, the system canvas extent defaults to the bounding box of all ElementGeometry elements of the child elements of the system.
-When displaying the content of a sub-system together with the enclosing parent system, the transformation of co-coordinates inside the sub-system to co-ordinates in the parent system is defined by the transformation from SystemGeometry.\{x1,y1,x2,y2} to ElementGeometry.\{x1',y1',x2',y2'}, where ElementGeometry.z' is the respective coordinate of the sub-system when instantiated in the parent system after rotation.
-When importing or exporting systems, the nominal unit of the coordinates is 1 mm for all axis. +
If undefined, the system canvas extent defaults to the bounding box of all ElementGeometry elements of the child elements of the system.
+When displaying the content of a sub-system together with the enclosing parent system, the transformation of co-coordinates inside the sub-system to co-ordinates in the parent system is defined by the transformation from SystemGeometry.\{x1,y1,x2,y2} to ElementGeometry.\{x1',y1',x2',y2'}, where ElementGeometry.z' is the respective coordinate of the sub-system when instantiated in the parent system after rotation.
+When importing or exporting systems, the nominal unit of the coordinates is 1 mm for all axis. The nominal unit is intended to ensure similar visual sizing and appearances when combining systems from different implementations.
-[ The visual appearance of a length of 1 should be (roughly) 1 mm.
+ [ The visual appearance of a length of 1 should be (roughly) 1 mm.
Importing and exporting tools that support a graphical representation might use different coordinate systems.
This common unit for coordinates is defined to allow a seamless integration of SSPs from different sources.
Without such a common unit, an SSP exported in one tool might appear huge or tiny in the other tool.
Hence, the exporting tool has to scale from its own coordinate system when exporting and the importing tool has to scale to its own coordinate system when importing an SSP. ]
Attribute | -Description | -
---|---|
x1 |
-Required attribute giving the x coordinate of the lower-left corner of the system canvas. |
-
y1 |
-Required attribute giving the y coordinate of the lower-left corner of the system canvas. |
-
x2 |
-Required attribute giving the x coordinate of the upper-right corner of the system canvas. |
-
y2 |
-Required attribute giving the y coordinate of the upper-right corner of the system canvas. |
+
[ Graphical example for a SystemGeometry: - -]
-[ Graphical example showing the interplay of SystemGeometry, ElementGeometry, ConnectorGeometry, and ConnectionGeometry: - -]
-[ Example how the given Geometries can be used to transform coordinates to show elements on different hierarchy levels in a single graphic:
-Subsystem A is an element with an ElementGeometry (x1_Ae, y1_Ae, x2_Ae, y2_Ae) and a SystemGeometry (x1_As, y1_As, x2_As, y2_As).
-B is an element in subystem A with an ElementGeometry coordinates (x1_Be, y1_Be, x2_Be, y2_Be).
--
To plot the element B in the system where A is located, use the following coordinate transformation:
-x1_Be → (x1_Ae + (x1_Be - x1_As) * (x2_Ae - x1_Ae) / (x2_As - x1_As))
-y1_Be → (y1_Ae + (y1_Be - y1_As) * (y2_Ae - y1_Ae) / (y2_As - y1_As))
-x2_Be → (x1_Ae + (x2_Be - x1_As) * (x2_Ae - x1_Ae) / (x2_As - x1_As))
-y2_Be → (y1_Ae + (y2_Be - y1_As) * (y2_Ae - y1_Ae) / (y2_As - y1_As))
-]
--
This optional element contains the set of purely graphical elements that are contained in the system, like notes, which have no semantic impact on the system but aid in presentation of the system in graphical user interfaces.
-Currently the only graphical element defined is the Note element, which allows for simple textual notes to be placed into the system diagram, but in the future more elements might be added as needed for exchange of graphical information.
--
This element defines a graphical note to be placed on the canvas of the enclosing system. -It is sized using the attributes so that the coordinates (x1,y1) and (x2,y2) define the positions of the lower-left and upper-right corners of the note in the coordinate system of the parent.
-The note text is given by the text attribute. -The presentation expectation is that the text is automatically sized and wrapped in such a way that it fits the note area. -If this would lead to too small text, it might be necessary to provide an interactive method (like expanding triangle, or popup, or other means) to show the remainder of the note text. -Inside the text attribute, newlines indicate paragraph breaks.
+|Attribute |Description +|x1 |Required attribute giving the x coordinate of the lower-left corner of the system canvas. +|y1 |Required attribute giving the y coordinate of the lower-left corner of the system canvas. +|x2 |Required attribute giving the x coordinate of the upper-right corner of the system canvas. +|y2 |Required attribute giving the y coordinate of the upper-right corner of the system canvas.
Attribute | -Description | -|
---|---|---|
x1 |
-Required attribute giving the x coordinate of the lower-left corner of the note. |
-|
y1 |
-Required attribute giving the y coordinate of the lower-left corner of the note. |
-|
x2 |
-Required attribute giving the x coordinate of the upper-right corner of the note. |
-|
y2 |
-Required attribute giving the y coordinate of the upper-right corner of the note. |
+[ Graphical example for a SystemGeometry: + +] +[ Graphical example showing the interplay of SystemGeometry, ElementGeometry, ConnectorGeometry, and ConnectionGeometry: + +] +[ Example how the given Geometries can be used to transform coordinates to show elements on different hierarchy levels in a single graphic: +Subsystem A is an element with an ElementGeometry (x1_Ae, y1_Ae, x2_Ae, y2_Ae) and a SystemGeometry (x1_As, y1_As, x2_As, y2_As). +B is an element in subystem A with an ElementGeometry coordinates (x1_Be, y1_Be, x2_Be, y2_Be). ++ To plot the element B in the system where A is located, use the following coordinate transformation: +x1_Be → (x1_Ae + (x1_Be - x1_As) * (x2_Ae - x1_Ae) / (x2_As - x1_As)) +y1_Be → (y1_Ae + (y1_Be - y1_As) * (y2_Ae - y1_Ae) / (y2_As - y1_As)) +x2_Be → (x1_Ae + (x2_Be - x1_As) * (x2_Ae - x1_Ae) / (x2_As - x1_As)) +y2_Be → (y1_Ae + (y2_Be - y1_As) * (y2_Ae - y1_Ae) / (y2_As - y1_As)) +] +==== GraphicalElements ++ This optional element contains the set of purely graphical elements that are contained in the system, like notes, which have no semantic impact on the system but aid in presentation of the system in graphical user interfaces. +Currently the only graphical element defined is the Note element, which allows for simple textual notes to be placed into the system diagram, but in the future more elements might be added as needed for exchange of graphical information. +===== Note ++ This element defines a graphical note to be placed on the canvas of the enclosing system. +It is sized using the attributes so that the coordinates (x1,y1) and (x2,y2) define the positions of the lower-left and upper-right corners of the note in the coordinate system of the parent. +The note text is given by the text attribute. +The presentation expectation is that the text is automatically sized and wrapped in such a way that it fits the note area. +If this would lead to too small text, it might be necessary to provide an interactive method (like expanding triangle, or popup, or other means) to show the remainder of the note text. +Inside the text attribute, newlines indicate paragraph breaks. +[width="100%",cols="28%,72%",options="header",] |
-
A component is an atomic element of a system (i.e. its internal structure is not specified).
+|Attribute |Description +|x1 |Required attribute giving the x coordinate of the lower-left corner of the note. +|y1 |Required attribute giving the y coordinate of the lower-left corner of the note. +|x2 |Required attribute giving the x coordinate of the upper-right corner of the note. +|y2 |Required attribute giving the y coordinate of the upper-right corner of the note.
Attribute | -Description | -|
---|---|---|
type |
-Optional attribute giving the MIME type of the component, which defaults to application/x-fmu-sharedlibrary to indicate the type of the component. Valid further types are application/x-ssp-definition for system structure description files, and application/x-ssp-package for system structure package files. No further types are currently defined. |
+=== Component ++ A component is an atomic element of a system (i.e. its internal structure is not specified). +[width="100%",cols="28%,72%",options="header",] |
source |
-
- This attribute indicates the source of the component as an URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD. Therefore for components that are located alongside the SSD, relative URIs without scheme and authority CAN and SHOULD be used to specify the component sources. For components that are packaged inside an SSP that contains this SSD, this is REQUIRED (in this way, the SSD URIs remain valid after unpacking the SSP into the filesystem). + |
|Attribute |Description +|type |Optional attribute giving the MIME type of the component, which defaults to application/x-fmu-sharedlibrary to indicate the type of the component. Valid further types are application/x-ssp-definition for system structure description files, and application/x-ssp-package for system structure package files. No further types are currently defined. +|source a| +This attribute indicates the source of the component as an URI (cf. RFC 3986). For purposes of the resolution of relative URIs the base URI is the URI of the SSD. Therefore for components that are located alongside the SSD, relative URIs without scheme and authority CAN and SHOULD be used to specify the component sources. For components that are packaged inside an SSP that contains this SSD, this is REQUIRED (in this way, the SSD URIs remain valid after unpacking the SSP into the filesystem).
[ For example for an FMU called MyDemoFMU.fmu, that is located in the resources directory of an SSP, the correct URI would be resources/MyDemoFMU.fmu. ]
@@ -3721,609 +2929,409 @@[ Since the release of SSP 1.0, the need to support the exchange of system structure descriptions containing components with no specified implementation has been identified, to exchange system designs as templates, for example. Future releases of SSP will therefore likely make the source attribute optional, to support such use cases. Current practice for 1.x has been to either already treat this attribute as optional or to use the empty string value to indicate a missing implementation. Tools wanting to support these use cases should therefore be prepared to accept SSD files with missing or empty source attributes on components, and treat them like empty systems for the purposes of semantics. ]
-implementation
When the referenced component is an FMU that contains multiple implementations [ for example Co-Simulation and Model Exchange], this optional attribute can be used to determine which FMU implementation should be employed. If the attribute is missing or uses the default value any, the importing tool is free to choose what kind of FMU implementation to use. If the value is CoSimulation or ModelExchange the corresponding FMU implementation MUST be used. It is an error if the specified type of FMU implementation is not present in the FMU.
A signal dictionary reference is an element of a system that references a signal dictionary, i.e. it is the place-holder of the signal dictionary that allows access to the contents of the signal dictionary through its connectors, which MUST reference signal dictionary entries.
+|implementation |When the referenced component is an FMU that contains multiple implementations [ for example Co-Simulation and Model Exchange], this optional attribute can be used to determine which FMU implementation should be employed. If the attribute is missing or uses the default value any, the importing tool is free to choose what kind of FMU implementation to use. If the value is CoSimulation or ModelExchange the corresponding FMU implementation MUST be used. It is an error if the specified type of FMU implementation is not present in the FMU.
Attribute | -Description | -|
---|---|---|
dictionary |
-
-
-This required attribute gives the name of the signal dictionary that is to be referenced. Name lookups occur in hierarchical fashion, i.e. the name is first looked up in the system that contains a signal dictionary reference. If that lookup yields no match, the lookup is performed on the enclosing system, etc., until a match is found. -
- It is an error if no matching signal dictionary is found. - |
+=== SignalDictionaryReference ++ A signal dictionary reference is an element of a system that references a signal dictionary, i.e. it is the place-holder of the signal dictionary that allows access to the contents of the signal dictionary through its connectors, which MUST reference signal dictionary entries. +[width="100%",cols="28%,72%",options="header",] |
A System Structure Parameter Values (abbreviated SSV) element provides parameter sets for a component or system. -The XML element can be inlined with its parent element or referenced from the parent element and supplied as a separate file that is either included within an SSP package or specified as an external URL.
-For information on hierarchical naming structure and precedence rules, see section 5.2.3.
-An SSV file MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureParameterValues XML Schema that is distributed as part of this standard. -The file MUST use the UTF-8 encoding. -All SSV-specific elements live in the http://ssp-standard.org/SSP1/SystemStructureParameterValues namespace, nicknamed ssv.
-It is RECOMMENDED that the file extension .ssv be used for stand-alone SSV files. -Except for this file extension recommendation the filename is arbitrary and is independent of variant handling or the names of SSD files.
-+
|Attribute |Description +|dictionary a| +This required attribute gives the name of the signal dictionary that is to be referenced. Name lookups occur in hierarchical fashion, i.e. the name is first looked up in the system that contains a signal dictionary reference. If that lookup yields no match, the lookup is performed on the enclosing system, etc., until a match is found.
The ParameterSet element contains parameter and meta data information. -If the SSV is provided as a separate file, the root element MUST be a ParameterSet element.
+It is an error if no matching signal dictionary is found.
Attribute | -Description | -|
---|---|---|
version |
-This required attribute specifies the version of this specification that the parameter set conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0. |
-|
name |
-This required attribute provides a name which can be used for purposes of presenting the parameter set to the user. |
+== System Structure Parameter Values (SSV) +A System Structure Parameter Values (abbreviated SSV) element provides parameter sets for a component or system. +The XML element can be inlined with its parent element or referenced from the parent element and supplied as a separate file that is either included within an SSP package or specified as an external URL. +For information on hierarchical naming structure and precedence rules, see section 5.2.3. +An SSV file MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureParameterValues XML Schema that is distributed as part of this standard. +The file MUST use the UTF-8 encoding. +All SSV-specific elements live in the http://ssp-standard.org/SSP1/SystemStructureParameterValues namespace, nicknamed ssv. +It is RECOMMENDED that the file extension .ssv be used for stand-alone SSV files. +Except for this file extension recommendation the filename is arbitrary and is independent of variant handling or the names of SSD files. +=== ParameterSet ++ The ParameterSet element contains parameter and meta data information. +If the SSV is provided as a separate file, the root element MUST be a ParameterSet element. +[width="100%",cols="23%,77%",options="header",] |
The following child elements are specified for the ParameterSet element:
+|Attribute |Description +|version |This required attribute specifies the version of this specification that the parameter set conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0. +|name |This required attribute provides a name which can be used for purposes of presenting the parameter set to the user.
Element | -Description | -|
---|---|---|
Parameters |
-This required element specifies the parameters in the parameter set. See below for details. |
-|
Enumerations |
-This optional element MUST contain definitions for all enumerations referenced in the parameter set. See section 4.4.1 for its definition. |
-|
Units |
-This optional element MUST contain definitions for all units referenced in the parameter set. See section 4.4.2 for its definition. |
+The following child elements are specified for the ParameterSet element: +[width="100%",cols="23%,77%",options="header",] |
+
|Element |Description +|Parameters |This required element specifies the parameters in the parameter set. See below for details. +|Enumerations |This optional element MUST contain definitions for all enumerations referenced in the parameter set. See section 4.4.1 for its definition. +|Units |This optional element MUST contain definitions for all units referenced in the parameter set. See section 4.4.2 for its definition.
The Parameters element contains a list of individual parameters. +
=== Parameters ++ The Parameters element contains a list of individual parameters. If the list is empty, the parameter set SHALL not have any effect on any system or component it is applied to. - -
-
-It is not required that all parameters included in the Parameters element correspond to parameters available in the components or systems the parameter set is applied to (through ParameterBinding elements in the system structure description). + It is not required that all parameters included in the Parameters element correspond to parameters available in the components or systems the parameter set is applied to (through ParameterBinding elements in the system structure description). This allows the definition of large parameter data sets out of which only a subset is applied in a given case. See section 5.2.3 for the semantic defintion of parameter bindings. -
-
+- + The following XML attributes are specified for the Parameter element: +[width="100%",cols="23%,77%",options="header",] |
+
The following XML attributes are specified for the Parameter element:
+|Attribute |Description +|name |This required attribute specifies the name of the parameter in the parameter set. The name MUST be unique within the parameter set.
Attribute | -Description | -|
---|---|---|
name |
-This required attribute specifies the name of the parameter in the parameter set. The name MUST be unique within the parameter set. |
+The following XML child elements are specified for the Parameter element: +[width="100%",cols="31%,69%",options="header",] |
The following XML child elements are specified for the Parameter element:
+|Element |Description
+|Real / Float64 / Float32 /
+Integer / Int8 / UInt8 / Int16 / UInt16 /
+Int32 / UInt32 / Int64 / UInt64 /
+Boolean / String / Enumeration / Binary |Exactly one of these elements MUST be present to specify the type of the parameter. See below for details on each type.
+|Dimension |One or more of these optional elements specify the parameter array dimensions, making the parameter an array parameter. See Section 4.5.3 for details.
Element | -Description | -|
---|---|---|
Real / Float64 / Float32 / |
-Exactly one of these elements MUST be present to specify the type of the parameter. See below for details on each type. |
+The dimensionality of the parameter is given by the presence of one or more Dimension elements. +==== Real ++ This type specifies a parameter that represents an IEEE754 double precision floating point number, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents an IEEE754 double precision floating point number.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter. +|unit |This optional attribute gives the name of the unit of the parameter. The name MUST match the name of a unit defined in the Units element in the ParameterSet root element.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
-|
unit |
-This optional attribute gives the name of the unit of the parameter. The name MUST match the name of a unit defined in the Units element in the ParameterSet root element. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Float64 ++ This type specifies a parameter that represents an IEEE754 double precision floating point number, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents an IEEE754 double precision floating point number.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter. +|unit |This optional attribute gives the name of the unit of the parameter. The name MUST match the name of a unit defined in the Units element in the ParameterSet root element.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
-|
unit |
-This optional attribute gives the name of the unit of the parameter. The name MUST match the name of a unit defined in the Units element in the ParameterSet root element. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Float32 ++ This type specifies a parameter that represents an IEEE754 single precision floating point number, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents an IEEE754 single precision floating point number.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter. +|unit |This optional attribute gives the name of the unit of the parameter. The name MUST match the name of a unit defined in the Units element in the ParameterSet root element.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
-|
unit |
-This optional attribute gives the name of the unit of the parameter. The name MUST match the name of a unit defined in the Units element in the ParameterSet root element. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Integer ++ This type specifies a parameter that represents a 32-bit signed integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 32-bit signed integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Int8 ++ This type specifies a parameter that represents a 8-bit signed integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 8-bit signed integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== UInt8 ++ This type specifies a parameter that represents a 8-bit unsigned integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 8-bit unsigned integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Int16 ++ This type specifies a parameter that represents a 16-bit signed integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 16-bit signed integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== UInt16 ++ This type specifies a parameter that represents a 16-bit unsigned integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 16-bit unsigned integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Int32 ++ This type specifies a parameter that represents a 32-bit signed integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 32-bit signed integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== UInt32 ++ This type specifies a parameter that represents a 32-bit unsigned integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 32-bit unsigned integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Int64 ++ This type specifies a parameter that represents a 64-bit signed integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 64-bit signed integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== UInt64 ++ This type specifies a parameter that represents a 64-bit unsigned integer, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a 64-bit unsigned integer.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== Boolean ++ This type specifies a parameter that represents a Boolean value, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a Boolean value.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+For array parameters, values are specified as a space-separated list of values in row-major order, as specified in FMI. +==== String ++ This type specifies a parameter that represents a zero-terminated UTF-8 encoded string, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
-
This type specifies a parameter that represents a zero-terminated UTF-8 encoded string.
+|Attribute |Description +|value |This required attribute specifies the value of the parameter.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter. |
+The value of the parameter can alternatively be specified using one or more Value child elements: +[width="100%",cols="31%,69%",options="header",] |
-
This type specifies a parameter that represents an enumeration value, as specified by an enumeration definition.
+|Element |Description +|Value |One or more of these optional elements provide individual parameter values, as an alternative to the singular value attribute on the String element.
Attribute | -Description | -|
---|---|---|
value |
-This required attribute specifies the value of the parameter as the enumeration item name. Note that the actual numeric value this value is mapped to at run time will depend on the item mapping of the enumeration type of the variables being parameterized. |
+It is an error if both value attribute and Value child elements are present. +For scalar parameters, or array parameters with a single element, either way of specifying the singular value can be used. +For array parameters with more than one element, values MUST be specified as child elements, with each element providing one element value in row-major order, as specified in FMI. +==== Enumeration ++ This type specifies a parameter that represents an enumeration value, or an array of such values, as specified by an enumeration definition. +[width="100%",cols="23%,77%",options="header",] |
name |
-
- This optional attribute specifies the name of the enumeration type that the parameter references. If it is supplied, the name MUST match the name of an enumeration type defined in the Enumerations element in the ParameterSet root element. + |
|Attribute |Description +|value |This required attribute specifies the value of the parameter as the enumeration item name. Note that the actual numeric value this value is mapped to at run time will depend on the item mapping of the enumeration type of the variables being parameterized. +|name a| +This optional attribute specifies the name of the enumeration type that the parameter references. If it is supplied, the name MUST match the name of an enumeration type defined in the Enumerations element in the ParameterSet root element.
This attribute is optional; if it is not specified, then the list of valid enumeration items with their names and values is not specified, and the interpretation of the enumeration value is left solely to the variables that are being parameterized.
@@ -4333,321 +3341,233 @@[ Note: the level of consistency checking is left optional by design, since mandating consistency checking across files requires unified types across files coming potentially from different sources, which is not always realistically possible. ]
-The value of the parameter can alternatively be specified using one or more Value child elements: +[width="100%",cols="31%,69%",options="header",] |
-
This type specifies a parameter that represents a length-terminated binary data type.
+|Element |Description +|Value |One or more of these optional elements provide individual parameter values, as an alternative to the singular value attribute on the Enumeration element.
Attribute | -Description | -|
---|---|---|
value |
-This attribute gives the value of the parameter as a hex-encoded binary value. |
+It is an error if both value attribute and Value child elements are present. +For scalar parameters, or array parameters with a single element, either way of specifying the singular value can be used. +For array parameters with more than one element, values MUST be specified as child elements, with each element providing one element value in row-major order, as specified in FMI. +==== Binary ++ This type specifies a parameter that represents a length-terminated binary data type, or an array of such values. +[width="100%",cols="23%,77%",options="header",] |
|Attribute |Description +|value |This attribute gives the value of the parameter as a hex-encoded binary value. +|mime-type |This optional attribute specifies the MIME type of the underlying binary data, which defaults to the non-specific application/octet-stream type. This information can be used by the implementation to detect mismatches between binary parameters, or to provide automatic conversions between different formats. It should be noted that the implementation is not required to provide this service, i.e. it remains the responsibility of the operator to ensure only compatible binary connectors/parameters are connected.
+mime-type |
-This optional attribute specifies the MIME type of the underlying binary data, which defaults to the non-specific application/octet-stream type. This information can be used by the implementation to detect mismatches between binary parameters, or to provide automatic conversions between different formats. It should be noted that the implementation is not required to provide this service, i.e. it remains the responsibility of the operator to ensure only compatible binary connectors/parameters are connected. |
+The value of the parameter can alternatively be specified using one or more Value child elements: +[width="100%",cols="31%,69%",options="header",] |
A parameter mapping describes a mapping between the parameters in a parameter source and the actual parameters of a system or component to which the parameters are to be applied. +
|Element |Description +|Value |One or more of these optional elements provide individual parameter values, as an alternative to the singular value attribute on the Binary element.
+It is an error if both value attribute and Value child elements are present. +For scalar parameters, or array parameters with a single element, either way of specifying the singular value can be used. +For array parameters with more than one element, values MUST be specified as child elements, with each element providing one element value in row-major order, as specified in FMI. +== System Structure Parameter Mapping (SSM) +A parameter mapping describes a mapping between the parameters in a parameter source and the actual parameters of a system or component to which the parameters are to be applied. The mapping maps the names of parameters in the source to the names of the parameters in the system or component that are to be parametrized. It can also optionally provide for transformations that are to be applied on the value of the parameters prior to them being applied. - -
-
-A parameter mapping can be provided either as a stand-alone XML file (an SSM file), which can be referenced from SSD files, or it can be embedded in an ssd:ParameterMapping element of the SSD directly (see section 5.2.3.2). -
-
-An SSM file MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureParameterMapping XML Schema that is distributed as part of this standard. + A parameter mapping can be provided either as a stand-alone XML file (an SSM file), which can be referenced from SSD files, or it can be embedded in an ssd:ParameterMapping element of the SSD directly (see section 5.2.3.2). +An SSM file MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureParameterMapping XML Schema that is distributed as part of this standard. The file MUST use the UTF-8 encoding. All SSM-specific elements live in the http://ssp-standard.org/SSP1/SystemStructureParameterMapping namespace, nicknamed ssm. -
-
-It is RECOMMENDED that the file extension .ssm be used for stand-alone SSM files. + It is RECOMMENDED that the file extension .ssm be used for stand-alone SSM files. Except form this file extension recommendation the filename is arbitrary and is independent of variant handling or the names of SSD files. -
-
-The root element of an SSM file MUST be a ParameterMapping element, which contains an arbitrary number of MappingEntry elements. -
- 7.1. ParameterMapping-
-
--
- This element describes a parameter mapping, which consists of multiple mapping entries, each describing one parameter mapping (see next section). + The root element of an SSM file MUST be a ParameterMapping element, which contains an arbitrary number of MappingEntry elements. +=== ParameterMapping ++ This element describes a parameter mapping, which consists of multiple mapping entries, each describing one parameter mapping (see next section). The parameter mapping MUST contain entries for all parameters that are going to be mapped. All parameters of the parameter source which are not referenced in a mapping entry will not be applied. All parameters that are referenced in a mapping entry will only be applied using the name they are mapped to, i.e. any original name is disregarded for applying parameters. Implementations MUST NOT map multiple parameters to the same name. Implementations CAN map the same parameter to multiple names. +[width="100%",cols="23%,77%",options="header",] |
+
|Attribute |Description +|version |This required attribute specifies the version of this specification that the parameter mapping conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0.
Attribute | -Description | -|
---|---|---|
version |
-This required attribute specifies the version of this specification that the parameter mapping conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0. |
+==== MappingEntry ++ This element specifies a single mapping between a parameter in the source and a parameter of the system or component being parametrized. +Through its optional GTransformationChoice element a transformation can be specified that is to be applied to the parameter value prior to its application to its target parameter. +[width="100%",cols="30%,70%",options="header",] |
-
This element specifies a single mapping between a parameter in the source and a parameter of the system or component being parametrized. -Through its optional GTransformationChoice element a transformation can be specified that is to be applied to the parameter value prior to its application to its target parameter.
+|Attribute |Description +|source |This required attribute specifies the name of the parameter in the parameter source that is to be mapped to a new name and/or provided with a transformation in this mapping entry. +|target |This required attribute specifies the name of the parameter in the system or component that is to be parametrized, i.e. that is the target of this mapping entry. +|suppressUnitConversion |This optional attribute specifies whether automatic conversions between parameter source and its target are performed using unit information potentially available for both value and target definitions. If this attribute is supplied and its value is true, then the environment will not perform any automatic unit conversions, otherwise automatic unit conversions can be performed. This is also important in conjunction with the optional linear transformation supplied via the LinearTransformation element: With suppressUnitConversion = true, the linear transformation is performed instead of any unit conversions, whereas otherwise the linear transformation is performed in addition to any unit conversions. In that case the specified transformation will be done after any unit conversions have been performed on the value.
Attribute | -Description | -|
---|---|---|
source |
-This required attribute specifies the name of the parameter in the parameter source that is to be mapped to a new name and/or provided with a transformation in this mapping entry. |
-|
target |
-This required attribute specifies the name of the parameter in the system or component that is to be parametrized, i.e. that is the target of this mapping entry. |
-|
suppressUnitConversion |
-This optional attribute specifies whether automatic conversions between parameter source and its target are performed using unit information potentially available for both value and target definitions. If this attribute is supplied and its value is true, then the environment will not perform any automatic unit conversions, otherwise automatic unit conversions can be performed. This is also important in conjunction with the optional linear transformation supplied via the LinearTransformation element: With suppressUnitConversion = true, the linear transformation is performed instead of any unit conversions, whereas otherwise the linear transformation is performed in addition to any unit conversions. In that case the specified transformation will be done after any unit conversions have been performed on the value. |
+The following XML child elements are specified for the MappingEntry element: +[width="100%",cols="42%,58%",options="header",] |
The following XML child elements are specified for the MappingEntry element:
+|Element |Description +|LinearTransformation / BooleanMappingTransformation / IntegerMappingTransformation / EnumerationMappingTransformation |Specifies an optional transformation for the mapping. If any, exactly one of these elements MUST be present to specify the type of the transformation. See 4.5.2 Transformation Choice for details.
Element | -Description | -
---|---|
LinearTransformation / BooleanMappingTransformation / IntegerMappingTransformation / EnumerationMappingTransformation |
-Specifies an optional transformation for the mapping. If any, exactly one of these elements MUST be present to specify the type of the transformation. See 4.5.2 Transformation Choice for details. |
-
A signal dictionary is a collection of signals defined through its DictionaryEntry elements.
-A signal dictionary can be provided either as a stand-alone XML file (an SSB file), which can be referenced from SSD files, or it can be embedded in an ssd:SignalDictionary element of the SSD directly (see section 5.3.3).
-An SSB file MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureSignalDictionary XML Schema that is distributed as part of this standard. +
== System Structure Signal Dictionaries (SSB)
+A signal dictionary is a collection of signals defined through its DictionaryEntry elements.
+A signal dictionary can be provided either as a stand-alone XML file (an SSB file), which can be referenced from SSD files, or it can be embedded in an ssd:SignalDictionary element of the SSD directly (see section 5.3.3).
+An SSB file MUST be a well-formed XML 1.0 [XML10] file that conforms to the SystemStructureSignalDictionary XML Schema that is distributed as part of this standard. The file MUST use the UTF-8 encoding. All SSB-specific elements live in the http://ssp-standard.org/SSP1/SystemStructureSignalDictionary namespace, nicknamed ssb.
- -It is RECOMMENDED that the file extension .ssb be used for stand-alone SSB files. +
It is RECOMMENDED that the file extension .ssb be used for stand-alone SSB files. Except for this file extension recommendation the filename is arbitrary and is independent of variant handling or the names of SSD files.
-The root element of an SSB file MUST be a SignalDictionary element, which contains an arbitrary number of DictionaryEntry elements. +
The root element of an SSB file MUST be a SignalDictionary element, which contains an arbitrary number of DictionaryEntry elements. Any enumerations or units used in the DictionaryEntry elements MUST be declared within the Enumerations and Units child elements of the SignalDictionary.
--
=== SignalDictionary
++
This element describes a signal dictionary, which consists of one or more dictionary entries, each describing one signal in the signal dictionary (see next section).
+[width="100%",cols="23%,77%",options="header",]
This element describes a signal dictionary, which consists of one or more dictionary entries, each describing one signal in the signal dictionary (see next section).
+|Attribute |Description +|version |This required attribute specifies the version of this specification that the parameter mapping conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0.
Attribute | -Description | -|
---|---|---|
version |
-This required attribute specifies the version of this specification that the parameter mapping conforms to. Only major and minor version number are included, the patch version number MUST NOT be included in this attribute. For the current release this MUST be 1.0. |
+The following XML child elements are specified for the SignalDictionary element: +[width="100%",cols="34%,66%,",options="header",] |
The following XML child elements are specified for the SignalDictionary element:
+|Element |Description | +|DictionaryEntry |One or more entries of the signal dictionary. | +|Enumerations |This optional element MUST contain definitions for all enumerations referenced in the signal dictionary. | +|Units |This optional element MUST contain definitions for all units referenced in the signal dictionary. |
Element | -Description | -- | |
---|---|---|---|
DictionaryEntry |
-One or more entries of the signal dictionary. |
-- | |
Enumerations |
-This optional element MUST contain definitions for all enumerations referenced in the signal dictionary. |
-- | |
Units |
-This optional element MUST contain definitions for all units referenced in the signal dictionary. |
-+ | ==== DictionaryEntry ++ A dictionary entry defines a single signal in the signal dictionary. +[width="100%",cols="28%,72%",options="header",] |
-
A dictionary entry defines a single signal in the signal dictionary.
+|Attribute |Description +|name |Required attribute giving the signal dictionary entry a name, which shall be unique within the signal dictionary.
Attribute | -Description | -|
---|---|---|
name |
-Required attribute giving the signal dictionary entry a name, which shall be unique within the signal dictionary. |
+The following XML child elements are specified for the DictionaryEntry element: +[width="100%",cols="33%,67%",options="header",] |
The following XML child elements are specified for the DictionaryEntry element:
+|Element |Description
+|Real / Float64 / Float32 /
+Integer / Int8 / UInt8 / Int16 / UInt16 /
+Int32 / UInt32 / Int64 / UInt64 /
+Boolean / String / Enumeration / Binary |Exactly one of these elements MUST be present to specify the type of the signal dictionary entry. See Section 4.5.1 for details.
+|Dimension |One or more of these optional elements define the signal dictionary entry array dimensions, making the signal dictionary entry an array signal dictionary entry. See Section 4.5.3 for details.
Element | -Description | -
---|---|
Real / Float64 / Float32 / |
-Exactly one of these elements MUST be present to specify the type of the signal dictionary entry. See section 4.5.1 for details. |
-
[RFC2119] IETF: RFC 2119 - Key words for use in RFCs to Indicate Requirement Levels. IETF Best Current Practice BCP 14. 1997.
+
== Literature
+[RFC2119] IETF: RFC 2119 - Key words for use in RFCs to Indicate Requirement Levels. IETF Best Current Practice BCP 14. 1997.
https://www.ietf.org/rfc/rfc2119.txt
[ZIP635] PKWARE Inc.: APPNOTE.TXT - .ZIP File Format Specification, Version 6.3.5. 2018.
+
[ZIP635] PKWARE Inc.: APPNOTE.TXT - .ZIP File Format Specification, Version 6.3.5. 2018.
https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.5.TXT
[SV200] Preston-Werner, T.: Semantic Versioning 2.0.0. 2013.
+
[SV200] Preston-Werner, T.: Semantic Versioning 2.0.0. 2013.
https://semver.org/spec/v2.0.0.html
[XML10] World Wide Web Consortium: Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C Recommendation. 2008.
+
[XML10] World Wide Web Consortium: Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C Recommendation. 2008.
http://www.w3.org/TR/2008/REC-xml-20081126/
[FMI20] Modelica Association: Functional Mock-up Interface for Model Exchange and Co-Simulation, Version 2.0.3. 2021.
+
[FMI20] Modelica Association: Functional Mock-up Interface for Model Exchange and Co-Simulation, Version 2.0.3. 2021.
https://github.com/modelica/fmi-standard/releases/download/v2.0.3/FMI-Specification-2.0.3.pdf
[OSMP120] ASAM e.V.: OSI Sensor Model Packaging Version 1.2.0. 2021.
+https://github.com/OpenSimulationInterface/osi-sensor-model-packaging/releases/tag/v1.2.0
[OSMP120] ASAM e.V.: OSI Sensor Model Packaging Version 1.2.0. 2021.
-https://github.com/OpenSimulationInterface/osi-sensor-model-packaging/releases/tag/v1.2.0