motulator-export
Export motulator drive systems and grid converter systems to PLECS and Simulink, and simulate them natively in C.
Documentation: https://aalto-electric-drives.github.io/motulator-export/
Build the system in motulator as usual, then:
from motulator_export import native, plecs, simulink
plecs.write_model("drive.plecs", mdl, ctrl, t_stop=1.2) # PLECS model
simulink.write_model("drive.slx", mdl, ctrl, t_stop=1.2) # Simulink model
res = native.Simulation(mdl, ctrl).simulate(t_stop=1.2) # Native simulation
PLECS model of a 2.2-kW IPMSM drive with sensorless flux-vector control, written by examples/ipmsm_2kw_fvc.py.
- One control code everywhere. The control algorithms of motulator are ported to C. The same code runs in PLECS, in Simulink, and in the native simulation.
- The structure of motulator. Each class of the control system is a masked block with the arguments of its class, nested as in motulator. The parameters are set as in a motulator script, and they can be changed without Python.
- Verified. The PLECS and Simulink models agree with motulator to about 1e-6 relative to the signal magnitudes, and the native simulation to the rounding errors.
- Fast. The native simulation is 30 to 40 times faster than motulator, which is useful, e.g., for parameter sweeps.
Installation
Python 3.12 or later. Install the package in a virtual environment, which also installs motulator 0.16.0 or a later 0.16 release:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
python -m pip install motulator-export
The examples are in the repository. To run them, clone the repository and install the package from it:
git clone https://github.com/Aalto-Electric-Drives/motulator-export
cd motulator-export
python -m pip install -e .
python examples/ipmsm_2kw_fvc.py
Then open the model examples/ipmsm_2kw_fvc.plecs in PLECS. See the documentation for the requirements of PLECS, Simulink, and the native simulation.
Development
Install the package with pip install -e .[dev] and run the tests with pytest (requires gcc). The implementation is described in the developer notes:
- examples/README.md: the structure of the PLECS models and their agreement with motulator
- motulator_export/simulink/README.md: the structure of the Simulink models and their agreement with motulator
- motulator_export/c/README.md: the C port of the control algorithms
- motulator_export/matlab/README.md: the MATLAB port
License
Metadata
Release files for motulator-export 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| motulator_export-0.8.0.tar.gz | 206.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| motulator_export-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 481.2 kB
Release files / motulator_export-0.8.0.tar.gz
| Download URL | motulator_export-0.8.0.tar.gz |
|---|---|
| Size | 206.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c9a54fca77a57dbacba428835a59bcf8acadd58b754e51779818ab0d6ba169a5
|
|
BLAKE2b-256 checksum How to use checksums |
126379e86549cdc8a5a1b32b2ebd6c2ac813e0accbf9f97d327bda472c51a80c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / motulator_export-0.8.0-py3-none-any.whl
| Download URL | motulator_export-0.8.0-py3-none-any.whl |
|---|---|
| Size | 274.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
53449001d786c1ef7fcdcc628d1f62ff10c0f3d813f010e2aa16a309d66cc73f
|
|
BLAKE2b-256 checksum How to use checksums |
fdfc32365cc9d83d0756a8d619bf416e56bf80cde559004d1cd4e9e444dcc464
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|