Modelování a simulace dynamických systémů
B3B35MSDSoftware
V této přednášce jsme si podávali jednak přehled nejpoužívanějšího programového vybavení pro modelování a simulaci dynamických systémů, a jednak jsme si provedli úvod do problematiky objektově orientovaného modelování.
V přehledové části přednášky jsme si nejdříve zmiňovali SPICE coby jazyk pro modelování elektronických obvodů. I přestože je zaměřen pouze na jednu fyzikální doménu (elektronické obvody), je určitě vhodné být s jeho existencí obeznámen, protože dodnes někteří výrobci elektronických obvodů poskytují modely svých součástek ve formátu SPICE. I přestože je poslední verze implementace z UC Berkeley stále ke stažení, existuje mnoho komerčních i opensource projektů, které se nechaly inspirovat. Z nich užitečný pro vás coby studenty a příležitostné uživatele může být zejména LTSpice od Linear Technology. Není sice open-source, ale je volně ke stažení a je velmi výkonný zejména pro spínané obvody. Z udržovaných ryze free&opensource implementací je možno jmenovat ngspice. Z ryce komerčních nelze nejmenovat PSPICE implentovaný firmou Cadence v jejich produktu ORCAD. Toto je jeden z nástrojů použivaných profesionálními návrháři elektronických obvodů.
Následně jsme opustili oblast doménově zaměřených softwarových produktů a věnovali se těm doménově nezávislým. Ze signálově orientovaných nástrojů nebylo ani zapotřebí znovu zmiňovat Simulink, který se dnes stal defacto standardem, a to ani zdaleka jen v akademické oblasti, ale už dávno i v průmyslové praxi, kupříkladu je velmi rozšířený v automobilovém a leteckém průmyslu. Jistě je vhodné vědět o alternativách. Není jich mnoho, které by byly aspoň trochu použitelné. Jednou z nich je free&opensource projekt zvaný Xcos, který je součástí šiřšího projektu Scilab. Dalším, a zároveň nejspíše posledním použitelným nástrojem se jeví být komerční Vissim.
I přestože je signálové modelování velmi výhodné pro zakódování logiky regulátoru, několikrát jsme v našem kurzu diskutovali, že je mimořádně nepohodlně pro sestavování matematického modelu dynamiky jakéhokoliv je jen středně složitého fyzikálního systému. Coby alternativu k signálovému modelování jsme si uvedli skupinu nástrojů, které lze souhrnně označit jako nástroje pro modelování fyzkálních vazeb. Zmiňovaný SPICE byl historicky jedním z prvních tohoto typu. Podobně do této kategorie patří jakékoliv nástroje podporující modelování pomocí vazebních grafů. I přestože lze najít na internetu mnoho sw projektů hlásících se k metodice vazebních grafů (například na http://bondgraph.org/software.html), jediný použitelný (=dostatečně rozvinutý a nadále udržovaný) se jeví být komerční produkt 20sim. I přestože nevlastním plnou licenci, pro získání představy lze použít volně stáhnutelnou trial verzi. Jakkoliv jde o velmi zdařilý projekt, lze jistě argumentovat, že jakmile už ve škole či následně ve firmě máme přístup k Simulinku, lze i vazební grafy po jejich sestavení s využitím tužky a papíru realizovat coby blokový diagram v Simulinku.
A tím jsme se dostali k jedné velmi výrazné rodině softwarových nástrojů pro modelování systém na základě modelování jejich fyzikálních vazeb, a tím je objektově orientované modelování (OOM). Defakto synonymem pro tento koncept je populární modelovací jazyk Modelica. Tento je velmi aktivně vyvíjen a dokumentován konsorciem sestávajícím z akademických i průmyslových partnerů. Existuje několik implementací překladačů jazyka Modelica. Z nejznámějších lze vybrat tyto
- Dymola. Komerční produkt vyvíjený a distribuovaný firmou Dassault Systemes (mimo jiné tvůrce strojařského CAD systému Catia). Jde nepochybně o referenční implementaci jazyka. Veškeré nové prvky v jazyce a mnohé nové knihovny jsou nejdříve implementovány v Dymole. Je možno zdarma stáhnout trial verzi.
- Wolfram System Modeler. Komerční produkt vyvíjený firmou Wolfram Research - tvůrcem software Mathematica.
- Maplesim. Komerční produkt vyvíjený firmou Maplesoft - tvurcem software Maple.
- AMESim. Komerční produkt vývíjený belgickou firmou LMS (nedávno koupená firmou Siemens). S firmou LMS má naše katedra intenzivní pracovní vztahy - jeden z vaších starších spolužáků využil možnosti strávit léto v této firmě v rámci stáže a po dokončení diplomové práce na katedře získal místo ve firmě.
- SimulationX. Komerční produkt vyvíjený německou firmou ITI. Se svým umístěním v Drážďanech může i tato firma být zajímavým cílem pro žádosti o letní stáže.
- Openmodelica. Free&opensource produkt vyvíjený akademickým týmem okolo profesora Petera Fritzsona na univerzitě ve švédském Linkopingu. Jakkoliv je projekt velmi aktivně vyvíjen (nightly builds jsou skutečně dostupné téměř každou noc už pár let), přesto se zatím nemůže srovnávat s Dymolou. Pro naše účely seznámení se s koncepcí objektově orientovaného modelování však postačí.
- JModelica. Free&opensource produkt vyvíjený na univerzitě ve švédském Lundu a dnes udržovaný firmou Modelon AB.
Pro nás v našem předmětu bude hlavní platformou pro objektově orientované modelování OpenModelica. Stáhněte si jej na svůj počítač (binární soubory existují pro Win, Linux i Mac) a při pročítání úvodních materiálů zkoušejte sami experimentovat. Plný manuál je na https://openmodelica.org/doc/OpenModelicaUsersGuide/latest/.
Balík, který si nainstalujete po stažení, Vám nabídne několik nástrojů:
- Open Modelica Shell (OMShell)
- Open Modelica Notebook (OMNotebook)
- Open Modelica Connection Editor (OMEdit)
Pro prozkoumávání základních vlastností jazyka výrazně doporučuji používat textově orientované první dva nástroje. Ten poslední jmenovaný pak použijte pro cokoliv i jen trochu složitějšího než párřádkové příklady z knih a dále pak pro sestavování modelů vybíráním jednotlivých komponent ze základní knihovny prvků pomocí myši, jejich tažením myší na místo v diagramu, spojování s dalšími prvky pomocí čar atd.
Pro ty z vás, kdo používáte pro programování univerzální prostředí Eclipse, existuje ke stažení i plugin Modelica Development Tooling (MDT) for Eclipse.
Základní dovednosti v Modelice jsou popsány v celé řadě prezentací volně dostupných na internetu. Viz sekce o literatuře.