next up previous contents
Next: Kombinovaná simulace Up: Spojitá simulace Previous: Třída Relay

Příklad spojitého modelu

Jako příklad spojité simulace budeme uvažovat systém kola automobilu. Experiment bude sledovat odezvu kola na jednotkový skok. Rovnice, popisující tlumené kmitání kola:


displaymath597

kde

v je rychlost pohybu kola,

y je výchylka kola z klidové polohy,

F(t) je vstupní budicí funkce (např. jednotkový skok) a

k,D,M jsou konstantní parametry systému kola

Rovnici převedeme na soustavu diferenciálních rovnic prvního řádu


displaymath607

displaymath609

a potom můžeme přímo psát simulační program:

// model KOLO.CPP - Model tlumení kola automobilu v C++

#include "simlib.h"

const double F = 1.0;

class Kolo {
  Graph G;              // výstup polohy kola
  Integrator v,y;       // stav systému kola
public:
  Kolo(Input F, double M, double D, double k):
     G("Výchylka",y,0.01),
     v((F-D*v-k*y)/M),
     y(v) {}
};

Kolo k1(F, 2, 5.656, 400);

int main() {                  // popis experimentu
  Print(" Model tlumení kola automobilu v C++ \n");
  OpenOutputFile("kolo.out");
  Init(0,1.5);                // inicializace parametrů experimentu
  SetStep(1e-3,0.1);          // krok integrace
  SetAccuracy(0.001);         // max. povolená rel. chyba integrace
  Run();                      // simulace
  Print(" Konec simulace \n");
  return 0;
}

Spojitý model popisujeme propojením funkčních bloků -- objektů modelu. Každý objekt je inicializován tak, že prvním parametrem jeho konstruktoru je jeho vstup. Na místě vstupu může být výraz, ve kterém lze použít objekty (jako proměnné) nebo číselné hodnoty (jako konstanty).

Výstup informací o chování modelu probíhá prostřednictvím objektu třídy Graph. Tato třída zabezpečuje rovnoměrné vzorkování vstupu objektu (v našem případě s periodou 0.01) a výstup do výstupního souboru, který lze prohlížet výstupním editorem.

Celý model je tvořen jedním objektem třídy Kolo (globální objekt k1). Při vytváření objektu musíme zadat jeho vstup a parametry. Řízení experimentu ve funkci main zajišťuje otevření výstupního souboru, inicializaci pro modelový čas od nuly do 1.5 sekundy, nastavení povoleného rozsahu kroku numerické integrace (SetStep) a nastavení požadované přesnosti numerické integrace (SetAccuracy). Vlastní simulace proběhne v rámci volání funkce Run.



Petr Peringer
Mon Dec 8 13:24:19 CET 1997