Docker image with PyFMI and OpenModelica β FMU files generated for linux can be used with PyFMI. β Build on your own: β
$ cd omfmi
$ docker build -t omfmi .
β Or just pull from docker hub: β
$ docker pull phygitalism/omfmi:1.0
β β Run in docker: β
$ docker run --rm -it -v "$(pwd)":/omfmi phygitalism/omfmi:1.0
β ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ Π½Π° docker-file, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΡΠ²ΡΠ·Ρ OpenModelica ΠΈ PyFMI.
ΠΡΠ° ΡΠ²ΡΠ·ΠΊΠ° Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° PlantSim-Taneco.
β
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ FMU ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (OpenModelica).
Π£ FMI Π΅ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ β Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π±ΡΠ΄Ρ ΡΠΎ Windows, Linux ΠΈΠ»ΠΈ MacOS Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ FMU-ΡΠ°ΠΉΠ» ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ FMU-ΠΌΠΎΠ΄Π΅Π»Ρ Π² ΡΡΠ΅Π΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½, Π° Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΎ Π±ΡΠ» Linux.
FMI ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΠΊΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠΎ ΠΎΡΠΊΡΡΡΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅. ΠΠ½Π°ΡΠΈΠΌΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ cΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°Ρ
. Π‘ΡΠ°Π½Π΄Π°ΡΡ FMI ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈΠΌΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π°Π½Π°Π»ΠΈΠ·Π°, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΡΡ ΠΆΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π² ΡΡΠ΅Π΄Π΅ Dymola, Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² MapleSim, OpenModelica ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
.
β
FMU (Functional Mock-Up Unit) β ΡΡΠΎ ΡΠ°ΠΉΠ» (Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .fmu), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ FMI. ΠΠΌΠ΅Π΅Ρ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ: FMI 1.0, ΡΠ°ΠΊ ΠΈ FMI 2.0 ΠΈ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ
ΡΠΈΠΏΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ β model exchange (ΠΎΠ±ΠΌΠ΅Π½ ΠΌΠΎΠ΄Π΅Π»ΡΡ) co-simulation (ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅).
β
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²Π΅Π΄ΡΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Dymola, MapleSim, Matlab Simulink, OpenModelica ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π² ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΡΡΠ°Π½Π΄Π°ΡΡ FMI, ΡΡΠΎ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°.
β
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
- ΠΏΠ°ΠΊΠ΅Ρ Dymola Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π°, Π° Π΅Π΅ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π² Π³ΠΎΠ΄ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 40000$
- Matlab Simulink Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΊΡΠΏΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ FMU Π²Π΅ΡΡΠΈΠΈ FMU 2.0 cs
- OpenModelica Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°, Π½ΠΎ Π² Π½Π΅ΠΉ ΠΏΠ»ΠΎΡ
ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ°ΡΠ΅Π»ΠΈ (solvers) Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ (ΠΠ£) Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
βΠΠΎΠ΄Π΅Π»Ρ Π·Π°Π²ΠΎΠ΄Π° Taneco Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠΎΠΌ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π½ΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ Π²ΡΡΠ°Π»Π° Π·Π°Π΄Π°ΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ»Π°ΡΡ ΠΈ OpenModelica Π½Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ»Π°ΡΡ Ρ ΡΠ΅ΡΠ°Π΅Π½ΠΈΠ΅ΠΌ ΠΠ£ Π½Π΅ΡΠ²Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΠΉΠ»Π΅ΡΠ°. ΠΠ»Ρ ΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΠΌΠΌΡΠ»ΡΡΠΈΠΈ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ»Π°Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ MapleSim. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΏΡΠΎΠ±Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΊΡΠΏΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π΅ΡΡΠΈΠΈ FMU 2.0 cs ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ°Π΅Ρ ΠΠ£ Π½Π΅ΡΠ²Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΠΉΠ»Π΅ΡΠ°.