This blog post looks at exporting models as FMUs containing string parameters and modifying those string parameters in the FMU before simulating.
Process for creating FMUs with string parameters and modifying these strings
The basic instructions for creating an FMU containing modifiable string parameters are below:
- Make sure the string parameters to be modified are not evaluated, that is having
annotation(Evaluate=false);
- When exporting to FMU, by pressing Ctrl+F9, select Export with string parameters as in the image below
- Import the FMU into Dymola
- The string parameters can be edited by right clicking on the model in the Component Browser and selecting Parameters or by editing the string parameter in the FMU model.
Note: if the size of an array is dependent on the string parameter then Dymola will generate an error during translation.
A workaround for this issue is to set the array size in the model manually, but this generally will only work when the array size does not change.
In Dymola versions before Dymola 2019 FD01 setting the string parameter using the Component browser to ModelicaServices.ExternalReferences.loadResource(…) causes Dymola to crash. This issue should now be fixed in Dymola 2019 FD01.
Vehicle on track example
The VeSyMA TerrainServer library makes it possible to obtain data from high fidelity sampled tracks by interfacing with the rFpro TerrainServer. In the closed loop driver example (TerrainServer.Experiments.Examples.ClosedLoopExample), a vehicle is driven in closed loop around a track. In the following case the ClosedLoopExample is exported to an FMU in such a way that the vehicle could be driven around any specified track following any specified path.
To do this the TerrainServer.Experiments.Examples.ClosedLoopExample model is extended and modified as shown below:
In the code above the fileName and trackName parameters are propagated to the top level and the annotation Evaluate=false is used. Also road.animation is set to false as this road animation generates an array with a size that is dependent on fileName.
The Real-time settings were used by calling the following function in the Dymola command line:
Claytex.Functions.RealTime.run(inlineMethod=6, setFlagsOnly=true);
Then the ClosedLoopExampleForExport model was translated into a FMU, with Export with string parameter selected. Then the ClosedLoopExample FMU was imported into Dymola.
The model was then simulated on the SteeringPad with a double lane change path:
fileName and track string parameters were modified so that the FMU ran the vehicle on OrchardLake with a path going around Orchard Lake:
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