Upload
jeffry-golden
View
218
Download
1
Tags:
Embed Size (px)
Citation preview
The Functional Mockup Interfacefor Tool independent Exchange of
Simulation Models
Torsten Blochwitz (ITI), Martin Otter (DLR-RM)
M. Arnold University of Halle
C. Bausch, M. Monteiro Atego Systems GmbH
C. Clauß, S. Wolf Fraunhofer IIS EAS, Dresden
H. Elmqvist, H. Olsson Dassault Systèmes, Lund
A. Junghanns, J. Mauss QTronic, Berlin
T. Neidhold ITI, Dresden,
D. Neumerkel Daimler AG, Stuttgart
J.-V. Peetz Fraunhofer SCAI, St. Augustin
Modelica 2011, 21st,22nd March
Modelica 2011: Functional Mockup Interface Slide 2
Functional Mock-up Interface (FMI) - Motivation (1)
Problems / NeedsComponent development by supplier
Integration by OEM
Many different simulation tools ?
supplier1 supplier2 supplier3 supplier4 supplier5
OEM
supplier1
tool 1
supplier2 supplier3 supplier4 supplier5
tool 2 tool 3 tool 4 tool 5
FMI OEM
SolutionReuse of supplier models by OEM:
DLL (model import) and/or
Tool coupling (co-simulation)
Protection of model IP of supplier
!supplier1
supplier2
supplier3
OEM
Added ValueEarly validation of design
Increased processefficiency and quality
slide from Nick Suyam, Daimler (adapted)
Modelica 2011: Functional Mockup Interface Slide 3
FMI - Motivation (2)
No standards available for:
Model interface based on C or binaries
Co-simulation between simulation tools
Lots of proprietary interfaces:
Simulink: S-function
Modelica: external function, external object interface
QTronic Silver: Silver-Module API
SimulationX: External Model Interface
NI LabVIEW: External Model Interface, Simulation Interface Toolkit
Simpack: uforce routines
ADAMS: user routines
…
Modelica 2011: Functional Mockup Interface Slide 4
FMI – Overview
The FMI development is part of the ITEA2 MODELISAR project(2008 - 2011; 29 partners, Budget: 30 Mill. €)
FMI development initiated, organized and headed by Daimler AG
Improved Software/Model/Hardware-in-the-Loop Simulation, of physical models from different vendors.
Open Standard
14 Automotive Use-Cases to evaluate FMI.
Enginewith ECU
Gearboxwith ECU
Thermalsystems
Automatedcargo door
Chassis components,roadway, ECU (e.g. ESP)
etc.
functional mockup interface for model exchange and tool couplingcourtesy Daimler
Modelica 2011: Functional Mockup Interface Slide 5
FMI - Main Design Idea (1)
FMI for Model Exchange:
Version 1.0 released in January 2010
FMI for Co-Simulation:
Reuses as much as possible from FMI for Model Exchange standard
Version 1.0 released in October 2010
Tool
Solver
FMU
Model
ToolFMU
Model
Solver
Modelica 2011: Functional Mockup Interface Slide 6
FMI - Main Design Idea (2)
A component which implements the interface is calledFunctional Mockup Unit (FMU)
Separation of
Description of interface data (XML file)
Functionality (C code or binary)
A FMU is a zipped file (*.fmu) containing the XML description file and the implementation in source or binary form
Additional data and functionality can be included
Interface specification: www.functional-mockup-interface.org
Modelica 2011: Functional Mockup Interface Slide 7
XML schema (.xsd)defined by theFMI specification
sim ulatorsolver
m odel.d ll
sim ulatorG UI
run 1 or m any
reads
references
contro l
m odelD escrip tion.xm l .fm u
Modelica 2011: Functional Mockup Interface Slide 8
FMI XML Schema
Information not needed for execution is stored in one xml-file:
Complex data structures give still simple interface.
Reduced overhead in terms of memory.
Variable names and attributes
Definition of display unitsDefinition of type defaults
Default stop time, tol. etc.
Tool specific data
Modelica 2011: Functional Mockup Interface Slide 9
Example<?xml version="1.0" encoding="UTF8"?><fmiModelDescription fmiVersion="1.0" modelName="Modelica.Mechanics.Rotational.Examples.Friction" modelIdentifier="Modelica_Mechanics_Rotational_Examples_Friction" guid="{8c4e810f-3df3-4a00-8276-176fa3c9f9e0}" ... numberOfContinuousStates="6" numberOfEventIndicators="34"/> <UnitDefinitions> <BaseUnit unit="rad"> <DisplayUnitDefinition displayUnit="deg" gain="57.2957795130823"/> </BaseUnit> </UnitDefinitions> <TypeDefinitions> <Type name="Modelica.SIunits.AngularVelocity"> <RealType quantity="AngularVelocity" unit="rad/s"/> </Type> </TypeDefinitions> <ModelVariables> <ScalarVariable name="inertia1.J" valueReference="16777217" description="Moment of inertia" variability="parameter"> <Real declaredType="Modelica.SIunits.Torque" start="1"/> </ScalarVariable> ... </ModelVariables></fmiModelDescription>
modelDescription.xml
Modelica 2011: Functional Mockup Interface Slide 10
C-Interface
Two C-header files:
Platform dependent definitions (basic types):
C-functions:
18 core functions
6 utility functions
no macros
C-function name: <ModelIdentifier>_<name>, e.g. Drive_fmiSetTime"
Modelica 2011: Functional Mockup Interface Slide 11
C-Interface
Instantiation: fmiComponent fmiInstantiateXXX(fmiString instanceName, ...)
Returns an instance of the FMU. Returned fmiComponent is a parameter of the other interface functions. It is of type void* for the master. The FMU uses it to hold all necessary information.
Functions for initialization, termination, destruction
Support of real, integer, boolean, and string inputs, outputs, parameters
Set and Get functions for each type: fmiStatus fmiSetReal (fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal value[]) fmiStatus fmiSetInteger(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger value[])
Identification by valueReference, defined in the XML description file for each variable
Modelica 2011: Functional Mockup Interface Slide 12
FMI for Model Exchange (1)
Import and export of input/output blocks (FMU – Functional Mock-up Unit)
described by
differential-, algebraic-, discrete equations,
with time-, state, and step-events
FMU can be large (e.g. 100000 variables)
FMU can be used in an embedded system (small overhead)
FMUs can be connected together
Modelica 2011: Functional Mockup Interface Slide 13
For example: 10 input/output signals (u/y) for connection and 100000 internal variables (v) for plotting
FMI for Model Exchange
Signals of an FMU
Modelica 2011: Functional Mockup Interface Slide 14
// Set input argumentsfmiSetTime(m, time);fmiSetReal(m, id_u1, u1, nu1);fmiSetContinuousStates(m, x, nx);// Get resultsfmiGetContinuousStates(m, derx, nx);fmiGetEventIndicators (m, z, nz);
Example:
Modelica 2011: Functional Mockup Interface Slide 15
Co-Simulation
Definition:Coupling of several simulation toolsEach tool treats one part of a modular coupled problemData exchange is restricted to discrete communication pointsSubsystems are solved independently between communication points
Motivation:Simulation of heterogeneous systemsPartitioning and parallelization of large systemsMultirate integrationHardware-in-the-loop simulation
Modelica 2011: Functional Mockup Interface Slide 16
FMI for Co-Simulation
Master/slave architecture
Considers different capabilities of simulation tools
Support of simple and sophisticated coupling algorithms:
Iterative and straight forward algorithms
Constant and variable communication step size
Allows (higher order) interpolation of continuous inputs
Support of local and distributed co-simulation scenarios
FMI for Co-Simulation does not define:
Co-simulation algorithms
Communication technology for distributed scenarios
Modelica 2011: Functional Mockup Interface Slide 17
FMI for Co-Simulation
Signals of an FMU for Co-Simulation
Inputs, outputs, and parameters, status information
Derivatives of inputs, outputs w.r.t. time can be set/retreived for supporting of higher order approximation
u y
Enclosing Model
v0 0 0 0 0 0, ,inital values (a subset of { , , , , })t p x x y v m
Solver
xt , ,x m z
External Model (FMU instance)
Co-Simulation Slave (FMU instance)
t
Model
Solver
Co-Simulation Master
t0, p
Modelica 2011: Functional Mockup Interface Slide 18
FMI for Co-SimulationC-Interface
Execution of a time step:fmiStatus fmiDoStep(fmiComponent c,
fmiReal currentCommunicationPoint, fmiReal communicationStepSize, fmiBoolean newStep)
communicationStepSize can be zero in case of event iteration
newStep = fmiTrue if last step was accepted by the master
It depends on the capabilities of the slave which parameter constellations and calling sequences are allowed
Depending on internal state of the slave and the function parameters, slave can decide which action is to be done before the computation
Return values are fmiOK, fmiDiscard, fmiError, fmiPending
Asynchronous execution is possible
Modelica 2011: Functional Mockup Interface Slide 19
FMI for Co-SimulationUse Case
Co-Simulation stand alone:
Co-Simulation tool:
Process
Executable Library (DLL)
Slave
Model Solver
Slave
Model SolverMaster
Process 1
Executable Library (DLL)
Process 2
Simulation tool
Slave
Model Solver
FMI Wrapper
FMI Wrapper
FMI Wrapper
FMI WrapperMaster
Modelica 2011: Functional Mockup Interface Slide 20
FMI for Co-SimulationUse Case
Distributed co-simulation scenario
Data exchange is handled by a communication layer which is implemented by a special FMI wrapper
Master and slave utilize FMI for Co-Simulation only
Modelica 2011: Functional Mockup Interface Slide 22
Conclusions and Outlook
FMI has a high potential being widely accepted in the CAE world:
Initiated, organized and pushed by Daimler to significantly improve the exchange of simulation models between suppliers and OEMs.
Defined in close collaboration of different tool vendors.
Industrial users were involved in the proof of concept.
FMI can already be used with several Modelica tools, Simulink, multi-body and other tools.
FMI is maintained and further developed:
Unification and harmonization of FMI for Model Exchange and Co‑Simulation (FMI 2.0) within Modelisar.
Improved handling of time events.
Clean handling of changeable parameters.
Efficient interface to Jacobian matrices.
Modelica 2011: Functional Mockup Interface Slide 23
AcknowledgmentsFMI initiated and organized: Daimler AG (Bernd Relovsky, ....)
Head of FMI development: Dietmar Neumerkel (Daimler AG)
Head of FMI-for-Model-Exchange: Martin Otter (DLR-RM)
FMI-for-Model-Exchange Torsten Blochwitz (ITI)Core-Design by: Hilding Elmqvist (Dassault Systèmes -Dynasim)
Andreas Junghanns (QTronic)Jakob Mauss (QTronic)Hans Olsson (Dassault Systèmes -Dynasim)Martin Otter (DLR-RM)
Other MODELISAR contributors: Ingrid Bausch-Gall, Bausch-Gall GmbHAlex Eichberger, SIMPACK AGRainer Keppler, SIMPACK AGGerd Kurzbach, ITI GmbHCarsten Kübler, TWTJohannes Mezger, TWTThomas Neidhold, ITI GmbHDietmar Neumerkel, Daimler AGPeter Nilsson, Dassault Systèmes-DynasimAntoine Viel, LMS InternationalDaniel Weil, Dassault Systèmes
Other contributors: Johan Akesson, Lund UniversityJoel Andersson, KU LeuvenRoberto Parrotto, Politecnico di Milano
Modelica 2011: Functional Mockup Interface Slide 24
Acknowledgments
FMI for Co-Simulation Martin Arnold, University Halle, Germany
Core-Design by: Constanze Bausch, Atego Systems GmbH, Wolfsburg, Germany
Torsten Blochwitz, ITI GmbH, Dresden, Germany
Christoph Clauß, Fraunhofer IIS EAS, Dresden, Germany
Manuel Monteiro, Atego Systems GmbH, Wolfsburg, Germany
Thomas Neidhold, ITI GmbH, Dresden, Germany
Jörg-Volker Peetz, Fraunhofer SCAI, St. Augustin, Germany
Susann Wolf, Fraunhofer IIS EAS, Dresden, Germany
Contributors: Jens Bastian, Fraunhofer IIS EAS, Dresden, Germany
Christoph Clauß, Fraunhofer IIS EAS, Dresden, Germany
Dietmar Neumerkel, Daimler AG, Böblingen, Germany
Martin Otter, DLR, Oberpfaffenhofen, Germany
Tom Schierz, University Halle, Germany
Wolfgang Trautenberg, Simpack AG, Germany
Klaus Wolf, Fraunhofer SCAI, St. Augustin, Germany
Partially funded by: BMBF, VINNOVA, DGCIS, organized by ITEA2