Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/INTO-CPS-Association/FMI-VDM-Model
A formal model of the FMI specification in VDM
https://github.com/INTO-CPS-Association/FMI-VDM-Model
Last synced: about 2 months ago
JSON representation
A formal model of the FMI specification in VDM
- Host: GitHub
- URL: https://github.com/INTO-CPS-Association/FMI-VDM-Model
- Owner: INTO-CPS-Association
- License: other
- Created: 2019-06-10T12:56:26.000Z (over 5 years ago)
- Default Branch: development
- Last Pushed: 2024-10-16T09:42:17.000Z (3 months ago)
- Last Synced: 2024-10-19T03:25:55.791Z (3 months ago)
- Language: HTML
- Homepage:
- Size: 5.37 MB
- Stars: 13
- Watchers: 20
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-fmi - FMI-VDM-Model - [VDM](https://en.wikipedia.org/wiki/Vienna_Development_Method) formal models for the FMI3.0 specification. (FMI 3 / Tools)
README
# FMI-VDM-Model
This repository contains a VDM model of the FMI standard, plus supporting tools. The repository contains the following projects:
For FMI2:
* **fmi2.static-model** - a VDM-SL model of the static semantics of FMI 2.0 modelDescription XML files
* **fmi2.dynamic-model** - a VDM-SL model of the dynamic semantics of the FMI 2.0 API
* **fmi2.cosim-test** - a VDM-SL model to test the dynamic semantics of co-simulation FMUs
* **fmi2.modelex-test** - a VDM-SL model to test the dynamic semantics of model-exchange FMUs
* **fmi2.static-tests** - a set of test XML files for the static semantics
* **fmi2.vdmcheck** - a Java tool to convert FMI 2.0 modeDescription XML files to VDM-SL and check themFor FMI3
* **fmi3.static-model** - a VDM-SL model of the static semantics of FMI 3.0 modelDescription XML files
* **fmi3.dynamic-model** - a VDM-SL model of the dynamic semantics of the FMI 3.0 API
* **fmi3.dynamic-matrix** - a spreadsheet of the mode/state callability of the FMI3 API functions
* **fmi3.rules-model** - a new VDM-SL model of static semantics, suitable for integration with the FMI Standard
* **fmi3.ls-bus-model** - a VDM-SL model of the FMI3 Network Communication Layered Standard
* **fmi3.vdmcheck** - a Java tool to convert FMI 3.0 modeDescription XML files to VDM-SL and check themGeneral projects:
* **fmi2.cosim** - a VDM-SL model of the interaction of a set of FMUs
* **fmi2.cosim2vdm** - a Java tool to convert Maestro JSON configurations to VDM-SL.
* **xsd2vdm** - a Java tool to convert XSD schemas into VDM-SL schemas
* **fmuReader** - a VDMJ external format reader, to allow FMUs to be read directly by VDM tools.The FMI\{2,3\} static semantic models and the FMI\{2,3\} VDM conversion tools are packaged in the release to create stand-alone tools for verifying FMU files, called **VDMCheck\{2,3\}**. These can be used to check existing FMI version 2 or 3 FMU files against the standard; a pure Java version of each tool is available, which does not depend on the bash shell (eg. for use on Windows).
## Licensing
The VDMCheck tools are issued under a GPLv3 licence. The VDM models sources themselves are issued under an MIT licence. Licence headers and text are included with the package.
## Installation
To install the VDMCheck package, unzip the distribution ZIP (the top level contains a folder called `vdmcheck-`, which you can rename). Add the top level folder to your PATH so that the script within is available.
## Execution
```
$ VDMCheck2.sh
Usage: VDMCheck2.sh [-h2|-h3 ] [-v ] -x | .fmu | .xml
$ VDMCheck3.sh
Usage: VDMCheck3.sh [-h ] [-v ] .fmu | .xmlor
C:\> java -jar /vdmcheck2.jar
Usage: java -jar vdmcheck2.jar [-h2|-h3 ] [-v ] -x | .fmu | .xml
C:\> java -jar /vdmcheck3.jar
Usage: java -jar vdmcheck3.jar [-h ] [-v ] .fmu | .xml```
For normal use, the tool would be invoked with a single FMU file, though it is possible to analyse an extracted modelDescription.xml file.It is possible to capture the VDM-SL version of the XML file that is produced by using the `-v` option, but this is mainly for working with the formal model itself.
If the FMU or XML has no errors, the tool will report `No errors found` and have an exit code of 0.
Otherwise errors are listed on standard output. They consist of a unique test name followed by an error message, plus a link the FMI Standard that is relevant to the error:
```
> VDMCheck2.sh 2.2.1_invalidOutputs2.xml
validCSModelIdentifier: "Test FMU" not valid C variable name at modelDescription:4
https://github.com/modelica/fmi-standard/releases/download/v2.0.4/FMI-Specification-2.0.4.pdf Section 2.1.1, Page 14
validVariableAttributes: Variable "v1" causality/variability/initial/start //nil/nil invalid at modelDescription:6
https://github.com/modelica/fmi-standard/releases/download/v2.0.4/FMI-Specification-2.0.4.pdf Section 2.2.7, Page 46
validOutputs: Outputs should be omitted at modelDescription:10
https://github.com/modelica/fmi-standard/releases/download/v2.0.4/FMI-Specification-2.0.4.pdf Section 2.2.8, Page 58
Errors found.> VDMCheck3.sh transpose.fmu
validCSIntermediateUpdate: canReturnEarlyAfterIntermediateUpdate requires providesIntermediateUpdate at modelDescription.xml:22
See: https://fmi-standard.org/docs/3.0/#table-CoSimulation-details
Errors found.
```