How to Create Your First Full Vehicle Co-simulation Model with xLINK
Wouldn’t it be nice to have a platform to simulate various subsystems from different tools in a single model and analyze their interactions? That is what I used to think every time I came across groups that develop and optimize individual components or subsystems, but have to wait until everything else is built to test the whole system. All this testing can now be frontloaded, because now teams can integrate models from a variety of tools in GT’s new tool-neutral platform for co-simulation, xLINK, which empowers users with the ability to perform integrated testing and whole system optimization.
I belong to the team that develops and supports co-simulation solutions through popular interface standards such as FMI for complete system design and testing. xLINK is our latest product; we gathered all of our advanced co-simulation capabilities, we packaged them along with GT-SUITE’s strongest productivity features, and more importantly we tailored the user experience to the needs of this type of simulation and xLINK was born.
As soon as xLINK’s development finished, I started preparing the first xLINK example model and in only a couple of hours I had a complete vehicle system in a single model up and running a full driving cycle.
GT’s Engine group provided the engine model as an FMU and our Vehicle group delivered a drivetrain model as an FMU too. At this point, I can only guess that the engine is a GT-POWER model and I have no idea about the origin of the drivetrain FMU, but when it comes to co-simulation with xLINK the origin of each incoming subsystem is nonessential.
My vehicle model now needed a soft ECU and a Driver, in order to control it through a complete driving cycle. In a lot of projects, I have worked closely with the Controls team and they were kind enough to prepare such a model in Simulink. Then, they simply built the Simulink model as a DLL for the xLINK target.
We are all set with acquiring our subsystems, let’s open a new xLINK model from scratch and start building the vehicle model:
Welcome to xLINK!
My first thought is that the look and feel is similar to GT-SUITE. However, users will notice that the UI is simple, lean and easy to use and all important capabilities, such as design-of-experiment and optimization setup, are ergonomically placed on the ribbon toolbar. In xLINK subsystems exchange inputs and outputs through signals. As a result, the model library (on the left as usual) is preloaded with all External Model Links to accelerate importing modules from popular tools and interfaces as well as a complete library of signal manipulation components, the Controls Library. Some of the supported tools and interfaces are:
- FMUImport v1.0 and v2.0 for both Model Exchange and Co-simulation
- Directly integrated tools: IPG CarMaker, MSC Adams, ETAS Ascmo
- Simulink DLL built for xLINK
- Hand-written C source code as long as it conforms to our flexible API
It is clear, that in xLINK with only a few components, users can create extremely fast system models by importing different subsystems.
In my stash, there is an engine FMU, a drivetrain FMU and a Driver/ECU DLL created from Simulink. These three subsystems can be imported in xLINK by using two FMUImport components and a SimulinkHarness component linked together to compose a full vehicle model. At first, I import the two FMUs using FMUImport. xLINK is intelligent enough to read all inputs, outputs and parameters and append them automatically to the respected lists, minimizing manual steps and accelerating every team’s work:
The Engine FMU is an FMI 2.0 FMU for co-simulation. It expects 19 inputs, it has 10 outputs and our engine guys left a little room for me to play with it by exposing two parameters, ambient pressure and temperature. Following the same steps with the Drivetrain FMU, another FMI 2.0 FMU for co-simulation is added. xLINK understands that it expects two inputs, it has three outputs, and there is one exposed parameter:
The Simulink ECU/Driver model, which has been built as a DLL from Simulink, is imported into xLINK through a SimulinkHarness template and this completes the process of importing the subsystems for this example. For better organization, the three models are included inside subassemblies and the current state of the xLINK model is the following:
Next, I go ahead and link the three models together. Simulink ECU/Driver DLL controls both the Engine FMU and the Drivetrain FMU and it expects feedback, while Drivetrain and Engine exchange speed and torque. Valve timing, injection timing, injection mass and wastegate diameter signals are outputs of the ECU/Driver and inputs to the engine, while important Engine values are sensed and passed to the ECU/Driver. Brake pedal position and gear number signals are exchanged between the ECU/Driver and the drivetrain. After I finish linking everything together, I add a few monitors before I run the xLINK model in order to analyze the ECU/Driver behavior, the engine speed, and the average fuel flow of the Engine:
I am now ready to press the “Run” button. A few more options such as simulation duration either on my machine or on a distributed server and… I am up and running!!
xLINK launches a powerful UI during run time, which displays the progress of the simulation along with all important information for each subsystem. The monitors that I set up in my model also show up. I can fully monitor and control the simulation from here!
When the simulation ends, xLINK automatically creates a GT-POST file and saves the results and plots from each case. In GT-POST, users can quickly generate 2D and 3D plots, combine data from different cases and tests in a single plot for comparative analysis, and even perform math operations on data in all plots.
It was when I finished the first xLINK example model that I confirmed that xLINK is a really powerful and mature product for building integrated co-simulation system models. Imagine what you could do when harnessing all of xLINK’s capabilities and powerful features!
I am now ready for the next step: run multiple scenarios, perform parametric analysis, and optimize for fuel economy. Or better yet, optimize the tradeoff between fuel economy and performance by utilizing xLINK’s built-in Optimization tools. Stay tuned for the next blog post about xLINK, where I will share the results of this next step!
Interested in learning more? Contact us!
Written by Pantelis Dimitrakopoulos who worked with GT’s Engine, Powertrain and Controls support teams to replicate the integration process within an organization. If you are ready to try xLINK, please contact email@example.com.