Skip to content

Commit fc8c312

Browse files
committed
Change to unspecified connector type, add semantics
1 parent 3d4e659 commit fc8c312

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

docs/5___ssd.adoc

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ Note that there is no requirement that connectors have to be present for all var
119119
At least those connectors *MUST* be present which are referenced in connections inside the SSD.
120120

121121
|kind a|
122-
This attribute specifies the kind of the given connector, which indicates whether the connector is an input, an output, both (inout), acausal (in e.g. Modelica), 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).
122+
This attribute specifies the kind of the given connector, which indicates whether the connector is an input, an output, both (inout), unspecified, 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).
123123

124124
For components this *MUST* match the related kind of the underlying component implementation.
125125
For referenced FMUs it *MUST* match the combination of variability and causality:
@@ -138,6 +138,9 @@ However, if it is connected, the semantics are same as for an `output`.
138138
For 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.
139139
This can be used for example to allow a connector to function as both an input and output within the same SignalDictionaryReference.
140140

141+
Connectors of kind `unspecified` are used to define connectors for which the flow of information is either not yet specified, or is determined at runtime, for example for acausal connections of Modelica models.
142+
Such connectors can be connected to any other connector under the rules of the underlying modeling language.
143+
141144
|===
142145

143146
The following XML child elements are specified for the Connector element:
@@ -156,7 +159,11 @@ Boolean / String / Enumeration / Binary / Clock |Exactly one of these elements *
156159

157160
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, Binary, or Clock.
158161

159-
When Modelica models are represeented in SSP, built-in input and output connectors shall be mapped as follows.
162+
The dimensionality of the Connector is given by the presence of one or more Dimension elements.
163+
164+
The association of a connector to a clock is given by the presence of one or more Clock elements.
165+
166+
When Modelica models are represented in SSP, built-in input and output connectors shall be mapped as follows:
160167

161168
[width="100%",cols="25%,25%,50%",options="header",]
162169
|===
@@ -171,15 +178,13 @@ When Modelica models are represeented in SSP, built-in input and output connecto
171178
|StringOutput |ssc:String |output
172179
|===
173180

174-
Modelica connectors of more advanced types are mapped the same way as Modelica component models.
181+
Modelica connectors of more advanced types are currently mapped in the following way:
175182

176183
* The connector type is ssc:Binary.
177-
* The media type is "text/x-modelica" and the "path" attribute designates the path of the Modleica connector..
178-
* Acausal Modelica connector types are in SSP of kind="acausal".
184+
* The media type is `text/x-modelica` and the `path` parameter of the media type designates the path of the Modelica connector.
185+
* Acausal Modelica connector types are mapped to connectors of kind unspecified.
179186

180-
The dimensionality of the Connector is given by the presence of one or more Dimension elements.
181-
182-
The association of a connector to a clock is given by the presence of one or more Clock elements.
187+
_[ Note that the current opaque mapping of more advanced types to Binary connectors is a temporary solution, and a more detailed mapping may be provided in future versions of the standard supporting more complex data types. ]_
183188

184189
===== ConnectorGeometry
185190

@@ -551,6 +556,10 @@ Note that source and destination in the following table indicate the resulting d
551556
Implementations *MUST NOT* specify connections that are not of one of the allowed combinations in the following table.
552557
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.
553558

559+
For connectors of kind unspecified it is ultimately implementation-defined whether and how connections are allowed, as the exact semantics depend on the underlying modeling language.
560+
For the purposes of the following table, connectors of kind unspecified are treated as connectors of whatever kind is needed to make the connection allowed, i.e. they serve a wild-card role.
561+
The handling of conflicts that arise in transitive connections from conflicting wild-card assignments is implementation-defined.
562+
554563
It is implementation-defined whether connections between connectors of different types are allowed, and to what extent conversions are performed.
555564
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`.
556565
It is also implementation-defined how and whether any error-handling at runtime is performed in those cases.
@@ -576,7 +585,6 @@ For all connections of an element connector of type `Clock` to a system connecto
576585
|System |parameter |System |local
577586
|System |input |System |output
578587
|System |input |System |local
579-
|System|acausal|System|acausal
580588
|System |structuralParameter |Element |structuralParameter
581589
|System |structuralParameter |Element |parameter
582590
|System |structuralParameter |Element |input
@@ -586,7 +594,6 @@ For all connections of an element connector of type `Clock` to a system connecto
586594
|System |parameter |Element |inout
587595
|System |input |Element |input
588596
|System |input |Element |inout
589-
|System|acausal|Element|acausal
590597
|Element |constant |Element |structuralParameter
591598
|Element |constant |Element |parameter
592599
|Element |constant |Element |input
@@ -599,7 +606,6 @@ For all connections of an element connector of type `Clock` to a system connecto
599606
|Element |local |Element |input
600607
|Element |local |Element |inout
601608
|Element |inout |Element |input
602-
|Element|acausal|Element|acausal
603609
|Element |constant |System |constant
604610
|Element |constant |System |calculatedParameter
605611
|Element |constant |System |output
@@ -613,7 +619,6 @@ For all connections of an element connector of type `Clock` to a system connecto
613619
|Element |local |System |local
614620
|Element |inout |System |output
615621
|Element |inout |System |local
616-
|Element|acausal|System|acausal
617622
|===
618623

619624
The following XML child elements are specified for the Connection element:

0 commit comments

Comments
 (0)