You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
to allow the integration of source code FMUs into production environments. This information can be extracted from an eFMU (or any other production code) and allows importers to integrate it e.g. as a Simulink C-function block avoiding the overhead of the FMI interface.
The description file could look something like this (work in progress):
<?xml version="1.0" encoding="UTF-8"?>
<fmiProductionCodefmiVersion="3.0">
<ProductionCodeDescriptionreusable="false">
<!-- necessary information to compile the sources -->
<ProductionCodeSources>
<IncludePathname="include"/>
<SourceFilename="block.c"/>
<SourceFilename="sii_block_interface.c"/>
</ProductionCodeSources>
<!-- access to the model's functions, variables, and error signals -->
<ProductionCodeInterface>
<HeaderFilename="block.h"/>
<HeaderFilename="galec_stl.h"/>
<HeaderFilename="galec_types.h"/>
<HeaderFilename="sii_block_interface.h"/>
<Functionname="startup"expression="sii_Startup_H697768718_859909373"/>
<Functionname="doStep"expression="sii_DoStep_H697768718_859909373"/>
<Functionname="recalibrate"expression="sii_Recalibrate_H697768718_859909373"/>
<!-- struct variable that holds the model's data -->
<BlockStateexpression="block_state_H697768718_859909373"/>
<!-- error signals -->
<Signalname="ErrorSignals"expression="ErrorSignals"/>
<!-- ports, parameters, constants, and states -->
<Variablename="M_desired"expression="M_desired"/>
<Variablename="wRel"expression="wRel"/>
<Variablename="M_motor"expression="M_motor"/>
<!-- ... -->
</ProductionCodeInterface>
</ProductionCodeDescription>
<ProductionCodeDescriptionreusable="true">
<!-- necessary information to compile the sources -->
<ProductionCodeSources>
<PreprocessorDefinitionname="REUSABLE_MODEL"value="1"/>
<!-- ... -->
</ProductionCodeSources>
<!-- access to the model's functions, variables, and error signals -->
<ProductionCodeInterface>
<HeaderFilename="block.h"/>
<HeaderFilename="galec_stl.h"/>
<HeaderFilename="galec_types.h"/>
<HeaderFilename="mei_block_interface.h"/>
<Functionname="startup"expression="mei_Startup_H697768718_859909373"/>
<Functionname="terminate"expression="mei_Terminate_H697768718_859909373"/>
<Functionname="doStep"expression="mei_DoStep_H697768718_859909373"/>
<Functionname="recalibrate"expression="mei_Recalibrate_H697768718_859909373"/>
<!-- type of the struct that holds the model's data -->
<BlockStatetype="BlockState_H697768718_859909373"/>
<!-- error signals -->
<Signalname="ErrorSignals"expression="ErrorSignals"/>
<!-- ... -->
</ProductionCodeInterface>
</ProductionCodeDescription>
</fmiProductionCode>
The text was updated successfully, but these errors were encountered:
Torsten S: e.g. you could import an FMU in Simulink without using the FMI headers or API. This does not replace eFMI, but is the missing link
Torsten B: Would this be a layered standard?
Torsten S: Yes
Torsten B: is this not more an eFMI thing?
Torsten S: It is simpler than eFMI; with my approach you do not have to parse the algorithm code xml for the variable name
Irina: This has nothing to do with the FMI API
Andreas: Such description exist, e.g. A2L, mostly memory layout
Torsten S: I do not want to describe memory layout?
Andreas: Which problem to you want to solve?
Torsten S: I am currently writing a converter from an eFMU to an FMU. Additionally I want to create a C-function block from an eFMU. I would like to store the intermediate result in this new XML file. Pierre thinks it is a good idea.
Torsten: there are more limitations, e.g. a fixed timestep (coming from the eFMU side). There would be no get/set functions for variables.
Torsten S: There are open questoins, e.g. whether mutliple instances shall be allowed.
Karl: I still do not get how this is related to FMI.
Torsten S: This makes only sense, when you go the eFMI route.
Karl: What API would you use? Only the doStep?
Torsten S: Yes ...
Torsten S: this is orthogonal to the approach of getting direct access to the variables via pointers.
to allow the integration of source code FMUs into production environments. This information can be extracted from an eFMU (or any other production code) and allows importers to integrate it e.g. as a Simulink C-function block avoiding the overhead of the FMI interface.
The description file could look something like this (work in progress):
The text was updated successfully, but these errors were encountered: