# Using physical connectors with an FMU

This post has a look at how to interface with FMU blocks that make use of physical connectors. In this blog a simple electrical circuit is split into two FMUs that interface with electrical connectors.

#### What is a physical connector?

A connector that could be found on a physical system connecting sub-components together is a physical connector. For example an electrical wire, a pipe, a driveshaft, and the surface of a heatsink are a few examples of physical connectors.

#### What is the difference between physical connectors and signal connectors?

Physical connectors in Modelica are typically acausal. Signal connectors are causal (i.e. the signal connectors are all inputs or outputs). Take the example of an electrical connector on a resistor, the voltage at the connector could be seen as the input; in this case using Ohms law (V = IR) the current would be calculated as the voltage across the resistor divided by the resistance (i.e. I=V/R) and the current would be an output at the connector. However, if the current was selected to be the input then the voltage would be the output and be the current multiplied by the resistance (i.e. V=IR).

This acausal nature of connectors in Modelica is important as it allows Dymola to work with the models in a flexible way and being able to provide a range of different boundary conditions to the same component, and also to calculate the solution to the equations efficiently.

#### A closer look at the electrical connector

The electrical connector consists of the across variable, voltage, which is equal at all connectors connected together; and a flow variable, current, which is such that the sum of all the flow variables of all connectors connected together is zero.
Where the convention used by flow variables is that a flow going into a component is positive and a flow going out of a component is negative (see Modelica by Example for more details).

#### The simple electrical example

To demonstrate how electrical connectors can interface with a FMU, the simple electrical circuit in Figure 1 is used.

Figure 1. Simple electrical circuit, with two sections FMU 1 and FMU 2 that will be exported as FMUs and a new circuit created with these FMUs.

In the figure above the two sections that are going to be exported as FMUs make use of electrical connectors to connect to each other and to the sineVoltage and ground components.

#### Causal connectors to electrical connectors adaptors

Dymola currently does not support acausal (physical) connectors with FMUs so causal input and output signals have to be connected to the electrical connector using adaptors; there are two ways this can be done as in Figure 2.

Figure 2. Causal adaptors to the electrical connectors

The equations for the two adaptors in Figure 2 are:

pin_n.v = Vin; pin_p.v = Vout;
pin_n.i = -Iout; pin_p.p = Iin;

In the Modelica equations above pin_n and pin_p are electrrical connectors with v as the across variable and i as the flow variable. In the first set of equations Vin is the input voltage to the adaptor and Iout is the output current of the adaptor; it has a negative sign as the current is flowing out of the component. The second set of equations has the voltage as an output and the current as an input.

#### Using the adaptors in the simple electrical circuit

The adaptors in Figure 2 are now used in the simple electrical circuit in Figure 1 so that the FMU sections have causal connectors as in Figure 3.

Figure 3. Simple electrical circuit with electrical connection adaptors

In Figure 3 it was decided that the voltage to the FMU components be inputs and the current be outputs. These FMU components are then connected to the voltage source and ground an adaptor with the voltage being an output and the current being the input.

Other combinations of adaptors are possible. For example in the FMU 2 section the adaptor to the resistor could use the voltage as an output adaptor; in this case the Modelica.Blocks.Math.InverseBlockConstraints block could be used so that the voltage at the resistor in the FMU2 section is equal to the voltage at the sine source.

#### Why would you want to create these FMUs?

The FMUs in this case are for demonstration purposes and are to show how exporting a model that interacts with physical connectors can be done. In a more realistic example there are a number of reasons you could want to create the FMU:

• to export the model from Dymola and use it as an FMU in different software environment (typically you would be exporting a more complex model than the ones in this example).
• to run the FMUs in parallel and at different sampling rates

#### Creating the models for the FMUs

Creating the models for the FMUs can be done by selecting the components of the FMUs by pressing shift and dragging, then selecting Split Model as in Figure 4.

Using the method in Figure 4 two models were created one called ResistorAndCapacitor and one called ResistorAndInductor.

#### The model with the FMUs

The ResistorAndCapacitor and ResistorAndInductor models are now exported as FMUs (see this blog post for more details) and imported into Dymola and a model making use of the FMUs is created as in Figure 5.

Figure 5. Simple electrical circuit where the resistor and capacitor, and resistor and inductor are replaced with Model Exchange FMUs

In Figure 5 Model Exchange FMUs have been used, Co-Simulation FMUs can also be used.

#### Using other physical connectors

Adaptors for other physical connectors can also be created. For example:

Modelica.Mechanics.Translational.Interfaces.Flange could have the position s as an output and the force f as an input.

Modelica.Mechanics.MultiBody.Interfaces.Frame could have the position r_0 and orientation R as the input and force f and torque t as the output.

#### Supplying derivatives of adaptor signals

In some cases when a model is exported as an FMU an error is generated:

The error above is caused because the input signal u has to be differentiated during symbolic manipulation however the input u signal does not have a derivative.

#### Discussion

This post has described how physical connectors can be used with FMUs by using adaptors.

Care is needed when connecting co-simulation FMU’s together as this can introduce accuracy and stability issues. Two papers that look into ways to reduce these issues are Energy Conservation and Coupling Error Reduction
in Non-Iterative Co-Simulations
and Relaxing Stiff System Integration by Smoothing Techniques for Non-iterative Co-simulation.

Ideas to support acausal signals into the FMI standard (see Initiatives for acausal model connection using FMI in JSAE (Society of Automotive Engineers of Japan) (researchgate.net)) are being explored so how acausal connectors are interfaced with may change in the future.

Written by: Garron Fish – Chief Engineer

Please get in touch if you have any questions or have got a topic in mind that you would like us to write about. You can submit your questions / topics via: Tech Blog Questions / Topic Suggestion