Skip to content

Why are Connectors needed? #66

Open

Description

@mateokurti

My background is in software engineering, and my day-to-day job does not has anything to do with Modelica, FMI or SSP. However, on a project I am working, I have to add compatibility for SSP, so I started reading through the standards. I gave this intro to make it clear that there is a high chance that my points could be completely wrong, but if anyone could make me understand why, that would be much appreciated.

As the title says, why do we need connectors?

As per the standard, Systems, Components and Signal Dictionary References can optionally have "connectors". Connectors represent the interface of the element to the outside world. The connectors MUST match variable/ports of the underlying component implementation. Being so, connectors have only two attributes: name and kind, where both MUST match with the underlying variable/port.

Now, considering that, why do we need to explicitly define connectors, where instead the variable/port of the underlying component could be referenced directly on the Connection.

So instead of:

<ssd:Connector name="x" kind="output">
...
<ssd:Connector name="y" kind="input">
...
<ssd:Connection startElement="A" startConnector="x" endElement="B" endConnector="y">

it could be

<ssd:Connection
    startElement="A"
    startConnectorName="x"
    startConnectorKind="output"
    endElement="B"
    endConnectorName="y"
    endConnectorKind="input"
>

Geometry is one thing that I can think of, bus is that the only reason why?

Activity

  1. DagBruck commented on Feb 27, 2025

    @DagBruck
    Contributor

    You can define connectors that are not connected to, that is essential for parameters and for using SSP as an interface specification.
    You also disregard that a connector declaration can hold much more information about type, array dimensions, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions