Skip to content

Latest commit

 

History

History
185 lines (131 loc) · 9.54 KB

CHANGELOG.md

File metadata and controls

185 lines (131 loc) · 9.54 KB

Changelog

All notable changes to the Vector SIL Kit FMU Importer project shall be documented in this file.

The format is based on Keep a Changelog (http://keepachangelog.com/en/1.0.0/) <http://keepachangelog.com/en/1.0.0/>.

[1.3.0] - 2024-06-27

This version introduces a new feature to bundle several variables to structures and exchange them through one service via SIL Kit.

Added

  • Added an option 'AlwaysUseStructuredNamingConvention' to the configuration's root level (default: false). If set, it activate the structured naming convention detection (and therefore the variable aggregation feature) even if it is not set in the FMU's model description.
  • Added a new communication interface description format that must be provided via -i or --fmu-importer-communication-interface-file if variables shall be aggregated to structures
  • Added support for optional data types.
    Optional data types are used in SIL Kit to indicate if the provided data (e.g., a structure member) contains a payload or not. Optional data types can be defined in the communication interface description and in the configuration file by appending a question mark at the end of the data type that should be optional.
  • Added label support.
    By default, the FMU Importer does not use any labels when creating publish / subscribe services The "Instance" and "Namespace" labels can be set by configuring Instance and Namespace in the root of the configuration file These labels allow to limit the communication between services with the same namespace / instance name (e.g., if multiple instances of the same FMU are participating in a simulation)
  • Added a new tool (Communication Interface Exporter) to generate a communication interface from an FMU (see documentation for details, or use the --help argument when calling the exporter)

Changed

  • If the value of an enumeration-typed variable is set, strings are now considered referring to an enumerator's name, whereas integers refer to an enumerators' value
  • Temporarily extracted FMUs are now deleted by default
    • If there is a folder with the extracted FMU in the same directory as the FMU, this extracted content will be used and remains there after the FMU Importer stops
    • Otherwise, the FMU is now extracted to a temporary directory. This directory and its contents are deleted after the simulation run.
  • Reworked the vCDL Exporter
    • New CLI (see documentation for details, or use the --help argument when calling the exporter)
    • Now supports exporting vCDL files based on an FMU or on a communication interface description
    • Removed the option to export multiple FMUs to a single vCDL
  • Updated SIL Kit to version 4.0.50

Fixed

  • If an error occurred while an FMU is loaded, its error will now be handled like other errors (was printed to console before)
  • Fixed incorrect export of array variables by the vCDL Exporter (did not detect array variables correctly and exported them as scalars before)

[1.2.0] - 2024-03-28

Added

  • Added a configuration file schema FmuImporterConfiguration.schema.json for the FMU Importer and included it in release package and extended documentation how to use it

Changed

  • Changed exception logging behavior
    • The exception message is logged at the Error log level
    • The entire exception including its stack trace is logged at the Debug log level
  • Added more meaningful exit codes and documented them
    • 0 indicates success
    • 1-49 indicates an issue in the FMU Importer
    • 50-99 indicates an issue in the FMI binding
    • 100+ indicates an issue in the SIL Kit binding
  • Updated SIL Kit version to 4.0.47

Fixed

  • Fixed configuration of boolean parameters via config file
  • The importer did not run with an 'autonomous' lifecycle if the time synchronization mode was set to 'unsynchronized' - this is now working as intended
  • Fixed a crash that occurred if an FMU's model description had a unit definition that did not use a base unit
  • Improved the documentation regarding the time synchronization behavior if the FMU Importer is configured to run in 'unsynchronized' time synchronization mode
  • Improved documentation regarding the configuration file
  • Adapted the documentation's table of contents to indicate more explicitly where to find information on how to configure the FMU (including the parameter values)
  • The documentation now correctly states that there are prebuilt packages and the requirements to run them
  • Fixed a possible StackOverflow exception if an FMU returns a discard or error status code
  • Fixed a possible stall of the SIL Kit component if the FMU component terminates unexpectedly
  • FMU Importer erroneously started SIL Kit lifecycle even if the initialization of the FMU or Importer failed
  • Fixed a crash that occured if the FMU had array variables of Binary type
  • Fixed a bug in the FMU Importer's deserializer for SIL Kit messages that caused arrays of strings to be deserialized incorrectly

[1.1.0] - 2023-12-20

Added

  • The vCDL Exporter now also exports enumerators
  • Added a CLI option --time-sync-mode that allows to choose if virtual time synchronization should be used (synchronized) or not (unsynchronized), which tries to align the simulation time with the system's wall clock (e.g., a one second simulation step would also take approximately one second in real time). Defaults to synchronized.

Changed

  • Moved the vCDL Exporter to a separate solution
  • The FMU Importer now sets exit codes != 0 if any component (e.g., the FMU) reported an issue
  • The FMU Importer now uses the stopTime of an FMU's model description by default
    • The --use-stop-time / -t CLI options are kept for backwards compatibility, but they will not have any effect
    • The options are not shown by the CLI help command and they are not mentioned in the documentation anymore
  • Updated SIL Kit libraries to 4.0.43

Fixed

  • Fixed crash when reconfiguring structural parameters
    • Reconfigured structural parameters are now set in configuration mode
  • Fixed missing log messages during FMU initialization
  • Fixed incorrect array length for variables with dimensions that reference reconfigured structural parameters
  • Fixed crash if array-typed parameters were overridden using YAML block style (only flow style worked)
  • Fixed "FileNotFound" exception when including configuration files with absolute path
  • Fixed incorrect topic name if a variable is reconfigured without specifying its topic name

[1.0.5] - 2023-10-09

Added

  • Added the license of the FMI standard source code to the third-party licenses

Changed

  • Renamed SIL Kit third party licenses from ThirdParty/sil-kit to ThirdParty/sil-kit-ThirdParty

[1.0.4] - 2023-09-26

Changed

  • If SIL Kit logger fails to log the log messages are now written to the console
  • The importer source now includes the SIL Kit libraries that are used (removes the necessity to download and cache them)
  • Updated SIL Kit libraries to 4.0.36

Fixed

  • The vCDL Exporter now exports correct types for FMI 2.0.x and 3.0.x
    • FMI 2.0.x: float32 -> float; float64 -> double
    • FMI 3.0.x: binary -> bytes
  • Improved exception handling - FMU Importer will now try to end SIL Kit and FMU properly if it is possible
  • Improved logger reliability
  • Fixed erroneous translation of FMI and SIL Kit log levels
  • Received events that are at least two simulation steps in the future are now handled correctly
  • Changed the serialization and deserialization mechanism for SIL Kit and FMI
    • The new SIL Kit serializer & deserializer are based on the implementation used in SIL Kit
    • This improves the reliability and understandability of the serialization
  • The initial unknowns of FMI 2.0.x FMUs are now initialized correctly
  • Fixed a possible infinite loop if the importer crashed before the FMU was initialized
  • The importer distributed output variable data even if the simulation step failed - this is not the case anymore
  • Fixed a crash if an FMI 2.0.x FMU's variable was reconfigured via the importer's configuration file

[1.0.3] - 2023-08-16

Fixed

  • Fixed crash on Ubuntu 22.04 (and up)
    • Ubuntu 22.04 and up does not ship with a libdl.so anymore. In this case, FMU Importer will now try to load libc.so instead.
  • Fixed a crash when trying to publish non-scalar data (e.g., strings) in Linux
  • Fixed the path that the Importer uses to search for extracted FMI 2.0.x FMUs (used FMI 3.0.x path before), which led to a crash
  • Fixed a crash that occurred if a model description did not contain any initial unknowns
  • Fixed a crash when the dependencies field of an FMU's output variable is empty
  • Fixed a crash in case FMI 2.0.x FMUs tried to log
  • Fixed the resource location provided to the FMU (FMI 2.0.x and FMI 3.0.x)

[1.0.2] - 2023-07-20

Changed

  • Updated SIL Kit libraries to 4.0.32 (QA release)

Fixed

  • Fixed crash on Windows during startup of the application
    • The SIL Kit DLL file was x86, but should have been x86_64 - this lead to a crash of the application (BadFormatException)

[1.0.1] - 2023-06-28

Added

  • Building the FMU Importer project now automatically downloads the SIL Kit libraries needed to run the application on Windows and Linux/Ubuntu and copies them to the build directory
  • Extended the build project to create a cross platform release package file (SilKitFmuImporter-{Version}-xPlatform-x64) that runs on Windows and Linux/Ubuntu. Please note that there is currently no support for OSX.

[1.0.0] - 2023-06-26

Initial release of the FMU Importer. Future versions will provide information about changes compared to the previously released version.