Podręcznik
4. Uruchomienie symulacji
4.2. Uruchomienie symulacji
Symulację można uruchomić na dwa sposoby:
-
w trybie wsadowym – W tym trybie prowadzona jest symulacja w zadanym horyzoncie czasowym, dla ustalonej zmienności sygnałów SP/CV (zgodnie z ustawionymi parametrami). W tym przypadku wykorzystujemy metodę
simulate(tend, log_output, progress)
, gdzie:tend
– czas symulacji,log_output
– flaga zwracania wartości wyjściowych z okresem próbkowania monitorowania (‘monit’
) lub sterowania (‘control’
),progres
– flaga wyświetlania wskaźnika postępu. W poniższym przykładzietend
zdefiniowany został w pliku konfiguracyjnymgeneral_params.py
(modułparams
).Listing: Uruchomienie symulatora w trybie wsadowym (plik run_simulation.py
)from params.general_params import * from subsystems.simulator import TtsPidSim from common.utils import * system = TtsPidSim(tp, pr) set_default_params(system) set_modes(system, 1, 0.2, 1, 2) # Simulation horizont [s] tend = 2000 proc_vars = system.simulate(tend, 'monit', True)
-
w trybie pracy krokowej – W tym trybie sterujemy symulacją wyzwalając kolejne kroki obliczeń. W tym przypadku wykorzystujemy metodę
simulation_step(log_output)
, gdzie:log_output
– flaga zwracania wartości wyjściowych. W poniższym przykładzie wykonano symulację dla takiego samego okresu i tych samych parametrów co w przykładzie dla trybu wsadowego. Użytkownik może w kolejnych krokach symulacji ustawiać pożądane wartości parametrów symulatora i zmieniać sygnały sterujące, w tymSPman
/CVman
.Listing: Przykład uruchomienie symulatora w trybie pracy krokowej (plik run_step_by_step.py
)from params.general_params import * from subsystems.simulator import TtsPidSim from common.utils import set_default_params import math system = TtsPidSim(tp, pr) # Ustawienie parametrów domyślnych set_default_params(system) # Ustawienie parametrów charakterystycznych tend = 2000 # SP ustawiane ręcznie system.in_var_val('SPmode', 1) # Przechowywanie wartości t, SP i PV t = [] SP = [] PV = [] for i in range(int(tend / tp) + 1): t.append(i*tp) # Generowanie i zapis wartości SP: sinusoida o okresie 1200 [s], amplitudzie 0.25 i biasie 0.25 SP.append( 0.25*math.sin(2*math.pi/1200*i*tp)+0.25 ) # Ustawienie wartości SP system.in_var_val('SPman', SP[i]) rval = system.simulation_step('monit') # Odczyt i zapis wartości PV PV.append(system.out_var_val('PV'))